1、第四章,采用,LED,显示的电子钟,51,单片机工程应用实例,4.1,数字钟的硬件组成,4.2,实时钟电路,PCF8563,简介,4.3,设置当前时间的方法,4.4,六位,LED,显示器的工作原理,4.5,数字钟编程,第四章 采用,LED,显示的电子钟,第四章,4.1,数字钟的硬件组成,数字钟的组成:,AT89C2051,单片机、,PCF8563,实时时钟芯片、时间设定键(,3,)、,LED,数码显示器(,6,),P59,图,4-2,4.2,实时时钟芯片,PCF8563,功能:,1,、,提供基于,32.768kHz,晶振的年、月、日、星期、时、,分、秒的时间;可提供世纪标志,2,、具有超低的
2、待机工作电流,典型值为,0.25uA,3,、具有宽范围的工作电压,,1.05.5V,4,、具有,400kHz,的双线,IIC,总线接口,5,、对外设提供可编程的时钟输出,频率为,32.678kHz,、,1024Hz,、,32Hz,和,1Hz,6,、具有报警和定时功能、具有低电压检测功能,7,、具有内部上电复位功能、具有内部集成的振荡电容,8,、从机,IIC,总线的读地址为,A3H,,写地址为,A2H,9,、包含开漏极中断引脚,4.2,实时时钟芯片,PCF8563,4.2.1 PCF8563,的封装和引脚功能,4.2,实时时钟芯片,PCF8563,4.2.1 PCF8563,的封装和引脚功能,4
3、2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,内部资源:,16,个可寻址的,8,位寄存器,1,个可自动增加的地址寄存器,1,个带内部集成电容的内置,32.768kHz,的振荡器,1,个用于给实时钟,RTC,提供时钟源的分频器,1,个可编程时钟输出,1,个定时器、,1,个报警器、,1,个掉电检测器,1,个,400kHz,的,IIC,总线接口,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,寄存器,4.2,实时时钟芯片,PCF8563,4
4、2.2 PCF8563,的内部资源和寄存器,控制寄存器,1,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,控制寄存器,2,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,CLKOUT,频率寄存器,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,定时器控制寄存器和数值计数器,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,寄存器,4.2,实时时钟芯片,PCF8563,4.2.2 PCF8563,的内部资源和寄存器,报警寄存器,:,用来设置报警
5、的时间、日期和星期。,4.2,实时时钟芯片,PCF8563,4.2.3 PCF8563,的应用电路,P64,图,4-4,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,PCF8563,程序设计包括时钟的写入,/,读出、定时器、报警功能和时钟输出,5,部分。,1,、时钟的写入,首先初始化内部寄存器。一般应用只需初始化,00H,08H,共,9,个寄存器。,初始化,PCF8563,寄存器的起始地址为,00H,在单片机中开辟发送数据缓冲区,暂存,9,个单元内容,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,1,、时钟的写入,写入地址,A2H
6、写入,PCF,的首地址和内容共,10,个寄存器,PCF_WRNBYTE:MOV R3,,,#NUMBYT,LCALL START,;,IIC,总线启动,MOV A,SLA,;,SLA=0A2H,LCALL WRITE_BYTE,LCALL CACK,JB F0,WRNBYTE,MOV R1,#MTD,WRLP:MOV A,R1,LCALL WRITE_BYTE,LCALL CACK,JB F0,WRNBYTE,INC R1,DJNZ R3,WRLP,RET,SCL BIT P1.0,SDA BIT P1.1,START,:,SETB SCL,SETB SDA,;使,IIC,总线处于空闲,NO
7、P,CLR SDA ;,启动,IIC,总线,NOP,RET,;,写一个字节,(,入口参数:,A,),WRITE_BYTE:,MOV R7,#08H,LOOPWR:,NOP,CLR SCL,NOP,RLC A,MOV SDA,C,SETB SCL,DJNZ R7,LOOPWR,RET,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,1,、时钟的读出,读取,PCF8563,中内部连续寄存器当前时间数据,保存到单片机 数据缓冲区,MRD,。寄存器块的首地址是,02H,。,注意,;,读之前应写入地址,A3H,PCF_RDNBYTE:MOV R3,,,#NUMBYT,LCA
8、LL START,;,IIC,总线启动,MOV A,#02H,LACLL WRITE_BYTE,LCALL CACK,JB F0,RDNBYTE,MOV A,SLA,;,SLA=0A3H,LCALL WRITE_BYTE,LCALL CACK,JB F0,RDNBYTE,MOV R1,#MRD,RDLP:LCALL READ_BYTE,MOV R1,A,LCALL CACK,DJNZ R3,ACK,LCALL NACK,LCALL STOP,RET,ACK:LCALL MACK,INC R1,SJMP,RDLP,;,读一个字节,(,出口口参数:,R2,),READ_BYTE:MOV R7,#0
9、8H,LOOPRD:SETB SDA,CLR SCL,NOP,SETB SCL,NOP,MOV C,SDA,MOV R2,A,RLC A,MOV R2,A,DJNZ R7,LOOPRD,SCL BIT P1.0,SDA BIT P1.1,STOP,:,CLR SDA,NOP,SETB SCL,NOP,SETB SDA ;,停止,IIC,总线,NOP,RET,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,3,、定时器,TE=1,PCF8563,倒数计数定时器有效。,当倒计数值为零时,,TF=1,。若此时,TIE=1,则在,INT,引脚产生中断。,TI/TF=0,,
10、中断信号为低电平方式。,TI/TF=1,,则中断信号为脉冲方式。脉冲宽度大约,15ms,。,PCF_INT:,MOV MTD,#0EH,MOV MTD+1,#81H,MOV MTD+2,#64,MOV NUMBYT,#3,MOV SLA,#0A2H,LCALL PCF_WRNBYTE,RET,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,4,、报警功能,有四种报警功能,分别是小时报警、日报警、月报警、星期报警。发生报警时,AF=1,。,设置报警方法:,AE=0,。若此时,AIE=1,,则除,AF=1,外,还在,INT,引脚产生低电平有效中断。,清楚中断方法:软件
11、清,AF,。,4.2,实时时钟芯片,PCF8563,4.2.4 PCF8563,的程序设计,5,、时钟输出,在,CLKOUT,引脚输出一个时钟脉冲。,脉冲频率通过时钟输出频率寄出去设定。,PCF_INT:,MOV MTD,#0DH,MOV MTD+1,#80H,MOV NUMBYT,#2,MOV SLA,#0A2H,LCALL PCF_WRNBYTE,RET,4.3,设置当前时间的方法,使用三个按键设定当前时间。,S1,功能键,,S2,加,1,键,,S2,减,1,键。,上电复位初始化后,用加减键对小时进行设定,按功能键后转分钟设定,再按功能键转秒设定,再按功能键转入,PCF8563,的计时工作
12、SETUP EQU P1.4;,时间设定,UP EQU P1.3;,加,DOWN EQU P1.2;,减,.,WAIT1:ORL P1,#1CH,MOV A,P1,JNB ACC.4,MINU,JNB ACC.3,ADDH,JNB ACC.2,SUBH,AJMP WAIT1,ADDH:,LCALL DELAY10,SETB UP,JB UP,WAIT1,MOV A,R0,INC A,MOV R0,A,AJMP DISP,键盘去抖,4.4,六位,LED,显示器的工作原理,4.4.1 LED,数码管,段码位,D7,D6,D5,D4,D3,D2,D1,D0,显示段,dp,g,f,e,d,c,b,
13、a,10.2,4.4,六位,LED,显示器的工作原理,4.4.2 LED,显示电路,4.4,六位,LED,显示器的工作原理,4.4.3,汇编程序,MOV R2,#06H ;,显示,6,个数码管,MOV R0,#DISBUF;,显示缓冲区末地址,DL0:MOV A,R0;,取查表偏移量,MOV DPTR,#TAB;,指向字形表首,MOVC A,A+DPTR;,查表得字形码,LCALL REVERS,;,调用高低位颠倒程序,MOV SBUF,A;,发送显示,DL1:JNB TI,DL1,CLR TI,DEC R0,DJNZ R2,DL0,RET,TAB:DB 0C0H,0F9H,0A4H,0B0H
14、99H ;0,1,2,3,4,DB 92H,82H,0F8H,80H,90H,4.5,数字钟编程,4.5.1,程序流程图,P78,图,4-9,4.5,数字钟编程,4.5.2,汇编程序,4.5,数字钟编程,4.5.2,汇编程序,MAIN,:,MOV SP,#5FH,MOV SCON,#0,MOV TCON,#1,SETB EA,SETZ:LCALL DEL100,LCALL DEL100,LCALL INIT,LCALL DEL100,LCALL SETCLK,P_INI:LCALL PCF_INI,LCALL DEL100,LCALL PCF_SET,SETB EX0,REACT:JNB SECFL,$,CLR SECFL,CLR DOT,LCALL DEL100,LCALL DEL100,LCALL DEL100,LCALL DEL100,LCALL DEL100,SETB DOT,LJMP REACT,4.5,数字钟编程,4.5.2,汇编程序,IN0INT,:,PUSH PSW,PUSH ACC,PUSH B,PUSH DPH,PUSH DPL,MOV PSW,#8,LCALL PCF_RD,LCALL CLOCK,LCALL DISP,SETB SECFL,POP DPL,POP DPH,POP B,POP ACC,POP PSW,RETI,






