51单片机写一个lcd1602显示的程序
时间: 2023-09-22 22:07:29 浏览: 106
51单片机1602液晶显示程序.zip
以下是一个简单的51单片机控制LCD1602的程序,使用的是汇编语言编写:
```
;*****************************************************************
; 程序名称:LCD1602显示程序
; 程序功能:通过51单片机控制LCD1602显示字符
;*****************************************************************
; 定义端口
sbit RS = P1^0 ;数据/指令选择端口
sbit RW = P1^1 ;读写选择端口
sbit EN = P1^2 ;使能端口
; 数据端口
sbit D7 = P2^7
sbit D6 = P2^6
sbit D5 = P2^5
sbit D4 = P2^4
; 延时函数
Delay_5us:
mov R7, #2
Delay_5us_1:
djnz R7, Delay_5us_1
ret
Delay_ms:
push ACC
push PSW
mov R0, DPL
Delay_ms_1:
mov R1, #250
Delay_ms_2:
djnz R1, Delay_ms_2
djnz R0, Delay_ms_1
pop PSW
pop ACC
ret
; 写命令到LCD1602
SendCommand:
clr RS
clr RW
mov P2, #0FFh
anl A, #0F0h
mov P2, A
setb EN
clr EN
mov P2, #0FFh
anl A, #0Fh
mov P2, A
setb EN
clr EN
call Delay_5us
ret
; 写数据到LCD1602
SendData:
setb RS
clr RW
mov P2, #0FFh
anl A, #0F0h
mov P2, A
setb EN
clr EN
mov P2, #0FFh
anl A, #0Fh
mov P2, A
setb EN
clr EN
call Delay_5us
ret
; 初始化LCD1602
InitLCD:
mov A, #0
call Delay_ms
mov A, #0
call Delay_ms
mov A, #0
call Delay_ms
mov A, #30h
call SendCommand
mov A, #30h
call SendCommand
mov A, #30h
call SendCommand
mov A, #38h
call SendCommand
mov A, #0Ch
call SendCommand
mov A, #06h
call SendCommand
mov A, #01h
call SendCommand
ret
; 显示字符
ShowChar:
mov A, #0
mov D7, A
mov D6, A
mov D5, A
mov D4, A
anl A, #0F0h
orl A, DPH
call SendData
mov A, #0
mov D7, A
mov D6, A
mov D5, A
mov D4, A
anl A, #0F0h
orl A, DPL
swap A
swap A
call SendData
ret
; 主程序
Main:
call InitLCD
mov DPH, #'H'
mov DPL, #'e'
call ShowChar
mov DPH, #'l'
mov DPL, #'l'
call ShowChar
mov DPH, #'o'
mov DPL, #','
call ShowChar
mov DPH, #'W'
mov DPL, #'o'
call ShowChar
mov DPH, #'r'
mov DPL, #'l'
call ShowChar
mov DPH, #'d'
mov DPL, #0
call ShowChar
Loop:
sjmp Loop
```
以上代码仅供参考,具体实现方式可能因单片机型号和LCD1602型号而异。
阅读全文