|
程序目的是在 lcd1602 第一行最后一格顯示字符 “A”
硬件p0口作為8位數(shù)據(jù)線
我調(diào)試了好幾天了,要么滿屏幕跑A,要么亂碼,要么就不顯示,
程序如下,請老師指導(dǎo)一下
EN BIT P2.7 ; 程序主要目的是在lcd1602 在第一行最后一格顯示A
RW BIT P2.5
RS BIT P2.6
SJMP MAIN
WRCMD: ;寫指令程序,用R3寄存器中轉(zhuǎn)指令值
CLR EN
CLR RS
CLR RW
MOV P0,R3 ;將R3的值賦給P0口
lcall DE5MS
SETB EN ;使能
NOP
NOP
NOP
CLR EN
LCALL DE5MS
RET
WRDAT: ;寫數(shù)據(jù)程序,用R4寄存器中轉(zhuǎn)數(shù)據(jù)值
CLR EN
SETB RS
CLR RW
MOV P0,R4 ;將R4的值賦給P0口
lcall DE5MS
SETB EN ;使能
NOP
NOP
NOP
CLR EN
LCALL DE5MS
RET
INIT:
MOV R3,#0X38 ;初始化程序
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X38
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X08
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X01
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X06
LCALL WRCMD
LCALL DE5MS
MOV R3,#0X0C
LCALL WRCMD
LCALL DE5MS
RET
MAIN: ;主程序開始的地方
LCALL INIT ;調(diào)用初始化程序
D1:
LCALL DE5MS
MOV r3,#0X80 ;將lcd1602第一行07位地址0x80用r3寄存器轉(zhuǎn)給p0口
LCALL WRCMD
LCALL DE5MS
MOV r4,#0X41 ;將lcd1602第一行07位地址,要顯示數(shù)據(jù)用r4寄存器轉(zhuǎn)給p0口
LCALL WRDAT
LCALL DE5MS
SJMP d1
DE5MS: MOV 51H,#20 ;延時(shí)程序
D2: MOV 52H,#123
DJNZ 52H,$
DJNZ 51H,D2
RET
END
|
|