標(biāo)題: 請教12864zw液晶顯示屏單片機(jī)驅(qū)動問題! [打印本頁]

作者: banqiao    時間: 2018-4-1 11:44
標(biāo)題: 請教12864zw液晶顯示屏單片機(jī)驅(qū)動問題!
請教各位大俠,在驅(qū)動12864zw液晶時出現(xiàn)如下問題,不得其解,本著學(xué)習(xí)到底的精神請教大家,一探究竟。謝謝了!。。。。


1、在測試液晶忙閑時程序如下


void read_BF()
{
        bit aa;
        uchar i;                 
        RS=0;               
        RW=1;                        
        E=1;                        
        delayus(1);                   //延時40微秒
        aa=(bit)(P0&0x80);         
        E=0;                          
        while(aa);
}



問題:當(dāng)不加延時不能檢測液晶忙閑,加延時且延時遠(yuǎn)遠(yuǎn)大于技術(shù)說明要求的時間才可正常檢測忙閑。但網(wǎng)上好多程序都沒加延時,也可正常運(yùn)行,液晶的技術(shù)說明要求延時都是納秒級的,但實(shí)際要延時幾十微秒才行,不知為啥,請高手解惑。



2、把測試液晶忙閑時程序修改如下


void read_BF()
{
        bit aa;
        uchar i;                 
        RS=0;               
        RW=1;                        
        E=1;                        
        delayus(1);                   //延時40微秒
        aa=P0^7;         
        E=0;                          
        while(aa);
}




問題:如果修改成上面,則不能正常運(yùn)行,停止在while(aa)處,請解惑。






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)錯誤請高手解惑。

作者: bailoao    時間: 2018-4-1 14:37
把while上面到e=1用大括號靠起來再試試。建議再復(fù)習(xí)下c語言,這是基礎(chǔ)。
作者: yzwzfyz    時間: 2018-4-1 15:29
LCD忙不忙與你的程序無關(guān),它有自已“忙”表求法則。所以延時測試它,與不延時測試它都可以。
你要認(rèn)真搞清楚LCD的驅(qū)動邏輯。并考慮你的程序邏輯是否合理。
如果不考慮LCD忙不忙,強(qiáng)行對它作業(yè)會發(fā)生什么呢?手冊上是如何說的呢?你又是如何評估的呢?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1