目标:为Raspberry Pi加上一个简易的液晶显示屏,可以用来显示Raspberry Pi的一些状态信息,也可以显示一个菜单,用红外线遥控器去操作菜单指挥Raspberry Pi执行相关的操作。
警告:任何时候,电流的速度都比你的反应要快,所以,在实验过程中,不正确的接线、不正确的程序、意外的短路、过载等都可能在瞬间烧掉你的Raspberry Pi或其它外围的硬件。Raspberry Pi的GPIO接口全都是没有保护电路的,一旦短路或输入过高电压,主芯片会马上被烧掉,基本上没有维修的可能性。
需要的硬件:
- 一块面包板和若干连接线,用于组装电路。连接RPi与面板的线是母头转公头的,面包板上的连接线是两个公头的
- 一块LCD1602液晶显示屏。如果你不会焊接,那就买一块预先焊好针脚的
- 10K电位器一个
面包板的使用方法:
可以把元件或接线直接插在面包板上连通电路,无需焊接。面包板上每一行的一组五个插孔之间是相互连通的,同一行上如果有两组五个插孔,则两组之间是断开的,适合插接集成电路或开关。面包板上行与行之间都是断开的。面包板两侧的如果有供电线插孔,则同一条供电线上的所有插孔都是连通的。
连接液晶屏:
LCD1602液晶屏提供了16列x2行的ASCII字符显示能力,工作电压5V,提供4位数据与8位数据两种工作模式,Raspberry Pi的GPIO口数量很有限,所以我们使用4位数据模式。
LCD1602液晶屏模块提供了16个引脚,我们只需接其中的12个即可:
1. VSS,接地,RPi PIN 6
2. VDD,接5V电源,PRi PIN 2
3. VO,液晶对比度调节,接电位器中间的引脚
4. RS,寄存器选择,接GPIO 14,RPi PIN 8
5. RW,读写选择,接地,表示写模式,PRi PIN 6
6. EN,使能信号,接GPIO 15,RPi PIN 10
7. D0,数据位0,4位工作模式下不用,不接
8. D1,数据位1,4位工作模式下不用,不接
9. D2,数据位2,4位工作模式下不用,不接
10. D3,数据位3,4位工作模式下不用,不接
11. D4,数据位4,接GPIO 17,RPi PIN 11
12. D5,数据位5,接GPIO 18,RPi PIN 12
13. D6,数据位6,接GPIO 27,RPi PIN 13
14. D7,数据位7,接GPIO 22,RPi PIN 15
15. A,液晶屏背光+,接5V,RPi PIN 2
16. K,液晶屏背光-,接地,RPi PIN 6
注意:
- 请注意GIPO引脚编号与Raspberry Pi上P1扩展口的PIN编号的区别,别搞混了。
- 如果你的液晶屏没有背光,则15,16脚可能不会引出,也就不用接线。
- LCD1602工作电压是5V,而RPi的GPIO口工作电压是3.3V,所以RW脚请确保接地进入写模式,否则尝试从LCD1602读取数据可能会烧掉RPi。
- VO脚接的是电位器,电位器的另外两个脚分别接5V和地。通过调节这个电位器,可以调节液晶屏的对比度。
- Raspberry Pi有Rev 1和Rev 2两个版本,它们对于PIN 13的定义是不同的。市面上现在大部分都是Rev 2版本,PIN 13对应GPIO 27。如果你的RPi是老的Rev 1版本,PIN 13对应是GPIO 21,你需要调整程序中的参数,把27改为21。
获取程序:
git clone https://github.com/lifanxi/rpimenu.git
测试液晶屏:
Raspberry Pi通电后,正常情况下液晶屏会初始化。上面一行显示黑色方块,下面一行空白。如果屏幕一片空白或一片黑,可以尝试调节一下电位器,看看对比度是否合适。
直接以root权限运行程序包中的Adafruit_CharLCD.py,LCD上会显示两行字符:LCD 1602 Test, 123456789ABCDEF,这样就说明液晶屏已经工作正常了。
如果你想让液晶屏显示些别的东西,可以参考lcdmenu.py代码和Adafruit_CharLCD.py中所暴露的接口。