《第二讲定时器计数器及实验优秀课件.ppt》由会员分享,可在线阅读,更多相关《第二讲定时器计数器及实验优秀课件.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二讲定时器计数器及实验第二讲定时器计数器及实验第1页,本讲稿共39页定时定时/计数器及实验计数器及实验o本讲内容:本讲内容:o定时定时/计数器的概念计数器的概念oMCS51单片机的定时单片机的定时/计数器计数器o定时器的工作模式及控制方法定时器的工作模式及控制方法o课堂实验课堂实验第2页,本讲稿共39页定时定时/计数器的概念计数器的概念p计数器的定义:可以计量输入时钟的个数,结果以二进制表示,存放在若干字节(取决于计数器的长度)的RAM中,该部分存储单元称为计数寄存器。p精确的时钟信号+计数器=定时器第3页,本讲稿共39页MCS51的定时的定时/计数器计数器oMSC51片内有两个片内有两个1
2、6位定时器位定时器/计数器,即定时器计数器,即定时器0(T0)和定时器)和定时器1(T1),它们都有定时和事件计数),它们都有定时和事件计数的功能。其中,的功能。其中,T0由两个由两个8位特殊功能寄存器位特殊功能寄存器TH0和和TL0构成;构成;T1由由TH1和和TL1构成。构成。o每个定时器都可由软件设置为定时工作方式或计数工作每个定时器都可由软件设置为定时工作方式或计数工作方式及其他灵活多样的可控功能方式(指的是定时器的方式及其他灵活多样的可控功能方式(指的是定时器的4种工作模式)。种工作模式)。第4页,本讲稿共39页定时工作方式定时工作方式p在作定时器使用时,输入的时钟脉冲是由晶体振荡器
3、在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经的输出经12分频后得到的,所以定时器也可看作是对分频后得到的,所以定时器也可看作是对计算机机器周期的计数器计算机机器周期的计数器(因为每个机器周期包含因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加个振荡周期,故每一个机器周期定时器加1,可以把,可以把输入的时钟脉冲看成机器周期信号输入的时钟脉冲看成机器周期信号)。故其频率为晶。故其频率为晶振频率的振频率的1/12。如果晶振频率为。如果晶振频率为12MHZ,则定时器,则定时器每接收一个输入脉冲的时间为每接收一个输入脉冲的时间为1us。第5页,本讲稿共39页计数工作方式计数工作方式
4、o设置为计数工作方式时,通过引脚设置为计数工作方式时,通过引脚T0(P3.4)和)和T1(P3.5)对外部脉冲信号计数。单片机采样)对外部脉冲信号计数。单片机采样T0或或T1的输入电平,若在前一个机器周期采样为的输入电平,若在前一个机器周期采样为1,下一,下一个机器周期采样值为个机器周期采样值为0,则计数器加,则计数器加1,所以最高计数,所以最高计数频率为振荡频率的频率为振荡频率的1/24。o为了确保某个电平在变化之前至少被采样一次,要求电平保为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。持时间至少是一个完整的机器周期。第6页,本讲稿共39页小结小结o不管
5、是定时还是计数工作方式,定时器不管是定时还是计数工作方式,定时器T0或或T1在对内部在对内部时钟或对外部事件计数时,不占用时钟或对外部事件计数时,不占用CPU时间,除非定时器时间,除非定时器/计数器益处,才可能中断计数器益处,才可能中断CPU的当前操作。由此可见,的当前操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。定时器是单片机中效率高而且工作灵活的部件。第7页,本讲稿共39页中断讲解中断讲解u中断的概念中断的概念l在在程程序序运运行行期期间间,自自动动响响应应非非预预期期的的紧紧急急事事件件的的发发生生。通通常常是是为为了了避避免免查查询询方方式式的的程程序序设设计计。用得最多的
6、是外部中断与定时器中断。用得最多的是外部中断与定时器中断。外部中断:按键程序外部中断:按键程序定时器中断:定时与循环扫描等应用场合定时器中断:定时与循环扫描等应用场合u中断服务程序中断服务程序l中中断断发发生生时时,主主程程序序暂暂停停,跳跳转转到到中中断断服服务务程程序序,称称为为“响响应应中中断断”。执执行行完完毕毕后后返返回回主主程程序继续运行。序继续运行。l中中断断服服务务程程序序不不能能被被调调用用、没没有有返返回回值值,编编写写程序时不知道会在程序的何处发生中断。程序时不知道会在程序的何处发生中断。第8页,本讲稿共39页中断讲解中断讲解oC语言中采用一类特殊的函数来实现中断服务程序
7、,叫语言中采用一类特殊的函数来实现中断服务程序,叫做做“中断服务函数中断服务函数”,格式如下,格式如下 void 函数名函数名()interrupt No函数名可以任意,但一般要用一个有意义的函数名,例函数名可以任意,但一般要用一个有意义的函数名,例如如int0_srv;N代表中断向量编号,外部代表中断向量编号,外部INT0的中断服的中断服务函数中断向量号为务函数中断向量号为0,外部中断,外部中断INT1的的N=2,定时器,定时器T0的的N=1,定时器,定时器T1的的N=3。第9页,本讲稿共39页如何使用定时器?如何使用定时器?第10页,本讲稿共39页定时器的控制定时器的控制uMCS51MCS
8、51定时定时/计数器相关的寄存器计数器相关的寄存器lMCS51定定时时器器/计计数数器器有有四四种种工工作作模模式式,其其工工作作方方式式的的选选择择及及控控制制都都由由两两个个特特殊殊功功能能寄寄存存器器(TMOD和和TCON)的内容来决定。的内容来决定。lTMOD和和TCON寄存器在复位时其每一位均清零。寄存器在复位时其每一位均清零。u定时器的方式寄存器定时器的方式寄存器TMODTMODl特特殊殊功功能能寄寄存存器器TMOD为为定定时时器器的的方方式式控控制制寄寄存存器器,寄寄存存器器中中每每位位的的定定义义如如图图所所示示。高高4位位用用于于定定时时器器1,低低4位用于定时器位用于定时器
9、0。第11页,本讲稿共39页o定时器的方式寄存器TMOD1.M1 M0:定时器/计数器四种工作方式选择第12页,本讲稿共39页o定时器的方式寄存器TMOD2.C/T:定时器方式或计数器方式选择位。C/T=1时,为计数器方式;C/T=0时,为定时器方式。3.GATE 定时器/计数器运行控制位,用来确定对应的外部中断请求引脚(INT0,INT1)是否参与T0或T1的操作控制。当GATE=0时,只要定时器控制寄存器TCON中的TR0(或TR1)被置1时,T0(或T1)被允许开始计数(TCON各位含义见后面叙述);当GATE=1时,不仅要TCON中的TR0或TR1置位,还需要P3口的P3.2或P3.3
10、引脚为高电平,才允许计数。第13页,本讲稿共39页o定时器控制寄存器TCON1.TR0:T0的运行控制位。该位置1或清0用来实现启动计数或停止计数。2.TF0:T0的溢出中断标志位。当T0计数溢出时由硬件自动置1;在CPU中断处理时由硬件清为0。3.TR1:T1的运行控制位,功能同TR0。4.TF1:T1的溢出中断标志位,功能同TF0。第14页,本讲稿共39页模式模式1及应用及应用oMCS51MCS51定时器工作于方式定时器工作于方式1 1o当当M1:M0设设置置为为01时时,定定时时器器选选定定为为方方式式1工工作作。在在这这种种方方式式下下,由由TH0和和TL0组成一个组成一个16位计数器
11、。位计数器。1.当当GATE=0时时,只只要要TCON中中的的TR0为为1,TL0及及TH0组组成成的的16位位计计数数器器就就开始计数开始计数.2.当当GATE=1时时,此此时时仅仅TR0=1仍仍不不能能使使计计数数器器计计数数,还还需需要要P3.2引引脚脚为为1才才能能使使计计数数器器工工作作。由由此此可可知知,当当GATE=1和和TR0=1时时,TH0+TL0是是否否计计数数取取决决于于P3.2引引脚脚的的信信号号,当当P3.2由由0变变1时时,开开始始计计数数;当当P3.2由由1变变0时,停止计数,这样就可以用来测量在时,停止计数,这样就可以用来测量在P3.2端出现的脉冲宽度。端出现的
12、脉冲宽度。o当当16位位计计数数器器从从0或或设设定定的的初初值值,加加1到到全全“1”以以后后,再再加加1就就产产生生溢溢出出。这时,置这时,置TCON的的TF0位为位为1,同时把计数器变为全,同时把计数器变为全“0”第15页,本讲稿共39页oMCS51定时器使用步骤(工作于方式1)1.初始化TMOD,设置工作模式。2.根据定时间隔,计算并初始化TH0与TL0的数值。计算公式如下。其中FOSC是晶振频率(单位:Hz),T是定时间隔(单位:S)3.如果中断方式使用定时器,则需置位中断允许控制寄存器(IE)中的ET0或ET1,而且要打开全局中断(EA=1)。同时要写好中断服务函数。4.将TR0或
13、TR1置位,启动定时器。第16页,本讲稿共39页o定时间隔计算公式的推导过程1.计算时钟周期:MCS51的定时器的时钟源就是CPU的工作时钟,因此时钟周期t。例如晶振频率24MHz时,t=0.5*10-6S2.计算定时间隔经历的时钟周期数N。例如期望的定时间隔是10mS,则N=20000。3.计 算 TH0:TL0的 初 值。对 于 T=10mS,FOSC=24MHz,结果为45535第17页,本讲稿共39页模式模式0及应用及应用o该模式结构与操作几乎与模式该模式结构与操作几乎与模式0完全相同,唯一的差别是:完全相同,唯一的差别是:16位寄存器(位寄存器(TH0和和TL0)只用了)只用了13位
14、。其中,位。其中,TL0的高的高3位未使用,其余位为整个位未使用,其余位为整个13位的低位的低5位,位,TH0占高占高8位。位。当当TL0的低的低5位溢出时,向位溢出时,向TH0进位;进位;TH0溢出时,向中溢出时,向中断标志位断标志位TF0进位,申请中断。进位,申请中断。o模式模式0的最大定时时间:的最大定时时间:o模式模式1的最大定时时间:的最大定时时间:第18页,本讲稿共39页模式实例程序模式实例程序ovoid init_tc0(void)/24MHz时定时时定时10mSooTMOD|=0 x01;/定时器模式定时器模式 oTH0=(65535-20000)8;/初值高初值高8位位oTL
15、0=(65535-20000)&0 xff;/初值低初值低8位位o EA=1;/打开全局中断打开全局中断oET0=1;/开定时中断开定时中断oTR0=1;/启动定时器启动定时器oovoid tc0_srv(void)interrupt 1/定时器定时器0中断服务程序中断服务程序ooTH0=(65535-20000)8;/重置初值高重置初值高8位位oTL0=(65535-20000)&0 xff;/重置初值低重置初值低8位位oovoid main(void)oo init_tc0();o while(1);/条件总为真,死循环条件总为真,死循环o第19页,本讲稿共39页蜂鸣器蜂鸣器 实验一实验一
16、中断方式使用定时器中断方式使用定时器实验内容:使用定时器T0定时,使蜂鸣器每隔1S响一次,一次响一秒钟。第20页,本讲稿共39页蜂鸣器蜂鸣器 实验一实验一中断方式使用定时器中断方式使用定时器第21页,本讲稿共39页蜂鸣器蜂鸣器 实验一实验一中断方式使用定时器中断方式使用定时器第22页,本讲稿共39页蜂鸣器蜂鸣器 实验一实验一中断方式使用定时器中断方式使用定时器为了使OUT3驱动蜂鸣器,锁存器U22的所存使能端要为高电平,从而CS4和WR要同时为低电平,所以对P2和P3引脚的操作为:P3&=(16);P2=0 x80;第23页,本讲稿共39页o#include/必要的头文件必要的头文件o#inc
17、lude/必要的头文件必要的头文件osbit BUZ_BIT=P03;/控制蜂鸣器的控制蜂鸣器的IO口口ounsigned int cnt;ovoid init_tc0(void)/24MHz时定时时定时10mSooTMOD|=0 x01;/定时器模式定时器模式 oTH0=(65535-20000)8;/初值高初值高8位位oTL0=(65535-20000)&0 xff;/初值低初值低8位位o EA=1;/打开全局中断打开全局中断oET0=1;/开定时中断开定时中断oTR0=1;/启动定时器启动定时器o蜂鸣器蜂鸣器 实验一实验一中断方式使用定时器中断方式使用定时器第24页,本讲稿共39页ovo
18、id tc0_srv(void)interrupt 1/定时器定时器0中断服务程序中断服务程序ooTH0=(65535-20000)8;/重置初值高重置初值高8位位oTL0=(65535-20000)&0 xff;/重置初值低重置初值低8位位oif(cnt 100)/10mS X 100=1So cnt+;oelseoo BUZ_BIT=BUZ_BIT;o cnt=0;/计数归零计数归零o oovoid main(void)oo init_tc0();o P3&=(1 6);P2=0 x88;/此代码用于选通蜂鸣器,此代码用于选通蜂鸣器,o while(1);/条件总为真,死循环条件总为真,死
19、循环o蜂鸣器蜂鸣器 实验一实验一中断方式使用定时器中断方式使用定时器第25页,本讲稿共39页流水灯流水灯 实验二实验二o实验内容:实验内容:使八个发光二极管每隔使八个发光二极管每隔1S钟亮一次。钟亮一次。o 关闭蜂鸣器的程序代码:关闭蜂鸣器的程序代码:P3&=(16);P2=0 x80;BUZ_BIT=0;P3|=(16);P2=0 xE0;P0=0 xff;第26页,本讲稿共39页数码管数码管 实验三实验三定时中断方式扫描数码管定时中断方式扫描数码管八段数码管八段数码管 由八段由八段LED构成,各构成,各LED阴极或阳极并在一起,称为阴极或阳极并在一起,称为“位选线位选线”:共阴、:共阴、共
20、阳,其余共阳,其余8个引脚各自引出,称为个引脚各自引出,称为“段选线段选线”,各段可以分别控制。,各段可以分别控制。段码表将需要的字形对应的各个段点亮,即可显示对应的数字。一般将数字对应的段列表做成数组的形式,称为段码表。第27页,本讲稿共39页数码管数码管 实验三实验三定时中断方式扫描数码管定时中断方式扫描数码管o多位合一的数码管多位合一的数码管 将多个八段数码管的段选线分别并在一起,位选线引出。将多个八段数码管的段选线分别并在一起,位选线引出。第28页,本讲稿共39页静态显示与扫描显示静态显示与扫描显示o静态显示静态显示o共阳数码管:公共端接共阳数码管:公共端接Vcc,用单片机的一个,用单
21、片机的一个8位位IO(以以P0为例为例)口接在口接在段选线上,段选线上,P0输出相应段码的反码即可显示相应的数字。输出相应段码的反码即可显示相应的数字。o共阴数码管:公共端接地,用单片机的一个共阴数码管:公共端接地,用单片机的一个8位位IO(以以P2为例为例)口接在段选线上,口接在段选线上,P2输出相应段码即可显示相应的数字。输出相应段码即可显示相应的数字。MCS51的的IO口拉电流能力很弱,不推口拉电流能力很弱,不推荐此种接法。荐此种接法。o扫描显示扫描显示o将多位数码管的共阴将多位数码管的共阴/共阳数码管的公共端也用共阳数码管的公共端也用IO口加以控制,各个位轮口加以控制,各个位轮番显示,
22、利用人眼的视觉暂留效应,使得看上去所有位一起亮。番显示,利用人眼的视觉暂留效应,使得看上去所有位一起亮。o位选线上的电流可能会很大位选线上的电流可能会很大(例如例如8位数码管一起亮时,相当于位数码管一起亮时,相当于64个个LED一起发一起发光的电流光的电流),一般要用三极管或者数字芯片驱动。,一般要用三极管或者数字芯片驱动。第29页,本讲稿共39页o学习板上的数码管扫描显示电路数码管数码管 实验三实验三定时中断方式扫描数码管定时中断方式扫描数码管第30页,本讲稿共39页数码管数码管 实验三实验三定时中断方式扫描数码管定时中断方式扫描数码管第31页,本讲稿共39页动态扫描程序代码动态扫描程序代码
23、 for(com=0;com 8;com+)/位选计数位选计数 P2=0 x00;P3&=0 xbf;P0=(1com);/共阴数码管,按位取反共阴数码管,按位取反 P2=0 x20;P3&=0 xbf;P0=scandatacom;/要显示的值要显示的值 my_delay_1ms(1);/延时延时1mS P0=0;/消隐,防止重影消隐,防止重影第32页,本讲稿共39页o动态扫描:动态扫描:使使8个数码管分别显示个数码管分别显示0,1,2,3,4,5,6,7o使用定时器:使用定时器:使使8个数码管同时从个数码管同时从0显示到显示到7,时间间隔为,时间间隔为1S。数码管数码管 实验三实验三定时中
24、断方式扫描数码管定时中断方式扫描数码管第33页,本讲稿共39页模式模式2及应用及应用o模式把模式把TL0(或或TL1)配置成一个可以自动重装载的配置成一个可以自动重装载的8位位定时器定时器/计数器。计数器。TL0计数溢出时,不仅使溢出中断标计数溢出时,不仅使溢出中断标志位志位TF0置置1,而且还自动把,而且还自动把TH0中的内容重新装载到中的内容重新装载到TL0中。这里中。这里TL0用作用作8位计数器,位计数器,TH0用以保存初值。用以保存初值。o在程序初始化时,在程序初始化时,TL0和和TH0由软件赋予相同的初值。由软件赋予相同的初值。一旦一旦TL0计数溢出,便置位计数溢出,便置位TF0,并
25、将,并将TH0中的初值自中的初值自动装入动装入TL0,继续计数,循环重复。,继续计数,循环重复。第34页,本讲稿共39页模式模式2及应用及应用o用于定时工作方式时,其定时时间为:用于定时工作方式时,其定时时间为:o用于计数工作方式时,最大计数长度为用于计数工作方式时,最大计数长度为256(个外部脉(个外部脉冲)。冲)。o这种工作模式可以省去用户软件中重装常数的语句,可这种工作模式可以省去用户软件中重装常数的语句,可产生相当精确的定时时间。产生相当精确的定时时间。第35页,本讲稿共39页模式模式2程序实例程序实例ovoid init_tc0(void)/24MHz时定时时定时0.1mSooTMO
26、D|=0 x02;/定时器模式定时器模式 oTH0=56;/初值高初值高8位位oTL0=56;/初值低初值低8位位o EA=1;/打开全局中断打开全局中断oET0=1;/开定时中断开定时中断oTR0=1;/启动定时器启动定时器o ovoid tc0_srv(void)interrupt 1/定时器定时器0中断服务程序中断服务程序oooovoid main(void)oo init_tc0();o while(1);/条件总为真,死循环条件总为真,死循环o第36页,本讲稿共39页模式模式3及应用及应用o若将若将T0设置为模式设置为模式3,TL0和和TH0被分成为两个相互独被分成为两个相互独立的立
27、的8位计数器。位计数器。TL0用原用原T0的各控制位、引脚和中断的各控制位、引脚和中断源,即源,即C/T,GATE,TR0,TF0和和T0。TL0除仅用除仅用8位位寄存器外,其功能和操作与模式寄存器外,其功能和操作与模式0、模式、模式1完全相同。完全相同。TH0只可用作简单的内部计时,不可用于外部计数。它只可用作简单的内部计时,不可用于外部计数。它占用了占用了T1的控制位的控制位TR1和中断标志位和中断标志位TF1。oT1无工作模式无工作模式3,但可设置为模式,但可设置为模式02。当。当T0用于模式用于模式3时,时,T1的的TR1和和TF1被被T0占用,此时,仅用占用,此时,仅用T1控制位控制
28、位C/T切换其定时器或计数器工作方式就可使切换其定时器或计数器工作方式就可使T1运行。寄运行。寄存器溢出时,只能将输出送入串行口或用于不需要中断存器溢出时,只能将输出送入串行口或用于不需要中断的场合。的场合。第37页,本讲稿共39页o一般情况下,当定时器一般情况下,当定时器T1用作串行波特率发生器时,用作串行波特率发生器时,定时器定时器T0才设置为工作模式才设置为工作模式3。此时常把。此时常把T1设置为模式设置为模式2,用作波特率发生器。在,用作波特率发生器。在51单片机的实际应用中,模单片机的实际应用中,模式式3极少被使用,所以只需了解。极少被使用,所以只需了解。模式模式3及应用及应用第38页,本讲稿共39页课堂实验课堂实验o实验内容:实验内容:使用定时器使用定时器T0模式模式2,完成实验一,实验二,实验三。,完成实验一,实验二,实验三。第39页,本讲稿共39页