树莓派的演奏音符3 -- LCD1602显示文章 一、LCD1602 相关[1] 二、怎样连接树莓派 三、正确信息打印 四、 总结

LCD1602它是低-cost输出装置。它具有体积小、简单的操作、低功耗优势。因此,在一些DIY 用它来输出关于产品的一些信息。

昨日在使用,尽管平局网上资源,但仍存在一些问题,确处理。

工业字符型液晶,可以同一时候显示16x02即32个字符。(16列2行)

1.1 管脚

1602字符型LCD通常有14条引脚线或16条引脚线的LCD。多出来的2条线是背光电源线。

引脚 符号 功能说明
1 VSS 一般接地
2 VDD 接电源(+5V)
3 V0 晶显示器对照度调整端。接正电源时对照度最弱。接地电源时对照度最高(对照度过高时会产生“鬼影”。使用时能够通过一个10K的电位器调整对照度)。
4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

5 R/W R/W为读写选择。高电平(1)时进行读操作,低电平(0)时进行写操作。
6 E
E(或EN)端为使能(enable)端,
写操作时,下降沿使能。
读操作时。E高电平有效
7 DB0 低4位三态、 双向数据总线 0位(最低位)
8 DB1 低4位三态、 双向数据总线 1位
9 DB2 低4位三态、 双向数据总线 2位
10 DB3 低4位三态、 双向数据总线 3位
11 DB4 高4位三态、 双向数据总线 4位
12 DB5 高4位三态、 双向数据总线 5位
13 DB6 高4位三态、 双向数据总线 6位
14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flag)
15 BLA 背光电源正极
16 BLK 背光 电源负极



















1.2 寄存器选择控制

依据上面的表中管脚说明,我们能够知道主要操控的是RS 和R/W 两个管脚:

RS R/W 操作说明
0 0 写入指令寄存器(清除屏等)
0 1 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值
1 0 写入数据寄存器(显示各字型等)
1 1 从数据寄存器读取数据





注:关于E=H脉冲——開始时初始化E为0,然后置E为1。再清0.
busy flag(DB7):在此位为1时。LCD忙,将无法再处理其它的指令要求。也即:D7=1。禁止读写操作;D7=0,同意读写操作;

所以对控制器每次进行读写操作前,必须进行读写检測。

(即后面的读忙子程序)



1.3 指令集

LCD_1602 初始化指令小结:


0x38   设置16*2显示(总共能够输出16*2=32个字符),5*7点阵(每一个字符为5*7的点阵显示),8位数据接口

0x01   清屏

0x0F   开显示,显示光标,光标闪烁

0x08   仅仅开显示

0x0e   开显示,显示光标,光标不闪烁

0x0c   开显示。不显示光标

0x06   地址加1。当写入数据的时候光标右移

0x02   地址计数器AC=0;(此时地址为0x80) 光标归原点,可是DDRAM中断内容不变

0x18   光标和显示一起向左移动


1.4 显示地址

602字符液晶显示可分为上下两部分各16位进行显示,处于不同行时的字符显示地址例如以下:

显示字符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
第一行地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH
第二行地址 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH





1.5 字符集

1602液晶模块内部的字符发生存储器CGROM)已经存储了160个不同的点阵字符图形。这些字符有:阿拉伯数字、英文字母的大写和小写、经常使用的符号、和日文假名等。每个字符都有一个固定的代码。比方大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来。我们就能看到字母“A”。
由于1602识别的是ASCII码,试验能够用ASCII码直接赋值,在单片机编程中还能够用字符型常量变量赋值,如'A’。
下面是1602的16进制ASCII码表:
树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结
读的时候,先读上面那列。再读左边那行,如:感叹号!的ASCII为0x21。字母B的ASCII为0x42(前面加0x表示十六进制)。


注: 第一节的这些信息都是来源于互联网。网上另一些操控程序。相信大家仅仅要搜集一下就能够获取丰富资料。有了这些我们能够自己C 语言编程输出信息。可是本文的程序是基于国外的库进行的,并没有太大的复杂性。


在GitHub 上找到了一个关于树莓派使用1602 打印的一个项目。地址是:https://github.com/qtsharp/pi-screen。

而这个小项目是基于一个国外大牛创建的树莓派的库:其地址为 https://projects.drogon.net/raspberry-pi/wiringpi/ 。

亲測可用,可是会遇到一些问题,所以以下两节我们分开来说说。


二、怎样连接树莓派

在大神的 LCD 连接网页上,我们能够看到树莓派与1602之间这么连接:

树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结

上述的图还是非常清晰地。看图接线应该还是比較简单的。

注意: LCD1602 的第三个管脚接的是电位器。用于调节屏幕的对照度(也就是说字与背景亮光之间的颜色差异)。


