单片机原理教案第6章.ppt_第1页
单片机原理教案第6章.ppt_第2页
单片机原理教案第6章.ppt_第3页
单片机原理教案第6章.ppt_第4页
单片机原理教案第6章.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.1 定时和计数的基本概念 6.2 MCS-51单片机定时/计数器的结构和工作原理 6.3 定时/计数器工作模式及其应用 6.4 综合应用举例,第6章 定时器与计数器,从一个生活中的例子来理解计数的基本概念:假设你希望知道一个碗里可以装多少豆子?你可以采用什么办法呢?你肯定会说把碗里的豆子数一下就行了,不错,正是如此。从这个常见的计数例子可以看出,如果想计数,必须必备三要素:,计数单元:豆子 人:一个能认识豆子并能计数的人 计数容量:一个碗,同时碗装满了,人可以看到碗满了,停止计数,计数的基本概念,但是生活中常见的事情如何用单片机去实现呢?单片机是无法认识豆子等我们人可以通过眼睛认识的事物。

2、单片机可以识别的只能是电脉冲信号,如果想利用单片机完成计数功能,则与生活中的计数相对应,需要以下三要素: 计数脉冲:单片机的某个IO引脚可以识别脉冲信号 单片机CPU:单片机CPU内部集成这样的硬件功能,即IO引脚每来一个脉冲,寄存器的值增加1,计数一次。 计数容量:计数容量和寄存器的位数有关,如果利用8位寄存器则只能计数到255,超过255则必须告诉CPU已经溢出,停止计数,还是从生活中的定时例子来说明定时的基本概念。一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了3600圈,如果需要你设计一个这样的定时装置,你该怎么办呢?同时想定时,必须必备三要素:,定时的基本概念, 定时基

3、准:最小的定时单元,对于本例而言,需要一个精确的秒针,当秒针走一圈,则表示一秒的时间。 计数功能:需要一个装置能计数,秒针每走一圈则计数功能加1。 计数容量:当计数达到3600圈以后,则报警表示定时时间已到。,同样对于单片机而言如何实现现实生活中需要的定时功能呢?如果想利用单片机完成定时功能,则与生活中的定时相对应,需要以下三要素: 定时基准:单片机中的晶振提供一个精确的定时基准。由单片机的晶振经过12分频后获得的一个脉冲源,即采用机器周期作为定时基准,如果晶振为12M,则定时基准为1us。 计数功能:与计数功能相同,单片机CPU内部集成这样的硬件功能,即每一个机器周期,寄存器的值增加1,计数

4、一次。 计数容量:当达到用户定义的时间后,则申请中断,在中断程序中实现报警功能。,6.2.1 定时/计数器概述,图6-1 定时/计数器结构,图6-2 定时/计数器控制逻辑,6.2.2 单片机定时/计数器的工作方式,定时器工作方式 设置为定时器工作方式时,基准时间由单片机的晶振经过12分频后获得的一个脉冲信号,即机器周期信号。机器周期信号输入到加1计数器,加1计数器实现每个机器周期使T0或T1的计数寄存器数值增加1,直至计满溢出,根据计数机器周期的次数可以得到定时时间。 计数器工作方式 设置为计数方式时,外部脉冲信号输入到引脚T0(P3.4)和T1(P3.5),CPU对外部脉冲信号进行采样计数,

5、加1计数器由外部输入脉冲信号的下降沿触发计数。,计数方式具体工作过程,计数器在每个机器周期的S5P2期间采样T0和T1引脚的输入电平,若前一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。所以检测一个从1到0的跳变需要两个机器周期,即外部输入信号的周期应大于或等于两个机器周期,也就是说外部输入信号的频率必须小于晶振频率的1/24,若频率超过晶振频率的1/24,则无法准确计数脉冲个数。虽然对外部输入信号的占空比无特殊要求,但是为了确保输入信号电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。对输入脉冲信号的基本要求如图6-3所示。,图6-3 对输入脉冲宽度的要

