📄 ex_one.asm
字号:
/*******************************************************************************
Title: 演示程序---LED显示器实验 *
Name: one.asm *
Date: 2008-12-3 * *
********************************************************************************
1602字符型LCD显示演示程序 *
显示汉字“中” *
*
********************************************************************************/
lcd_rs bit P2.0 ;LCD寄存器选择
lcd_rw bit P2.1 ;LCD读写控制
lcd_e bit P2.2 ;LCD选通
lcdio equ P0
lcdbusy equ 33H ;LCD忙寄存
lcddata equ 34H ;LCD传递数据
ORG 0000H
jmp Main ;复位入口,转主程序
ORG 030H
Main:
mov sp,#50H ;设置堆栈指针
mov dptr,#char1 ;设置指针指向第一行第一个字符的地址
lcall delay
lcall delay
lcall lcd_init ;调液晶初始化
lcall lcd_sendchar
loop:
nop
Ajmp loop
delay: mov r3,#50 ;延时程序
delay_loop:
mov r4,#50
djnz r4,$
djnz r3,delay_loop
ret
lcd_init: ;液晶初始化程序
lcd_init_1:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0,lcd_init_1
mov lcddata,#38H
lcall lcd_writecomm
lcall delay
lcd_init_2:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0,lcd_init_2
mov lcddata,#06H
lcall lcd_writecomm
lcall delay
lcd_init_3:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0,lcd_init_3
mov lcddata,#0dH
lcall lcd_writecomm
lcall delay
lcd_init_4:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0,lcd_init_4
mov lcddata,#01H
lcall lcd_writecomm
lcall delay
ret
lcd_writecomm: ;写命令
clr lcd_rs
nop
clr lcd_rw
nop
mov lcdio,lcddata
nop
setb lcd_e
nop
clr lcd_e
ret
lcd_writedata: ;写数据
setb lcd_rs
nop
clr lcd_rw
nop
mov lcdio,lcddata
nop
setb lcd_e
nop
clr lcd_e
ret
lcd_readdata: ;读数据
setb lcd_rs
nop
setb lcd_rw
nop
setb lcd_e
nop
mov lcdbusy,lcdio
clr lcd_e
ret
lcd_readbusy: ;读忙
clr lcd_rs
nop
setb lcd_rw
nop
setb lcd_e
nop
mov lcdbusy,lcdio
clr lcd_e
anl lcdbusy,#80H
ret
lcd_sendchar: ;发送字符
lcd_sendchar_1:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0,lcd_sendchar_1
mov lcddata,#40h
lcall lcd_writecomm
mov lcddata,#00h
lcall lcd_writedata
mov lcddata,#41h
lcall lcd_writecomm
mov lcddata,#04h
lcall lcd_writedata
mov lcddata,#42h
lcall lcd_writecomm
mov lcddata,#1fh
lcall lcd_writedata
mov lcddata,#43h
lcall lcd_writecomm
mov lcddata,#15h
lcall lcd_writedata
mov lcddata,#44h
lcall lcd_writecomm
mov lcddata,#1fh
lcall lcd_writedata
mov lcddata,#45h
lcall lcd_writecomm
mov lcddata,#04h
lcall lcd_writedata
mov lcddata,#46h
lcall lcd_writecomm
mov lcddata,#04h
lcall lcd_writedata
mov lcddata,#47h
lcall lcd_writecomm
mov lcddata,#00h
lcall lcd_writedata
test0:
lcall lcd_readbusy
mov a,lcdbusy
cjne a,#0,test0
mov lcddata,#80h
lcall lcd_writecomm
lcall delay
test1:
lcall lcd_readbusy
mov a,lcdbusy
cjne A,#0, test1
mov lcddata,#00h
lcall lcd_writedata
lcall delay
ret
char1:
DB 00H,04H,1FH,15H,1FH,04H,04H,04H ;'中'
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -