• 语文科
  • 数学科
  • 英语科
  • 政治科
  • 物理科
  • 化学科
  • 地理科
  • 历史科
  • 生物科
  • 中考备战
  • 高考备战
  • 高考试题
  • 中考试题
  • 当前位置: 天一资源网 > 定时器 正文

    定时器实验报告_定时器实验keil实验报告

    时间:2020-07-22 12:53:27 来源:天一资源网 本文已影响 天一资源网手机站

      电子信息工程学系实验报告

     课程名称:单片机原理及接口应用

     成 绩: 实验项目名称: 51 定时器实验 实验时间: 2011.12.16

     指导教师(签名) :

     班级: 姓名: 学号:

     一、实 验 目 的:

     熟悉 keil 仿真软件、 protues仿真软件的使用和单片机定时程序的编写。了解 51 单片机中定时、计数的概念,熟悉 51 单

     片机内部定时 / 计数器的结构与工作原理。掌握中断方式处理定时 / 计数的工作过程,掌握定时 / 计数器在 C51中的设置与程

     序的书写格式以及使用方法。

     二、实 验 环 境:

     软件: KEIL C51 单片机仿真调试软件, proteus 系列仿真调试软件

     三、实 验 原 理:

     1、51 单片机定时计数器的基本情况

     8051 型有两个十六位定时 / 计数器 T0、T1,有四种工作方式。

     MCS-51 系列单片机的定时 / 计数器有几个

     相关的特殊功能寄存器:

     方式控制寄存器 TMOD;

     加法计数寄存器 TH0 、TH1 (高八位) ;TL0、TL1 (低八位);

     定时/ 计数到标志 TF0、TF1(中断控制寄存器 TCON )

     定时/ 计数器启停控制位 TR0、TR1(TCON )

     定时/ 计数器中断允许位 ET0、ET1(中断允许寄存 IE )

     定时/ 计数器中断优先级控制位 PT0、PT1(中断优 IP)

     2、51 单片机的相关寄存器设置

     方式控制寄存器 TMOD:

     D7 D6 D5 D4 D3 D2 D1 D0

     GATE C/T M1 M0 GATE C/T M1 M0

     TMOD 的低四位为 T0 的方式字,高四位为 T1 的方式字。

     TMOD 不能位寻址,必须整体赋值。

     TMOD 各位的含义如下 :

     1. 工作方式选择位 M1、M0

     M1、M0 的状态决定定时器的工作方式:

     M1 M0 功 能 说 明

     0 0 方式 0,为 13 位的定时/计数器

     0 1 方式 1,为 16 位的定时/计数器

     1 0 方式 2,为常数自动重装入的 8 位定时/计数器

     1 1 方式 3,T0 分为两个 8 位定时/计数器,

     T1 在该方式时停止

     3、51 单片机定时器的工作过程(逻辑)方式一

     方式 1:当 M1M0=01 时,定时器工作于方式 1。

     T1 工作于方式 1 时,由 TH1 作为高 8 位,TL1 作为低 8 位,构成一个十六位的计数器。若 T1 工作于

     定时方式 1,计数初值为 a,晶振频率为 12MHz,则 T1 从计数初值计数到溢出的定时时间为 t =(216-a)

     μS。

     4、51 单片机的编程

     使用 MCS-51单片机的定时 / 计数器的步骤是:

     4.1.设定 TMOD ,确定:

     工作状态 (用作定时器 / 计数器 );

     工作方式;

     控制方式。

     如:T1 用于定时器、方式 1,T0 用于计数器、方式 2,均用软件控制。则 TMOD 的值应为: 0001 0110,

     即 0x16。

     4.2.设置合适的计数初值,以产生期望的定时间隔。由于定时 / 计数器在方式 0、方式 1 和方式 2 时的最大

     计数间隔取决于使用的晶振频率 fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将

     定时间隔分段处理。

     p129 6MHz 8MHz 10MHz 12MHz

     方式 0 16.384ms 12.288ms 9.83ms 8.192ms

     方式 1 131.072ms 98.304ms 78.643ms 65.536ms

     方式 2 0.512ms 0.384ms 0.307ms 0.256ms

     计数初值的计算方法如下,设晶振频率为 fosc,则定时 / 计数器计数频率为 fosc/12 ,定时 / 计数器的计数总

     次数 T_all 在方式 0、方式 1 和方式 2 时分别为 213 = 8192、216 = 65536 和 28 = 256,定时间隔为 T,计数

     初值为 a,则有

     T = 12 × (T_all – a)/fosc

     a = T_all – T× fosc/12

     a = – T× fosc/12 (注意单位)

     THx = a / 256; TLx = a % 256;

     4.3.确定定时 / 计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时 / 计数器

     的中断及总中断:

     ET0 = 1; EA = 1;

     还需要编写中断服务函数:

     void T0_srv(void) interrupt 1 using 1

     {

     TL0 = a % 256;

     TH0 = a / 256;

     中断服务程序段 }

     4.4.启动定时器: TR0(TR1)= 1。

     四、实 验 内 容 过 程 及 结 果 分 析:

     利用 protues 仿真软件设计一个可以显示秒表时间的显示电路。

     利用实验板上的一位 led 数码管做显示, 利用中断法编

     写定时程序,控制单片机定时器进行定时,所定时间 为 1s。刚开始 led 数码管显示 9,每过一秒数码管显示值减一,当显

     示到 0 时返回 9,依此反复。然后设计 00-59 的两位秒表显示程序。

     (1)实现个位秒表, 9-0

     用 protues 进行流水灯的仿真需要的元件有 AT89C51、CAP、BUTTO、N LED-BLUE、RES、CRYSTA、L 画出

     仿真图

     Protues 仿真图

     使用 keil 仿真软件编写程序和使用 c51 编写并进行调试。仿真结果如下图所示

     仿真结果图

     程序:

     #include<reg51.h>

     unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

     unsigned char a; void time() interrupt 3

     unsigned char i=0; {TH1=-50000/256;

     void delay(char z) TL1=-50000%256;

     {char x,y; a++;

     for(x=z;x>0;x--) if(a==10)

     for(y=123;y>0;y--); {a=0;

     } P2=0xfe;

     main() P0=tab[9-i];

     {TMOD=0x10; i++;

     TH1=-50000/256; if(i==10)

     TL1=-50000%256; i=0;

     EA=1;ET1=1;TR1=1; }

     while(1); }

     }

     (2)实现两位秒表, 00-59

     使用 keil 仿真软件编写程序和使用 c51 编写并进行调试。仿真结果如下图所示

     仿真结果图

     程序:

     #include<reg51.h>

     unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

     unsigned char a; EA=1;ET1=1;TR1=1;

     unsigned char i=0; while(1)

     {P2=0xfe;

     void delay(char z) P0=tab[i/10];

     {char x,y; delay(5);

     for(x=z;x>0;x--) P2=0xfd;

     for(y=123;y>0;y--); P0=tab[i%10];

     } delay(5);

     main() }

     {TMOD=0x10; }

     TH1=-50000/256; void time() interrupt 3

     TL1=-50000%256; {TH1=-50000/256;

     TL1=-50000%256; i++;

     a++; if(i==60)

     if(a==10) {i=0;

     {a=0; }

     }}

     五、实 验 心 得:

     通过实验熟悉 keil 仿真软件、 protues 仿真软件的使用和单片机定时程序的编写。了解 51 单片机中定时、计数的概念,

     熟悉 51 单片机内部定时 / 计数器的结构与工作原理。

     掌握中断方式处理定时 / 计数的工作过程, 掌握定时 / 计数器在 C51中的设置与程序的书写格式以及使用方法。

    相关关键词: 定时器
    相关热词搜索: 定时器 实验 报告

    • 范文大全
    • 教案下载
    • 优秀作文
    • 励志
    • 课件
    • 散文
    • 名人名言