找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2151|回复: 2
打印 上一主题 下一主题
收起左侧

请教12864zw液晶显示屏单片机驱动问题!

[复制链接]
跳转到指定楼层
楼主
ID:284522 发表于 2018-4-1 11:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位大侠,在驱动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的显示内容
}



问题:按照以上程序可正常运行,但把基本指令操作放到扩充指令操作之前,程序就不能正常运行,显示出现错误请高手解惑。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:284873 发表于 2018-4-1 14:37 来自手机 | 只看该作者
把while上面到e=1用大括号靠起来再试试。建议再复习下c语言,这是基础。
回复

使用道具 举报

板凳
ID:123289 发表于 2018-4-1 15:29 | 只看该作者
LCD忙不忙与你的程序无关,它有自已“忙”表求法则。所以延时测试它,与不延时测试它都可以。
你要认真搞清楚LCD的驱动逻辑。并考虑你的程序逻辑是否合理。
如果不考虑LCD忙不忙,强行对它作业会发生什么呢?手册上是如何说的呢?你又是如何评估的呢?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表