1、2.1系统的电路原理(1)系统以STC89C52单片机为本电路的核心元件,通过单片机的P0.0P0.7引脚和A102J排阻加上拉电压来驱动七段显示器段显示数字。(2)通过单片机的P2.2P2.7引脚连接A103J排阻拉升电压信号,控制共阴极七段显示器连通接地来循环点亮6位七段显示器。(3)在七段显示器供电的同时由P0脚驱动显示不同数字。根据人眼的视觉暂留特点,调整延迟时间使所观察到时间数字是稳定的数字。(4)系统使用了YXDZ蜂鸣器,通过单片机P3.0引脚连接8550PNP三极管推动发声。(5)电路通过4个按键连接单片机P1.0P1.3引脚低电平控制系统功能设置。(6)单片机的复位电路,采用传
2、统上电复位,通过Reset按键控制。(7)系统通过一个发光二极管指示电路供电是或正常。2.2 电原理图图1 控制电路2.3 各控制按钮控制功能说明系统接通电源后指示灯LED亮,程序执行后工作,蜂鸣器发出两声响声,七段显示器显示“00 00 00”,表示程序开始执行,然后显示现在时间,按下操作键K1K4动作如下:(1)按操作键K1,进入“设置现在时间”模式后,操作键功能如下: 操作键K1:当前区域加1。 操作键K2:当前区域减1。 操作键K3:分、时区域切换。 操作键K4:设置完成,退出。(2)按操作键K2,进入“显示、设置闹铃时间”模式后,操作键功能如下:当前闹铃区域加1。当前闹铃区域减1。分
3、、时区域切换第一次进入第二组,第二次为退出。(3)按操作键K3:进入“秒表”模式后,操作键功能如下:启动秒表。停止秒表。清零。退出。(4)按操作键K4:在响铃时关闭闹钟自动退出,不是响铃则进入“设置闹铃的开关”模式后,操作键功能如下:启动当前闹铃。停止当前闹铃。切换闹铃组。(5)按操作键Reset:复位键,系统重启。3.软件设计3.1 资源分配表和程序流程图表一 程序内存资源分配表内存地址变量名称作用说明20H存放50毫秒计时21H 存放0.5秒计时22HSECON存放1秒计时23H MIN存放1分计时24HHOUR存放1小时计时25H用于中断1(#6H)26H用于显示中的闪烁27H.0闹钟标
4、志位27H.1允许响铃27H.2用于标志分、秒(1为秒),闹钟功能时也一样27H.3闹钟总开关(1为开)27H.4用于闪烁标志27H.5用于闪烁27H.6秒表标志27H.7两组闹钟的标志位,默认值为028H-29H用于保存闪烁时的调时区地址30H-35H存放调时区地址36HDISP用于存放要显示的首字(例如秒)37H-39H第一组闹钟的时分40HSP栈底50H-52H 秒表53H-55H第二组闹钟的时分56H存放闹钟调分地址57H存放闹钟调时地址2AH.0闹钟组的切换标志(默认值为0)2AH.1切换(默认值为0)2AH.2闹钟第二组开关(默认值为0)表二 芯片端口资源分配表芯片端口P1.0K1
5、操作键K1P1.1K2操作键K2P1.2K3操作键K3P1.3K4操作键K4P1.7SPK压电喇叭控制信号P0七段显示器数数字形状控制P2.2控制时间小时的十位七段显示器亮灭P2.3控制时间小时的个位七段显示器亮灭P2.4控制时间分钟的十位七段显示器亮灭P2.5控制时间分钟的个位七段显示器亮灭P2.6控制时间秒钟的十位七段显示器亮灭P2.7控制时间秒钟的个位七段显示器亮灭P3.0BELL蜂鸣器P3.1LED半秒闪烁P3.2LED显示第一组闹钟是否开启P3.3LED显示第二组闹钟是否开启表三 寄存器资源分配表组寄存器第R0存放秒显示地址R1显示首址R2#06HR3#0FEHR4#3HR6、R7延
6、时初始值1用于keyB、CR5用于中断图2主程序控制流程图 中断程序T0中断程序T13.2 源程序清单本系统程序清单如下:;-8052 CLOCK WITH SEGX6 CLOCK + 2ALARM + TIMER + SW时钟+2闹钟+响铃+秒表89C52 ASM USE:Keil-程序功能说明-K1:设置现在时间 -当前单元加1K2:当前单元减1K3:切换单元区K4:OK显示和设置闹铃时间,2个闹铃切换闹铃组,第二次为OK设置秒表 秒表启动秒表暂停秒表清零设置闹铃开关(当真正闹铃时停掉闹钟并退出)当前闹铃组开当前闹铃组关切换闹组 KEY1 EQU P1.0 ;调时间调分再调时KEY2 EQ
7、U P1.1 KEY3 EQU P1.2 KEY4 EQU P1.3SECON EQU 22H ;时钟的秒MIN EQU 23HHOUR EQU 24HDISP EQU 36H ;显示的首地址存放BELL BIT P3.0ORG 0000H LJMP START ORG 000BH LJMP T0_INT ORG 001BH LJMP T1_INT ORG 0100HSTART: MOV 20H,#00H MOV 21H,#00H ;0.5秒计时 MOV 22H,#00H ;1秒计时 MOV 23H,#00H ;1分计时 MOV 24H,#00H ;1h计时 MOV 38H,#01H ;闹钟分
8、 MOV 39H,#00H ;闹钟时 MOV 37H,#101 ;第一组闹钟的首字节显示-1 MOV 53H,#102 ;第二组闹铃的首字节显示”-2“ MOV 25H,#6H ;中断1,50ms*6=0.3s闪烁一次 MOV TMOD,#11H MOV TL1,#0B0H MOV TH1,#3CH MOV TL0,#0B0H MOV TH0,#3CH SETB ET0 SETB ET1 SETB EA SETB TR0 MOV SP,#40H*主程序*MAIN: MOV DISP,#SECON LCALL DISPLAY LCALL KEYA LCALL KEYB LCALL KEYC LC
9、ALL KEYD SJMP MAIN /*数码管显示*/DISPLAY:PUSH PSW MOV PSW,#08H ;用第二组寄存器 MOV R0,DISP MOV R1,#30H MOV R4,#03H;秒分时LOOP0: MOV A,R0 MOV B,#10 DIV AB MOV R1,B INC R1 MOV R1,A INC R0 DJNZ R4,LOOP0DISKEY: MOV R1,#30H ;显示缓冲区首址 MOV R2,#06H MOV R3,#0FEH CLR 27H.5 MOV 29H,28HPLAY: MOV A,R1 MOV DPTR,#TABLE MOVC A,A+D
10、PTR ;* 闪烁用 JNB 27H.4,WEN ;在调时时用作熄灭,1为开 MOV 26H,A MOV A,R1 CJNE A,29H,WEN1 JB 27H.5,LPPC1 INC 29H SETB 27H.5LPPC1: CLR A SJMP WENWEN1: MOV A,26H*WEN: MOV P0,A MOV P2,R3 LCALL DELAY MOV A,R3 RL A MOV R3,A DJNZ R2,PLAY POP PSW RETDELAY: MOV R6,#4D1: MOV R7,#250D0: DJNZ R7,D0 DJNZ R6,D1 TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H /*中断T0处理*/T0_INT: PUSH ACC INC 20H MOV A,20H CJNE A,#10,EXIT JNB 27H.3,LQQ1 SJMP L
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1