51lcd1602显示汉字汇编
时间: 2023-07-28 21:10:08 浏览: 82
要在LCD1602上显示汉字,需要使用汉字点阵。以下是一个显示“你好”的示例汇编代码:
```
;LCD1602显示汉字例程
;显示“你好”
;CPU:AT89S52
;晶振:11.0592MHz
ORG 0H
MOV P0,#0FFH ;设置P0口为输出
;以下是汉字点阵数据
DB 00H,00H,04H,0AH,11H,20H,00H,00H ;“你”
DB 10H,10H,10H,10H,13H,14H,10H,00H
DB 00H,00H,00H,1FH,10H,10H,1FH,00H ;“好”
DB 08H,1FH,08H,08H,0EH,08H,08H,00H
MOV P2,#00H ;设置LCD1602为8位数据总线、2行显示、5x7点阵字体
CALL DELAY ;等待一段时间
;以下是向LCD1602发送指令的代码
MOV A,#0H ;清屏
CALL SEND_CMD
MOV A,#1CH ;光标右移
CALL SEND_CMD
MOV A,#06H ;光标不移动,字符右移
CALL SEND_CMD
;以下是向LCD1602发送数据的代码
MOV A,#80H ;设置光标起始位置
CALL SEND_CMD
MOV A,#0 ;发送“你”的第一组点阵
CALL SEND_DATA
MOV A,#1 ;发送“你”的第二组点阵
CALL SEND_DATA
MOV A,#40H ;设置光标到第二行第一个位置
CALL SEND_CMD
MOV A,#2 ;发送“好”的第一组点阵
CALL SEND_DATA
MOV A,#3 ;发送“好”的第二组点阵
CALL SEND_DATA
END
;发送指令子程序
SEND_CMD:
CLR P2.0 ;RS=0
CLR P2.1 ;RW=0
MOV P0,A ;放入指令
SETB P2.2 ;EN=1
CALL DELAY ;等待一段时间
CLR P2.2 ;EN=0
RET
;发送数据子程序
SEND_DATA:
SETB P2.0 ;RS=1
CLR P2.1 ;RW=0
MOV P0,A ;放入数据
SETB P2.2 ;EN=1
CALL DELAY ;等待一段时间
CLR P2.2 ;EN=0
RET
;延时子程序
DELAY:
MOV R7,#10H
DELAY_LOOP1:
MOV R6,#10H
DELAY_LOOP2:
DJNZ R6,$
DJNZ R7,DELAY_LOOP1
RET
```
这个程序使用P0口作为LCD1602的数据总线,使用P2.0、P2.1、P2.2口分别作为LCD1602的RS、RW、EN信号线。首先设置P0口为输出,然后发送LCD1602的初始化指令和设置指令,最后发送“你好”的汉字点阵数据。DELAY子程序用于延时一段时间,以便LCD1602能够正确处理指令和数据。请注意,这个程序是基于AT89S52单片机的,如果你使用的是其他单片机,你需要相应地修改代码。
阅读全文