6、求,TMOD用于控制T0和T1的工作模式。 TMOD不能位寻址,只能用字节设置定时器的工作模式,低半字节设置T0,高半字节设置T1。 8051系统复位时,TMOD的所有位被清0。 TMOD各位的定义格式如图所示,6.2.3 工作模式寄存器 TMOD,M1和M0操作模式控制位。两位可形成四种编码,对应于四种模式。,计数器/定时器方式选择位,设置为定时方式。定时器计数8051片内脉冲,即对机器周期计数,设置为计数方式。计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲,GATE门控位。 GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或INT1)的电平

7、是高还是低。 GATE=1,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。,TCON除可字节寻址外,各位还可位寻址。 8051系统复位时,TCON的所有位被清0。 TCON各位的定义格式如图所示。,6.2.4 启动控制寄存器TCON,6.3 定时/计数器工作模式及其应用,6.3.1 模式 0 及其应用 6.3.2 模式 1 及其应用 6.3.3 模式 2 及其应用 6.3.4 模式 3 及其应用,6.3.1 工作模式0及其应用,1 逻辑结构 2 控制寄存器TMOD和TCON的设置 3 定时/计数器初值的设置 4 模式0的应用,1 逻辑结构,图6-

8、7 模式0时的逻辑结构图,例6.4 用T0定时,选择工作模式0,由单片机P1.0输出占空比为50、周期为2ms的方波,晶振频率为12M。,源程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP INT_TIME0 ORG 0030H MAIN: MOV TMOD, #00H ;设置工作方式 MOV TH0, #0E0H ;设初始值 MOV TL0, #18H SETB TR0 ;启动定时器 SETB EA ;开放定时器中断 SETB ET0 SETB P1.0 LJMP $ INT_TIME0: MOV TH0, #0E0H ;对定时器重新赋值 MOV TL0, #

9、18H CPL P1.0 RETI,4 工作模式0应用,6.3.2 工作模式1及其应用,1 逻辑结构 2 控制寄存器TMOD和TCON的设置 3 定时/计数器初值的设置 4 模式1的应用,1 模式 1 的逻辑电路结构,图6-8 模式1逻辑结构图,4 模式 1 的应用举例,例6.7 用T1定时,选择工作模式1,由单片机P1.0输出50Hz的方波,晶振频率12M。,源程序如下: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV TMOD,#10H ;设置T1为模式1 SETB TR1 ;启动定时 LOOP: MOV TL1,#0D8H ;送初值 MOV TH1,#0F

10、0H JNB TF1,$ ;查询定时时间到否 CLR TF1 ;产生溢出,清标志位 CPL P1.1 ;取反 SJMP LOOP ;重复循环,6.3.3 工作模式2及其应用,1 逻辑结构 2 控制寄存器TMOD和TCON的设置 3 定时/计数器初值的设置 4 模式2的应用,1 模式 2 的逻辑电路结构,图6-9 模式2逻辑结构,4 模式 2 的应用举例,例6-10:利用定时器T1的模式2对外部信号计数。要求每计满100次,将 P1.0引脚取反。 源程序:ORG 0000H LJMP MAIN ORG 001BH LJMP INT_TIME1 ORG 0030H MAIN: MOV TMOD,#

11、60H ;设置T1为模式2,外部计数方式 MOV TL1,#9CH ;T1计数器初值 MOV TH1,#9CH SETB EA ;开放定时器中断 SETB ET1 SETB TR1 ;启动T1计数 HERE: SJMP HERE ;等待中断 INT_TIME1: CPL P1.0 RETI,6.4 综合应用举例,由于MCS-51单片机的定时/计数器是可编程的,因此在使用之前需要进行初始化。在编程时主要注意两点:第一要能正确写入控制字;第二能进行计数初值的计算。一般情况下,包括以下几个步骤: (1)确定工作方式,即对TMOD寄存器进行赋值。 (2)计算计数初值,并写入寄存器TH0、TL0或TH1

