|
請(qǐng)教各位大俠,在驅(qū)動(dòng)12864zw液晶時(shí)出現(xiàn)如下問題,不得其解,本著學(xué)習(xí)到底的精神請(qǐng)教大家,一探究竟。謝謝了。。。。!
1、在測試液晶忙閑時(shí)程序如下
void read_BF()
{
bit aa;
uchar i;
RS=0;
RW=1;
E=1;
delayus(1); //延時(shí)40微秒
aa=(bit)(P0&0x80);
E=0;
while(aa);
}
問題:當(dāng)不加延時(shí)不能檢測液晶忙閑,加延時(shí)且延時(shí)遠(yuǎn)遠(yuǎn)大于技術(shù)說明要求的時(shí)間才可正常檢測忙閑。但網(wǎng)上好多程序都沒加延時(shí),也可正常運(yùn)行,液晶的技術(shù)說明要求延時(shí)都是納秒級(jí)的,但實(shí)際要延時(shí)幾十微秒才行,不知為啥,請(qǐng)高手解惑。
2、把測試液晶忙閑時(shí)程序修改如下
void read_BF()
{
bit aa;
uchar i;
RS=0;
RW=1;
E=1;
delayus(1); //延時(shí)40微秒
aa=P0^7;
E=0;
while(aa);
}
問題:如果修改成上面,則不能正常運(yùn)行,停止在while(aa)處,請(qǐng)解惑。
3、液晶初始化如下:
void lcd_init()
{
LCD_PSB = 1; //并口方式
lcd_wcmd(0x34); //擴(kuò)充指令操作
lcd_wcmd(0x30); //基本指令操作
lcd_wcmd(0x0f); //顯示開,關(guān)光標(biāo)
lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容
}
問題:按照以上程序可正常運(yùn)行,但把基本指令操作放到擴(kuò)充指令操作之前,程序就不能正常運(yùn)行,顯示出現(xiàn)錯(cuò)誤請(qǐng)高手解惑。
|
|