#include
#define uint unsigned int
#define uchar unsigned char
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P1^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
}
void main()
{
init();
while(1);
}
以上是编的一个液晶qc16202a的显示的程序,不过我通过测试,发现,在
void init()
{
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
}
中,仅到write_com(0x38);能正确运行,而
write_com(0x0f);
write_com(0x06);
没运行,
不知道是怎么回事,请大家指教一下小弟,小弟,在此先谢过了!!!
抱歉,那个液晶的型号是qc1602a,打错啦,实在对不住啦!
第一行黑块还有没有,如果有复位不成功,你最好再查查硬件.
第一条指令要复位的吧,而且要延时后复位.
如果仿真的话,我仅会计算时间,其他的,仿真还不知怎么用。愿您指教一下。
您说查硬件部分,这个请您指教一下,我认为是硬件可能出问题啦,不过,我不知检查哪里?
还有,就是您说的那个延时问题,是复位延时,这个也不太懂,能具体指教一下吗?小弟,提前谢谢啦!
液晶需要上电稳定后发复位指令,所以延时一段时间再复位,可靠性强些.
复位成功后黑块就没了,这步做不到基本是硬件问题,再查查线IO什么的.
LCD1602上有一个脚接的是滑动变阻器,调节对比度的,你调调看
哦哦,原来复位延时还有这功能。小弟受教啦。好,我试试,谢谢您!!!
哦哦,这个,我明白您的意思。是不是调那个电位器。
但是我觉得,只要能看清图案,那个对比度,应该没什么问题,那次我调了一下,感觉作用不大。
您怎么看?
直接上网找个现成的程序,一切OK了再回头查看自己的错误
可以找一个好使的,或者用proteus仿真一下。1602没那么难,应该是时序或者硬件上面的故障。
专业电子方案/zigbee方案设计,毕业设计。QQ:1397905781
那个液晶已经正确显示啦,不过,用的别人的单片机,我的板子具体的 错误还没查出来,估计就像您说的那样,是硬件的问题。
回头我好好查查,谢谢啦!!!
谢谢各位的热心帮助。小弟非常感谢!!!
谢谢!!!