标题: 请教12864zw液晶显示屏单片机驱动问题! [打印本页]

作者: banqiao    时间: 2018-4-1 11:44
标题: 请教12864zw液晶显示屏单片机驱动问题!
请教各位大侠,在驱动12864zw液晶时出现如下问题,不得其解,本着学习到底的精神请教大家,一探究竟。谢谢了!!!!!!


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);
}



问题:当不加延时不能检测液晶忙闲,加延时且延时远远大于技术说明要求的时间才可正常检测忙闲。但网上好多程序都没加延时,也可正常运行,液晶的技术说明要求延时都是纳秒级的,但实际要延时几十微秒才行,不知为啥,请高手解惑。



2、把测试液晶忙闲时程序修改如下


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




问题:如果修改成上面,则不能正常运行,停止在while(aa)处,请解惑。






3、液晶初始化如下:


   void lcd_init()
{
   LCD_PSB = 1;          //并口方式   
   lcd_wcmd(0x34);      //扩充指令操作
    lcd_wcmd(0x30);      //基本指令操作
    lcd_wcmd(0x0f);      //显示开,关光标
    lcd_wcmd(0x01);      //清除LCD的显示内容
}



问题:按照以上程序可正常运行,但把基本指令操作放到扩充指令操作之前,程序就不能正常运行,显示出现错误请高手解惑。

作者: bailoao    时间: 2018-4-1 14:37
把while上面到e=1用大括号靠起来再试试。建议再复习下c语言,这是基础。
作者: yzwzfyz    时间: 2018-4-1 15:29
LCD忙不忙与你的程序无关,它有自已“忙”表求法则。所以延时测试它,与不延时测试它都可以。
你要认真搞清楚LCD的驱动逻辑。并考虑你的程序逻辑是否合理。
如果不考虑LCD忙不忙,强行对它作业会发生什么呢?手册上是如何说的呢?你又是如何评估的呢?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1