本電子時(shí)鐘主要是由AT89S51單片機(jī)及8個(gè)共陽(yáng)數(shù)碼管組成。由于數(shù)碼管引腳比較多,占用單片機(jī)的I\O口也比較多,由于單片機(jī)最多只有32個(gè)I\O口,在數(shù)碼管比較多時(shí)(兩個(gè)以上),就滿足不了實(shí)際需要,因此在數(shù)碼管比較多時(shí),采用動(dòng)態(tài)掃描的方式使數(shù)碼管逐個(gè)點(diǎn)亮。本電子時(shí)鐘就是采用的這種顯示方式。利用取表指令“MOV DPTR,#TABLE與MOVC A,@A+DPTR”和條件轉(zhuǎn)移指令“CJNE A,#data,rel”所要顯示的時(shí)間送入單片機(jī)的端口(P0口和P2口)并放大后,驅(qū)動(dòng)數(shù)碼管顯示出所要顯示的具體時(shí)間。采用單片機(jī)內(nèi)部定時(shí)器定時(shí),計(jì)數(shù),時(shí)間非常準(zhǔn)確! 顯示的時(shí)間格式為:12—00—00,即“小時(shí)—分鐘—秒”。P0口為數(shù)碼管的各段位接口,P2口為8個(gè)數(shù)碼管的電源端。P3.2口為“小時(shí)”調(diào)整,P3.3口為“分鐘”調(diào)整,P3.4口為“秒”調(diào)整。但每個(gè)調(diào)整鍵只能加,不能減。晶振為12MHZ。 匯編源程序如下:
SECOND EQU 30H MINITE EQU 31H HOUR EQU 32H HOURK BIT P3.2 MINITEK BIT P3.3 SECONDK BIT P3.4 DISPBUF EQU 40H DISPBIT EQU 48H T2SCNTA EQU 49H T2SCNTB EQU 4AH TEMP EQU 4BH ORG 00H LJMP START ORG 0BH LJMP INT_T0 START:MOV SECOND,#00H MOV MINITE,#00H MOV HOUR,#12 MOV DISPBIT,#00H MOV T2SCNTA,#00H MOV T2SCNTB,#00H MOV TEMP,#0FEH LCALL DISP MOV TMOD,#01H MOV TH0,#(65536-2000) / 256 MOV TL0,#(65536-2000) MOD 256 SETB TR0 SETB ET0 SETB EA WT:JB SECONDK,NK1 LCALL DELY10MS JB SECONDK,NK1 INC SECOND MOV A,SECOND CJNE A,#60,NS60 MOV SECOND,#00H NS60:LCALL DISP JNB SECONDK,$ NK1:JB MINITEK,NK2 LCALL DELY10MS JB MINITEK,NK2 INC MINITE MOV A,MINITE CJNE A,#60,NM60 MOV MINITE,#00H NM60:LCALL DISP JNB MINITEK,$ NK2:JB HOURK,NK3 LCALL DELY10MS JB HOURK,NK3 INC HOUR MOV A,HOUR CJNE A,#24,NH24 MOV HOUR,#00H NH24:LCALL DISP JNB HOURK,$ NK3:LJMP WT DELY10MS:MOV R6,#10 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET DISP:MOV A,#DISPBUF ADD A,#8 DEC A MOV R1,A MOV A,HOUR MOV B,#10 DIV AB MOV @R1,A DEC R1 MOV A,B MOV @R1,A DEC R1 MOV A,#10 MOV @R1,A DEC R1 MOV A,MINITE MOV B,#10 DIV AB MOV @R1,A DEC R1 MOV A,B MOV @R1,A DEC R1 MOV A,#10 MOV@R1,A DEC R1 MOV A,SECOND MOV B,#10 DIV AB MOV @R1,A DEC R1 MOV A,B MOV @R1,A DEC R1 RET INT_T0:MOV TH0,#(65536-2000) / 256 MOV TL0,#(65536-2000) MOD 256 MOV A,#DISPBUF ADD A,DISPBIT MOV R0,A MOV A,@R0 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,DISPBIT MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A INC DISPBIT MOV A,DISPBIT CJNE A,#08H,KNA MOV DISPBIT,#00H KNA:INC T2SCNTA MOV A,T2SCNTA CJNE A,#100,DONE MOV T2SCNTA,#00H INC T2SCNTB MOV A,T2SCNTB CJNE A,#05H,DONE MOV T2SCNTB,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEXT MOV SECOND,#00H INC MINITE MOV A,MINITE CJNE A,#60,NEXT MOV MINITE,#00H INC HOUR MOV A,HOUR CJNE A,#24,NEXT MOV HOUR,#00H NEXT:LCALL DISP DONE:RETI TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH END 本程序已通過(guò)實(shí)踐驗(yàn)證。。
|