51单片机驱动lcd1602汇编语言
时间: 2023-06-29 22:07:35 浏览: 184
51单片机汇编语言-LCD1602
以下是51单片机驱动LCD1602的汇编语言代码:
```
; 51单片机驱动LCD1602汇编语言代码
;
; 这段代码可以在Keil C中使用,需要在LCD的VSS、VDD、V0、RS、RW、E、DB0-DB7引脚分别连接到51单片机的GND、VCC、可变电阻、P0.0、P0.1、P0.2、P0.3-P0.10引脚
ORG 0000H
START:
MOV A, #38H ; 初始化命令
CALL SEND_CMD
MOV A, #0CH ; 开启显示
CALL SEND_CMD
MOV A, #06H ; 设定地址自增
CALL SEND_CMD
MOV A, #01H ; 清除显示
CALL SEND_CMD
MAINLOOP:
MOV A, #'H' ; 显示字符'H'
CALL SEND_DATA
MOV A, #'E' ; 显示字符'E'
CALL SEND_DATA
MOV A, #'L' ; 显示字符'L'
CALL SEND_DATA
MOV A, #'L' ; 显示字符'L'
CALL SEND_DATA
MOV A, #'O' ; 显示字符'O'
CALL SEND_DATA
SJMP MAINLOOP ; 跳回主循环
SEND_CMD:
CLR P0.1 ; 将RW引脚置为低电平
CLR P0.0 ; 将RS引脚置为低电平
MOV P0.3, A ; 将命令写入DB7-DB0引脚
SETB P0.2 ; 将E引脚置为高电平
CLR P0.2 ; 将E引脚置为低电平
ACALL DELAY ; 延时1ms
RET
SEND_DATA:
CLR P0.1 ; 将RW引脚置为低电平
SETB P0.0 ; 将RS引脚置为高电平
MOV P0.3, A ; 将数据写入DB7-DB0引脚
SETB P0.2 ; 将E引脚置为高电平
CLR P0.2 ; 将E引脚置为低电平
ACALL DELAY ; 延时1ms
RET
DELAY:
MOV R7, #5 ; 设置循环计数器
DELAY_LOOP:
NOP ; 空指令,延时1us
NOP
DJNZ R7, DELAY_LOOP ; 循环5次,延时5us
RET
END
```
该代码使用P0端口来控制LCD1602,其中P0.0引脚用于控制RS信号、P0.1引脚用于控制RW信号、P0.2引脚用于控制E信号,P0.3-P0.10引脚用于传输数据。在程序中,先发送初始化命令,然后设置LCD1602显示的参数,最后不断循环显示字符。SEND_CMD和SEND_DATA两个子程序分别用于发送命令和数据,DELAY子程序用于延时。
阅读全文