本帖最后由 wjzc2006 于 2014-7-27 01:23 编辑
由于我基本上都是通过SSH来联接树莓派,因此很少将它接在显示器上。但有时又想让它显示一些简单的信息,比如IP地址、传感器的一些信息等,因此入手了一块LCD1602液晶显示屏,希望通过它来显示这些信息。 这时,出现了两个问题:一是这块显示屏有16个引脚,如果将它们全部接在树莓派的GPIO引脚上,那其他的传感器就没法用了;二是驱动的问题。 在Linux下,关于驱动有一个通用的解决方案:lcdproc,它可以驱动包括HD44780类型的液晶显示屏。这样就解决了一个问题,更加让人激动的是,lcdproc还提供了一个python库,这样你就可以在你的python程序中控制显示屏的显示了。 查看lcdproc的文档,发现它也支持通过I2C总线来使用HD44780液晶显示器,其推荐的方案是用PCF8574的I/O扩展器,而树莓派上恰好有I2C接口。这样又解决了一个问题。 这样两个问题都解决了,我买了一块PCF8574AP后,就动手安装了。 整个过程最麻烦的是接线,下面先上PCF8574AP的引脚图:
它一共有16只引脚,请注意它上方的半月形缺口,缺口的左面是1号脚,右面是16号脚。而LCD1602也有16只引脚,这里就不上引脚图了,一般在显示屏上会标注的。 我们先从PCF8574AP的引脚接起。
PCF8574AP的第1、2、3号脚(即A0、A1、A2)是选择地址的,将它们接在高电平上将会获得高位地址,接在低电平上将会获得低位地址,我将这三个脚都接在3.3V电源上了(即树莓派GPIO的第1号引脚)。
PCF8574AP的第4号脚(P0)与显示屏的第11号脚连接。 PCF8574AP的第5号脚(P1)与显示屏的第12号脚连接。 PCF8574AP的第6号脚(P2)与显示屏的第13号脚连接。 PCF8574AP的第7号脚(P3)与显示屏的第14号脚连接。
PCF8574AP的第8号脚(VSS)接地,与树莓派GPIO的第6号脚连接。
PCF8574AP的第9号脚(P4)与显示屏的第4号脚连接。 PCF8574AP的第10号脚(P5)与显示屏的第5号脚连接。 PCF8574AP的第11号脚(P6)与显示屏的第6号脚连接。
PCF8574AP的第12、13号脚空置,不用做连接。
PCF8574AP的第14号脚(SCL)与树莓派GPIO的第5号脚连接。 PCF8574AP的第15号脚(SDA)与树莓派GPIO的第3号脚连接。 PCF8574AP的第16号脚(VDD)接3.3V电源,即与树莓派GPIO的第1号脚连接。
这样PCF8574AP的引脚就连接完了。而显示屏还有几个脚要连,分别如下:
显示屏1号脚接地,即与树莓派GPIO的第6号脚连接。 显示屏2号脚接5V电源,即与树莓派GPIO的第2号脚连接。 显示屏3号脚接一个10K的可调电阻中间脚上,用于调节显示屏亮度,可调电阻另两只脚一只接5V电源,一只接地。虽然这个脚可以不用连接,但在实际操作中,调节显示屏的亮度是很重要的,因此强烈建议安装。 显示屏7、8、9、10脚空置。 显示屏15号脚接5V电源,即与树莓派GPIO的第2号脚连接。(用于背灯) 显示屏16号脚接地,即与树莓派GPIO的第6号脚连接。(用于背灯) (图有点乱,大家凑合着看吧,呵呵!)
好了,完成上面的接线工作,就可以通电使用了。 树莓派通电后,显示屏应会亮,同时在第一行显示一排黑方块。如果看不到黑方块或黑方块不明显,请调节可调电阻,直到黑方块清晰显示。如果调节可调电阻还看不到方块,则可能你的连接有问题了,请检查连接,包括检查显示屏的引脚有没有虚焊。 接下来是加载内核模块和lcdproc了。我使用的raspbain中系统已默认安装好了I2C的模块,但不会自动加载,必须手动加载。我们需要加载两个模块,如下: - sudo modprobe i2c-bcm2708
- sudo modprobe i2c-dev
复制代码加载上述两个模块后,我们开始寻找设备: (上面这个命令中,-l 的l是英文字母l,不是数字1,请注意)这个命令显示系统中所有可用的I2C总线。我的树莓派中找到了2个,分别是0和1。 我用下面的两条命令来扫描这两个I2C总线以查找设备地址: - sudo i2cdetect 0
- sudo i2cdetect 1
复制代码最终在1上找到了设备地址,地址为0x3f。
现在我们就来安装lcdproc。在我的raspbain系统中,是没有默认安装lcdproc的,用如下命令来安装: - sudo apt-get install lcdproc
复制代码如果你的网速够快的话,安装会很快结束。安装结束后,系统会启动lcdproc的LCDd守护进程。但是,先别忙,我们还要进行一番配置,先将这个守护进程停下来吧: 打开/etc/LCDd.conf这个配置文件: (我是vi党的,但不管你用什么文本软件,别忘了root权限。)
在[server]下找到:Driver=curses,将其改为:Driver=hd44780 在[menu]后的[hd44780]下找到:ConnectionType=4bit,将其改为:ConnectionType=i2c;接着找到Port=0x378,将其改为你刚才在上面找到的设备地址,我的是0x3f,因此我就改为Port=0x3f;接着找到Device=/dev/ttyS0,根据你刚才找到设备的总线编号修改,比如我是在1总线上找到的,此处就改为Device=/dev/i2c-1(同样,如果你是在0总线上找到的,就改为Device=/dev/i2c-0);最后找到Size=20x4,改为Size=16x2。 做完上面的修改后,保存、退出。然后启动我们刚才停止的守护进程: 现在赶紧看一下你的LCD1602,是不是有显示了?显示屏上应出现如下的欢迎信息:
(好了,今天先写到这吧,太晚了。明天我再找时间写下lcdproc的python库的用法。)
补充内容 (2014-7-27 10:43):
lcdproc的官方文档都在这里:http://lcdproc.omnipotent.net/docs.php3。其中有PCF8574和显示屏的接线图,但不知是我的浏览器问题,还是本来就是乱的,这幅图是乱的,因此没有贴上来 |