1602lcd显示问题
请大侠们看一下我的程序,怎么不能显示。
#include <reg52.h>
#include <intrins.h>
#define data_IO P0
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
sbit flag=P0^7;
unsigned char d[10];
unsigned char busy(int);
void w_dat(unsigned char);
void w_com(unsigned char);
void lcd_init(void);
void disp(unsigned char);
void delay(unsigned int);
void delay(unsigned int N)
{
int i;
for(i=0;i <N;i++);
}
void busy ()
{
while(1)
{
data_IO=0xff;
rs=0;
rs=1;
e=1;
if(!flag)break;
e=0;
}
}
void w_dat(unsigned char dat)
{
busy();
data_IO=dat;
rs=1;
rw=0;
e=1;
e=0;
return;
}
void w_com(unsigned char com)
{
busy();
data_IO=com;
rs=0;
rw=0;
e=1;
e=0;
}
void lcd_init(void)
{
unsigned char i;
rs=0;
rw=0;
e=0;
for(i=0;i <2;i++)
{
w_com(0x30);
delay(100);
}
w_com(0x38);
w_com(0x0f);
w_com(0x18);
w_com(0x06);
w_com(0x01);
w_com(0x80);
}
void disp(unsigned char data_num)
{
unsigned char d[10];
unsigned char j;
w_com(1);
w_com(0x80);
for(j=0;j <data_num;j++)
w_dat(d[j]);
w_com(0xc0);
w_dat('x');
w_dat('z');
}
main()
{
lcd_init();
d[0]='d';
d[0]='p';
d[0]='j';
disp(3);
}
谢谢
发表时间:2008年3月10日20:39:56