本帖最后由 hello、C 于 2020-6-15 23:01 编辑
使用MM32 eMiniBoard开发板,驱动LCD1602A液晶屏
在两年前,买了套开发板的同时,买了个LCD1602A的液晶屏,一直没有用它,让它在柜子里吃了两年多的灰。前几天想起来还有这么一个东西,于是找到了这个液晶屏,就拿出来玩玩了,说实话看上去还是蛮新的,并没有多少灰尘。
想着这些,就在21ic下载并查阅了LCD1602A的参考手册,并查看了MM32 eMiniBoard开发板的IO口使用情况后,刚开始使用GPIOB Port接口来对接LCD1602的IO口,调试结果并不理想,没有调试成功,液晶屏没有按照预想的那样进行显示,而且出现了误码。一度让我很是疑惑,相关问题在后面进行说明。
进行了如下配置:
1. 使用GPIOA Port Pin0 - Pin7 对接 LCD1602A DB0 - DB7.
2. 使用GPIOC Port Pin13 Pin14 Pin15 分别对接 LCD1602A R/W RS EN控制端口。
3. 使用MM32 eMiniBoard开发板的VCC GND供电端口 分别对接 LCD1602A的VDD、VSS供电端口)及 (A、K 背光源端口)。
4. 复用GPIOA Port Pin1 即 A1端口(电位器电压输出口),对接LCD1602A V0输入端口,用来调节液晶屏显示对比度,以满足不同的需求。
5. 在进行写操作时,配置GPIOA Port Pin0 - Pin7为推挽输出端口;在进行读操作时,配置GPIO Port Pin0 - Pin7为悬空输入端口。
6. 通过通信控制LCD1602A的I/D、S、D、C、B、S/C、R/L、DL、N、F控制位,控制显示模式、移位操作及数据通信方式。 遇到的一些问题:
1. 在写操作及读操作时,仅配置GPIOA Port Pin0 - Pin7为输入上拉模式,可能会产生一些问题,特别是有外围电路影响的时候。
2. 在控制EN控制端口时,延时不够(时序不满足要求),可能会发生意想不到的情况。
3. 尽量在上电后,先配置好LCD1602A的部分参数。 部分效果图示如下:
2020.06.15 更新
参考工程代码: |