1 / 25

单 片 机 应 用 技术

单 片 机 应 用 技术. 项目三 秒表的设计. 任务 2 基于 T0 查询法可控秒表的设计. 教学目标:. 1 、了解 51 单片机定时 / 计数器的结构组成、各特殊功能寄存器的用途 2 、 掌握 51 单片机定时 / 计数器的查询使用的设计方法。 2 、进一步熟悉并掌握独立按键、数码管的使用与编程方法。. 任务 2 教学提纲. 工作任务 任务解析 操作演示 课堂实训. 工作任务. 1 、基于两位一体数码管 0~99 计数器的设计法

Download Presentation

单 片 机 应 用 技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 单 片 机 应 用 技术 项目三 秒表的设计

  2. 任务2 基于T0查询法可控秒表的设计 教学目标: 1、了解51单片机定时/计数器的结构组成、各特殊功能寄存器的用途 2、掌握51单片机定时/计数器的查询使用的设计方法。 2、进一步熟悉并掌握独立按键、数码管的使用与编程方法。

  3. 任务 2 教学提纲 • 工作任务 • 任务解析 • 操作演示 • 课堂实训

  4. 工作任务 1、基于两位一体数码管0~99计数器的设计法 ★2、利用T0的查询法设计一个可控的秒表,可实现秒表的开始、暂停与复位。用数码管显示,仿真其功能,并在实验板上完成系统的制作。

  5. 任务解析 • 在本任务中,要完成按键功能模块、显示功能模块、计时功能模块的设计。要确定这几个功能模块的设计,首先应了解有哪些可行的设计方案。 • 按键的设计方案:独立按键; • 显示的设计方案:数码管的静态显示法、数码管的动态显示法。 • 计时模块:软件延时法、采用时基电路定时、采用可编程芯片定时、定时/计数器计时法

  6. 1.定时/计数器的结构:C51单片机内部有两个16位的可编程定时/计数器,称为T0和T11.定时/计数器的结构:C51单片机内部有两个16位的可编程定时/计数器,称为T0和T1 8051定时器/计数器逻辑结构

  7. 定时/计数器的结构: 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 2.定时/计数器的工作原理 加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

  8. 设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。 • 设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 s。

  9. 3.定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。 (1)工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于设置T0,高四位用于设置T1。其格式如下:

  10. GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。 :定时/计数模式选择位。 =0为定时模式; =1为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

  11. (2)控制寄存器TCON TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下: • TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。 • TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。 • TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 • TR0(TCON.4):T0运行控制位,其功能与TR1类同。

  12. 4.定时/计数器的工作方式 (1)方式0、方式1 方式0为13位计数,方式1为16位计数 定时器的方式0、1示意图

  13. (2)方式2 定时器的方式2示意图

  14. (3)方式3 方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。 工作方式3将T0分成为两个独立的8位计数器TL0和TH0。 5.定时/计数器的使用步骤 ①设置定时/计数器工作方式 ②设置计数初值 ③启动定时/计数器 ④设计数溢出标志

  15. 设置计数初值 • T0、T1是16位加法计数器,分别由两个8位专用寄存器组成,T0由TH0和TL0组成,T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问地址依次为8AH8DH,每个寄存器均可被单独访问,因此可以被设置为8位、13位或16位计数器使用。 • 在计数器允许的计数范围内,计数器可以从任何值开始计数,对于加1计数器,当计到最大值时(对于8位计数器,当计数值从255再加1时,计数值变为0),产生溢出。 • 定时/计数器允许用户编程设定开始计数的数值,称为赋初值。初值不同,则计数器产生溢出时,计数个数也不同。例如:对于8位计数器,当初值设为100时,再加1计数156个,计数器就产生溢出;当初值设为200时,再加1计数56个,计数器产生溢出。

  16. 定时器的初始值的计算 对于不同的工作方式,计数器位数不同,故最大计数值M也不同: 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器0分为2个8位计数器,每个M均为256。 因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初值X的计算如下: X = M – 计数值 计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0(TH1)。 注意!方式0时初始值写入时,对于TL不用的高3位应填入0!

  17. 举 例1 用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。 方式0采用13位计数器,其最大定时时间为:8192×1s = 8.192ms,因此,定时时间不可能象任务7中一样选择50ms,可选择定时时间为5ms,再循环200次。 定时时间为5ms,则计数值为5ms/1s =5000,T1的初值为: X = M 计数值= 8192  5000 = 3192 = C78H = 0110001111000B 13位计数器中TL1的高3位未用,填写0,TH1占高8位,所以,X的实际填写值应为: X = 0110001100011000B = 6318H

  18. 举 例1 用T0方式0实现任务7中1秒延时函数如下: void delay1s() { unsigned char i; TMOD=0x00; // 置T1为工作方式0 for(i=0;i<0xc8;i++){ // 设置200次循环次数 TH0=0x63; // 设置定时器初值 TL0=0x18; TR0=1; // 启动T1 while(!TF0); // 查询计数是否溢出,即定时5ms时间到,TF0=1 TF0=0; // 5ms定时时间到,将定时器溢出标志位TF1清零 } }

  19. 举 例2 用T1、工作方式2实现1秒延时,晶振频率为12MHz。 因工作方式2是8位计数器,其最大定时时间为:256×1s = 256s,为实现1秒延时,可选择定时时间为250s,再循环4000次。定时时间选定后,可确定计数值为250,则T1的初值为:X = M 计数值=256  250 = 6 = 6H。采用T1方式2工作,因此,TMOD =0x20。

  20. 举 例2 用定时器工作方式2实现的1秒延时函数如下: void delay1s() { unsigned int i; // i取值范围为0~4000,因此不能定义成unsigned char TMOD=0x20; // 设置T1为方式2 TH1=6; // 设置定时器初值,放在for循环之外 TL1=6; for(i=0;i<4000;i++) // 设置4000次循环次数 { TR1=1; // 启动T1 while(!TF1); // 查询计数是否溢出,即定时250s时间到,TF1=1 TF1=0; // 250s定时时间到,将定时器溢出标志位TF1清零 } }

  21. 操作演示 1)根据确定的设计方案设计系统硬件电路 按键设计:独立的按键设计 显示模块:两个独立的数码管 计时模块:定时/计数的查询法计时 (2)根据硬件电路,编写软件系统。 (3)系统仿真、调试 (4)系统移植到实验板上进行调试。

  22. 课堂实训 活动一 :完成系统控制要求,在仿真软件上实现; 活动二:在单路板上都能实现控制要求

  23. 小结 • 单片机 定时器/计数器用于较精确的时间定时的使用 • 数码管的动态显示方法

  24. 课后任务 • (1)复习本次课内容 • (2)设计基于两位一体数码管的可控秒表的设计,其余设计方案同上。

  25. Thank You !

More Related