收藏 分销(赏)

第06章 MCS-51单片机定时计数器.ppt

上传人:s4****5z 文档编号:13985414 上传时间:2026-05-22 格式:PPT 页数:44 大小:249KB 下载积分:10 金币
下载 相关 举报
第06章 MCS-51单片机定时计数器.ppt_第1页
第1页 / 共44页
第06章 MCS-51单片机定时计数器.ppt_第2页
第2页 / 共44页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,定时,/,计数器的结构,定时,/,计数器的工作方式,定时,/,计数器的应用,单片机音乐,第,6,章定时,/,记数器,本章内容,Single Chip Microcomputer,概述,通常采用以下三种方法来实现定时或计数:,1,硬件法,硬件定时功能完全由硬件电路完成,不占用,CPU,时间。但当要求改变定时时间时,只能通过改变电路中的元件参数来实现,很不灵活。,2,软件法,软件定时是执行一段循环程序来进行时间延时,优点是无额外的硬件开销,时间比较精确。但牺牲了,CPU,的时间。,3,可编程定时器计数器,MSC-51,单片机定时,/,计数器的结构,返回,定时电路集成在芯片中,称为定时器,/,计数器。,MCS-51,的单片机内有两个,16,位可编程的定时器,/,计数器,分别称为定时器,/,计数器,0,和定时器,/,计数器,1,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。,图,-,:定时,/,计数器结构,定时器,/,计数器的控制寄存器,1,工作方式控制寄存器(,TMOD),位,D7,D6,D5,D4,D3,D2,D1,D0,位符号,GATA,M1,M0,GATA,M1,M0,T1,方式字段,T0,方式字段,GATE,:门控位。,GATE=0,启动不受,/INT0,或,/INT1,的控制;,GATE=1,启动受,/INT0,或,/INT1,的控制。,C/,:外部计数器,/,定时器方式选择位。,C/=0,定时方式;,C/=1,计数方式。,M1M0,:工作模式选择位。,M1 M0,模式 说明,0 0 0 13,位定时,/,计数器,高八位,TH,(,7 0,),+,低五位,TL,(,4 0,),0 1 1 16,位定时,/,计数器,,TH,(,7 0,),+TL,(,7 0,),1 0 2 8,位计数初值自动重装,,TL,(,7 0,),TH,(,7 0,),1 1 3 T0,运行,而,T1,停止工作,,8,位定时,/,计数。,定时,/,计数器控制寄存器(,TCON),位,D7,D6,D5,D4,D3,D2,D1,D0,位符号,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,TR0,:定时,/,计数器,0,运行控制位。软件置位,软件复位。与,GATE,有关,分两种情况:,GATE=0,时:若,TR0=1,,开启,T0,计数工作;若,TR0=0,,停止,T0,计数。,GATE=1,时:若,TR0=1,且,/INT0=1,时,开启,T0,计数;,若,TR0=1,但,/INT0=0,,则不能开启,T0,计数。,若,TR0=0,,停止,T0,计数。,TR1,:定时,/,计数器,1,运行控制位。用法与,TR0,类似。,定时器,/,计数器的工作方式,定时,/,计数器工作方式,工作方式,0,是,13,位计数结构的工作方式,其计数器由,TH,的全部,8,位和,TL,的低,5,位构成,,TL,的高,3,位没有使用。当,C/T,=0,时,多路开关接通振荡脉冲的,12,分频输出,,13,位计数器以次进行计数。这就是定时工作方式。当,C/T,=1,时,多路开关接通计数引脚(,To,),外部计数脉冲由银南脚,To,输入。当计数脉冲发生负跳变时,计数器加,1,,这就是我们常称的计数工作方式,图,-2,:定时,/,计数器工作方式,0,逻辑结构,在工作方式,0,下,计数器的计数值由下式确定:,2,13,-X=8192-X,计数值范围是:,1,8192,(,2,13,),定时器的定时值由下式确定:,T=N*,Tcy,=(8192-X)*,Tcy,2.,定时,/,计数器工作方式,1,当,M1,,,M0=01,时,定时,/,计数器处于工作方式,1,,此时,定时,/,及数器的等效电路如图所示,可以看出,方式,0,和方式,1,的区别仅在于计数器的位数不同,方式,0,为,13,位,方式,1,则为,16,位,由,TH0,作为高,8,位,,TL0,为低,8,位,有关控制状态字与方式,0,相同。则只需将工作方式,0,的计算公式中的,2,13,改为,2,16,就可得到工作方式,1,的计数值计算公式和定时时间计算公式。,图,-,:定时,/,计数器工作方式逻辑结构,3,定时,/,计数器工作方式,2,当,M1,,,M0=10,时,定时,/,计数器处于工作方式,2,,此时,定时,/,及数器的等效电路如图所示,图,-,:定时,/,计数器工作方式逻辑结构,具有自动重装载功能,即自动加载计数初值,,在这种工作方式中,,16,位计数器分为两部分,以,TL0,为计数器,以,TH0,作为预置寄存器,,当计数溢出时,,TH,以硬件方法自动给计数器,TL0,重新加载,。,工作在方式下,计数器的计数值由下式确定:,2,8,-X=256-X,计数范围为,:,1,256,定时器的定时值由下式确定:,T=N*,Tcy,=(256-X)*,Tcy,定时,/,计数器工作方式,当,M1,,,M0=10,时,定时,/,计数器处于工作方式,2,,此时,定时,/,及数器的等效电路如图所示,图,-5,:定时,/,计数器工作方式,3,等效电路,工作方式,3,只适用于定时,/,计数器,T0,。当,T0,工作在方式,3,时,,TH0,和,TL0,被分为两个独立的,8,位计数器。,TL0,可作为定时器或计数器使用,占用了,T0,本身的控制信号,TF0,和,TR0,。,TH0,只能作为定时器使用,且占用了定时,/,计数器,T1,的两个控制信号,TR1,和,TF1,。,当,T0,工作于方式,3,时,,T1,只能工作在方式,0,、方式,1,或方式,2,,并且由于已没有计数溢出标志位,TF1,可供使用,只能把计数溢出直接送给串行口,作串行口的波特率发生器使用。等效电路图如下,图,-,:方式下的作为波特率发生器等效电路,TH1,(8,位,),TL1,(8,位或,5,位,),12,分频,OSC,TL1,(8,位,),TH1,(8,位,),12,分频,OSC,C/T=0,C/T=1,C/T=0,C/T=1,串行口,串行口,T1(P3.5),T1(P3.5),T1,工作方式,0(,或,1),T1,工作方式,2,定时,/,计数器应用举例,在使用定时,/,计数器时,应做好四件事:设置,TMOD,以选择工作方式;计算并设置计数初值,THX,TLX,;设置,IE,、,IP,以规定中断的开放,/,禁止及优先级;设置,TCON,以启动,/,停止定时,/,计数器的工作。,工作方式的应用,【,例,】,设单片机晶振频率,fosc,=6MHZ,,使用定时器,1,以方式,0,产生周期为,600s,的等宽方波脉冲,并由,P1.7,输出,以查询方式完成。,解:,(1),计算计数初值欲产生周期为,600s,的等宽方波脉冲,只需在,P1.7,端以,300s,为周期交替输出高低电平即可,因此定时时间应为,300s,。设待求计数初值为,N,,则:,(,213-N,),2,10-6=300,10-6,N=8042=1F6AH,0001111101101010B,将低,5,位,01010B=0A,写入,TL1,,将高,8,位有效值,11111011B=FBH,写入,TH1,中。,(,2,),TMOD,初始化,为把定时,/,计数器,1,设定为方式,0,,则,M1M0=00,。为实现定时功能应使,C/=0,,为实现定时器启动应使,GATE=0,,因此设定工作方式控制寄存器,TMOD=00H,。,(,3,)由,TR1,启动和停止定时器,TR1=1,为启动,,TR1=0,为停止,参考程序如下:,ORG 1000H,START:MOV TCON,#00H ;,清,TCON,MOV TMOD,#00H ;,工作方式设定,MOV TH1,#0FBH ;,计数初值设定,MOV TL1,#0AH,MOV IE,00H ;,关中断,SETB TR1 ;,启动,TR1,LOOP0:JBC TF1,LOOP1 ;,查询是否溢出,SJMP LOOP0,LOOP1:MOV TH1,#0FBH ;,重设初值,MOV TL1,#0AH,CPL P1.7 ;,输出取反,SJMP LOOP0,END,工作方式应用,【,例,】,已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔,如图,6-6,所示。使用光电开关统计一定时间内的产品个数。假定红灯亮时停止统计,红灯灭时才在上次统计结果的基础上继续统计,试用单片机定时,/,计数器,T1,的方式,1,完成该项产品的计数任务。,解:,(1),初始化,:GATE=1,C/T=1,M0M1=01,,故,TMOD=11010000B=0D0H,,,TCON=00,(2)T1,在方式,1,时,溢出产生中断,且计数器回零,故在中断服务程序中,需用,R0,计数中断次数,以保护累积计数结果。,(3),启动,T1,计数,开,T1,中断。,参考程序如下:,ORG 0000H,AJMP START,ORG 001BH,AJMP T1INT,ORG 0100H,START:MOV SP,#60H,MOV TCON,#00H,MOV TMOD,#0D0H,MOV TH1,#0FFH,图,-,:产品传送带原理图,MOV TL1,#0FFH,MOV R0,#00H,MOV P3,#28H ;,置,P3.5,,,P3.3,为输入状态,SETB TR1,SETB ET1,SETB EA,MAIN:LCALL DISP,ORG 0A00H,T1INT:INC R0,MOV TH1,#0FFH,MOV TL1,#0FFH,RETI,DISP:,RET,END,工作方式的应用,【,例,】,使用定时器,T0,以方式,2,产生,200,微秒定时,在,P1.0,输出周期为,400,微秒的连续方波。已知晶振频率,fosc,=6MHz,。,(,1,)计算计数初值,(,256-N,),2,10-6=200,10-6,N=156=9CH,(,2,),TMOD,初始化,工作方式,2,时,,M1M0=10,,实现定时功能,C/=0,,,GATE=0,。定时器,1,不用,无关位设定为,0,,可得,TMOD=02H,。,参考程序如下:,ORG 000BH,LJMP LOOP0,ORG 0200H,START:MOV TCON,#00H,MOV TMOD,#02H ;,定时器方式,2,MOV TH0,#9CH ;,计数初值,MOV TL0,#9CH,SETB EA ;,允许总中断,SETB ET0 ;T0,中断允许,SETB TR0 ;,启动,T0,HERE:SJMP HERE ;,等待中断,ORG 0500H ;,中断服务程序,LOOP0:CPL P1.0,RETI,END,工作方式的应用,【,例,】,假设有一个用户系统中已使用了两个外部中断源,并置定时器,T1,于方式,2,作串行口波特率发生器用,现要求再增加一个外部中断源,并由,P1.0,口输出一个,5 Hz,的方波(假设晶振频率为,6 MHz,)。,在不增加其它硬件开销时,可把定时,/,计数器,T0,置于工作方式,3,,利用外部引脚,T0,端作附加的外部中断输入端,把,TL0,预置为,0FFH,,这样在,T0,端出现由,1,至,0,的负跳变时,,TL0,溢出,申请中断,相当于边沿激活的外部中断源。在方式,3,下,,TH0,总是作,8,位定时器用,可以靠它来控制由,P1.0,输出的,5kHz,方波。,由,P1.0,输出,5kHz,的方波,即每隔,100s,使,P1.0,的电平发生一次变化。则,TH0,中的初始值:,X=M-N=256-100/2=206,。,下面是有关的程序:,MOV TL0,0FFH,MOV TH0,206,MOV TL1,BAUD ;BAUD,根据波特率要求设置常数,MOV TH1,BAUD,MOV TMOD,27H ;,置,T0,工作方式,3,TL0,工作于计数器方式,MOV TCON,55H ;,启动定时器,T0,、,T1,置外部中断,0,和,1,为边沿激活方式,MOV IE,9FH ;,开放全部中断,TL0,溢出中断服务程序(由,000BH,单元转来),:,TL0INT:MOV TL0,0FFH ;,外部引脚,T0,引起中断处理程序,RETI,TH0,溢出中断服务程序(由,001BH,转来),:,TH0INT:MOV TH0,206,CPL P1.0,RETI,此处串行口中断服务程序、外中断,0,和外中断,1,的中断服务程序没有列出。,5.,定时器作外部中断源应用,MCS,51,单片机有两个定时器计数器,当它们选择计数工作方式时,,T0,或,T1,引脚上的负跳变将使,T0,或,T1,计数器加,1,,若把定时器计数器设置成计数工作方式,计数初值设定为满量程,一旦计数从外部引脚输入一个负跳变信号,计数器,To,或,T1,加,1,,产生溢出中断,这样,便可把外部计数输入端,T0(P3,4),或,T1(P3,5),扩展为外部中断源输入。,【,例,】,将,T1,设置为工作方式,2(,自动恢复常数,),及外部计数方式,计数器,TH1,、,TLl,初值设置为,FFH,,当计数输入端,T1(P3,5),发生一次负跳变,计数器加,1,并产生溢出标志,向,CPU,申请中断,中断处理程序使累加器,A,内容加,1,,送,P1,口输出,然后返回主程序。,编程如下:,ORG 0000H,AJMP MAIN,ORG 0013H,AJMP INT,MAIN:MOV SP,#53H,MOV TMOD,#60H ;T1,方式,2,,计数,MOV TL1,#0FFH,MOV TH1,#0FFH,SETB TR1 ;,启动,T1,SETB ET1 ;T1,中断允许,SETB EA ;CPU,中断开放,LOOP:SJMP LOOP ;,等待,INT:INC A ;T1,中断处理,MOV P1,A,RETI ;,中断返回,END,单片机音乐,声音的频谱范围为,20Hz-200KHz,,人的耳朵能辨别的声音频率大概在,200Hz-20KHz,。利用定时,/,计数器可以方便地产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,改变定时,/,计数器的初值,即可改变频率,即改变音调。用延时程序或另一个定时器控制某一频率信号持续的时间长短,就可以控制节拍。音调和节拍是音乐的两大要素,有了音调和节拍,就可以演奏音乐了。,用单片机产生音频脉冲,只要算出该音频的周期,T,,然后用定时器定时,1/2 T,,定时时间到时,将输出脉冲的,I/O,管脚反相,再重新计时输出,定时时间到再反相,重复此过程就可在此,I/O,管脚得到此音频脉冲,。,乐曲中,每个音符都对应着确定的频率,每一频率都对应定时器的一个频率初值。每个节拍都有固定的时间,都对应延时程序的一个参数或定时器的一个节拍初值。可以将每一音符对应的定时器频率初值和节拍参数或节拍初值计算出来,把乐谱中所有音符对应的定时器频率初值和节拍参数按顺序排列成表格,然后用查表程序依次取出,产生指定频率的音符并控制节奏,就可以实现演奏效果。,为了控制演奏的结束,结束符和休止符可以分别用代码,00H,和,FFH,来表示,若查表结果为,00H,,则表示曲子终了;若查表结果为,FFH,,则产生相应的停顿效果。为了产生节奏感,在某些音符(例如两个相同音符)间可以插入一个时间单位的频率略有不同的音符,以示区别。,乐曲的,12,平均率规定:每,2,个八度音,(,如简谱中的中音,1,与高音,1),之间的频率相差,1,倍。在,2,个八度音之间,又可分为,12,个半音。音符,A(,简谱中的低音,6),的频率为,440Hz,,音符,B,到,C,之间、,E,到,F,之间为半音,其余为全音。,【,例,】,用单片机演奏,“,生日快乐,”,歌曲,设用定时器,T0,工作于方式,1,产生频率,用,T1,控制节拍,,P2.5,驱动蜂鸣器,晶振频率为,6MHz,。节拍以,1/8,拍为基准,其它节拍为该节拍的,N,倍,用循环,N,次,1/8,基准节拍实现。电路如上图所示所示。表,6-1,列出了,C,调各音符频率与,T0,初值,N,的对照表。,“,#,”,表示半音,用于上升或下降半个音。,参考程序如下,:,BASE EQU 62500 ;,设定,1/8,拍,SPEAKER EQU P2.5 ;,设定输出口,;,主程序,ORG 0000H ;,从,0,地址开始,JMP INITIAL ;,跳至,INITIAL,ORG 000BH ;TIMER0,中断向量,JMP TONEINT ;,跳至,TIMER0,中断子程序,ORG 001BH ;TIMER1,中断向量,JMP BEATINT ;,跳至,TIMERl,中断子程序,INITIAL:MOV TMOD,#11H ;,设定定时器模式;启用定时器,MOV IE,#10001010B ;,定时器中断开放,MOV SP,#70H ;,移开堆栈,START:CLR F0 ;,节拍结束标志,MOV R7,#0 ;,音阶起始间距,MOV R6,#0 ;,节拍起始间距,LOOP:LCALL LOADTONE ;,载入音阶,LCALL LOADBEAT1 ;,载入节拍,JNB F0,$;,节拍结束?,CLR F0,JMP LOOP ;,下一个音节,;,载入音节,LOADTONE:MOV DPTR,#TONE ;,指定音阶起始地址,MOV A,R7;,指定间距,MOVC A,A+DPTR;,读取音阶,JNZ CONTINUE;,判断是否为最后一个音?,MOV R6,#0;,节拍从头开始,MOV R7,#0;,音阶从头开始,JMP LOADTONE;,跳到,LOADTONE,CONTINUE:MOV 20H,A;,储存定时器值高字节,MOV TH0,A;,指定定时器值高字节,INC R7;,下一个间距,MOV A,R7;,指定间距,MOVC A,A+DPTR;,读取定时器值低字节,MOV 21H,A ;,储存定时器值低字节,MOV TL0,A;,指定定时器值低字节,INC R7;,下一个间距,SETB TR0;,启动,TIMER0,RET;,返回,;,载入节拍,LOADBEAT1:MOV DPTR,#BEAT ;,指定节拍起始地址,MOV A,R6 ;,指定间距,MOVC A,A+DPTR ;,读取节拍,MOV R5,A ;,指定节拍,MOV TH1,#BASE ;,指定定时器初值高字节,MOV TL1,#BASE ;,指定定时器初值低字节,SETB TR1 ;,启动,TIMERl,RET ;,返回,;,音符中断子程序,TONEINT:CLR TR0;,关闭,TIMER0,CPL SPEAKER;,驱动喇叭,MOV A,20H;,取回定时器初值高字节,MOV TH0,A ;,指定定时器初值高字节,MOV A,21H;,取回定时器初值低字节,MOV TL0,A;,指定定时器初值低字节,SETB TR0;,启动,TIMER0,RETI;T0,中断返回,;,节拍中断子程序,BEATINT:CLR TR1;,关闭,TIMERl,DJNZ R5,AGAIN;,循环结束?,CLR TR0;,关闭,TIMBR0,SETB F0;F0,1,,结束节拍,JMP EXIT1;,跳至,EXIT1,AGAIN:MOV TH1,#BASE ;,指定定时器初值高字节,MOV TL1,#BASE ;,指定定时器初值低字节,SETB TR1;,启动,TIMERl,EXIT1:RETI,;音符表,TONE,;第一小节,DB 252,,,68,,,252,,,68,DB 252,,,173,,,252,,,68,;第二小节,DB 253,,,52,,,253,,,10,;第三小节,DB 252,,,68,,,252,,,68,DB 252,,,173,,,252,,,68,;第四小节,DB 253,,,131,,,253,,,52,;第五小节,DB 252,,,68,,,252,,,68,DB 254,,,34,,,253,,,200,;第六小节,DB 253,,,52,,,253,,,10,DB 254,,,87,;第七小节,DB 254,,,6,,,254,,,6,DB 253,,,200,,,253,,,52,;第八小节,DB 253,,,131,,,253,,,52,,,0,;节拍表,BEAT,:,;第一小节,DB 4,,,4,,,8,,,8,;第二小节,DB 8,,,16,;第三小节,DB 4,,,4,,,8,,,8,;第四小节,DB 8,,,16,;第五小节,DB 4,,,4,,,8,,,8,;第六小节,DB 8,,,8,,,8,;第七小节,DB 4,,,4,,,8,,,8,;第八小节,DB 8,,,16,,,0,;,END,题目:,音乐程序设计,内容:,声音的产生是一种音频振动的效果,振动的频率高则为高音,振动的频率低则为低音。音频的频率范围为,20Hz,200KHz,。以不同频率的信号驱动喇叭,喇叭即可发出不同的声音。音乐的核心要素是音调和节拍,在单片机上演奏音乐的基本原理是用定时器产生不同频率(音调)的信号驱动喇叭,以延时程序控制节拍。设计一个单片机音乐系统,演奏,“,雪绒花,”,歌曲。,实践,要求:,用按键开关启动演奏,也可以用按键开关停止演奏,演奏期间,LED,发光二极管闪烁,闪烁频率为,1Hz,。,硬件:,画出硬件电路原理图,考虑按键中断及喇叭驱动。,软件:,画出程序流程图,编写源程序,考虑,LED,闪烁问题。,调试:,记录调试过程,分析调试结果。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服