定时计数器课件.pptx
《定时计数器课件.pptx》由会员分享,可在线阅读,更多相关《定时计数器课件.pptx(71页珍藏版)》请在三一办公上搜索。
1、5.1.1定时计数器的结构,.定时和计数的原理,(1)计数 定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:,假设计满一小时需要100,000,000滴,这称为水钟的计数容量,16位定时/计数器的计数容量是65536,单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1,,当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。,第1页/共71页,5.1.1定时计数器的结构.定时和计数的原理(1)计数,(2)定时 单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔
2、相等,则计数值就代表了时间的流逝。,第2页/共71页,(2)定时计数器如何能作为定时器使用呢?单片机中的,见图4-9 ,它是由单片机的晶振经过12分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用12的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微秒。,图4-9 定时/计数器T0的结构示意图,第3页/共71页,单片机内部的标准时钟脉冲是如何获得的呢? 见图4-,单片机内部的16位定时计数器由高8位和低8位两个寄存器组成: T0由TH0和TL0组成, T1由TH1和TL1组成, 定时计数器的计数值就存放在这里面。定时/计数器T1的结构与T0相同。,图4-
3、9 定时/计数器T0的结构示意图,2定时/计数器的结构,第4页/共71页,单片机内部的16位定时计数器由高8位和低8位两,再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如果再有一滴水落下,就会发生“溢出”。与此类似,16位定时计数器计满65536个脉冲时,也会发生溢出。 定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。 如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。,3定时/计数值的设置,第5页/共71页,再以水钟为例,当
4、水不断落下,下面容器中的水不断变,再回到水钟的例子上去: 刚才假设下面容器滴入100,000,000滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。,计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值 (通常称为时间常数),如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出,引发中断。,计数器初值的设置,第6页/共71页,现实生活中,如何满足计数值少于65536的需要?如牛奶包装线,在主频为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,
5、需计数10000个脉冲)。可见, 定时器的定时时间长短与系统时钟和定时器初值有关。,定时器初值的设置,第7页/共71页,在主频为12MHz的情况下,每个时钟脉冲是1微秒,4-10 定时/计数器的控制关系,第8页/共71页,4-10 定时/计数器的控制关系第8页/共71页,5.2定时计数器的控制 在单片机中有两个特殊功能寄存器与定时/计数有关,它们就是TMOD和TCON,定时计数器T0、T1就由它们来控制: TMOD用于设置工作方式; TCON用于控制其启动、停止和中断申请。,1.定时器工作方式寄存器TMOD TMOD用于设置T0和T1的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含
6、义如下:,第9页/共71页,5.2定时计数器的控制 1.定时,第10页/共71页,第10页/共71页,第11页/共71页,第11页/共71页,2定时/计数器控制寄存器TCON TCON的低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。 TF0(或TF1) 当计数溢出时,TF0(或TF1)会自动由0变1,告诉我们计数已满,我们可以通过查询TF0(或TF1)位的状态来判断计时时间是否已到; 如果采用定时中断方式,则 TF0(或TF1)由0变1时,能自动引发中断。,第12页/共71页,2定时/计数器控制寄存器TCON第12页/,TR0(或TR1) 由图4-11 可知,只有当TR0
7、(或TR1)为1时,开关1才能闭合,计数脉冲才能进入计数器,故TR0(或TR1)称为运行控制位,可用指令“SETB TR0(或TR1)”来置位以启动定时/计数器运行;或用指令“CLR TR0(或TR1)”来关闭定时/计数器的工作,一切全靠编程人员控制。,图4-11 定时/计数器T0方式0的逻辑结构示意图,第13页/共71页,TR0(或TR1)图4-11 定时/计数器T0方式0,5.3 定时/计数器的工作方式 80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。 1. 方式0 当TMOD的M1M0=00时,定时/计数器工作于方式0。方式0为
8、13位定时/计数器,由TL0的低5位和TH0(8位)共同完成计数功能(TL0的高3位可忽略)。,当TL0的低5位溢出时,向TH0产生进位;TH0溢出时,将定时器中断请求标志位TF0置1,可申请中断,也可对TF0进行查询。,第14页/共71页,5.3 定时/计数器的工作方式第14页/共71页,图4-11 定时/计数器T0方式0的逻辑结构示意图,第15页/共71页,图4-11 定时/计数器T0方式0的逻辑结构示意图,2. 方式1 当M1M0=01时,定时/计数器工作于方式1。方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位共同构成。其余操作同方式0。,图4-12 定时/计数器T0方式
9、1的逻辑结构示意图,第16页/共71页,2. 方式1图4-12 定时/计数器T0方式1的逻辑结构示,3. 方式2 当M1M0=10时,定时/计数器工作于方式2。这是自动重装初值的8位计数方式,它省去了方式0和方式1在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时时间的代价。,图4-13 定时/计数器T0方式2的逻辑结构示意图,特别适合于制作比较精确的脉冲信号发生器。,第17页/共71页,3. 方式2图4-13 定时/计数器T0方式2的逻辑结构示,4. 方式3 方式3只适用于定时/计数器T0。当T1被设定为方式3状态时,将停止计数。 当M1M0=11时,T0工作于方式3。 此
10、时TL0和TH0作为两个相互独立的8位定时/计数器使用。TL0既可定时又可计数,它使用T0的各控制位、引脚和中断源,即C/、GATE、TR0、TF0、T0(P3.4引脚)、(P3.2引脚);TH0此时只能用作内部定时功能,它借用了定时/计数器T1的控制位TR1和T1的中断标志位TF1,其启动和停止只受TR1控制。,第18页/共71页,4. 方式3第18页/共71页,图4-14 定时/计数器T0方式3的逻辑结构示意图,定时器T1无工作方式3,当定时器T0工作在方式3时,定时器T1可设置为方式0、方式1和方式2。,第19页/共71页,图4-14 定时/计数器T0方式3的逻辑结构示意图,4.4.1应
11、用指导 1定时/计数器的定时/计数范围 定时/计数器工作于不同方式下的位数不同,它所具有的计数范围也不一样:,工作方式0:13位定时/计数方式,因此,最多可以计到213,也就是8192次。 工作方式1:16位定时/计数方式,因此,最多可 以计到216,也就是65536次。 工作方式2和工作方式3:都是8位定时/计数方 式,因此,最多可以计到2 8,也就是256次。, 如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?,4.4定时/计数器应用与训练,第20页/共71页,4.4.1应用指导 工作方式0:13位定时/计,2时间常数初值的计算 定时/计数器只要预设一个时间常数初值,就可以完成
12、不超过其计数范围的任意大小的计数。算法如下: 定时时间常数初值X: 方式0 X=8192-t(fosc/12) 方式1 X=65536-t(fosc/12) 方式2、方式3 X=256-t(fosc/12) 其中t是需要定时的时间,单位是微秒;fosc是晶振,计数时间常数X: 方式0 X=8192-S 方式1 X=65536-S 方式2、方式3 X=256-S 说明:式中S是需要计数的次数,第21页/共71页,2时间常数初值的计算 计数时间常数X:第21页/共71,假设流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,应当预置的计数初值是多少呢? 对了,就是8
13、192-12=8180。,3定时/计数器的初始化对80C51单片机的定时/计数器编程的初始化方法: 对TMOD赋值,以确定T0和T1的工作方式; 计算时间常数初值,并将其写入TH0、TL0或TH1、 TL1; 采用中断定时方式时,需对IE赋值开中断; 置位TR0或TR1,启动定时/计数器。,第22页/共71页,假设流水线上一个包装是12盒,要求每到12盒就产,4.4.2 基本训练初始化训练,例3:某牛奶生产线上一个包装是12盒,要求每生产12盒就执行装箱操作,用80C51单片机来控制,请编写初始化程序。 1思路与计算:要确定定时器(T0 或T1),选择其工作方式。我们以T0的工作方式2为例,计
14、算时间常数并赋值给TH0、TL0。 X=256-S=256-12=244=0F4H,第23页/共71页,4.4.2 基本训练初始化训练 例3:某牛奶生,2初始化程序: MOV TMOD,#06H ;T0作计数器,工作于方式2 MOV TH0,#0F4H ;装入时间常数初值 MOV TL0,#0F4H ;自动重装时间常数 MOV IE ,#00H ;用查询方式确定计满12盒?(或MOV IE ,#82H);使用T0中断,计满12盒后, ;自动申请中断 SETB TR0 ;启动T0波特率发生器 3总结:对计数过程是否结束有查询和中断两种方法,要合理选择,并在程序设计中正确体现。,第24页/共71页
15、,2初始化程序:第24页/共71页,4.4.3应用实例 1 定时/计数器用于外部脉冲宽度的测量 (1)测量原理,可以利用定时计数器方式寄存器TMOD中的门控位GATE与 引脚配合使用,控制定时计数器的启动与停止: 当GATE1时,要求TR1l,且 为高电平,才能启动定时器T1计数工作;如果 出现低电平,则T1停止计数; 当GATE=0时,只要TR11就可以启动定时器,而与 的输入状态无关。,可以利用定时计数器方式寄存器TMOD中的门控位GATE与 引脚配合使用,控制定时计数器的启动与停止: 当GATE1时,要求TR1l,且 为高电平,才能启动定时器T1计数工作;如果 出现低电平,则T1停止计数
16、; 当GATE=0时,只要TR11就可以启动定时器,而与 的输入状态无关。,第25页/共71页,4.4.3应用实例 可以利用定时计数器,利用上述特点,将被测脉冲信号从(P3.3)引入,在T1的程序初始化中令GATE1,同时“SETB TR1”,这样脉冲信号的上升沿就能启动T1计数,脉冲信号下降沿能使T1停止计数。利用定时器T1的计数值m乘以机器周期就可以得到被测脉冲信号的宽度TW。,(2)硬件电路 硬件电路简图如图4-15。,第26页/共71页,利用上述特点,将被测脉冲信号从(P3.3)引入,(3)程序设计 利用80C51的内部RAM30H、31H单元保存被测脉冲宽度对应的计数值。 参考程序如
17、下: ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;设堆栈指针 MOV TMOD,#90H;设置控制字,T1工作于方式 ; 1,GATE=1 MOV TH1,#00H ;设定计数初值为00H,第27页/共71页,(3)程序设计第27页/共71页,MOV TL1,#00HL1: JB P3.3,L1 ;等待输入变为低电平 SETB TR1 ;预置TR1=1,准备启动T1L2: JNB P3.3,L2 ;等待上升沿,以便开始计数L3: JB P3.3,L3 ;是高电平则计数继续 CLR TR1 ;低电平则停止计数 MOV A,TL1 ;读低位计数值
18、 MOV 30H,A ;低位计数值存于30H MOV A,TH1 ;读高位计数值 MOV 31H,A ;高位计数值存于31H END,第28页/共71页,MOV TL1,#00H第28页/共71页,(4)总结与思考 定时/计数器还可用于测量脉冲信号的频率、周期等。本实例是利用定时/计数器的门控位(GATE)测量脉冲宽度。但要注意,在晶振12MHz的情况下,被测脉冲宽度范围最大为655351s=65.536ms。 ,如果要测量脉冲信号的周期,该如何去做? 2计数器用于绕线机的控制 绕线机常用于对电机或变压器的绕组进行绕制,图4-16是绕线机的控制电路。当按下工作按钮以后,机器启动,绕线机在直流电
19、机和减速齿轮的带动下开始工作。当绕线架上的线圈绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工作按钮,绕线机会重复以上过程。,第29页/共71页,(4)总结与思考第29页/共71页,图4-16 绕线机的控制电路控制说明:1软件控制P1.0=0时,绕线机开始绕线;P1.0=1时,绕线机不绕线。 2绕线机每绕一圈,绕线机脉冲产生电路就产生一个脉冲信号。,第30页/共71页,图4-16 绕线机的控制电路第30页/共71页,(1)工作原理 由于单片机复位后P1 口的输出状态全部为1,所以系统上电后,P1.0输出高电平“1”绕线机不工作。 当按下工作按钮以后,P1.1输入低电平“0”,当程序检测到
20、P1.1=0时,在程序指令的控制下从P1.0输出低电平“0”。绕线机开始绕线。绕线机每绕一圈,定时/计数器T1的输入引脚上就会产生一个负跳变的输入脉冲。因此,只要用定时/计数器T1的计数功能控制好输入脉冲的个数,就等于控制了绕线机的绕线圈数。 当绕线机缠绕到指定的圈数时,定时/计数器T1引发计数中断,在程序指令的控制下,P1.0将输出的高电平“1”,使电机停转,制动器恢复制动,于是系统回到最初的停机状态。,第31页/共71页,(1)工作原理第31页/共71页,我们假设绕线架的规定匝数是5000圈,为控制这个圈数,可以设定定时/计数器T1用作计数器且工作在方式1,于是确定其计数初值为: 初值=6
21、5536-5000=60536=0EC78H 所以(TH1)=0ECH,(TL1)=78H,(2)控制程序 参考程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP COUNT ORG 0100H,第32页/共71页,我们假设绕线架的规定匝数是5000圈,为控制这个,MAIN: MOV TMOD,#50H ;设置T1为计数器,工作于方式1 MOV TH1,#0ECH ;设定计数初值 MOV TL1,#78H MOV SP,#60H ;设堆栈指针 SETB ET1 ;开T1中断 SETB EA ;CPU开中断 CLR F0 ;用户标志F0清0,WAIT: MOV C,
22、P1.1;等待启动 JC WAIT;P1.1=1,等待 CLR P1.0;启动设备 SETB TR0;T1开始计数,第33页/共71页,WAIT: MOV C,P1.1;等待启动第,LOOP: JNB F0,$ ;等待计数5000中断 SETB P1.0;绕线机停止工作 CLR TR0 ;T1停止计数 CLR F0 ;清0 SJMP WAIT;等待重新启动 ORG 0200H;T1中断服务程序起始地址COUNT:MOV TH1,#0ECH;重新设定计数初值 MOV TL1,#78H SETB F0;用户标志置1 RETI ;中断返回 END,第34页/共71页,LOOP: JNB F0,$ ;
23、等待,.4.4课题与实训8 简易方波发生器,一.实训目的 掌握定时器初值的计算方法 学习定时器的使用及定时中断程序的设计方法 掌握方波信号发生器的设计方法二.课题要求 1基本要求: 利用定时/计数器T1,工作于方式0,采用查询方式,在P1.0引脚输出频率为500Hz的方波,并用示波器进行观察(晶振采用12MHz)。 2较高要求: 利用定时/计数器T1,工作于方式0,采用中断方式,在P1.0引脚输出频率为500Hz的方波,并用示波器进行观察(晶振采用12MHz)。,第35页/共71页,.4.4课题与实训8 简易方波发生器一.实训目的第35页,三.背景知识 1方波产生原理 使P1.0引脚的输出状态
24、定时翻转,则该端口能输出一定频率的方波。 2方式0的时间常数初值 定时/计数器工作于方式0状态下,定时/计数的长度是13位。应用前面给出的时间常数初值的计算公式 X=8192-t(fosc/12) 我们可以很方便地计算出时间常数初值,但在将其装入定时/计数器的TH、TL寄存器时,必须要注意:将计算结果的高8位装入TH1(或TH0)、低5位装入TL1(或TL0),这一环节是非常容易出错的。,第36页/共71页,三.背景知识第36页/共71页,以该实训T1方式0产生500Hz的方波(周期是2ms)为例,需要进行1ms的定时,时间常数初值 X=8192-110-3(12106/12)=8192- 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 计数器 课件

链接地址:https://www.31ppt.com/p-1724034.html