12、、TL1中。 (3)根据是采用中断还是查询方式决定是否置位ETx允许T/C中断。 (4)根据是采用中断还是查询方式决定是否置位EA使CPU开中断。 (5)置位TRx启动计数。,例6-11 试选择定时/计数器T0测试INT0(P3.2)引脚上输入的被测脉冲宽度,已经晶振频率12M,分析:定时器可以用于测量脉冲宽度程序设计,测量外部脉冲宽度利用TMOD的门控位控制很方便,当设置GATE1时,仅设置TR0(TR1)等于“1”,定时器不能被启动,还必须等外部脉冲高电平时,定时器才开始工作。 测试过程如图6-11所示,图6-11 被测脉冲波形,例6-11 源程序如下: ORG 0000H LJMP MA

13、IN ORG 000BH LJMP INT_TIME0 ORG 0030H MAIN:MOV R2,#00H ;如果被测脉冲宽度太长,则累计溢出次数 MOV TMOD,#09H ;设置T0为模式1,门控方式 MOV TL0,#00H ;设置初值 MOV TH0,#00H SETB EA ;开放T0中断 SETB ET0 SETB TR0 ;INT0引脚高电平到来才会启动T0 JNB P3.2, $ ;等待高电平到来 JB P3.2,$ ;高电平到来,启动T0开始测量 CLR TR0 MOV R0,TH0 ;P3.2低电平,测量结束,保存结果 MOV R1,TL0 LJMP $ INT_TIME

14、0: INC R2 MOV TL0,#00H MOV TH0,#00H RETI,例6-12: 电路如图6-12所示,P1.0引脚外接发光二极管D0,要求D0以1s的间隔闪烁。已经晶振频率12M,图6-12 例6-12电路原理图,例6-12源程序代码: ORG 0000H LJMP MAIN ORG 000BH LJMP INT_TIME0 ORG 0030H MAIN: MOV P1,#0FFH ;关所有灯 MOV 30H,#00H ;软件计数器预清0 MOV TMOD,#01H ;定时/计数器0工作于方式1 MOV TH0,#3CH MOV TL0,#0B0H;即数15536 SETB E

15、A ;开总中断允许 SETB ET0 ;开定时/计数器0允许 SETBTR0 ;定时/计数器0开始运行 LOOP: AJMP LOOP ;真正工作时,这里可写任意程序 INT_TIME0: INC 30H;定时器0的中断处理程序 MOVA,30H CJNE A, #20,T_END ;30H单元中的值到了20了吗? CPL P1.0 ;到了,取反P10 MOV 30H, #00H ;清软件计数器 T_END:MOVTH0,# 3CH MOV TL0,# 0B0H ;重置定时常数 RETI,例6-13 设一交通路口设红、黄、绿三盏交通灯,当红灯亮2s后,黄灯亮400ms,绿灯亮1s,试用单片机模

16、拟交通灯控制,分析:单片机采用发光二极管模拟交通灯控制,即利用P1.0P 1.2分别接红、黄、绿三个发光二极管。但是这里用到三个定时时间(2s、400ms 、1s),难道每个定时时间都编写不同的定时程序,那么如果需要更多的定时时间,怎么办?这里还是采用软件定时器的方式,即找到这几个定时的时间的公约数,利用软件计数器就可以完成不同的延时。,例6-13源程序如下: NumberOf50ms EQU 30H ;定义软件定时器的计数次数 ORG 0000H LJMP MAIN ORG 000Bh LJMP INT_TIME0 ORG 0030H MAIN: CLR P1.0 红灯亮 MOV NumberOf50ms,#28H 延时2s LCALL DELAY SETB P1.0 红灯灭 CLR P1.1 黄灯亮 MOV NumberOf50ms,#08H 延时400ms LCALL DELAY SETB P1.1 黄灯灭 CLR P1.2 绿灯亮 MOV NumberOf50ms,#14H 延时1s LCA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论