IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> (单片机/FPGA)LCD1602基础理论 -> 正文阅读

[嵌入式](单片机/FPGA)LCD1602基础理论

说明

? ? ? ? 本文并非原创,而是结合了两篇博文,需要看两篇博文原创的可以直接点击本文最后的链接。

一、LCD1602显示屏的具体引脚与基本配置

????????一般来说,LCD1602显示屏共有16个引脚,各个厂家的LCD1602可能略有不同,但基本上一样,其16个引脚具体如下所示:

LCD1602引脚
引脚号引脚名电压等级功能
1VSS0V电源地
2VDD+5V电源正极
3V00V电压偏置
4RSH/L命令/数据
5R/WH/L读/写
6EH/L使能
7~14DB0~DB7H/L数据端口
15LEDA+5V背光正极
16LEDK0V背光负极

?说明:

第1脚:?VSS, 为电源地。
第2脚:?VDD,接5V正电源。
第3脚:?VO,为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
? ? ? ? ? ? ? ? ? ? ? ?
第4脚:?RS,为命令/数据选择引脚,接一个I/O,当RS为低电平时,选择命令;当RS为高电平时,选择数据。
第5脚:?R/W,为读写信号线,接一个I/O,高电平时进行读操作,低电平时进行写操作。
第6脚:?E,为使能端,接一个I/O,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~?14脚:??DB0—DB7,并行数据输入/输出引脚(双向),可接单片机的P0—P3任意的8个I/O口。如果接P0口,P0口应该接4.7K—10K的上拉电阻。如果是4线并行驱动,只须接4个I/O口。
第15脚:A,背光正极,可接一个10—47欧的限流电阻到VDD。

第16脚:K,背光源负极,接VSS。? ?如图所示:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

二、基本操作与读写时序图:


LCD1602的基本操作,根据RS和RW引脚的0/1搭配,具体分为四种:

1. ? ?读取状态:输入RS=0,RW=1,E=高脉冲。输出:D0—D7为状态字。

2. ? ?读取数据:输入RS=1,RW=1,E=高脉冲。输出:D0—D7为数据。

3. ? ?写入命令:输入RS=0,RW=0,E=高脉冲。输出:无。

4. ? ?写入数据:输入RS=1,RW=0,E=高脉冲。输出:无。

读操作时序图

?写操作时序图:


?

时序时间参数:

?三、3个重要的寄存器DDRAM、CGROM和CGRAM

(一)DDRAM

????????DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。同样LCD1602共有80个字节的显存,即DDRAM。但LCD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来

(二)CGROM和CGRAM


? ? ? ? 在LCD1602模块上固化了两个字模存储器——CGROM和CGRAM。

????????在字符产生器CGROM(Character Generator ROM)中,内置了192个常用字符的字模;

????????在CGRAM(Character Generator RAM)中,还有8个允许用户自定义的字符产生RAM。

????????从ROM和RAM的名字我们也可以知道,ROM是早已固化在LCD1602模块中的,只能读取;而RAM是可读写的。和CGROM中固化的字符不同,CGRAM中本身没有字符,所以要在DDRAM中写入某个CGROM不存在的字符,必须在CGRAM中先定义后使用。

????????也就是说,如果只需要在屏幕上显示已存在于CGROM中的字符,那么只须在DDRAM中写入它的字符代码就可以了;但如果要显示CGROM中没有的字符,比如摄氏温标的符号,那么就只有先在CGRAM中定义,然后再在DDRAM中写入这个自定义字符的字符代码即可。程序退出后CGRAM中定义的字符也不复存在,下次使用时,必须重新定义。

四、具体字符显示的实现

????????上图可知DDRAM一共有40个地址,但是对应于1602显示,只能有32个地址有效。这是因为1602可以显示上下两行,每一行显示16符号,一共显示32个符号,每个显示对应于DDRAM一个地址。例如,我需要在1602的第一行最左边显示一个字母A。首先找到第一行最左边对应DDRAM的地址是什么,查看上图可知是:00H,然后大写字母A对应于ASCII中为41H,此时我们只需要给DDRAM的00H地址写个数据41H即可显示了。


问题1:为何写个41H,就可以显示为"A"呢?


? 对于这个问题,就需要理解CGROM和CGRAM的作用。在芯片HD44780中内置了192个常用字符的字模,存于CGROM(character generate ROM)中,还有8个允许用户自定义字符(也就是可以显示八个中文字)的RAM,也就是CGRAM。具体描述为下图

? ? ? ??可以从上图分析A在字模中代码:高4位为0100,低4位为0001.所以组成8位就变成了41H,这就说明了为何写入41H就可以显示“A”。

????????上图红框里面表示为CGRAM,字模代码为:00H-0FH;ASCII的字模代码为:20H-7FH;日文和希腊字符的字模代码为:A0H-FFH;10H-1FH和80H-9FH没有使用。

问题2:如何任意显示一个字母,数字?


? ? ? ?这个问题是接着上面一个问题而言,具体就是:在1602中我要在某一行某个位置显示我想要的数字或是字母,我应该对应DDRAM地址写个什么样的八位数据?例如,我想显示“1”,那不是就写个01H呢?此时就需要一个思维转换,我们要显示的“1”不再是一个数据,而是需要转换为一个图案,可以看到上图有1的图案,该图案对应了31H,所以需要显示一个“1”,我们就需要给1602的数据总线(DB7--DB0)输入31H。

????????以此类推,例如我们需要输入kb129 is a good man,于是就需要给1602顺序输入:6BH,62H,31H,32H,39H ,20H(空格),69H,73H,20H,61H,20H,67H,6FH,6FH,64H,20H,6DH,61H,6EH。

