📄 lcd_sub.txt
字号:
内部指令 :
MOV A,#38H ;使用8Bits汇流排,显示两行,使用 5*7的字型。
LCALL wr_ir; ;写指令到IR(指令)寄存器
MOV A,#0EH ;显示器开,光标开,光标闪烁。
LCALL wr_ir; ;写指令到IR寄存器
MOV A,#06H ;字符不动,光标自动右移一格。
LCALL wr_IR; ;写指令到IR寄存器
;*****************清除LCD显示器程序******************
CLS:
MOV A,#01H ;将01H放入ACC。
ACALL WR_IR ;写指令到IR寄存器
RET ;返回。
;*****************写指令到指令寄存器*****************
WR_IR:
ACALL BUSY_OR_NOT ; 检查忙碌,不忙后继续。
CLR E ;禁能LCD。
CLR RS ;选择指令暂存器。
CLR RW ;选择写模式。
SETB E ;使能LCD。
MOV DB0_DB7,ACC ;将存在ACC内的指令码经由P1口输出到期LCD。
CLR E ;禁能LCD。
RET ;返回。
;******************等待LCD不忙********************
BUSY_OR_NOT:
PUSH ACC
DDW1:
CLR RS ;选择指令暂存器。
SETB RW ;选择读模式。
CLR E ;禁能LCD。
SETB E ;使能LCD。
MOV A,DB0_DB7 ;将LCD的DB0-DB7的资料经由P1口存入ACC中,以便查对第7位元BF是否为0。
CLR E ;禁能LCD。
JB ACC.7,DDW1 ;判断由LCD读入资料的第7元位及BF是否为1,若为1表示LCD忙碌中。
POP ACC ;将累加器ACC的内容从堆栈区取出。
ACALL DELAY ;调用延时程序。
RET ;返回。
;****************写数据到数据寄存器******************
WR_DR: ;写入DR寄存器子程序。
ACALL BUSY_OR_NOT ;检查忙碌。
CLR E ;禁能LCD。
SETB RS ;选择资料寄存器。
CLR RW ;选择写模式。
SETB E ;使能LCD。
MOV DB0_DB7,ACC ;将存在ACC内的指令码经由P1口输出到期LCD。
CLR E ;禁能LCD。
RET ;返回。
;***************延时子程序*************************
DELAY:
MOV R6,#5
D1:
MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -