LCD1602液晶屏
单片机系统用到的液晶屏(简称LCD)有很多类型,最常用的有两种,一种是1602型(即每行可显示16个字符,同时能显示2行),另一种是12864型(即每行可显示128个点,每列可显示64个点)。一般前一种称为字符型LCD,后一种称为点阵型LCD,字符型LCD只能显示ASCII码符号的字形(一般用5×7点阵来显示一个字符),而点阵型LCD除了字符(包括汉字)外还可以显示图形。
目前国内市场上,绝大多数LCD1602都是使用日立公司的HD44780控制芯片或与其兼容的芯片,所以操作方式基本上是一样的。LCD1602的引脚接口如下图所示。
LCD1602采用标准的16脚接口,具体定义如下:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的可调电阻调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行数据写入或读取命令。
第7~14脚:DB0~DB7为8位双向数据线。
第15~16脚:空脚或背光电源端接口。
LCD1602一屏可显示16X2个字符,其显示单元对应的地址如下图如示。
从上图中可看出,第一行地址从0x00开始,向右地址不段增加,第一行末尾地址为0x0F,一共16个单元。第二行地址从0x40开始,向右地址不段增加,第二行末尾地址为0x4F,一共也是16个单元。以上每一个单元对应一个显示字符,即对某地址写入ASCII码,就可在该地址对应的位置上显示出ASCII码所对应的字符。但要注意的是,以上仅是可以显示的DDRAM地址部分,其实DDRAM的地址每行有40个,即每行最多可写入40个字符,但显示的仅是前16个单元的字符,这可以用来实现一些特殊的效果,比如一行的字符不断向左(右)移动显示等等。整个DDRAM的地址如下图所示。
从上图中可见,第一行的末尾地址为0x27(十进制39),共计40个单元,但只有前16个单元(0x00~0x0F)能显示,第二行也一样。
HD44780是LCD1602的控制芯片,下表给出了它的指令集。
从上表中可以看出,与LCD1602交换的数据可分为两类,一类是指令数据(如清屏、光标定位等),另一类是显示数据(要显示的内容)。所有数据都是通过双向数据口DB0~DB7进行交换的,同时通过RS端(即第4脚)来区分交换的是“指令”还是“显示内容”,把该端口置0就表示从数据口交换的是“指令”,置1则表示交换的是“显示内容”。其次,通过通过R/W端(即第5脚)来区分是读取还是写入(即确定数据方向),把该端口置0就表示写入数据方向,置1则表示读出数据方向。
在上表中,前8条为写入的指令(RS、R/W均为0),是依靠“1”所在的位置(权位)来进行区别的,即不同的权位就确定了不同的命令,下面就对其一一进行说明。
第1条(Clear display)为清屏指令,1所在的权位为最低位(0x01),没有参数,执行后屏幕清除显示,同时地址指针清零。
第2条(Return home)为光标复位指令,1所在的权位为第1位(0x02),没有参数(DB0可为任意值),执行后地址指针清零,光标复位,但显示内容不变。
第3条(Entry mode set)为进入模式设定,1所在的权位为第2位(0x04),有2个参数(I/D、S),其中I/D为地址指针(AC)增减选择,I/D为0时减少,为1时增加;S为光标或屏幕显示选择,S为0时选择光标(屏幕显示不动),为1时选择屏幕画面(光标不动)。当S为0时,在写入显示字符后光标向左(AC减小)还是向右(AC增加)移动,由I/D来决定;当S为1时,在写入字符后屏幕画面是整体向左(AC增加)还是向右(AC减小)移动,也由I/D来决定。一般该条指令在LCD1602初始化时执行。
第4条(Display on/off control)为屏幕显示控制,1所在的权位为第3位(0x08),有3个参数(D、C、B),其中D为整体显示的开关控制,为0时不显示,为1时显示;C为光标显示开关控制,为0时不显示光标,为1时显示光标;B为闪烁开关控制,为0时不闪烁,为1时闪烁。执行该指令配合其参数的不同,会呈现出不同的显示效果。
第5条(Cursor or display shift)为光标移动或屏幕画面滚动控制,1所在的权位为第4位(0x10),有2个参数(S/C、R/L),最低两位(DB1、DB0)可为任意值,参数中S/C为屏幕画面或光标选择,为0时选择光标移动,为1时选择屏幕画面滚动;R/L为左或右选择,为0时选择左,为1时选择右。执行该条指令是为了在某种情况下(比如按下按键),是光标左右移动还是屏幕画面整体左右滚动。
第6条(Function set)为功能设定,1所在的权位为第5位(0x20),有3个参数(DL、N、F),最低两位(DB1、DB0)可为任意值,参数中DL为数据位宽选择,DL为0时选择4位模式,为1时选择8位模式;N为显示行数选择,为0时只显示一行,为1时可显示两行;F为字符大小选择,为0时选择小字符,为1时选择大字符。该条指令是为了设置一些特定的功能,一般也会把该条指令放置在LCD1602初始化时执行,如果没有特殊需求,一般都会设置为8位数据模式、双行显示,小字符。特别对于字符大小的设置,一般国内市场上的LCD1602屏都不支持大字符,所以设置了也没用。
第7条(Set CGRAM address)为设置CGRAM(字符发生器)的地址,1所在的权位为第6位(0x40),其后面的6位(AGC5~AGC0)为欲设置的地址值。
第8条(Set DDRAM address)为设置DDRAM(数据存储器)的地址,1所在的权位为第7位(0x80),其后面的7位(ADD6~ADD0)为欲设置的地址值,该值决定了地址指针AC的值。
第9条指令为读取指令(RS为0、R/W为1),用于获取忙标志和AC地址,读出的值中,其最高位(BF)用于忙标志判定,1表示LCD忙,0表示空闲,后面7位(AC6~AC0)为当前光标所在的地址值。
第10条指令为写数据(RS为1、R/W为0),用于向LCD写入要显示的ASCII码字符数据,写时需要判忙,不忙时才能写入,若数据位宽被设置为4位模式,则需要写两次(先写高4位)。
第11条指令为读取数据(RS、R/W均为1),用于获取某地址单元的内容。
最后还要确定什么时候进行写(或读)的操作,HD44780芯片规定,当E端(即第6脚)有一个下降沿的跳变时,LCD1602就把数据口上的数据写入到内部的寄存器中(或把寄存器中的数据放到数据线上来),其写操作的时序如下图所示。
读操作的时序如下图所示。
了解了以上方法之后,就可以很好地通过单片机来操控LCD1602显示屏了,但根据HD44780芯片规定,在使用之前需要先对其进行初始化操作,下图给出了8位模式下的初始化过程。
有了以上这些信息,接下来就可以通过程序设计来实现相应显示的功能了。
LCD1602液晶屏的更多相关文章
- 为树莓派3B添加LCD1602液晶屏
树莓派3B针脚说明 LCD1602接线说明 VSS,接地VDD,接5V电源VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地.RS,寄存器选择,接GPIO14RW,读写选择,接 ...
- 51单片机 | 实现SMC1602液晶屏显示实例
———————————————————————————————————————————— LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - ...
- 简析LCD1602液晶驱动及在Arduino上的实例实现
这几日在倒腾新到的Arduino,比起普通单片机来,感觉写程序太简单了.不过和外设打交道还是没那么容易,比如今天要说的看似简单的LCD1602液晶,却费了我一整天才基本搞懂,不过还是有一个小问题没有实 ...
- FPGA nios软核编写液晶屏LCD12864驱动程序源码以及注意事项,本人亲自踩坑,重要!!!
LCD12864引脚如下: FPGA开发板得提供,3.3v电压,5v电压,普通io都是3.3v电压 DB:数据脚,得用双向io,因为程序里面需要读取液晶的应答(普通io3.3v可以) E:?输出引脚即 ...
- Arduino 1602液晶屏实验和程序
在Arduino IDE中, 项目->加载库->管理库中搜索LiquidCrystal,然后安装即可 1.接线图 2.引脚图 3.最简单程序 #include <LiquidCrys ...
- s3c2440液晶屏驱动 (内核自带) linux-4.1.24
自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c 另一部分在 /drivers/video/fbdev ...
- 拓普微小尺寸TFT液晶屏-高性价比
智能模块(Smart LCD)是专为工业显示应用而设计的TFT液晶显示模块. 模块自带主控IC.Flash存储器.实时嵌入式操作系统,客户主机可把要存储的数据(如背景图.图标等)存储到屏的flash中 ...
- 液晶屏MIPI接口与LVDS接口区别(总结)
液晶屏接口类型有LVDS接口.MIPI DSIDSI接口(下文只讨论液晶屏LVDS接口,不讨论其它应用的LVDS接口,因此说到LVDS接口时无特殊说明都是指液晶屏LVDS接口),它们的主要信号成分都是 ...
- ARM40-A5应用——fbset与液晶屏参数的适配【转】
转自:https://blog.csdn.net/vonchn/article/details/80784579 ARM40-A5应用——fbset与液晶屏参数的适配 2018.6.18 版权声明:本 ...
- 所谓的液晶屏驱动IC是单独的IC还是在屏内就集成
所谓的液晶屏驱动IC是单独的IC还是在屏内就集成 时间:2016-12-05 作者:admin 其实无论什么液晶屏,想要正常工作必须包括两个人:玻璃屏+驱动IC:但是现在有一些液晶厂商他们不 ...
随机推荐
- JVM常用调优参数
目录 JVM内存模型及常用参数 参数解释 垃圾收集器 Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC) Parallel Scavenge收集器(-XX: ...
- python 数据迁移
Python数据库迁移 操作数据库 mysql uroot -p create database Python1031 charset=utf8; 数据迁移 from flask_migrate im ...
- DP经典例题——LIS&LCS
DP经典例题--LIS&LCS LCS 最长公共子序列,英文缩写为LCS(Longest Common Subsequence).其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列 ...
- windows装机小经验
小白的装机之路 大学时有试过自己用硬盘装,但只知其然,不知其所以然,真出现什么问题也不知道怎么解决,作为一名码农还是好好补补知识,免得以后被人笑话. 经过自己的看各路大神文章,试验并总结以下粗浅见解. ...
- [机器学习] Yellowbrick使用笔记1-快速入门
Yellowbrick是一个机器学习可视化库,主要依赖于sklearn机器学习库,能够提供多种机器学习算法的可视化,主要包括特征可视化,分类可视化,回归可视化,回归可视化,聚类可视化,模型选择可视化, ...
- CF构造题1600-1800(2)
H. Hot Black Hot White(COMPFEST 14 - Preliminary Online Mirror (Unrated, ICPC Rules, Teams Preferred ...
- 【LeetCode链表#9】图解:两两交换链表节点
两两交换链表中的节点 力扣题目链接(opens new window) 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 思路 ...
- 深入Typescript--01-使用roolup编译Typescript
Typescript是什么? TypeScript是Javascript的超集,遵循最新的ES5/ES6规范.Typescript扩展了Javascript语法. 为什么要用Typescript? 1 ...
- vue中wowjs的使用
笔者亲测,在vue中使用wow.js如果不按照以下方法实施,会出现意想不到的BUG,网页刷新后图片就全部突然看不到了,被增加了一个隐藏属性,建议大家严格按照方法执行,不要随意使用 (1)通过npm安装 ...
- 异常的产生过程解析-throw关键字
异常的产生过程解析 先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundException.我们通过图解来解析下异常产生的过程. 工具类 throw关键字 在编写程序时, ...