问题3:如何显示汉字?


????????问题2中解决了显示任意一个字母和数字,但是汉字在图中找不到汉字,怎么办?这时候需要使用CGRAM了,先用字模软件,将对应汉字的变为二进制数。

????????例如我想要显示一个“电”字,由于1602中显示的图案为5*7或是5*10,所以在8*8中左边三列不能使用。得到8列八位数据:04, 1F, 15,1F, 15,1F, 04,07.

????????然后就需要将这8个8bit数据写入CGRAM中,写CGRAM需要使用指令:

????????可以设置地址指针自加一模式,所以如果我们想把“电”这个字方在第1个CGRAM中,也就是对应DDRAM中的00H,就需要将地址写为DB7--DB0:0100_0000.然后将数据04, 1F, 15,1F, 15,1F, 04,07依次写进CGRAM中。这样在CGROM字符的字模中00H就代表了“电”。

????????最后就是显示,也就是如果需要将“电”显示在1602中,就讲地址指针指向DDRAM,然后写数据为00H。

? ? ? ? ? ? ? ? ? ? ?

五、LCD1602指令


(1).工作方式设置指令

×:这个位是0或1都可以,一般取0。

DL:设置数据接口位数。

DL=1:8位数据接口(D7—D0)。

DL=0:4位数据接口(D7—D4)。

N=0:一行显示。

N=1:两行显示。

F=0:5×8点阵字符。

F=1:5×10点阵字符。

说明:因为是写指令字,所以RS和RW都是0。LCD1602只能用并行方式驱动,不能用串行方式驱动。而并行方式又可以选择8位数据接口或4位数据接口。这里我们选择8位数据接口(D7—D0)。我们的设置是8位数据接口,两行显示,5×8点阵,即0b00111000也就是0x38。(注意:NF是10或11的效果是一样的,都是两行5×8点阵。因为它不能以两行5×10点阵方式进行显示,换句话说,这里用0x38或0x3c是一样的)。

(2).显示开关控制指令

D=1:显示开,D=0:显示关。

C=1:光标显示,C=0:光标不显示。

B=1:光标闪烁,B=0:光标不闪烁。

说明:这里的设置是显示开,不显示光标,光标不闪烁,设置字为0x0c。

(3).进入模式设置指令

I/D=1:写入新数据后光标右移。

I/D=0:写入新数据后光标左移。

S=1:显示移动。

S=0:显示不移动。

说明:这里的设置是0x06。

(4).光标或显示移动指令

说明:在需要进行整屏移动时,这个指令非常有用,可以实现屏幕的滚动显示效果。初始化时不使用这个指令。

(5).清屏指令

说明:清除屏幕显示内容。光标返回屏幕左上角。执行这个指令时需要一定时间。

(6).光标归位指令

说明:光标返回屏幕左上角,它不改变屏幕显示内容。

(7).设置CGRAM地址指令

说明:这个指令在上面已经介绍过。用法在后面例子中说明。

(8).设置DDRAM地址指令

说明:这个指令用于设置DDRAM地址。在对DDRAM进行读写之前,首先要设置DDRAM地址,然后才能进行读写。前面我们说过,DDRAM就是LCD1602的显示存储器。我们要在它上面进行显示,就要把要显示的字符写入DDRAM。同样,我们想知道DDRAM某个地址上有什么字符,也要先设置DDRAM地址,然后将它读出到单片机。

(9).读忙信号和地址计数器AC

说明:这个指令用来读取LCD1602状态。对于单片机来说,LCD1602属于慢速设备。当单片机向其发送一个指令后,它将去执行这个指令。这时如果单片机再次发送下一条指令,由于LCD1602速度较慢,前一条指令还未执行完毕,它将不接受这新的指令,导致新的指令丢失。因此这条读忙指令可以用来判断LCD1602是否忙,能否接收单片机发来的指令。当BF=1,表示LCD1602正忙,不能接受单片机的指令;当BF=0,表示LCD1602空闲,可以接收单片机的指令。RS=0,表示是指令;RW=1,表示是读取。这条指令还有一个副产品:即可以得到地址记数器AC的值(address counter)。LCD1602维护了一个地址计数器AC,用来记录下一次读写CGRAM或DDRAM的位置。需要强调的是:这条指令我一次也没有执行成功。很多网友似乎也是这样。好在我们有另外的办法,也就是延时。通过查看每条指令的执行时间,再经过一些试验,可以确定指令的延时。这样就可以在上一条指令执行完毕后再执行下一条指令了。

(10).写数据到CGRAM或DDRAM指令

说明:RS=1,数据;RW=0,写。指令执行时,要在DB7—DB0上先设置好要写入的数据,然后执行写命令。

(11).从CGRAM或DDRAM读数据指令

说明:RS=1,数据;RW=1,读。先设置好CGRAM或DDRAM的地址,然后执行读取命令。数据就被读入后DB7—DB0。

六、LCD1602一般初始换步骤(在FPGA里边必须初始化)


1.延时15mS
2.写指令38H(不检测忙信号)
3.延时15mS
4.写指令38H(不检测忙信号)
5.延时15mS
6.写指令38H(不检测忙信号)
7.以后每次写指令、读/写数据操作均需要检测忙信号
8.写指令38H:显示模式设置
9.写指令08H:显示关闭
10.写指令01H:显示清屏
11.写指令06H:显示光标移动设置
12.写指令0CH:显示开及光标设置
注意:11和12 两个顺序不能互换


链接1:https://blog.csdn.net/weixin_42168194/article/details/90277703
链接2:https://blog.csdn.net/qq_33231534/article/details/108484995

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:48:50  更:2021-07-29 11:48:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:32:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计