| 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;
 }
 最终的代码,测试没有问题。
 |