P1是位選,p2是段選.ORG 0000HLJMP MAINORG 000BHLJMP INTMAIN: MOV TMOD,#01H MOV TH0,#0 MOV TL0,#1 SETB EA SETB ET0 SETB TR0MOV R6,#0 ;------------- R6用于存儲1~9 MOV R4,#44H ; 剛上電時讓第四個數(shù)碼管顯示0;--------------R1~R4用于存放四個數(shù)碼管對應(yīng)的段碼---------DISPLAY: MOV A,R6 MOV DPTR,#TAB2 MOVC A,@A+DPTR MOV R1,A MOV A,R6 MOV DPTR,#TAB3 MOVC A,@A+DPTR MOV R2,APLAY: MOV P1,#0FFHMOV R7,#100 ;關(guān)非正常微亮 DJNZ R7,$MOV A,R4 MOV P1,#7FH MOV P2,AMOV R7,#100 ;調(diào)節(jié)亮度 DJNZ R7,$MOV P1,#0FFHMOV R7,#100 ;關(guān)非正常微亮 DJNZ R7,$ MOV A,R1 MOV P1,#0EFH MOV P2,AMOV R7,#100 ;調(diào)節(jié)亮度 DJNZ R7,$MOV P1,#0FFHMOV R7,#100 ;關(guān)非正常微亮 DJNZ R7,$ MOV A,R2 MOV P1,#0DFH MOV P2,AMOV R7,#100 ;調(diào)節(jié)亮度 DJNZ R7,$ LJMP DISPLAY;----------------------------------------------------------DELAY: MOV R7,#100 MOV R3,#100LAY: MOV R2,#20DJNZ R2,$ DJNZ R3,LAY DJNZ R7,LAY RET;***********掃描鍵盤子程序*************************KEYSCAN: MOV P1,#0FHJB P1.3,OFF MOV R7,#100 DJNZ R7,$ JNB P1.3,SCAN RET SCAN: MOV A,#07FHCONTINUE: MOV P1,AJNB P1.3,RECORDRR ACJNE A,#0FEH,CONTINUERECORD: MOV R0,A ;R0用于存儲鍵碼KEYDEAL: MOV A,R0CJNE A,#7FH,OFFLCALL K4OFF: MOV P1,#0FFH RETK4: INC R6 LCALL DELAY MOV A,R6 MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV R4,A CJNE R6,#10,RETURN MOV R6,#0RETURN: RET;----------------------------------------------------INT: LCALL KEYSCAN ; 鍵盤掃描放定時器中斷里面 MOV TH0,#0 MOV TL0,#1 RETI;------------------------------------------------------TAB1: DB 44H,0DEH,62H,52H,0D8H,51H,41H,0D6H,40H,50HTAB2: DB 44H,44H,44H,44H,0DEH,62H,52H,0D8H,41H,040HTAB3: DB 44H,0DEH,0D8H,50H,41H,51H,41H,50H,0D8H,0DEH END注意:如果你使用的是STC5608單片機 運行此程序可能會出現(xiàn)的情況:1,數(shù)碼管閃爍顯示;2,數(shù)碼管顯示1、4、7時會卡死或者只有1、4、7可以正常顯示 ,如果遇到以上情況建議換用STC5204或換質(zhì)量較高的電源線然后一切就會正常了。
評論