void delay(uint x)
{
uint i;
uchar j;
for(i=x;i>0;i--)
for(j=2;j>0;j--)
{;}
}
uint lcd_read_com() //读状态
{
uint lcd_sta;
lcdrs=0;
lcdrw=1;
lcde=1;
delay(1);
lcd_sta=lcd_db;
lcde=0;
return lcd_sta;
}
void lcd_write_data(uint lcddata) //写数据
{ while(lcd_read_com()&0x80);
lcdrs=1;
lcdrw=0;
lcde=1;
lcd_db=lcddata;
delay(10);
lcde=0;
}
void lcd_write_com(uint com) //写指令
{
while(lcd_read_com()&0x80);
lcdrs=0;
lcdrw=0;
lcde=1;
lcd_db=com;
delay(1); //delay不可少
lcde=0;
}
uint lcd_read_data() //读数据
{
uint lcd_data;
lcd_db=0xff;
lcde=0;
delay(3);
lcdrs=1;
lcdrw=1;
lcde=1;
lcd_data=lcd_db;
lcde=0;
return lcd_data;
}
最终的代码,测试没有问题。 |