郭天祥的那个单片机,下面的代码怎么无法实现液晶1602显示两行字符

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit rs=P3^5;
//sbit rw=P3^6;
sbit en=P3^4;

uchar table1[]=" wo shi xxx xxxx";
uchar table2[]=" COME ON !!!";

void delay_50us(uint x)
{
uchar i;
for(;x>0;x--)
for(i=5124;i>0;i--);
}

void write_com(uchar com)
{
//en=0;
rs=0;
//rw=0;
P0=com;
delay_50us(10);
en=1;
delay_50us(20);
en=0;
}

void write_data(uchar dat)
{
//en=0;
rs=1;
//rw=0; //
P0=dat;
delay_50us(10);
en=1;
delay_50us(10);
en=0;
}

void init(void)
{
en=0;
delay_50us(300);
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}

void main()
{
uchar j;
init();
write_com(0x80);
for(j=0;j<16;j++)
{
write_data(table1[j]);
delay_50us(10);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_data(table2[j]);
delay_50us(10);
}
while(1);
}

//现在是1602LCD没有任何的图像,只是背景的灯光亮了~~求帮帮~~~

天祥的1602程序丢了两句,就是变成注释了,所以导致没有显示应该出现的字。
需要加如下程序:
1、在前面声明 sbit rw = P3^6;
2、在初始化子函数init()的第一句为 rw = 0;
加上这两句,让读写控制端设置为写模式——低电平(书151页流程2提到的),再下载到单片机中看一下,就出现你需要的结果了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-17

参考一下这个仿真实例,试试。

本回答被提问者采纳
第2个回答  2014-04-17
原来的可以亮吗?是不是1602的滑变没调追问

原来也不可以~~~~滑变电阻我调了,就是不行~~~

追答

你的1602正常的话应该会出现上面一行是全是有暗影的,下面一行什么都没有,这样才行。。。

追问

我程序没有问题,我仿真的时候不小心弄错了HEX文件~~不过谢谢你回答~~~

相似回答