標(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