今天是分享喜悦的日子,近十天的检查调试,每走一步都是相当的难,辛酸就不讲了。今天lcd显示终于完成。字符显示的那一刻真的是很开心。波形大的是51单片机psen引脚,波形小的是P2.7引脚。
一,74ls138同时只能片选1只引脚,而lcd rs,rw 需要两者引脚,所以用138作lcd rs rw控制不合适。
二,51单片机的EA引脚要接
三,lcd第三脚,就是调整对比度的要接,不接不显示。
四,P0口驱动lcd,不加上拉电阻,可以显示
五,12兆晶振51单片机 总线法驱动lcd1602,12864,时序没问题
下面是测试代码
SJMP MAIN
WRCMD: //写指令子程序
push ACC
lcall READ12864BF
POP ACC
MOV A,R3
MOV DPTR,#009000H //lcd写指令地址 9000H
MOVX @DPTR,A
RET
WRDAT: //写数据子程序
push ACC
lcall READ12864BF
POP ACC
MOV A,R4
MOV DPTR,#00B000H //lcd写写数据地址 B000H
MOVX @DPTR,A
RET
INIT: //lcd初始化程序
MOV R3,#0X38
LCALL WRCMD
MOV R3,#0X38
LCALL WRCMD
MOV R3,#0X0c
LCALL WRCMD
MOV R3,#0X06
LCALL WRCMD
MOV R3,#0X01
LCALL WRCMD
RET
MAIN: //主程序
LCALL INIT
D1:
MOV R3,#0x80
LCALL WRCMD
MOV R4,#0X35 //5
LCALL WRDAT
MOV R3,#0x81
LCALL WRCMD
MOV R4,#0X31 //1
LCALL WRDAT
MOV R3,#0x82
LCALL WRCMD
MOV R4,#0X48 //H
LCALL WRDAT
MOV R3,#0x83
LCALL WRCMD
MOV R4,#0X45 //E
LCALL WRDAT
MOV R3,#0x84
LCALL WRCMD
MOV R4,#0X49 //I
LCALL WRDAT
MOV R3,#0x85
LCALL WRCMD
MOV R4,#0X2E //.
LCALL WRDAT
MOV R3,#0x86
LCALL WRCMD
MOV R4,#0X43 //C
LCALL WRDAT
MOV R3,#0x87
LCALL WRCMD
MOV R4,#0X4F //O
LCALL WRDAT
MOV R3,#0x88
LCALL WRCMD
MOV R4,#0X4D //M
LCALL WRDAT
SJMP $
READ12864BF: //判断忙子程序
MOV DPTR,#0XD000 //lcd读指令地址 D000H
MOVX A,@DPTR
JB ACC.7,READ12864BF
ret
END
|