矿坛铁粉 发表于 2019-6-5 18:15:47

w6955 发表于 2019-6-5 18:48:15

xjw01老师的 LCR 电桥 程序中就有

w6955 发表于 2019-6-5 19:22:17

是你的驱动速度有问题,延时要够长,电源电压要稳

矿坛铁粉 发表于 2019-6-5 19:36:08

w6955 发表于 2019-6-5 19:39:34

矿坛铁粉 发表于 2019-6-5 19:36
7805稳压的,延迟也足够长了。

到XJW01老师帖子里,拿到后改一下就行了,好用极了。

矿坛铁粉 发表于 2019-6-5 20:04:31

washu 发表于 2019-6-5 20:05:28

矿坛铁粉 发表于 2019-6-5 19:36
7805稳压的,延迟也足够长了。

这里就涉及到一个问题,1602 或者说 HD44780 的 4 位驱动原理你摸清楚了么?

一开始,HD44780 主控可能处于三种状态之一
1、8 位总线模式
2、4 位总线模式,等待输入第一个 4 位数据(高 4 位)
3、4 位总线模式,等待输入第二个 4 位数据(低 4 位)

4 位总线模式下,低 4 位悬空(默认下拉)或接地,恒为 0000,高 4 位接到总线。

开始写入第一个 4 位指令 0x03(0011)
如果主控处于 8 位总线模式,则认为写入了 00110000,此指令为设置总线为 8 位总线模式指令,因此还是 8 位总线不变
如果主控处于 4 位总线模式且等待输入第一个 4 位数据(高 4 位),那么输入了高 4 位的 0011,变为第三种状态
如果主控处于 4 位总线模式且等待输入第二个 4 位数据(低 4 位),则执行一个未知的指令(因为高 4 位不可知),变为第二种状态

然后写入第二个 4 位指令0x03(0011)
第一状态还是不变
如果主控一开始处于状态 2,现在处于状态 3,那么写入的指令将主控至于 8 位总线模式
如果主控一开始处于状态 3,现在处于状态 2,那么写入了一个 0011 的高位指令

继续写入第三个 1 位指令 0x03(0011)
第一状态还是不变
如果主控一开始处于状态 2,在第二步中处于状态 3 并收到完整的指令变为 8 位模式,那么此时再收到高 4 位 0011 指令,则被认为收到完整的 00110000 指令,还是处于 8 位总线模式
如果主控一开始处于状态 3,在第二步中处于状态 2 并收到低 4 位指令 0011,则收到的总指令是 00110011,它还是将主控至于 8 位总线模式

至此,主控被恢复为 8 位总线模式,这是初始化 HD44780 至关重要的地方。完毕后,输入高位指令 0010,将主控至于 4 位总线模式,然后就可以按 4 位总线模式操作了。所以,总的顺序就是写入 0011,0011,0011,0010。由于写指令函数是按照 4 位总线模式编写的,总是一次写入两个 4 位(高位在前先写入,低位后写入),所以只要用写指令函数写入 0x33、0x32 就可以了。

最后写入 0x28,高位(0010)指令继续将主控至于 4 位总线模式不变,低位 1000 将主控至于 2 行、5*7 点的模式。

矿坛铁粉 发表于 2019-6-6 17:28:33

矿坛铁粉 发表于 2019-6-8 07:31:41

w6955 发表于 2019-6-8 08:15:56

矿坛铁粉 发表于 2019-6-8 07:31
你说的和楼上washu说的是一个事,我之前已经照做了。
我的电路是工频变压器整流后经220uf电容滤波,然后 ...

不能理解为什么用220uF电容给自己找大麻烦,用1000uF也不会差多少,那个效果差到天上去了。

w6955 发表于 2019-6-8 08:25:41

矿坛铁粉 发表于 2019-6-5 20:04
能给个链接吗

http://www.crystalradio.cn/forum.php?mod=viewthread&tid=229127&extra=page%3D1
在本坛大赛中

矿坛铁粉 发表于 2019-6-8 10:04:28

矿坛铁粉 发表于 2019-6-8 10:07:23

w6955 发表于 2019-6-8 10:27:09

矿坛铁粉 发表于 2019-6-8 10:07
这个说来话长,在调一个大系统的一部分,目前只接了单片机和1602,想着二者耗电都很小就暂时没焊主滤波电 ...

滤波电容的大小不但与电流有关,更多的与输入电压有关。一个芯片电流很小那是指平均值而言,其实电路中肯定有电容存在就是我们常说的分布电容,在电位跳变的过程中可能有很大的峰值电流,所以一定要有完善的滤波与考虑。完善电路肯定带来麻烦,不完善的电路会带来无穷无尽的麻烦,区别就在这里。

清风碧雪 发表于 2019-6-9 13:26:55

有简单的八位驱动不用,非要费劲心机去解决四位驱动。用四位驱动1602显示屏刷新速度慢了,数字跳动时拖尾严重。为何不用IIC驱动,更节省数据线。其实用逻辑分析仪或者数字示波器很容易找到问题所在。
页: [1] 2
查看完整版本: 求LCD1602 四位驱动稳定代码