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