試驗7--------流水燈數字顯示綜合練習
數碼管顯示數字
注意0為點亮 1 為滅
顯示數字 | p0.7 | p0.6 | p0.5 | p0.4 | p0.3 | p0.2 | p0.1 | p0.0 | 16進制代碼 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 28H |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 7EH |
2 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | A2H |
3 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 62H |
4 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 74H |
5 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 61H |
6 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21H |
7 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 7AH |
8 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 20H |
9 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 60H |
代碼表的意思和方法參照前面的教程;注意0為點亮 1 為滅然后我們可以把代碼送到P0口,就可以是數碼管顯示需要的數字;當然,必須有位選,因為我們的實驗板是動態(tài)掃描數碼管,兩個8的位選分別是P2.6 P2.7.
LOOP: ;標號
CLR P2.6 ;選中p2.6 數碼管左邊的8字使能
SETB P2.7 ;p2.7不使能。右邊的數碼管消隱
MOV P0,#28H ;把28h送p0口;數碼管顯示0
LCALL DELAY ;延時
MOV P0,#0FFH ;0ffh 送p0口,數碼管清除
CLR P1.0 ;點亮p1.0發(fā)光管
MOV P0,#7EH ;把7eh送p0口;數碼管顯示1
LCALL DELAY
MOV P0,#0FFH
CLR P1.1 ;點亮p1.0發(fā)光管
CLR P1.0 ;點亮p1.0發(fā)光管
MOV P0,#0A2H ;數碼管顯示2
LCALL DELAY
MOV P0,#0FFH
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#62H ;數碼管顯示3
LCALL DELAY
MOV P0,#0FFH
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#74H ; ;數碼管顯示4
LCALL DELAY
MOV P0,#0FFH
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#61H ;數碼管顯示5;
LCALL DELAY
MOV P0,#0FFH
CLR P1.5
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#21H ; 數碼管顯示6
LCALL DELAY
MOV P0,#0FFH
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#7AH ; 數碼管顯示7
LCALL DELAY
MOV P0,#0FFH
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#20H ; 數碼管顯示8
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
;程序到此結果為左邊的數碼管顯示0,1,2,3,4,5,6,7,8;p1.0------------p1.7指示燈依次點亮
SETB P2.6 ;左邊的8消隱
CLR P2.7 ;選中p2.7 數碼管右邊的8字使能,;
MOV P0,#28H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.0
MOV P0,#7EH
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.1
MOV P0,#0A2H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.2
MOV P0,#62H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.3
MOV P0,#74H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.4
MOV P0,#61H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.5
MOV P0,#21H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.6
MOV P0,#7AH
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
CLR P1.7
MOV P0,#20H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#0FFH
MOV P1,#0FFH
;這一段和上一段基本相同,不同的是右邊的數碼管依次顯示012345678,左邊的不亮;;同時p1口的燈流動顯示:
AJMP LOOP;注意:程序運行到此跳轉到開始標號,重復執(zhí)行:
DELAY: ;延時子程序;參考前面的教程:
CLR P3.3 ;注意小喇叭在3.3口,這里可以使小喇叭發(fā)出嗒,嗒聲
MOV R7,#255
NOP
NOP
D1:MOV R6,#255
setb p3.3
D2: DJNZ R6,D2
clr p3.3
DJNZ R7,D1
SETB P3.3
RET
END
評論