1、毕业设计方案采用实时时钟芯片DS ATC的红外遥控LED电子钟第1节 引 言 1第2节 电子钟硬件设计22.1 电子钟的工作原理22.2 电子钟的硬件电路3第3节 系统软件设计5一引言自制LED电子钟在很多电子报刊杂志上都可以见到,但大多数在断电后都要重新设置时间等参数,给使用带来很多不便。也有用后备电池作为备用电源的,但往往体积较大。本文介绍的LED电子钟克服了以往的弊端,而且采用了家电通用的红外遥控器进行控制,方便使用。有一路闹铃输出,可以通过遥控器设置闹铃时间及允许与否。二电子钟硬件设计电子钟的正面电子钟的背面一 工作原理 DS1302为达拉斯公司的一种实时时钟芯片,主要特点是采用串行数
2、据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768Hz晶振。AT89C2051作为主控芯片,一是对接收到的红外遥控编码进行判断识别,并执行相应的处理;第二就是定期的读取时钟芯片DS1302中的时间并把小时和肥以示在4位LED中;第三就是对设置的闹铃时间与实时时间进行比较,如果时间相同且闹铃允许,那么蜂鸣器就会以1秒的周期鸣响一分钟,提醒使用者。如果要停止鸣闹,只要按遥控器相应键就可以关闭闹铃。闹铃时间保存在DS1302自带的RAM中,不需要单独的EEPROM。二 硬件电路 图一为电子钟的原理图,IC2为DS1302,电子爱好者可以向MAXIM公司索取免费样品
3、。Y2为 32768 Hz石英晶振,可以用普通电子表里的。IC3为三脚的塑封一体化红外接收头。LED1-4 为高亮度共阳数码管。89C2051所用的晶振Y1如果没有10MHz也可以用其他12M以内的代替,只要修改程序中YS1和YS2的延时参数,让其保持延时长度不变就行。调整R2可以改变数码管亮度。P1口接数码管的八字段。数码管左两位显示小时,右两位显示分,当显示的是闹铃时间时闪动。第二位和第三位的小数点作为秒闪动,注意第三位数码管按图一布好印制版后安装时要旋转180,以便让时和分之间出现“:”,最后一位小数点作为闹铃开关标志,亮表示闹铃开启。蜂鸣器B2采用小型自带音源的。要特别说明的是备用电源
4、B1,可以用电池或者超级电容10万uF以上)。虽然DS1302在主电源掉电后,耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的那种3.6V充电电池。如果断电时间较短。6BH 闹时 from 01(1302 ORG 0000H AJMP START ORG 0003H LJMP S_INT 。IRF ORG 000BH 。200Us LJMP P_INT 。 ORG 001BH 。display LED LJMP DISPLAY。main program ORG 0030HSTART: CLR RST MOV SP,#2AH SETB 05H CLR 06H S
5、ETB 07H。CLR 07H CLR 08H CLR 09H CLR 0AH CLR 0BH CLR 0CH SETB 0DH CLR 0EH CLR 0FH CLR 10H CLR 11H MOV R2,#00H 。 MOV R3,#00H 。 MOV TMOD,#12H MOV TL1,#0e5H 。wait MOV TH1,#0BeH MOV TH0,#3FH 。200uS 3f MOV TL0,#3FH SETB ET0 SETB ET1 setb pt0 SETB TR0 SETB TR1 SETB IT0 。 SETB EX0 。 CLR PX0 。LCALL SET1302 。
6、初始化 MOV R1,#0C1H 。取定时参数从1302中 acall T_6061 MOV 6AH,A 。M MOV R1,#0C3H ACALL T_6061 MOV 6BH,A 。HMOV 61H,#0MOV 62H,#0 SETB EA sjmp $DISPLAY: PUSH ACC PUSH PSW MOV TL1,#0e0H 。wait how long to display (20ms MOV TH1,#0b0H mov dptr,#tab1 JB 0EH,DIS2 JB 0FH,DIS3 JB 10H,DIS4 JB 11H,DIS5 JNB 0DH,D_OUT JNB 08H
7、,D_GO 。定时到时,显示闪烁 JNB 07H,D_OUTD_GO: MOV DPTR,#TAB1 MOV A,62H ANL A,#0FH MOV B,A MOV A,62H SWAP A ANL A,#07H MOVC A,A+DPTR MOV P1,A CLR LED1 LCALL DL2M SETB LED1 MOV A,B MOVC A,A+DPTR MOV C,07H MOV acc.7,C 。秒灯闪烁 MOV P1,A CLR LED2 LCALL DL2M SETB LED2 mov dptr,#tab2 。倒装LED字段表 MOV A,61H ANL A,#0FH MOV
8、B,A MOV A,61H SWAP A ANL A,#0FH MOVC A,A+DPTR MOV C,07H MOV acc.6,C 。秒灯闪烁 MOV P1,A CLR LED3CLK LCALL DL2M SETB LED3CLK mov dptr,#tab1 MOV A,B MOVC A,A+DPTR MOV C,06H cpl c MOV acc.7,C 。闹铃指示灯 MOV P1,A CLR LED4IO LCALL DL2M SETB LED4IOD_OUT: SETB TR1 POP PSW POP ACC RETIDIS2: AJMP DIS_2DIS3: AJMP DIS_
9、3DIS4: AJMP DIS_4DIS5: AJMP DIS_5DIS_2: mov dptr,#tab1 。显示设置小时 MOV 6FH,62H ACALL BCD_HEX MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A CLR LED1 LCALL DL2M SETB LED1 MOV A,B MOVC A,A+DPTR MOV P1,A CLR LED2 LCALL DL2M SETB LED2 SETB TR1 POP PSW POP ACC RETIDIS_3: MOV DPTR,#TAB2 。显示设置分 MOV 6FH,61H ACALL BCD_
10、HEX MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A CLR LED3CLK LCALL DL2M SETB LED3CLK MOV A,B MOV DPTR,#TAB1 MOVC A,A+DPTR MOV P1,A CLR LED4IO LCALL DL2M SETB LED4IO SETB TR1 POP PSW POP ACC RETIDIS_4: mov dptr,#tab1 。显示设置闹时 JNB 07H,D4_OUT 。显示时闪烁 MOV A,6BH MOV B,#0AH DIV AB MOVC A,A+DPTR MOV P1,A CLR LED1
11、 LCALL DL2M SETB LED1 MOV A,B MOVC A,A+DPTR MOV P1,A CLR LED2 LCALL DL2M SETB LED2D4_OUT: SETB TR1 POP PSW POP ACC RETIDIS_5: MOV DPTR,#TAB2 JNB 07H,D5_OUT 。显示时闪烁 MOV A,6AH 。显示设置闹分 MOV B,#0AH DIV AB MOVC A,A+DPTR MOV P1,A CLR LED3CLK LCALL DL2M SETB LED3CLK MOV DPTR,#TAB1 MOV A,B MOVC A,A+DPTR MOV P
12、1,A CLR LED4IO LCALL DL2M SETB LED4IOD5_OUT: SETB TR1 POP PSW POP ACC RETIDL2M: MOV 43H,#14H 。 every LED(2msDL2: MOV 44H,#14HDL1: NOP NOP DJNZ 44H,DL1 DJNZ 43H,DL2 RET。*定时读取1302时间及判断闹铃时间是否到*P_INT: PUSH ACC PUSH PSW INC R2 CJNE R2,#250D,P_OUT MOV R2,#00H INC R3 CJNE R3,#10D,P_OUT MOV R3,#00H CPL 07H
13、MOV P1,#0FFH ACALL R_1302OUT: JNB 06H,P_OUT MOV A,6BH MOV B,#10 DIV AB SWAP A ADD A,B CJNE A,62H,PP_OUT MOV A,6AH MOV B,#10 DIV AB SWAP A ADD A,B CJNE A,61H,PP_OUT SETB 08H 。定时到标志 MOV C,07H cpl c MOV K_ON,CP_OUT: POP PSW POP ACC RETIPP_OUT: SETB K_ON CLR 08H POP PSW POP ACC RETI。*有接收到遥控器信号*S_INT:CLR
14、 EA PUSH ACC PUSH PSW PUSH DPH PUSH DPL PUSH 02H PUSH 03H MOV R6,#10D 。SB: ACALL YS1 JB P3.2,EXIT DJNZ R6, SB JNB P3.2, $ 。 ACALL YS2 。 JB P3.2,EXIT MOV R1,#1AH 。 MOV R2,#4DPP: MOV R3,#8DJJJJ: JNB P3.2,$ ACALL YS1 MOV C,P3.2 JNC UUU JB P3.2,$UUU: MOV A,R1 RRC A MOV R1,A DJNZ R3,JJJJ INC R1 DJNZ R2,P
15、P。- MOV A,1AH 。 XRL A,#40h 。判断1AH的值是否等于遥控器低8位地址40h) JNZ EXIT 。 MOV A,1bH XRL A,#0bfh 。再判断高8位地址是否正确0bfh) JNZ EXIT MOV A,1CH CPL A XRL A,1DH 。将1CH的值取反后和1DH比较 不同则无效丢弃核对数据是否准确) JNZ EXIT ACALL DO 。相应按键的处理EXIT: SETB EA POP 03H POP 02H POP DPL POP DPH POP PSW POP ACC RETI。-delay-YS1: MOV 70H,#16D 。延时1D1: M
16、OV 71H,#21D DJNZ 71H,$ DJNZ 70H,D1 RETYS2: MOV 70H,#09D 。延时2D2: MOV 71H,#220D DJNZ 71H,$ DJNZ 70H,D2 RET。-TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H 。TAB1 LED数码管显示表 TAB遥控器键值表SET2A: CJNE A,#DOWND,SET2B LJMP DEC2 。- 减SET2B: CJNE A,#RIGHTR,SET2C LJMP RIGHT 。RIGHT右移(SET2C: CJNE A,#LEFTL,SET2D LJMP
17、LEFT 。LEFT左移(SET2D: CJNE A,#RECALL,SET2EXT 。DS1302初始化 LJMP SET1302SET2EXT:RET。-INC-INC1: JB 0EH,INCH JB 0FH,INCM JB 10H,INC_H JB 11H,INC_M RETINC_H: INC 6BH 。闹钟小时增加 MOV A,6BH CJNE A,#24D,INCH3 MOV 6BH,#0INCH3: MOV R1,#0C2H MOV R0,6BH ACALL SETONE 。写入DS1302 RETINC_M: INC 6AH 。闹钟分增加 MOV A,6AH CJNE A,#
18、60D,INCH4 MOV 6AH,#0INCH4: MOV R1,#0C0H MOV R0,6AH ACALL SETONE 。 RETINCH: 。INC 62H 。 MOV 6FH,62H ACALL BCD_HEX INC A CJNE A,#24D,INCH1 MOV A,#0INCH1: MOV 6FH,A ACALL HEX_BCD MOV 62H,A MOV R1,#84H MOV R0,62H ACALL SETONE 。 RETINCM: 。INC 61H 。 MOV 6FH,61H ACALL BCD_HEX INC A CJNE A,#60D,INCH2 MOV A,#
19、0INCH2: MOV 6FH,A ACALL HEX_BCD MOV 61H,A MOV R1,#82H MOV R0,61H ACALL SETONE 。 RET。-DEC-DEC2: JB 0EH,DECH JB 0FH,DECM JB 10H,DEC_H JB 11H,DEC_M RETDECH: MOV 6FH,62H ACALL BCD_HEX DEC A CJNE A,#0FFH,DECH1 MOV A,#23DECH1: MOV 6FH,A ACALL HEX_BCD MOV 62H,A MOV R1,#84H MOV R0,62H ACALL SETONE RETDECM:
20、MOV 6FH,61H ACALL BCD_HEX DEC A CJNE A,#0FFH,DECM1 MOV A,#59DECM1: MOV 6FH,A ACALL HEX_BCD MOV 61H,A MOV R1,#82H MOV R0,61H ACALL SETONE RETDEC_H: DEC 6BH MOV A,6BH CJNE A,#0FFH,DECH3 MOV 6BH,#23DDECH3: MOV R1,#0C2H MOV R0,6BH ACALL SETONE RETDEC_M: DEC 6AH MOV A,6AH CJNE A,#0FFH,DECH4 MOV 6AH,#59DD
21、ECH4: MOV R1,#0C0H MOV R0,6AH ACALL SETONE RET。-RIGHT-RIGHT: JB 0EH,RIGHT1 JB 0FH,RIGHT2 JB 10H,RIGHT3 JB 11H,RIGHT4 RET 。右移RIGHT1: CLR 0EH SETB 0FH RETRIGHT2: CLR 0FH SETB 10H RETRIGHT3: CLR 10H SETB 11H RETRIGHT4: CLR 11H SETB 0EH RET。-LEFT-LEFT: JB 0EH,LEFT1 JB 0FH,LEFT2 JB 10H,LEFT3 JB 11H,LEFT4
22、 RET 。左移LEFT1: SETB 11H CLR 0EH RETLEFT2: SETB 0EH CLR 0FH RETLEFT3: SETB 0FH CLR 10H RETLEFT4: SETB 10H CLR 11H RET。-MUTE-MUTE: setb k_ON CPL 06H 。静音 CLR 08H RET。-DISPLAY OFF-DIS_OFF:CLR ET1 CPL 05H JNB 05H,REDORE SETB ET1REDORE: RET。-初始化1302-SET1302: CLR RST 。2002年1月1日12:00:00 CLR LED3CLK MOV SECOND,#0 MOV 61H,#
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2