很多时候我们需要显示简单的字符,1602LCD就是很好的选择。通常Arduino 使用1602 LCD需要连接很多线路,需要占用很多个IO口,而是用I2C版本的1602即可省去这样的繁杂。I2C版本只需要VCC(3.3和5都可以,亮度上有些差别),GND,还有SDA(连接A4)和 SCL(连接A5)。
下面就是一个使用I2C在1602上显示的例子:
对应的程序和库在这里
在使用的时候,你可以遇到如下问题:
1.编译不通过。请检查编译器的版本,建议使用 1.0 以上的,因为这是未来的方向。如果还有问题,请检测引用库的方式。如果你将 LiquidCrystal_I2C 放在了Library下面,可以用 #include 这样的方式来引用,或者像我代码中,直接将LiquidCrystal_I2C.cpp 和 LiquidCrystal_I2C.h 放在源文件同样的目录下,你就可以使用 #include "LiquidCrystal_I2C.h"。此外,如果出现编译错误提示在 LiquidCrystal_I2C lcd(0x27,16,2); 这行,就是没有正确引用到LiquidCrystal_I2C.h这个头文件导致的。你可以按照上述检查一下,然后重启编译器试试。
2.烧写之后无显示,首先请检查地址是否正确(地址不正确的情况下最上面可能有方块,下面看起来是空白行),最直接的方法是询问卖家,此外还可以像我之前的一篇文章提到的烧入一个软件来判定地址。其次要检查背后的电位器是否正常,避免实际上已经有数值了只是对比度不正确你看不到而已。如果仍然不行,就需要重新寻找库。这个差别有可能是如下硬件顺序导致的。
可以看到 P0- P3分别对应 RS/RW/CS/P ,另外,P4-P7对应DB4-7。还有一种计是颠倒过来 P0-P3对应DB4-7的。如果存在差别,库文件初始化方式传输Command方式都需要修改的。剩下的就是检查Pin是否有电平输出,如果没有那就是I2C模块坏掉了。
当然,如果你在上面花费了超过8个小时仍然无法解决,我的建议是赶快更换一篇,这个东西不需要研究那么久,你的1602有可能压根就是坏掉的(非常不幸的是我就是因为这个问题花费了无数个夜晚.....)
我最后购买到OK的1602是在 http://arduinochina.taobao.com/?spm=a1z10.1.w1002-2071319798.3.RT0Fkv (Arduino CHINA)