七段顯示器控制電路四位數 _ 使用解碼器驅動 +5 V 10 uf 8.2 k 12 MHz 20 pf 1 2 3 4 5 6 7 8 9 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET 10 P3.0 11 12 13 14 15 16 17 18 19 20 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1 Vss 8051 VDD P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/Vpp ALE/PROG PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 +5 V +5 V 74244 清除上數下數快數 4.7 k +5 V QD QC QB 7447 QA GND VCC a b c d e f g 220 a g 9012 a g a g a g 個位 十位 百位 千位
程式範例 : 1. 七段顯示器電路程式 (2 位 ) 自動計數掃瞄顯示 00 01 02 99 2. 七段顯示器電路程式 (4 位 ) 自動計數掃瞄顯示 0000 9999 3. 七段顯示器電路程式 (4 位 ) 按鈕控制計數掃瞄顯示 0000 9999 4. 七段顯示器電路程式 (4 位 ) 自動計數掃瞄顯示計時 ( 分 秒 ) 5. 七段顯示器電路程式 (4 位 ) 自動計數掃瞄顯示計時 ( 分 秒 ) 加按鈕調整 6. 七段顯示器電路程式 (4 位 ) 掃瞄顯示 0123 1234 7890 8901 9012 0123 ( 左移循環 )
實驗板七段顯示器電路程式 (2 位 ) 7447 驅動自動計數掃瞄顯示 00 01 02 99 回範例 範例一 : 內部記憶體間接定址, 使用 SWAP XCHD CJNE ADD 指令 ORG 00H ST ST: R0,#30H 30H,#00H MAIN: R1,#20 LOOP: A,#E0H 個位 XCHD CALL XCHD SWAP XCHD CALL XCHD SWAP P2,A DELAY 十位 A @R0,A A,#D0H P2,A DELAY A @R0,A R1,LOOP 加 1 ADD DA CJNE A,#1 A @R0,A A,#00H,MAIN ST DELAY: R2,#20
D1: R3,#249 R3,$ R2,D1 RET END 實驗板七段顯示器電路程式 (4 位 ) 7447 驅動自動計數掃瞄顯示 0000 0001 0002 9999 回範例 範例二 : 內部記憶體間接定址, 使用 SWAP XCHD CJNE ADD 指令 ORG 00H ST ST: R0,#30H 30H,#00H R1,#31H 31H,#00H MAIN: R5,#5 LOOP: A,#E0H 個位 XCHD CALL XCHD SWAP XCHD CALL XCHD SWAP P2,A DELAY 十位 A @R0,A A,#D0H P2,A DELAY A @R0,A
A,#B0H 百位 P2,A A,@R1 千位 @R1,A A,#70H P2,A A,@R1 @R1,A R5,LOOP 加 1 ADD A,#1 @R0,A CJNE A,#00H,JMAIN A,@R1 加 1 ADD A,#1 @R1,A CJNE A,#00H,JMAIN ST JMAIN: MAIN DELAY: R2,#10 D1: R3,#249 R3,$ R2,D1
RET END 實驗板七段顯示器電路程式 (4 位 ) 7447 驅動按鈕控制計數掃瞄顯示 0000 0001 0002 9999 回範例 範例三 : 計時中斷掃瞄顯示 內部記憶體間接定址, 使用 JB JNB SWAP XCHD CJNE JNC ADD 指令 ORG ORG 00H ST 0BH T0 ST: SP,#50H SETB IE,#82H TMOD,#01H TL0,#<(65536-10000) TH0,#>(65536-10000) TR0 30H,#00H 個十位 31H,#00H 百千位 MAIN: JB P0.0,UP 清除 30H,#0 31H,#0 UP: JB P0.1,DOWN 上數 ADD DA JNC ADD DA A,30H A,#1 A 30H,A U A,31H A,#1 A 31H,A
U: R2,#10 JNB P0.3,UP 快數 R2,#100 JNB P0.1,UP DOWN: JB P0.2,MAIN 下數 A,30H ADD A,#99H 30H,A CJNE A,#99H,D A,31H ADD A,#99H 31H,A D: R2,#10 JNB P0.3,DOWN 快數 R2,#100 JNB P0.2,DOWN MAIN T0: TL0,#<(65536-10000) TH0,#>(65536-10000) PUSH A PUSH PSW SETB RS0 CLR RS1 R0,#30H R1,#31H A,#E0H 個位
P2,A R2,#1 十位 @R0,A A,#D0H P2,A R2,#1 @R0,A A,#B0H 百位 P2,A R2,#1 A,@R1 千位 @R1,A A,#70H P2,A R2,#1 A,@R1
POP POP @R1,A PSW A RETI DELAY: R3,#10 D1: R4,#80 R4,$ R3,D1 R2,DELAY RET END 實驗板七段顯示器電路程式 (4 位 ) 7447 驅動自動計數掃瞄顯示計時 ( 分 秒 ) 回範例 範例四 : 計時中斷掃瞄顯示 內部記憶體間接定址, 使用 SWAP XCHD CJNE ADD 指令 ORG ORG 00H ST 0BH T0 ST: SP,#10H SETB IE,#82H TMOD,#01H TL0,#<(65536-10000) TH0,#>(65536-10000) TR0 R0,#30H 30H,#00H 秒 R1,#31H 31H,#00H 分 32H,#100
MAIN: MAIN T0: TL0,#<(65536-10000) TH0,#>(65536-10000) PUSH A PUSH PSW SETB RS0 CLR RS1 R0,#30H R1,#31H 32H,OVER 32H,#100 CALL ADDSUB OVER: CALL DISP POP PSW POP A RETI DISP: A,#E0H 個位秒 P2,A 十位秒 @R0,A A,#D0H P2,A
@R0,A A,#B0H 個位分 P2,A A,@R1 十位分 @R1,A A,#70H P2,A A,@R1 @R1,A RET ADDSUB: 秒加 1 ADD A,#1 @R0,A CJNE A,#60H,ADD 30H,#00H A,@R1 分加 1 ADD A,#1 @R1,A CJNE A,#60H,ADD 31H,#00H ADD: RET
DELAY: R2,#10 D1: R3,#100 R3,$ R2,D1 RET END 實驗板七段顯示器電路程式 (4 位 ) 7447 驅動自動計數掃瞄顯示計時 ( 分 秒 ) 加按鈕調整 回範例 範例五 : 計時中斷掃瞄顯示 內部記憶體間接定址, 使用 SWAP XCHD CJNE ADD 指令 ORG ORG 00H ST 0BH T0 ST: SP,#10H SETB IE,#82H TMOD,#01H TL0,#<(65536-10000) TH0,#>(65536-10000) TR0 R0,#30H 30H,#00H 秒 R1,#31H 31H,#00H 分 32H,#100 CADJ: JB P0.0,SADJ 清除 30H,#0 31H,#0 SADJ: JB P0.1,MADJ 調秒 JB P0.2,DADJ1 加 1 ADD A,30H A,#1
30H,A R2,#100 JNB P0.2,$ CJNE A,#60H,DADJ1 30H,#0 DADJ1: JB P0.3,MADJ 減 1 A,30H ADD A,#99H 30H,A R2,#100 JNB P0.3,$ CJNE A,#99H,MADJ 30H,#59H MADJ: JNB P0.1,ADJ 調分 JB P0.2,DADJ2 加 1 A,31H ADD A,#1 31H,A R2,#100 JNB P0.2,$ CJNE A,#60H,DADJ2 31H,#0 DADJ2: JB P0.3,ADJ 減 1 A,31H ADD A,#99H 31H,A
R2,#100 JNB P0.3,$ CJNE A,#99H,ADJ 31H,#59H ADJ: CADJ T0: TL0,#<(65536-10000) TH0,#>(65536-10000) PUSH A PUSH PSW SETB RS0 CLR RS1 R0,#30H R1,#31H 32H,OVER 32H,#100 CALL ADDSUB OVER: CALL DISP POP PSW POP A RETI DISP: A,#E0H 個位秒 P2,A R2,#1 十位秒 @R0,A A,#D0H
P2,A R2,#1 @R0,A A,#B0H 個位分 P2,A R2,#1 A,@R1 十位分 @R1,A A,#70H P2,A R2,#1 A,@R1 @R1,A RET ADDSUB: 秒加 1 ADD A,#1 @R0,A CJNE A,#60H,ADD
30H,#00H A,@R1 分加 1 ADD DA CJNE A,#1 A @R1,A A,#60H,ADD 31H,#00H ADD: RET DELAY: R3,#10 D1: R4,#80 R4,$ R3,D1 R2,DELAY RET END 實驗板七段顯示器電路程式 (4 位 ) 7447 驅動回範例掃瞄顯示 0123 1234 7890 8901 9012 0123 ( 左移循環 ) 範例六 : ORG 00H ST ST: R0,#30H 30H,#00H R1,#31H 31H,#00H R7,#10 R6,#0 BEGIN: DPTR,#TABLE A,R6 C A,@A+DPTR 31H,A
INC DPTR A,R6 C A,@A+DPTR 30H,A MAIN: R5,#20 LOOP: A,#E0H 個位 P2,A 十位 @R0,A A,#D0H P2,A @R0,A A,#B0H 百位 P2,A A,@R1 千位 @R1,A A,#70H P2,A
A,@R1 @R1,A R5,LOOP INC R6 INC R6 R7,BEGIN ST TABLE: DB 01H,23H DB 12H,34H DB 23H,45H DB 34H,56H DB 45H,67H DB 56H,78H DB 67H,89H DB 78H,90H DB 89H,01H DB 90H,12H DELAY: R2,#10 D1: R3,#249 R3,$ R2,D1 RET END