液晶啥也不显示
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P2^5;
#define uchar unsigned char
#define io P0
//#define w_data(x) rs=1;rw=0;e=0;io=x;e=1;e=0 //写数据
//#define w_command(x) rs=0;rw=0;e=0;io=x;e=1;e=0 //写命令字
bit bit_busy;
uchar table1[]="yang ping"; //第一行要显示的字符组
uchar table2[]="is just my lover"; //第二行要显示的字符组
bit busy() //提取忙信号位
{
bit Bit;
rs=0;
rw=1;
e=0;
e=1;
if (io&0x80)
Bit=1;
else
Bit=0;
return Bit;
}
void w_data(uchar x)
{
rs=1;rw=0;e=0;io=x;e=1;e=0;
}
void w_command(uchar x)
{
rs=0;rw=0;e=0;io=x;e=1;e=0;
}
void delayms(unsigned int dly)
{
unsigned int x,y;
for(x=dly;x>0;x--)
for(y=124;y>0;y--);
}
/*void delayms(uchar n)
{
uchar a,j;
while(n--)
{
for(a=0;a<6;a++)
for(j=0;j<100;j++);
}
} */
void init() //初始化
{
delayms(15);
w_command(0x38);
delayms(5);
w_command(0x38);
delayms(5);
w_command(0x38);
// while(bit_busy=busy());
w_command(0x38);
// while(bit_busy=busy());
w_command(0x08);
// while(bit_busy=busy());
w_command(0x01);
// while(bit_busy=busy());
w_command(0x06);
// while(bit_busy=busy());
w_command(0x0C);
}
void main()
{
uchar i;
init();
// while(bit_busy=busy());
w_command(0x80); //写第一行首地址
for(i=0;i<16;i++) //写入数值
{
// while(bit_busy=busy());
w_data(table1[i]);
}
// while(bit_busy=busy());
w_command(0x80+0x40); //写第二行首地址
for(i=0;i<16;i++) //写入数值
{
// while(busy());
w_data(table2[i]);
}
while(1);
}
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P2^5;
#define uchar unsigned char
#define io P0
//#define w_data(x) rs=1;rw=0;e=0;io=x;e=1;e=0 //写数据
//#define w_command(x) rs=0;rw=0;e=0;io=x;e=1;e=0 //写命令字
bit bit_busy;
uchar table1[]="yang ping"; //第一行要显示的字符组
uchar table2[]="is just my lover"; //第二行要显示的字符组
bit busy() //提取忙信号位
{
bit Bit;
rs=0;
rw=1;
e=0;
e=1;
if (io&0x80)
Bit=1;
else
Bit=0;
return Bit;
}
void w_data(uchar x)
{
rs=1;rw=0;e=0;io=x;e=1;e=0;
}
void w_command(uchar x)
{
rs=0;rw=0;e=0;io=x;e=1;e=0;
}
void delayms(unsigned int dly)
{
unsigned int x,y;
for(x=dly;x>0;x--)
for(y=124;y>0;y--);
}
/*void delayms(uchar n)
{
uchar a,j;
while(n--)
{
for(a=0;a<6;a++)
for(j=0;j<100;j++);
}
} */
void init() //初始化
{
delayms(15);
w_command(0x38);
delayms(5);
w_command(0x38);
delayms(5);
w_command(0x38);
// while(bit_busy=busy());
w_command(0x38);
// while(bit_busy=busy());
w_command(0x08);
// while(bit_busy=busy());
w_command(0x01);
// while(bit_busy=busy());
w_command(0x06);
// while(bit_busy=busy());
w_command(0x0C);
}
void main()
{
uchar i;
init();
// while(bit_busy=busy());
w_command(0x80); //写第一行首地址
for(i=0;i<16;i++) //写入数值
{
// while(bit_busy=busy());
w_data(table1[i]);
}
// while(bit_busy=busy());
w_command(0x80+0x40); //写第二行首地址
for(i=0;i<16;i++) //写入数值
{
// while(busy());
w_data(table2[i]);
}
while(1);
}
将读忙这一块取消试试。现在液晶屏处理速度頂很快,不需要读忙。
调一下背光
我下载其他的人的程序就能看见了,这个不是背光的问题吧?
上面的程序不是已经去掉了读忙了吗?还是不行啊
写命令跟写数据函数那里没延时吧!io=x后面加个延时看看。