树莓派的 GPIO 口接线,由于我的是有亚巧克力外壳的。所以从外面接进去还是比較麻烦的。我使用的方法是:

树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结

使用两派母口杜邦线将全部的GPIO 口接出来。然后接出来的线对于LCD1602这样接16根线的就须要通过面包板衔接。假设是一些类似于超声波模块仅仅要接三根线的,直接将传感器模块接上这些母口就能够使用。还是非常方便的吧!!


三、正确信息打印

对于大神的库假设你没有耐心看或者想尽快看出LCD1602 的效果。这个树莓派1602信息打印的小项目倒是比較好的选择:

1. 给你的树莓派配置好源后,使用sudo apt-get install git  安装版本号管理软件Git 。

2. git clone https://github.com/qtsharp/pi-screen  将此小项目的仓库克隆下来

依据pi-screen/README.md的描写叙述,我们须要先将 大神的库wiringPi  编译好后,才干编译此项目中的1602.c。由于1602.c使用了wiringPi 库文件提供的树莓派1602 操控函数。

3. git clone git://git.drogon.net/wiringPi

   cd wiringPi

克隆好wiringPi 的git 仓库后,我们须要的不是直接 “ ./build ”。由于此库经过大神的不断改进。已经到了v2 版本号,而pi-screen 的作者一直没有更新。所以眼下有两个选择:

(1) 依据库的API改动源码 1602.c

(2) 跟我学偷懒,既然 pi-screen/1602.c 使用v1 版,我们就使 wiringPi 库回到 v1 版:

树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结 

我们能够看到 pi-screen 的最后改动时间为 2013年5月8号, 我们就将 wiringPi 的git 仓库回到2013年5月8号曾经。

使用 git log 追溯库的曾经版本号(假设你对git 这个神器还不是非常了解,欢迎学习《Git 使用及进阶实战 》)。我们能够找到:

commit da38443cb257a3bbbe4ad7f54ee3f569710a2fe7
Author: Gordon Henderson <projects@drogon.net>
Date:   Mon May 13 19:43:26 2013 +0100


    wiringPi Version 2 - First commit (of v2)


commit 98bcb20d9391ebde24f9eb1244f0d238fb1a1dab
Author: Gordon Henderson <projects@drogon.net>
Date:   Thu Feb 7 21:53:49 2013 +0000


    Slight change to the gpio program to fix SPI buffer size when loading
    the module.
    Typo in gpio man page
    Bug fixed in board revision detection (which would never happen
    anyway, however)

与 2013-5-8 最接近的一次commit 是2013-2-7。 并且不巧的是5月13 就升级到了 v2 版本号。所以我们仅仅要使用 " git reset --hard 98bcb20d9391ebde24f9eb1244f0d238fb1a1dab " 回到2月7日这个版本号就能够了。

然后使用 " sudo ./build " 编译这个库就能够了。


4. 至此, wiringPi 库编译完后。我们就“ cd ../pi-screen ”回到pi-screen 文件夹:

使用 “ gcc 1602.c -o 1602 -L lib -l wiringPi  ” 编译好这个打印文件就可以。



5. 然后使用 "sudo ./1602 你想打印的信息" 执行就可以。

树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结

来显摆一下打印效果。

顺便啰嗦一句:树莓派使用文本界面然后使用ssh 登陆操控体验真的非常好。并且超级省资源。能够看到图中,447MB的内存还有402M 可用。

而使用图形界面的话应该仅仅会剩下一半的样子。

只是即便我加了散热片。树莓派的温度一直持续在55度的样子。不知道你们那怎样?


四、 总结

4.1 好好接线非常重要

在本次操作中,因为一点失误,将当中一根数据线接错,导致后来使用程序打印的字符有问题:

比方我想打印的是 0123456789 ,出来的结果却是: 0101454589

树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结


4.2 用好 Git 仓库非常重要

我们能够看到。本次实验中。因为1602.c 使用的是老版本号的库,而最新的库已经提供了有所不同的API, 而我使用的较为偷懒的方法就是得益于强大的Git 。所以对于程序猿来说使用 Git 是一个好习惯,会用Git 快要成了最主要的基础技能。树莓派的演奏音符3 -- LCD1602显示文章
一、LCD1602 相关[1]
二、怎样连接树莓派
三、正确信息打印
四、 总结 


好吧。写到这,算结束了。以后再发使用其它的传感器与1602 接轨,相信会更好玩。再有时间能够自己写c 程序直接对1602 的寄存器读写数据。还是挺好玩的。


===================

引用资料:

[1] 百度百科 -- 1602字符液晶

[2] https://projects.drogon.net/raspberry-pi/wiringpi/lcd-library/

[3] https://github.com/qtsharp/pi-screen

版权声明:本文博客原创文章,博客,未经同意,不得转载。