⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1.asm

📁 LCD和44键盘的一个简单例子,proteus下仿真通过
💻 ASM
字号:
;******************
RS EQU P3.0
RW EQU P3.1
E  EQU P3.2
DATE EQU P2
BF EQU P2.7
KEY EQU P1
COUNT EQU 31H
SCAN EQU 32H
SCAN1 EQU 33H
KEYCOUNT EQU 34H
SHOWWHAT EQU 35H
;*****************
ORG 0000H
AJMP START
ORG 0030H
START:
;*************************
;初始化LCD
;*********************
MOV SP,#5FH
MOV DATE,#00000001B ;清屏
CALL WRITES
MOV DATE,#00111000B ;8位2行5x7点阵
ACALL WRITES
MOV DATE,#00001111B ;显示器开、光标开、闪烁开
ACALL WRITES
MOV DATE,#00000110B ;文字不动,光标自动右移
ACALL WRITES
;*************************
;键盘扫描初始化
;****************
MOV KEY,#0F0H
MOV 30H,#0FEH
MOV COUNT ,#0
MOV KEYCOUNT,#0
;******************
MAIN:
CALL KEYSCAN
MOV DATE,#00H
ACALL WRITES
MOV DPTR,#TAB
MOV A,SHOWWHAT
MOVC A,@A+DPTR
MOV DATE,A
ACALL READDATE
LJMP MAIN
;*********************
;键盘扫描程序
;*********************
KEYSCAN:
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT
LJMP KEYSCAN
KEYWHAT:
CALL DELAY
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT1
LJMP KEYSCAN
KEYWHAT1:
MOV KEY,30H
MOV A,KEY
ANL A,#0F0H
CJNE A,#0F0H,KEYWHAT2
MOV A,30H
RL A
MOV 30H,A
INC COUNT
MOV A,COUNT
CJNE A,#4,KEYWHAT1
MOV COUNT,#0
MOV 30H,#0FEH
AJMP KEYSCAN
KEYWHAT2:
SWAP A
MOV SCAN,A
K1:MOV A,SCAN
RRC A
MOV SCAN,A
JBC CY,K
INC KEYCOUNT 
MOV R3,KEYCOUNT
CJNE R3,#3,K1
MOV KEYCOUNT,#0
AJMP K1
k:
MOV SCAN,KEYCOUNT
MOV A,COUNT
MOV B,#4
MUL AB
ADD A,SCAN
MOV SHOWWHAT,A
RET
;*****************
;写控制命令子程序
;**************
WRITES:
CLR RS
CLR RW
CLR E
CALL FAVOUR;判断是否忙
SETB E
RET
;*****************
;写数据子程序
;**************
READDATE:
SETB RS
CLR RW
CLR E
ACALL FAVOUR
SETB E
RET
;***************
;判断是否忙子程序
;******************
FAVOUR:
MOV DATE,#0FFH
CLR RS
SETB RW
CLR E
NOP
SETB E
JB BF,FAVOUR
RET
;***************
DELAY:
MOV R0,#100
D1:MOV R1,#255
   DJNZ R1,$
   DJNZ R0,D1
RET
;*****************
TAB:
DB 30H,31H,32H,33H,34H,35H,36H,38H,39H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -