树莓派玩耍笔记3 -- LCD1602显示篇

LCD1602是一块成本低廉的输出设备,它有着体积小、操作简单、功耗低等优点,所以在一些DIY 产品上会用它来输出一些信息。昨天在使用时,虽然借鉴网上的资源,但是仍然有遇到一些问题,在这里写出来以便大家遇到时能够正确处理。

一、LCD1602 相关[1]

工业字符型液晶,能够同时显示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码表:

读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。

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

在GitHub 上找到了一个关于树莓派使用1602 打印的一个项目,地址是:https://github.com/qtsharp/pi-screen。而这个小项目是基于一个国外大牛创建的树莓派的库:其地址为 https://projects.drogon.net/raspberry-pi/wiringpi/ 。

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

二、如何连接树莓派

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

上述的图还是很清晰地,看图接线应该还是比较简单的。

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

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

使用两派母口杜邦线将所有的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 版:

我们可以看到 pi-screen 的最后修改时间为 2013年5月8号, 我们就将 wiringPi 的git 仓库回到2013年5月8号以前。

使用 git log 追溯库的以前版本(如果你对git 这个神器还不是很了解,欢迎学习《Git
使用及进阶实战
》),我们可以找到:

commit da38443cb257a3bbbe4ad7f54ee3f569710a2fe7

Author: Gordon Henderson <[email protected]>

Date:   Mon May 13 19:43:26 2013 +0100

wiringPi Version 2 - First commit (of v2)

commit 98bcb20d9391ebde24f9eb1244f0d238fb1a1dab

Author: Gordon Henderson <[email protected]>

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 你想打印的信息" 运行即可。

来显摆一下打印效果。

顺便啰嗦一句:树莓派使用文本界面然后使用ssh 登陆操控体验真的很好,而且超级省资源。可以看到图中,447MB的内存还有402M 可用。而使用图形界面的话应该只会剩下一半的样子。

不过即便我加了散热片,树莓派的温度一直持续在55度的样子,不知道你们那如何?

四、 总结

4.1 好好接线很重要

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

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

4.2 用好 Git 仓库很重要

我们可以看到,本次实验中,由于1602.c 使用的是老版本的库,而最新的库已经提供了有所不同的API, 而我使用的较为偷懒的方法就是得益于强大的Git 。所以对于程序员来说使用 Git 是一个好习惯,会用Git 快要成了最基本的基础技能。

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

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

引用资料:

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

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

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

树莓派玩耍笔记3 -- LCD1602显示篇,布布扣,bubuko.com

时间: 2024-10-17 22:33:14

树莓派玩耍笔记3 -- LCD1602显示篇的相关文章

树莓派玩耍笔记1 -- 开箱 &amp; 安装系统以及简单配置

零.前言 树莓派是什么? 吃的么? 呵呵,如果您连这个还不知道,真是out 了.麻烦出门左拐,百度去(或者,看看官网去?),算了,还是粘贴一些大家都知道的树莓派百科吧: 树莓派由注册于英国的慈善组织"Raspberry Pi 基金会"开发,Eben·Upton/埃·厄普顿为项目带头人.2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名&q

树莓派玩耍笔记2 -- 我的板子是正品么?(解答一些小问题)

由于我的树莓派是在某宝买的,跟很多人一样,在某宝买东西,你肯定害怕自己买的东西会不会是仿制品或者是阉割版.同样,强大的中国代工厂会不会自己对树莓派进行修改或者是照抄后发布在淘宝上?所以我历经千辛万苦寻找各种资料查看我的板子是不是正品. 1. 国产红板和绿板的标准配置 爱板网大神"ukonline2000" 发布了两篇帖子<爱板首发-国产红派评测-外观开箱篇!!!>,<爱板首发-国产红派评测-性能测试教学篇!!!>.我们可以看出,红板和绿板中还是有部分芯片都是不一

树莓派玩耍笔记4 -- 树莓派ssh党必备的配置

1. 关闭桌面显示 对于ssh 党,当然不需要系统花费资源在显示上. 所以我们先在 "raspi-conifg" 下选择默认启动为Text 启动(这好像也是Raspbian 的默认配置). 其次,我们还可以直接关闭HDMI 接口, 使用" /opt/vc/bin/tvservice -o " (直接使用 tvservice -o 亦可,如想了解更多请使用 tvservice --help 查阅此命令更多地使用方法)命令即可轻易做到. [email protected

树莓派玩耍笔记1 -- 开箱 &amp;amp; 安装系统以及简单配置

零.前言 树莓派是什么? 吃的么? 呵呵,假设您连这个还不知道,真是out 了. 麻烦出门左拐.百度去(或者,看看官网去?),算了.还是粘贴一些大家都知道的树莓派百科吧: 树莓派由注冊于英国的慈善组织"Raspberry Pi 基金会"开发.Eben·Upton/埃·厄普顿为项目带头人.2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机.又称卡片式电脑.外形仅仅有信用卡大小,却具有电脑的全部基本功能,这就是Raspberry Pi电脑板,中文译名

树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)

转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 一.家庭服务器实现的主要功能 1.流媒体播放服务:利用DLNA实现电视.手机.电脑播放其上面的媒体文件. 2.文件共享:利用samba实现手机.电脑等终端与服务器的文件共享. 3.自动下载:利用aria2c实现自动下载. 先上几张效果图: 用orico的包装盒做了个机箱. 内部效果,线还是有些凌乱 放在桌上,感觉还不错,呵呵 二.准备工作 1.树莓派B+ 2.安装raspbian系统,具体

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

[Aaronyang] 写给自己的WPF4.5 笔记11[自定义控件-AyImageButton篇 1/4]

我的文章一定要对读者负责-否则不是好文章  ----       www.ayjs.net  aaronyang技术分享 文章导航: 介绍vs2013 WPF开发,属性代码相关技巧 实战AyImageButton 1.0细用慢讲,学会用户控件,依赖属性,属性回调事件 诞生AyImageButton 1.1 支持 控件简单写法,支持自定义AyImageButton写法,提供详细的API 效果图: AyImageButton记录 源码下载:http://pan.baidu.com/s/1eQlHly

树莓派学习笔记 1 -- 硬件的需求以及raspbian系统的安装

树莓派(Raspberry Pi) --  基于Linux系统的大小只有信用卡大小的卡片式机器.  按照发明者的想法,他是想降低学习程序开发的成本而设计制作的这款产品.你可以理解为一个简陋版的电脑.树莓派这是一个卡片,你需要买各种外设,然后自己DIY任何你想的,你可以的作品. Note:我使用的是最新的B+板. 一:硬件需求 话不多说,我们先来看看最基本的硬件需求. 这需要上面这几个才能使用一个完整的树莓派.树莓派对外设的要求是比较严的,很多外设不一定能支持,这个可以在买的时候询问商家. 1,无

树莓派学习笔记——交叉编译工具链

0.前言 [1]为什么要使用交叉编译 交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码,但是和树莓派上的gcc工具不同,PC机上的gcc工具生成intel或amd芯片上可执行的代码,但树莓派却是arm系列的芯片,显然存在不小的差异.那么使用交叉工具链便可在PC机上开发树莓派中可执行程序. 虽然树莓派的主频可达700MHz远高于一般的嵌入式系统,但相比于PC机其性能还是差些,使用交叉工具链可节