亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
基于匯編語言實(shí)現(xiàn)的LCD顯示矩陣鍵盤鍵值
[打印本頁(yè)]
作者:
hydrogen92
時(shí)間:
2024-12-17 10:35
標(biāo)題:
基于匯編語言實(shí)現(xiàn)的LCD顯示矩陣鍵盤鍵值
實(shí)現(xiàn)矩陣鍵盤按鍵鍵值在LCD1602上顯示出來,基于普中51單片機(jī)開發(fā)板
代碼如下:
RS EQU P1.0
RW EQU P1.1
E EQU P2.5
LCDDATA EQU P0
dula bit P2.0;
wela bit P2.1;
CS88 EQU P2.2
ORG 0000H
AJMP START
ORG 0033H
KEYBUF EQU 30H
SETB CS88
START: MOV KEYBUF,#2
MOV SP,#60H
LCALL DELAY ;延時(shí)一段時(shí)間
MOV LCDDATA,#01H ;寫指令01H,清屏
LCALL ENABLE
MOV LCDDATA,#38H ;寫指令38H,設(shè)定LCD為16*2顯示,5*7 點(diǎn)陣,8位數(shù)據(jù)接口
LCALL ENABLE
MOV LCDDATA,#0FH ;寫指令0FH,顯示ON,光標(biāo)ON,閃爍ON
LCALL ENABLE
MOV LCDDATA,#06H ;寫指令06H,光標(biāo)輸入方式增量移位
LCALL ENABLE
MOV LCDDATA,#80H ;第一行起始字符地址
MOV R1,#14
;LCALL ENABLE
;MOV DPTR,#TABLE1 ;第一行顯示字符表頭地址
;LCALL DISP ;顯示第一行數(shù)據(jù)
;MOV R1,#5
;MOV LCDDATA,#0C0H ;第二行起始字符地址
;LCALL ENABLE
;MOV DPTR,#TABLE2 ;第二行顯示字符表頭地址
;LCALL DISP ;顯示第二行數(shù)據(jù)
WAIT:
MOV P3,#0FFH
CLR P3.4
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK1
MOV KEYBUF,#0
mov p1,#11111110b
LJMP DK1
NK1: CJNE A,#0DH,NK2
MOV KEYBUF,#4
mov p1,#11111100b
LJMP DK1
NK2: CJNE A,#0BH,NK3
MOV KEYBUF,#8
mov p1,#11111000b
LJMP DK1
NK3: CJNE A,#07H,NK4
MOV KEYBUF,#12
mov p1,#11110000b
LJMP DK1
NK4: NOP
DK1:
call display
DK1A: MOV A,P3 ;等待釋放
ANL A,#0FH
XRL A,#0FH
JNZ DK1A
NOKEY1:
MOV P3,#0FFH
CLR P3.5
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK5
MOV KEYBUF,#1
mov p1,#11111110b
LJMP DK2
NK5: CJNE A,#0DH,NK6
MOV KEYBUF,#5
mov p1,#11111100b
LJMP DK2
NK6: CJNE A,#0BH,NK7
MOV KEYBUF,#9
mov p1,#11111000b
LJMP DK2
NK7: CJNE A,#07H,NK8
MOV KEYBUF,#13
mov p1,#11110000b
LJMP DK2
NK8: NOP
DK2:
call display
DK2A: MOV A,P3 ;釋放
ANL A,#0FH
XRL A,#0FH
JNZ DK2A
NOKEY2:
MOV P3,#0FFH
CLR P3.6
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK9
MOV KEYBUF,#2
mov p1,#11111110b
LJMP DK3
NK9: CJNE A,#0DH,NK10
MOV KEYBUF,#6
mov p1,#11111100b
LJMP DK3
NK10: CJNE A,#0BH,NK11
MOV KEYBUF,#10
mov p1,#11111000b
LJMP DK3
NK11: CJNE A,#07H,NK12
MOV KEYBUF,#14
mov p1,#11110000b
LJMP DK3
NK12: NOP
DK3:
call display
DK3A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK3A
NOKEY3:
MOV P3,#0FFH
CLR P3.7
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK13
MOV KEYBUF,#3
mov p1,#11111110b
LJMP DK4
NK13: CJNE A,#0DH,NK14
MOV KEYBUF,#7
mov p1,#11111100b
LJMP DK4
NK14: CJNE A,#0BH,NK15
MOV KEYBUF,#11
mov p1,#11111000b
LJMP DK4
NK15: CJNE A,#07H,NK16
mov p1,#11110000b
MOV KEYBUF,#15
LJMP DK4
NK16: NOP
DK4:
call display
DK4A: MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK4A
NOKEY4:
LJMP WAIT
DELY10MS: ;@12.000MHz
PUSH 30H
PUSH 31H
MOV 30H,#20
MOV 31H,#108
NEXT:
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 31H
POP 30H
RET
display:
MOV LCDDATA,#01H ;寫指令01H,清屏
LCALL ENABLE
MOV LCDDATA,#80H ;第一行起始字符地址
LCALL ENABLE
MOV A,KEYBUF
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
LCALL DISP1
ds1ms: mov r1,#1
ds1lo: mov r2,#200
ds2lo: mov r3,#200
djnz r3,$
djnz r2,ds2lo
djnz r1,ds1lo
ret ;延時(shí)返回
;-----------------
ENABLE: CLR RS ;寫指令子程序(請(qǐng)參照1602LCD使用說 明書)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-----------------
;DISP: MOV R1,#16 ;準(zhǔn)備顯示一行16個(gè)字符
DISP: MOV A,#00H ;將ACC清零
MOVC A,@A+DPTR ;查表取得要顯示的數(shù)據(jù)
LCALL DISP1 ;寫入一個(gè)數(shù)據(jù)
INC DPTR ;數(shù)據(jù)表指針加1,準(zhǔn)備取下一個(gè)數(shù)據(jù)
DJNZ R1,DISP ;一行沒有顯示完就繼續(xù)
RET
;-----------------
DISP1: MOV LCDDATA,#01H ;寫指令01H,清屏
MOV LCDDATA,#80H ;第一行起始字符地址
MOV LCDDATA,A ;寫1字節(jié)數(shù)據(jù)到顯示端口
SETB RS ;寫數(shù)據(jù)時(shí)序(請(qǐng)參照1602LCD使用說明 書)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-----------------
;;-----------------
DELAY: MOV R7,#255 ;延時(shí)子程序
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TABLE1: DB "0123456789ABCDEF"
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1