RET
INIT_LCD: ;8位I/O控制 LCD 接口初始化
MOV A,#38H ;双列显示,字形5*7点阵
CALL WCOM
call delay1
MOV A,#38H
CALL WCOM
call delay1
MOV A,#38H
CALL WCOM
call delay1
MOV A,#0CH ;开显示,显示光标,光标不闪烁
CALL WCOM
call delay1
MOV A,#01H ;清除 LCD 显示屏
CALL WCOM
call delay1
RET
;==================================================
CLR_LINE1: ;清除LCD的第一行字符
MOV A,#80H ;设置 LCD 的第一行地址
CALL WCOM ;
MOV R0,#24 ;设置计数值
C1: MOV A,#’ ’ ;载入空格符至LCD
CALL WDATA ;输出字符至LCD
DJNZ R0,C1 ;计数结束
RET
;==================================================
LCD_PRINT: ;在LCD的第一行或第二行显示字符
CJNE A,#1,LINE2 ;判断是否为第一行
LINE1: MOV A,#80H ;设置 LCD 的第一行地址
CALL WCOM ;写入命令
CALL CLR_LINE ;清除该行字符数据
MOV A,#80H ;设置 LCD 的第一行地址
CALL WCOM ;写入命令
JMP FILL
LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址
CALL WCOM ;写入命令
CALL CLR_LINE ;清除该行字符数据
MOV A,#0C0H ;设置 LCD 的第二行地址
CALL WCOM
FILL: CLR A ;填入字符
MOVC A,@A+DPTR ;由消息区取出字符
CJNE A,#0,LC1 ;判断是否为结束码
RET
LC1: CALL WDATA ;写入数据
INC DPTR ;指针加1
JMP FILL ;继续填入字符
RET
;=========================================
CLR_LINE: ;清除该行 LCD 的字符
MOV R0,#24
CL1: MOV A,#’ ’
CALL WDATA
DJNZ R0,CL1
RET
DE: MOV R7,#250
DJNZ R7,$
RET
;============================================
WCOM: ;以8位控制方式将命令写至LCD
MOV P0,A ;写入命令
CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
CLR LCD_RW
SETB LCD_EN
ACALL DELAY1
CLR LCD_EN
RET
;=============================================
WDATA: ;以8位控制方式将数据写至LCD
MOV P0,A ;写入数据
SETB LCD_RS
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机