您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>C/C++語(yǔ)言編程>

數(shù)碼管顯示的多種方式

大小:0.15 MB 人氣: 2017-09-06 需要積分:0

1、實(shí)現(xiàn)3*4按鍵數(shù)碼管顯示

;******************************************************************************
;*? 描述:?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
;*???????? 實(shí)現(xiàn)3*4按鍵數(shù)碼管顯示,???? 按K1 對(duì)應(yīng)四個(gè)數(shù)碼管顯示1???????????????????????????????????? ;????????? 按K2 對(duì)應(yīng)四個(gè)數(shù)碼管顯示2,? 按K3 對(duì)應(yīng)四個(gè)數(shù)碼管顯示3
;????????? 按K4 對(duì)應(yīng)四個(gè)數(shù)碼管顯示4,? 按K5 對(duì)應(yīng)四個(gè)數(shù)碼管顯示5
;????????? 按K6 對(duì)應(yīng)四個(gè)數(shù)碼管顯示6,? 按K7 對(duì)應(yīng)四個(gè)數(shù)碼管顯示7
;????????? 按K8 對(duì)應(yīng)四個(gè)數(shù)碼管顯示8,? 按K9 對(duì)應(yīng)四個(gè)數(shù)碼管顯示9
;????????? 按K10 對(duì)應(yīng)四個(gè)數(shù)碼管顯示a, 按K11 對(duì)應(yīng)四個(gè)數(shù)碼管顯示b
;????????? 按K12 對(duì)應(yīng)四個(gè)數(shù)碼管顯示C
;????????? Y1接P2.0? Y2接P2.1? Y3接P2.2??? X1接P2.4? X2接P2.5? X3接P2.6?? X4接P2.7??
;******************************************************************************
;* 【版權(quán)】 Copyright(C)東哥單片機(jī)學(xué)習(xí)網(wǎng)?www.picavr.com? All Rights Reserved???????
;* 【聲明】 此程序僅用于學(xué)習(xí)與參考,引用請(qǐng)注明版權(quán)和作者信息!??????????????????????????????????
;******************************************************************************
???????????? DATA1?? EQU??? 30H??????? ;
????? DATA2?? EQU??? 31H??????? ;
???????????? DATA3?? EQU??? 32H??????? ;
???????????? DATA4?? EQU??? 33H??????? ;
????? KEYBUF? EQU??? 34H??????? ;
;-------------------------------------------
???????????? ORG??????? 0000H????????? ;
???????????? LJMP?????? START????????? ;轉(zhuǎn)入主程序
???????????? ORG??????? 0030H????????? ;
START:
???????????? MOV??????? SP,#60H??????? ;初始化堆棧指針?
????? MOV??????? P0,#0FFH?????? ;初始化I/O口
????? MOV??????? P1,#0FFH?????? ;
????? MOV??????? P2,#0FFH?????? ;
????? MOV??????? A,#00H???????? ;
????? MOV??????? DATA1,A??????? ;設(shè)定顯示初值
????? MOV??????? DATA2,A??????? ;
???? ????? MOV??????? DATA3,A??????? ;
????? MOV??????? DATA4,A??????? ;
;*******************************************
MAIN:
???????????? CALL?????? DISP?????????? ;調(diào)顯示子程序
????? CALL?????? KEYWORK??????? ;
????? AJMP?????? MAIN?????????? ;
;*******************************************
;顯示子程序
;******************************************
DISP:
????? MOV?A,DATA1??????? ;
???????????? MOV??????? DPTR,#TABLE??? ;???
????? MOVC?A,@A+DPTR????? ;取數(shù)據(jù)表數(shù)據(jù)
????? MOV?P0,A?????????? ;DATA1 顯示代碼傳送到P0口
????? CLR?P1.0?????????? ;
????? LCALL?DELAY1MS?????? ;
????? SETB?P1.0?????????? ;
????? MOV?A,DATA2??????? ;
????? MOVC?A,@A+DPTR????? ;取數(shù)據(jù)表數(shù)據(jù)
????? MOV?P0,A?????????? ;DATA2 顯示代碼傳送到P0口
????? CLR?P1.1?????????? ;
????? LCALL?DELAY1MS?????? ;
????? SETB?P1.1?????????? ;
????? MOV?A,DATA3??????? ;
?????? MOVC?A,@A+DPTR????? ;取數(shù)據(jù)表數(shù)據(jù)
????? MOV?P0,A?????????? ;DATA3 顯示代碼傳送到P0口
????? CLR?P1.2?????????? ;
????? LCALL?DELAY1MS?????? ;
????? SETB?P1.2?????????? ;
????? MOV?A,DATA4??????? ;
????? MOVC?A,@A+DPTR????? ;取數(shù)據(jù)表數(shù)據(jù)
????? MOV?P0,A?????????? ;DATA4 顯示代碼傳送到P0口
????? CLR?P1.3?????????? ;
????? LCALL?DELAY1MS?????? ;
????? SETB?P1.3?????????? ;
????? RET?????????????????????? ;
;*******************************************

;*******************************************?
;4*4行列掃描查鍵子程序?
;*******************************************
KEYWORK:???? MOV??? P2,#0FFH????????? ;置P2口為輸入狀態(tài)
???????????? CLR??? P2.0????????????? ;掃描第1行(第1行為0)
???????????? MOV??? A,P2????????????? ;讀入P2口值
???????????? ANL??? A,#0F0H?????????? ;低4位為0
???????????? CJNE?? A,#0F0H,KEYROW??? ;高4位不為全1(有鍵按下)轉(zhuǎn)KEYROW
???????????? SETB?? P2.0????????????? ;
???????????? CLR??? P2.1????????????? ;掃描第2行(第2行為0)
???????????? MOV??? A,P2????????????? ;讀入P2口值
???????????? ANL??? A,#0F0H?????????? ;低4位為0
???????????? CJNE?? A,#0F0H,KEYROW??? ;高4位不為全1(有鍵按下)轉(zhuǎn)KEYROW
???????????? SETB?? P2.1????????????? ;
???????????? CLR??? P2.2????????????? ;掃描第3行(第3行為0)
???????????? MOV??? A,P2????????????? ;讀入P2口值
???????????? ANL??? A,#0F0H?????????? ;低4位為0
???????????? CJNE?? A,#0F0H,KEYROW??? ;高4位不為全1(有鍵按下)轉(zhuǎn)KEYROW
???????????? SETB?? P2.2????????????? ;
???????????? RET????????????????????? ;子程序返回
;***********************************************************************
KEYROW:????? ACALL? DISP????????????? ;消抖處理
???????????? MOV??? A,P2????????????? ;再讀入P2口值
???????????? ANL??? A,#0F0H?????????? ;低4位為0
???????????? CJNE?? A,#0F0H,KEYCHE??? ;高4位不為全1確有鍵按下轉(zhuǎn)KEYCHE
KEYOUT:????? RET????????????????????? ;干擾子程序返回
;------------------------------------------------------
KEYCHE:????? MOV??? A,P2????????????? ;讀入P2口值
???????????? MOV??? KEYBUF,A????????? ;放入KEYBUF暫存
CJLOOP:????? ACALL? DISP????????????? ;調(diào)顯示子程序
???????????? MOV??? A,P2????????????? ;讀入P2口值
???????????? ANL??? A,#0F0H?????????? ;低4位為0
???????????? CJNE?? A,#0F0H,CJLOOP??? ;高4位為全1(鍵還按住),轉(zhuǎn)CJLOOP等待釋放
???????????? MOV??? R7,#00H?????????? ;鍵釋放,置R7初值為#00H(查表次數(shù))
???????????? MOV??? DPTR,#KEYTAB????? ;取鍵值表首址
CHEKEYLOOP:? MOV??? A,R7????????????? ;查表次數(shù)入A
???????????? MOVC?? A,@A+DPTR???????? ;查表
???????????? XRL??? A,KEYBUF????????? ;查表值與P2口讀入值比較
???????????? JZ???? K1??????????????? ;為0(相等)轉(zhuǎn)KEYOK
???????????? INC??? R7??????????????? ;不等,查表次數(shù)加1
???????????? CJNE?? R7,#0DH,CHEKEYLOOP;查表次數(shù)不超過(guò)12次轉(zhuǎn)LHEKEYLOOP再查
???????????? AJMP?? KEYOUT??????????? ;12次到,退出
;***********************************************************************
K1:???????
???????????? MOV??? A,R7????????????? ;查表次數(shù)入 A(即鍵號(hào)值)
???????????? CJNE?? A,#00H,K2???????? ;
???????????? MOV??? A,#01H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K2:??
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#01H,K3???????? ;
???????????? MOV??? A,#02H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;?
K3:??
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#02H,K4???????? ;
???????????? MOV??? A,#03H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;??
K4:??
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#03H,K5???????? ;
???????????? MOV??? A,#04H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;?
;-------------------------------------------
K5:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#04H,K6???????? ;?
???????????? MOV??? A,#05H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;?
K6:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#05H,K7???????? ;?
???????????? MOV??? A,#06H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K7:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#06H,K8???????? ;
???????????? MOV??? A,#07H??????????? ;?
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K8:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#07H,K9???????? ;?
???????????? MOV??? A,#08H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K9:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#08H,K10???????? ;?
???????????? MOV??? A,#09H??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K10:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#09H,K11??????? ;?
???????????? MOV??? A,#0AH??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K11:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#0AH,K12??????? ;?
???????????? MOV??? A,#0BH??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
???????????? AJMP?? KEYOUT??????????? ;
K12:
???????????? MOV??? A,R7????????????? ;
???????????? CJNE?? A,#0BH,K12_1????? ;?
???????????? MOV??? A,#0CH??????????? ;
???????????? MOV??? DATA1,A?????????? ;
????? MOV??? DATA2,A?????????? ;
????? MOV??? DATA3,A?????????? ;
????? MOV??? DATA4,A?????????? ;
K12_1:
???????????? AJMP?? KEYOUT??????????? ;
;*******************************************?
DELAY1MS:?
???? MOV???????? R4,#2????????? ;延時(shí)子程序
DEL1:
???? MOV???????? R5,#250??????? ;
???? DJNZ?R5,$?????????? ;
???? DJNZ?R4,DEL1??????? ;
??????????? RET??????????????????????? ;
;-------------------------------------------
DELAY10MS:?
???? MOV???????? R4,#20???????? ;
DEL2:
???? MOV???????? R5,#250??????? ;
??????????? DJNZ??????? R5,$?????????? ;
???? DJNZ??????? R4,DEL2??????? ;
??????????? RET??????????????????????? ;
;*******************************************?
TABLE:
????? DB?0C0H????????????????? ;0? 11000000B??
????? DB?0F9H????????????????? ;1? 11111001B?
????? DB?0A4H????????????????? ;2? 10100100B?
????? DB?0B0H????????????????? ;3? 10110000B
????? DB?99H?????????????????? ;4? 10011001B
????? DB?92H?????????????????? ;5? 10010010B
?????? ????? DB?82H?????????????????? ;6? 10000010B
????? DB?0F8H????????????????? ;7? 11111000B?
????? DB?80H?????????????????? ;8? 10000000B
????? DB?90H?????????????????? ;9? 10010000B??
???????????? DB 88H?????????????????? ;A? 10001000B
????? DB 83H?????????????????? ;b? 10000011B
????? DB 0C6H????????????????? ;C? 11000110B
;********************************************
;鍵號(hào)對(duì)應(yīng)P2口數(shù)值表(同時(shí)按下兩鍵為無(wú)效操作)
KEYTAB:????? DB? 0EEH,0DEH,0BEH,7EH?? ;
???????????? DB? 0EDH,0DDH,0BDH,7DH?? ;
???????????? DB? 0EBH,0DBH,0BBH,7BH?? ;
???????????? END????????????????????? ;

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?