📄 lcd_t.asm
字号:
;----------------------------------------------------------------------------------------------
;----------------------------------------------------------------------------------------------
;**********************************************************************************************
;************************************接口定义**************************************************
RS EQU P3.2 ; H---DATA, L---INSTRUCT
RW EQU P3.1 ; H---READ, L---WRITE
E EQU P3.0 ; 下降沿---写数据, 高---读数据, 低或上升沿无动作
DB07 EQU P7 ; DATA
;**********************************************************************************************
;************************************寄存器定义************************************************
LCD_DAT EQU 20H
LCD_COM EQU 21H
;**********************************************************************************************
;****************************************** MAIN
ORG 00H
JMP START
ORG 40H
START: MOV SP,#60H
;***************************系统初始化
MOV WDTCN,#0DEH
MOV WDTCN,#0ADH
MOV OSCICN,#84H ;选择内部晶振1.9M
MOV OSCXCN,#00000000B ;外部晶振禁止
LP: MOV A,OSCICN ;等待晶振稳定
JNB ACC.4,LP
MOV XBR0,#00H
MOV XBR1,#80H
MOV XBR2,#11000000B ;交叉开关允许,禁止弱上拉
MOV P0MDOUT,#0FFH
MOV P1MDOUT,#0FFH
MOV P2MDOUT,#0FFH
MOV P3MDOUT,#0FFH
MOV P74OUT,#0FFH ;输出为推挽方式
MOV P1MDIN,#0FFH ;P1口为数字输入
;***************************LCD初始化
CLR RS
CLR RW
MOV LCD_COM,#30H ;普通指令集
MOV DB07,LCD_COM
SETB E
CLR E
;CALL DEY
MOV LCD_COM,#0CH ;开显示
CALL LCD_WRI
MOV LCD_COM,#01H ;清屏
CALL LCD_WRI
MOV LCD_COM,#06H ;AC加一
CALL LCD_WRI
;***************************LCD显示
MOV LCD_COM,#80H ;显示起始地址设定
CALL LCD_WRI
MOV LCD_COM,#00000110B
CALL LCD_WRI ;进入方式设定
MOV R5,#3
MOV R4,#0A1H
LOOP: MOV LCD_DAT,#0B4H ;写高位地址
CALL LCD_WRD
MOV LCD_DAT,R4 ;写低位地址
CALL LCD_WRD
INC R4
DJNZ R5,LOOP
MOV LCD_COM,#00001000B
CALL LCD_WRI
MOV LCD_COM,#10010010B
CALL LCD_WRI
MOV LCD_DAT,#0B4H
CALL LCD_WRD
MOV LCD_DAT,#0A1H
CALL LCD_WRD ;显示位置测试
MOV LCD_COM,#00001101B
CALL LCD_WRI ;游标显示测试
JMP $
;****************************************** MAIN OVER
;***************************写指令
LCD_WRI: CALL DEY
PUSH ACC
CLR E
CLR RS
SETB RW
LCD_WRI0: MOV DB07,#0FFH
SETB E
MOV A,DB07 ;读出状态寄存器
CLR E
;JB ACC.7,LCD_WRI0
CLR RW
MOV DB07,LCD_COM
SETB E
CLR E ;写指令
POP ACC
RET
;***************************
;***************************写数据
LCD_WRD: CALL DEY
PUSH ACC
CLR RS
SETB RW
LCD_WRD0: MOV DB07,#0FFH
SETB E
MOV A,DB07
CLR E
;JB ACC.7,LCD_WRD0
CLR RW
SETB RS
MOV DB07,LCD_DAT
SETB E
CLR E
POP ACC
RET
;***************************
;***************************DELAY
;占用R7,R6
DEY: MOV R7,#200
DEY0: MOV R6,#40
DJNZ R6,$
DJNZ R7,DEY0
RET
;***************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -