微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机常用功能模块的使用 Part7. LCD 1602

单片机常用功能模块的使用 Part7. LCD 1602

时间:11-17 来源:互联网 点击:
1、基本常识:

①、好像也写成 LCM 1602,个人感觉和 LCD 1602 是一个东西,可能叫法不一样吧。

②、LCD 1602,本质上是一种“字符型液晶”,用来显示字母、数字、符号,基本不用来显示汉字。

③、由若干5x 7或者 5 x 11大小的点阵字符位组成,字符与字符之间有一个点距的间隔。

④、所谓的 LCD 1602,其实就是“显示内容为 16 x 2,每行 16 字符,显示 2 行”。

⑤、目前市面上“字符型液晶”绝大多数是基于 HD44780 液晶芯片的,控制原理完全相同,因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

⑥、LCD 1602 样子如下图:

2、LCD 1602 引脚定义:

3、LCD 1602 硬件连接:

4、HD44780 的使用:

上面也说了,LCD 1602 中使用的是 HD44780 液晶芯片,也就是说,所谓的对 LCD 1602 编程,其实是掌握 HD44780 指令集的过程,这里为了严谨,写作 HD44780 液晶芯片的使用。

(1)、DDRAM(显示数据存储 RAM)

DDRAM 用来寄存要显示的字符,并在屏幕对应位置上显示。DDRAM 不是寄存器,是类似于内存一样的东西,更具体来说是像缓存一样的东西,因此,DDRAM 是有一组地址的,其中,每一个地址对应屏幕上的一个位置。使用时,向某地址写入数据,就能在对应的屏幕位置上显示出来。其地址与屏幕的对应关系如下:

每行有 40 个地址,但是 LCD 1602 每行只有 16 个字符,因此,只需要使用 1-16 号地址即可,后边的可能是用来扩展使用的,比如突然想用 HD44780 来制作 20 x 2 的 LCD 了等等,大概是为了便于扩展吧……

因此,对于 LCD 1602,使用如下对应关系:

(2)、CGROM(字符存储 ROM)

自带 160 个字符,存在 CGROM 中,字符与代码的对应如下:

例:在第一行第三个字符位置,显示字符 A,第一行第三个字符位置对应地址为 02H(查上表),字符 A 对应代码为 41H(查下表),将对应代码放入对应地址就能在 LCD 上显示。(具体用法参见 5.(8),有需要注意的地方)

注:上图 ROM 型号为 A00,好像还有个 ROM A02,似乎是另一种类的 CGROM,存的东西不太一样:

(3)、CGRAM(自定义字符存储 RAM)

存储自定义字符,具体没用过,等用过了再更新……

5、HD44780 指令集:

基本操作:

读状态  输入:RS=0,RW=1,E=1
     输出:DB0~DB7=状态字
写指令  输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码
     输出:无
读数据  输入:RS=1,RW=1,E=1
     输出:DB0~DB7=数据
写数据  输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据
     输出:无

(1)、清屏:

功能:<1> 清除液晶显示器,将 DDRAM 的内容全部填入“空白”的字符码 20H;
   <2> 光标归位,即将光标撤回液晶显示屏的左上方;
   <3> 将地址计数器 (AC) 的值设为 0。

(2)、光标归位:

功能:<1> 把光标撤回到显示器的左上方;
   <2> 把地址计数器 (AC) 的值设置为 0;
   <3> 保持 DDRAM 的内容不变。

(3)、输入模式设置指令:

功能:设定每次写入 1 位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
   I/D0=写入新数据后光标左移 1=写入新数据后光标右移
   S0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移 1 个字

(4)、显示开关控制指令:

功能:控制 显示器开/关、光标显示/关闭 以及 光标是否闪烁。
   D0=显示功能关 1=显示功能开
   C 0=无光标1=有光标
   B0=光标不闪烁1=光标闪烁

(5)、设定显示屏或光标移动方向指令:

功能:使光标移位或使整个显示屏幕移位。
   S/CR/L
    0 0光标左移 1 格,且 AC 值减 1
    01光标右移 1 格,且 AC 值加 1
    10显示器上字符全部左移一格,但光标不动
    1 1显示器上字符全部右移一格,但光标不动

(6)、功能设定指令:(重要)

功能:设定数据总线位数、显示的行数及字型。
   DL0=数据总线为 4 位 1=数据总线为 8 位
   N0=显示 1 行 1=显示 2 行
   F0=5×7 点阵/每字符1=5×10 点阵/每字符

(7)、设定 CGRAM 地址指令:

功能:设定下一个要存入数据的 CGRAM 的地址。

(8)、设定 DDRAM 地址指令:

功能:设定下一个要存入数据的 CGRAM 的地址。(注意这里我们送地址的时候应该是 80H + Address,因为上面的 DB7=1)

(9)、读取忙信号或 AC 地址指令:

功能:<1> 读取忙信号 BF 的内容;
     BF=1 液晶显示器忙,暂时无法接收单片机送来的数据或指令
     BF=0 液晶显示器可以接收单片机送来的数据或指令
   <2> 读取地址计数器 (AC) 的内容。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top