1、项目三 时钟系统设计任务1 报警声发生器设计任务内容 组装一个报警声发生系统,由单片机外接蜂鸣器控制发声,上电后发出“滴.嘟.滴.嘟.”高低音交错的报警声。学习目标1.了解51单片机定时器/计数器的结构、工作原理2.学会用查询的方法处理定时/计数溢出的情况3.了解蜂鸣器发声原理,掌握单片机控制输出不同声调的方法 知 识 点知识点一 定时器/计数器的结构及工作原理知识点二 定时器/计数器的控制寄存器知识点三 定时/计数器的工作方式知识点四 定时器/计数器的应用知识点一 定时器/计数器的结构及工作原理1 1定时器定时器/计数器的结构计数器的结构AT89C51定时器/计数器逻辑结构图2 2个定时个定
2、时/计数计数器器T0T0和和T1T1T0、T1分别由TH0、TL0,TH1、TL1构成,存放定时或计数初始设定值(初值)工作方式寄存器工作方式寄存器控制寄存器控制寄存器知识点一 定时器/计数器的结构及工作原理2 2定时器定时器/计数器的工作原理计数器的工作原理 定时器定时器/计数器是一个二进制的计数器是一个二进制的加加1寄存器寄存器,当启动后就开,当启动后就开始始从从设定的计数设定的计数初初始始值值开始开始加加1计数,寄存器计数,寄存器计满计满回零时能自回零时能自动动置置位标志位位标志位TF,产生产生溢出溢出中断中断请求。请求。在定时器模式下,每个机器周期寄存器加在定时器模式下,每个机器周期寄
3、存器加1,即寄存器对,即寄存器对机器周期计数。因为一个机器周期有机器周期计数。因为一个机器周期有12个振荡周期,所以计数个振荡周期,所以计数频率是晶振频率的频率是晶振频率的1/12,即,即计数周期计数周期T=1/(晶振频率晶振频率1/12)例例:若晶振频率为若晶振频率为6MHZ,求定时器模式的计数周期,求定时器模式的计数周期 解解:T=1T=1/(/(晶振频率晶振频率1/121/12)=1/(6MH =1/(6MHZ Z1/12)1/12)=2s =2s。知识点一 定时器/计数器的结构及工作原理2 2定时器定时器/计数器的工作原理计数器的工作原理 在计数器模式下,该寄存器在相应的外部输入脚外部
4、输入脚P3.4/T0P3.4/T0和和P3.5/T1P3.5/T1上出现从上出现从1 1到到0 0的变化时加的变化时加1 1计数计数。由于寄存器只在每个机器周期的S5P2期间采样外部输入信号,这样,需要2个机器周期辨认一次1到0的变化。所以对外部输入信号,最大的计数频率是振荡器频率的1/24,且外部输入信号的高低电平高低电平保持时间均需大于一个机器周期一个机器周期。知识点一 定时器/计数器的结构及工作原理2 2定时器定时器/计数器的工作原理计数器的工作原理 定时器/计数器是单片机中工作相对独立的部件,当将其设定为某种工作方式并启动后,它就会独立进行计数,不再占用CPU的时间,直到计满溢出,才向
5、CPU申请中断处理。此时,用户又可以重新设置定时器/计数器的工作方式,以改变它的工作状态,由此可见,它是一个工作效率高且工作灵活的部件。知识点二 定时器/计数器的控制寄存器 AT89C51对内部定时器/计数器的控制主要是通过TMOD和TCON两个特殊功能寄存器的编程来实现的。1 1工作方式寄存器工作方式寄存器TMOD 知识点二 定时器/计数器的控制寄存器(1)M0、M1:工作方式控制位 2位可形成四种二进制编码,可控制产生四种工作方式。知识点二 定时器/计数器的控制寄存器(2 2)C/T C/T:模式控制选择位:模式控制选择位 C/T=0为定时器模式;C/T=1为计数器模式。(3 3)GATE
6、GATE:门选通位:门选通位 当GATE=0GATE=0时,只要使TCON中的TR0(或TR1)置1,就可启动定时器T0(或T1)工作。(一般情况下,设置GATE=0)当GATE=l时,只有/INT0(或/INT1)引脚为高电平且TR0(或TR1)置1时,定时器才能启动工作。知识点二 定时器/计数器的控制寄存器2 2 定时器控制寄存器定时器控制寄存器 定时器控制寄存器TCON是一个8位特殊功能寄存器,其地址为88H,用于控制定时器的启动/停止以及标志定时器溢出中断申请。既可进行字节寻址又可进行位寻址。复位时所有位被清零。TR0和TR1:分别用于控制T0和T1的启动与停止 TF0和TF1:T0和
7、T1溢出标志,可利用它们查询定时/计数的结果,也可利用中断处理。知识点二 定时器/计数器的控制寄存器 定时器/计数器T0和T1是在TMOD和TCON的联合控制下进行定时或计数工作的,其输入时钟和控制逻辑可用下图综合表示。知识点三 定时器/计数器的工作方式 1 1工作方式工作方式0 0 定时器/计数器被设置为一个1313位的计数器位的计数器,由TH的高8位和TL中的低5位组成,其中TL中的高3位不用。知识点三 定时器/计数器的工作方式 1 1工作方式工作方式0 0知识点三 定时器/计数器的工作方式 2 2工作方式工作方式1 1 方式方式1 1时,定时器时,定时器/计数器被设置为一个计数器被设置为
8、一个1616位加位加1 1的计数器,的计数器,该计数器由高该计数器由高8 8位位THTH和低和低8 8位位TLTL组成。定时器组成。定时器/计数器在方式计数器在方式1 1下下的工作情况与在方式的工作情况与在方式0 0下的基本相同,差别只是计数器的位数下的基本相同,差别只是计数器的位数不同。不同。定时器模式下定时时间为:定时器模式下定时时间为:T=T=(2 21616-T0-T0初值)初值)机器周期机器周期知识点三 定时器/计数器的工作方式 3 3工作方式工作方式2 2 定时器定时器/计数器被设置成一个计数器被设置成一个8 8位计数器位计数器TL0TL0(或(或TL1TL1)和一)和一个具有计数
9、初值重装功能的个具有计数初值重装功能的8 8位寄存器位寄存器TH0TH0(或(或TH1TH1)。)。知识点三 定时器/计数器的工作方式 3 3工作方式工作方式2 2 当计数器TL0(或TL1)从计数初值加1计数并溢出时,除了把相应的溢出标志位TF0(或TF1)置“l”外,同时还将TH0(或TH1)中的计数初值重新装入TL0(或TL1)中,使TL0(或TL1)又重新开始计数。在重装过程中TH0(或TH1)中的数值保持不变。如果在TH0(或TH1)中由软件改为新的计数初值,则下次向TL0(或TL1)中重装时将装入新的计数初值。定时器模式下定时时间为:T=T=(2 28 8 TH0 TH0初值)初值
10、)机器周期机器周期 说明:说明:T1T1工作在方式工作在方式2 2,常作为通信中波特率发生器使用,常作为通信中波特率发生器使用。知识点四 定时器/计数器的应用 单片机上电复位后,TMOD、TCON等特殊功能寄存器都处于清零状态,因而必须先进行初始化设置和计数初值的确定等工作。知识点四 定时器/计数器的应用 1 1初始化初始化(1)根据设计需要先确定定时器/计数器的工作模式及工作方式,然后将相应的控制字用赋值语句写入TMOD寄存器中。(2)计算出计数初始值并写入TH0、TL0、TH1、TL1中。(3)通过对中断优先级寄存器IP和中断允许寄存器IE的设置,确定计数器的中断优先级和开放中断。(4)给
11、定时器控制寄存器TCON送命令字,控制定时器/计数器的启动和停止。知识点四 定时器/计数器的应用 2 2初值的计算初值的计算 定时器/计数器T0、T1不论是工作在计数器模式还是定时器模式下,都是加1计数器,因而写入计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=MC。其中计数最大值在不同工作方式下的值不同,具体如下:(1)工作方式0:M=213=8192 (2)工作方式1:M=216=65536 (3)工作方式2:M=28=256 T=CT=CT T机机 =(MX MX)T T机机定时器模式下对应的定时时间为:任务实施任务实施1
12、1硬件电路设计硬件电路设计任务实施任务实施 图中,单片机输出的电流常常太小,导致喇叭声音太小甚至不响,因此,通常单片机的输出口还需要外接一个三极管驱动电路。任务实施任务实施2 2控制软件设计控制软件设计 设报警声高音为1kHz信号,低音为500Hz信号,因此问题就转变为用单片机的P1.0口交替输出1kHz和500Hz的方波。首先考虑输出500Hz方波的问题。单片机晶振频率为6MHz,P1.0口输出500Hz方波,可用T0工作于方式0,用查询方式完成。任务实施任务实施2 2控制软件设计控制软件设计(1)确定工作方式 使用T0工作于方式0的定时功能,GATE=0,则TMOD取0 x0。任务实施任务
13、实施2 2控制软件设计控制软件设计(2)确定定时初始值X 欲产生500Hz的等宽方波脉冲,只需在P1.0端以2ms为周期交替输出高低电平即可实现,为此定时时间应为1ms即1000s。使用12MHz晶振,则一个机器周期为1s,所以计数为1000s/1s=1000,方式1为16位计数结构,最大计数值为65536。则计数初值X为:任务实施任务实施2 2控制软件设计控制软件设计(3)由定时器控制寄存器TCON中的TR0控制T0的启停。任务实施任务实施3 3程序编写程序编写初始化判断TF0标志任务实施任务实施3 3程序编写程序编写功能处理课后练习课后练习1.采用定时计数器工作方式1,完成该任务。2.设计一个简易电子琴,外接7个独立按键,分别代表一个音阶1234567(do-re-mi-fa-so-la-si),按下一个按键,喇叭发出对应的声音。