keil有仿真的,自己看看分析分析程序是哪里面出错了,lcd初始化不对,后面的程序根本就不用看,不可能成功

lcd1602只有背光亮_lcd1602背光和不背光lcd1602只有背光亮_lcd1602背光和不背光


lcd1602只有背光亮_lcd1602背光和不背光


调对比电压的电阻接好了没,接好了调节如果还是什么反应都没有,那就是你端口接错了,因为即使程序错了调节电阻还是会有反应的,刚做了一块这样的板子,有什么问题问

亮代表背光灯亮了,没有显示,可能你程序并没有把LCD初始化

给你一个我实际的初始化程序,其中前后和命令之间的延时是我实际调试出来的,若延时时间短了也会出现你的现象:

voidcmd1602(unsignedcharddata)

{ctl1602_out=0//rs/rw/en=0;

//禁止1602(e=0),选择1602为命令方式(rs=0),将读写口改为写状态(rw=0)

delay_us(50);//等待busy位变低

dat1602_out=ddata;//送出数据到数据总线

set1602_en;//芯片使能位置1

delay_us(5);//保持一定宽度

set1602_di;//芯片使能位清0,命令被1602读到

delay_us(1);//保持一定宽度

}voidinit_disp(void)

{dat1602_sel=0;//数据总线口定义为i/o方式

dat1602_dir=0xff;//口定义为输出方式

ctl1602_sel&=~(sel+rw+enb);//各控制位定义为i/o方式

ctl1602_dir|=(sel+rw+enb);//口定义为输出方式

//以上4行为430的i/o口定义作,具体在头文件中定义

delay_ms(500);//延时500毫秒

cmd1602(0x38);/twolines,5x7fontstyle,nocursors,noblink/

delay_ms(10);

cmd1602(0x38);

delay_ms(10);

cmd1602(0x38);

delay_ms(10);

cmd1602(0x38);

delay_ms(10);

cmd1602(0x08);//closedisplay

delay_ms(10);

cmd1602(0x01);//cleardisplay

delay_ms(10);

cmd1602(0x06);//setacrightmove

delay_ms(10);

cmd1602(0x0c);//opendisplay

delay_ms(200);

}

LCD1602插上没有行方格,全亮没有显示字符

控制指令和数据没有写入。

LCD1602中有2个引脚是背光,不给电就是没背光,不会影响字符显示。

一般来说这个就是初始化没按照规格书来做.仿真不需要太准确,但是实物就要按照规格书来做了。