搜索
bottom↓
回复: 12

求助:四线驱动LCD1602A为什么需要两次复位才能正常显示?

[复制链接]

出0入0汤圆

发表于 2017-10-14 21:55:21 | 显示全部楼层 |阅读模式
本帖最后由 无心星矢 于 2017-10-14 21:56 编辑

采用四线驱动1602,程序下载后需要再按一下复位按钮才能正常显示。1602先上电,单片机再在上电也可正常显示,1602不断电,单片机要2次复位后才正常显示。编辑原因:补充标题漏字。

出0入0汤圆

发表于 2017-10-14 22:49:58 来自手机 | 显示全部楼层
这个问题碰到十几年了,都没有解决掉,比你这个问题还麻烦一些,只要第一次上电是好的后面一直是好的,第一次上电不行的话,单片机复位也没用,必须重新上电,1602四位总线,同样的问题在7920屏串行总线的时候也出现

出0入0汤圆

发表于 2017-10-14 22:58:22 来自手机 | 显示全部楼层
这个问题跟延时什么的没关系,试过很多遍了,给你提供一个方案试一下:把初始化为四位总线的那条语句,调用两次。用这招曾经解决过后来不好使了。我的理解就是先有鸡还有先有蛋的问题,1602上电默认是8位总线,我们在8位总线下面把它初始化为4位总线……

出0入0汤圆

 楼主| 发表于 2017-10-15 09:41:59 来自手机 | 显示全部楼层
xinfa190 发表于 2017-10-14 22:58
这个问题跟延时什么的没关系,试过很多遍了,给你提供一个方案试一下:把初始化为四位总线的那条语句,调用 ...

谢谢,昨晚试了一下,没效果。

出0入0汤圆

发表于 2017-10-15 16:01:27 | 显示全部楼层
接一片 1元成本的mcu做中转,,把1602做成  串口LCM  

出0入0汤圆

 楼主| 发表于 2017-10-17 21:17:25 | 显示全部楼层
问题已经解决。
现在正常的初始化函数如下 :
void LCD1602A_Init(void)
{
               
                LCD1602A_WriteCommand(0x02);
                LCD1602A_WriteCommand(0x28);
                LCD1602A_WriteCommand(0x0c);
                LCD1602A_WriteCommand(0x06);
                LCD1602A_WriteCommand(0x01);
}
有问题的如下:
void LCD1602A_Init(void)
{
               
                LCD1602A_WriteCommand(0x02);
                LCD1602A_WriteCommand(0x02);

                LCD1602A_WriteCommand(0x28);
                LCD1602A_WriteCommand(0x0c);
                LCD1602A_WriteCommand(0x06);
                LCD1602A_WriteCommand(0x01);
}
红色是不对的地方。

出0入0汤圆

发表于 2017-10-18 20:16:51 | 显示全部楼层
无心星矢 发表于 2017-10-17 21:17
问题已经解决。
现在正常的初始化函数如下 :
void LCD1602A_Init(void)

这两个代码不同的地方就是下面那个写0x02这个命令执行了两遍?

出0入0汤圆

 楼主| 发表于 2017-10-18 20:42:54 | 显示全部楼层
xinfa190 发表于 2017-10-18 20:16
这两个代码不同的地方就是下面那个写0x02这个命令执行了两遍?

对,我之前还加了好多的延时,后来逐条的删,最后确认是它影响的。还有一点就在高四位发完后也要延时,没有延时就发低四位也是乱码。

出0入0汤圆

发表于 2018-1-28 00:33:35 | 显示全部楼层
我试了,不行

出0入0汤圆

 楼主| 发表于 2018-2-20 20:06:52 | 显示全部楼层

正常的初始化函数如下 :
void LCD1602A_Init(void)
{
               
                LCD1602A_WriteCommand(0x02);
                LCD1602A_WriteCommand(0x28);
                LCD1602A_WriteCommand(0x0c);
                LCD1602A_WriteCommand(0x06);
                LCD1602A_WriteCommand(0x01);
}
上按上面的初始化的吗?
发一下你的看一下 。

出0入0汤圆

发表于 2018-2-20 20:48:04 | 显示全部楼层
LCD上电时是 8Bit 驱动,要改为 4Bit,必需100%跟足技术文档所示方法。
其中 BF = LCD忙碌旗号


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-2-21 02:20:39 | 显示全部楼层
alias 发表于 2018-2-20 20:48
LCD上电时是 8Bit 驱动,要改为 4Bit,必需100%跟足技术文档所示方法。
其中 BF = LCD忙碌旗号

现在是用这个的,可以用,但是出现乱码后,必须要断电,而且要完全放完电才行,软复位没用

出0入0汤圆

发表于 2018-2-21 08:16:07 | 显示全部楼层
有否留意到在复位过程中,是只发送4Bit的,在LCD进入4Bit设定后,才发送两个4Bit。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 10:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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