標題: 單片機60進制動態數碼管匯編語言 [打印本頁]
作者: I/O 時間: 2018-12-7 22:04
標題: 單片機60進制動態數碼管匯編語言
用兩個動態數碼管從0顯示到60,由89C51的P1口輸出,不加譯碼器,直接連接數碼管,注意是動態數碼管,不是兩個單獨的靜態數碼管。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1526042874759391.jpg (189.87 KB, 下載次數: 19)
下載附件
2018-12-7 22:00 上傳
單片機匯編語言源碼:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: ;開始初始化
MOV DPTR,#TAB ;表首址送DPTR
MOV R1, #0
MOV R2, #0
;-------------------------------------------------------
M1:
MOV R0, #50
LOOP:
CALL DIS
DJNZ R0, LOOP ;循環顯示80遍,約用1.6s
;-------------------------------------------------------
MOV A, R3 ;這是計數值
ADD A, #1
DA A ;變成 BCD 碼,即:00~99H
CJNE A, #60H, SSS
CLR A
SSS:
MOV R3, A ;計數值分解.
MOV B, #16
DIV AB ;分成高、低四位
MOV R2, A ;準備去顯示
MOV R1, B
SJMP M1 ;轉到前面,顯示80遍
;-------------------------------------------------------
DIS: ;顯示程序.
MOV A, R2 ;顯示十位.
MOVC A, @A+DPTR
CLR P2.1
MOV P1, A
SETB P2.0 ;十位的位選.
CALL DLY
MOV A, R1 ;個位顯示.
MOVC A, @A+DPTR
CLR P2.0 ;關閉十位的顯示.
MOV P1, A
SETB P2.1 ;個位的位選.
CALL DLY
RET
;------------------------------
TAB: DB 0xc0,0xf9,0xa4,0xb0,0x99 ;共陽極段碼 0~4
DB 0x92,0x82,0xf8,0x80,0x90 ;共陽極段碼 5~9
;-------------------------------------------------------
DLY: MOV R6, #20 ;10ms延時.
D1: MOV R7, #248
DJNZ R7, $
DJNZ R6, D1
RET
-
-
60進制動態數碼管.rar
2018-12-7 22:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
6.83 KB, 下載次數: 7, 下載積分: 黑幣 -5
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |