首页 > 爱游戏直播稳定版

1602 液晶显示模块 + HD44780 控制芯片 使用指北

时间: 2024-01-15 17:43:02 |   作者: 爱游戏直播稳定版

  学习单片机少不了用到液晶显示模块,说到液晶显示模块想必一定要学习1602这款,1602只是个显示模块的代号,并不是指具体哪一个厂商的哪一款产品。“16”的意思是显示屏上“每一行显示16个字符”,“02”的意思是显示屏上可以显示2行。

  在学习1602之初,对于如何操作这款液晶显示模块不甚了解,网上的文章查了不少,但感觉还是一知半解,大部分资料存在两个问题:第一是不够完整,有很多名词和概念解释得不够清楚,内容节选自某些芯片厂商的数据手册,厂商是按照一定顺序和逻辑编写的技术文档,如果仅是节选,就无法以正常的思维方法了解全部;第二是缺乏细节,对某一点解释得不够透彻。所以看完之后我就进入了“半瓶子”状态,说自己会不能说错,的确也知道一些,说不会也不冤枉,因为真的不会实际操作。为了学得彻底,我还是决定老老实实、认认真真的从最基本的知识和概念入手,进行学习和研究。既然1602是由MCU控制的,那咱们就来学习HD44780这款MCU的知识。网上下载了HITACHI生产的HD44780U的资料,一起看看。

  扩展了“字符生成器(charator generator )ROM”,也被称为“CGROM”,使之可以显示208个字符(使用5X8点阵字符显示),或者32个字符(使用5X10点阵字符显示),总共240个不同的字符显

  b. IR存储指令,例如“清屏”指令,“光标移动”指令等,除此之外,IR还存储用于显示数据的地址信息,这里的“地址”指的是“显示数据随机存储器(DDRAM)”或者“字符生成随机存储器(CGRAM)”中存储的地址信息,DDRAM和CGRAM在后面介绍

  c. DR存储数据,当需要传输数据到显示模块时,数据是需要传送给MCU中的DDRAM或者CGRAM这样的存储器中,在这样的一个过程中,数据先存储在DR当中,在传送到DDRAM或者CGRAM中。同理,从显示模块的MCU中读取数据时,也需要用DR充当中转站,必须要格外注意的是,DR和DDRAM或者CGRAM的传输是自动完成的。另外,既然写入和读取都与DDRAM或者CGRAM有关系,那么如何知道数据写入或者读取DDRAM或者CGRAM中的哪个位置呢,这就要用到IR中存储的相关地址信息。还有一点需要说明,在进行读取操作时,当前一个地址中的数据读取完毕后,位于DDRAM或者CGRAM中的下一个地址中的数据会被自动发送到DR中等待MCU的下一次读取。想一想,写入数据时候,地址会不会自动转移到下一位呢?

  d. MCU设置了“寄存器选择标志 (Register Selector)”来判断应该使用哪个寄存器,使用的人要设置RS的电平用以实现相关寄存器的选择。

  通过设置“读写操作选择标志”为高、低电平通知MCU应该进行“读”或者“写”哪一种操作

  当Bush Flag,简称BF为1时,MCU处于“忙”状态,所谓“忙”的意思是说MCU还处于内部操作当中,你也可以认为是MCU“发呆”了,此时,MCU不接受任何指令。只有BF为0时才意味着MCU“清醒”了,这时才能和外界通讯,从而接受指令。注意,当设置R/W和RS实现读取指令时,MCU在DB7位(也就是读出的二进制数列的最高位)读取BF的状态值(0或者1),这样,就能够准确的通过BF的值判断MCU的“清醒的”还是“正在发呆”。

  地址计数器,简称AC,是用来存储地址信息的,当IR中写入了一个地址信息,它就被发送给AC,AC既可以存储DDRAM的地址信息,也可以存储CGRAM的地址信息,至于如何区分,则是写入IR时通过指定的一些格式进行实现的。在读出(或者写入)DDRAM或者CGRAM后,AC中的值会自动加1或者减1。

  a. DDRAM可以被认为是“显存”,存储在其中的内容就会被显示屏显示,DDRAM是随机存储器,说明我们可以向其中写入信息,写入什么信息就显示什么信息,但断电后DDRAM中的信息就被“释放”了。其中一共可以存储并显示80个字符,每个字符有一个地址,这个地址用8位二进制数表示。其中有几点需要注意。

  b. 第一点:显示屏上能够显示的字符不足80个,1602显示模块每行最多能显示16个字符,其余的字符是无法同时在屏幕上显示的,为何要设置如此多的又不能同时显示的字符呢,其实是为了能做到“滚屏”,在此不做展开,请自行想象。而不同的芯片显示的字符长度是不同的,使用时需要查看数据手册。1602可以设置成同时显示2行,每行16个字符,地址如下图,发现其中第一行最后一个字符的地址和第二行第一字符的地址并不连续,使用时需要注意。

  c. 第二点:你会发现在使用DDRAM地址的时候,指令格式的范例中都是7位,不是8位吗?怎么变成7位了呢,原因是HD4478U芯片中设置了最多80个字符,也就意味着最多有80个地址,最大地址用十六进制表示为4F,用二进制表示就是1001111,所以最大就是7位二进制数,那么第8位即最高位用做什么呢?在设置DDRAM地址的时候第8位要预先设定为1,这一点后面还会提及。

  d. 第三点:当设置了“滚屏”功能时,显示屏可以显示DDRAM中被隐藏的其他储存单元中的字符,而显示内容按照储存单元“首尾相接”的顺序进行排布,并且两行同时滚动。例如上、下两行显示完最后两个字符(上图中地址27和67),滚动后接着显示的就是第一个字符(上图中地址00和40)。

  a. CGROM存储了240个已经被定义好的字符,其中包括208个5X8点阵的字符,32个5X10点阵的字符。

  b. CGROM其实就是一个“字符表”,每个字符都有一个标识,以二进制表示的8位数字表示,这个标识被称为 Character Codes,即“字符码”,想要显示哪个字符直接向DDRAM中写入这个“字符码”就可以了。

  a. CGRAM是随机存储器,意味着可以写入和修改信息,但是在断电后就CGRAM中的内容就释放了。我们大家可以用CGRAM编写CGROM中没有的字符。

  b. 对于5X8点阵显示方式,可以编写总共8个自定义字符,对于5X10点阵显示方式,可以编写总共4个自定义字符。

  c. 与CGROM的设计相同,CGRAM中的每个“自定义”字符也有一个标识,以二进制表示的8位数字表示,与CGROM中的字符的“字符码”不同的是,CGRAM中的每一个字符的字符码其高4位二进制数值都是0,低4位二进制数值的前三位即第0、1、2位用来表示不同的字符,对于5X8点阵显示方式,这三位的字符码从“000”到“111”。低4位的第4位是“无效”位,意思是可以被设置为0,也可以被设置为1。

  d. 与每个字符码相对应的是字符的“地址码”,地址码由6位二进制(0~5)表示,对于不同的显示方式,设定是不同的。对于5X8点阵显示方式,这个6位地址码的高3位与“字符码”的第三位相同,而低3位则表示8个不同的字节单元的地址(000~111)。这8个字节是用来构建字符形状的,这也就“点阵”概念的具体实现方式,还记得5X8吗?这8个字节就代表了点阵中的8行。那么5又是什么呢?5就是点阵中一行内的每个点,也就是对应每个字节的各个位,由于每个字节是8位,所以在设置的时候每个字节只用其中的低5位,即0~4,高3位即5~7是无效位,一般置0。在设置时,8个字节的最后一个字节是光标位置,可以置0或者1。通过这种方法组成的字形被称为“字模”(Character Pattern)。5X10显示方式稍有不同,顾名思义,其用到11个字节表示字形,而其地址码仍然由6位组成,所以必须用低4位表示不同的字节单元地址(0000~1010),高2位与“字符码”的低2位相同以表示不同的字符码,同样,地址的最后一位地址即1010对应的字节是光标位置。5X10显示方式的字符码同样是8位的,但第0位和3位是无效位。两种显示方式的字模表如下图

  DDRAM用来存储需要显示的符号,所以被称为显存,需要显示什么符号,就必须把相应的符号放在DDRAM中;CGROM用来存储标准的符号,这些标准符号是预先存放在CGROM中的,使用时需要把需要的字符的字符码写入DDRAM就可以显示了。大部分字符都可以在CGROM中找到,对于找不到的字符则需要自定义,这时就用到CGRAM了,在使用前需要把字符用字模编辑的方式存储在CGRAM中,再把CGRAM的字符的字符码写入DDRAM中就可以显示了。

  HD44780U这款芯片带有内部的“上电自动初始化”功能,例如设置“清屏”、“功能设置”、“显示控制”等,当某些情形不能使芯片实现内部初始化时,就一定要使用在线的“指令”初始化进行设置,在线的“指令”初始化就是个人会使用各个指令通过MPU(Microprocessor Unit)来实现。

  MPU能控制HD44780U的指令寄存器(IR)、数据寄存器(DR),MPU发送各种信号用以设置各种功能,例如寄存器选择(RS)、读/写选择(R/W)、数据总线)

  作用:设置DDRAM的地址为0x00,将显示内容回归至最初位置,DDRAM中的内容保持不变(不清屏)

  作用:设置光标的移动方向(也就是DDRAM地址值),指定显示内容是否滚动

  说明:I/D = 1:光标自动增1(DDRAM地址值自动增1);I/D = 0:光标自动减1(DDRAM地址值自动减1);S = 1:显示内容滚动(看起来像是光标不动而显示的内容移动,注意:读取DDRAM内容时显示内容不滚动,读取或者写入CGRAM时显示内容也不滚动)

  说明:D = 0 显示关闭;D = 1 显示开启;C = 1 显示光标;C = 0 不显示光标;B = 1 光标处的字符闪烁;B = 0 光标处的字符不闪烁

  说明:S/C = 1 显示滚动;S/C = 0 光标移动;R/L = 1 向右移动;R/L = 1 向左移动;此功能设置在没有读/写操作时光标或者显示的移动,大多数都用在搜索或者修正显示内容,其功能不同于指令c中的显示滚动,设置显示滚动时光标跟随内容一同移动

  作用:设置CGRAM的地址,注意此指令执行后需要执行传输CGRAM中数据的指令

  作用:设置DDRAM的地址,注意此指令执行后需要执行传输DDRAM中数据的指令

  作用:读取“忙状态”并且读取地址计数器(Address Counter)中的地址

  注意:写入数据后地址计数器(Address Counter)中的地址自动加1

  注意:读取数据后地址计数器(Address Counter)中的地址自动加1

  通过以上的介绍相信我们大家对1602这款显示模块有了进一步的了解,在使用中还必须要格外注意很多需要注意的几点,建议我们大家仔细研读厂商的MCU控制芯片数据手册。

  说句题外话,如我在文章开头讲到的,我感觉网上很多资料介绍得不够详实,而且千篇一律,作者写文章仿佛有个前提,就是假设读者已经具备一定的基础知识和概念了,

  所以介绍得就不是特别细致,其实进行学习的人往往就是没什么基础才来看这些文章,导致最后稀里糊涂。看了很多国外的书籍,作者把读者看做“小白”,从基础讲起,

  使得读者的理解“渐入佳境”,达到自学而且学会的目的,希望咱们国内的同道有所借鉴,当然,有些文章的起点比较高,介绍的就是“高起点,深层次”的知识,那另当别论。关键字:编辑:什么鱼 引用地址:1602 液晶显示模块 + HD44780 控制芯片 使用指北

  MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中80 ...

  由于工业现场总线在工业控制、智能仪器仪表、数据采集等方面得到了广泛的应用,因此对于总线集成的需求也应运而生。不一样的种类的现场总线协议 ...

  在单片机系统模块设计中,LCM(液晶显示模块)人机交互界面的设计往往是很重要的一个环节。LCM能够适用于智能仪器上的显示设定参数、状态提示符、 ...

  基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计

  1 、引 言在石油钻井中,准确测量井眼姿态是进行井眼轨迹控制的前提。为此,本文充分结合单片机和MATLAB的优点,基于事件驱动的通信机制 ...

  采用C8051F020单片机和模糊控制器实现便携式心电监护仪的应用方案

  目前,以采集心电信号、分析和诊断为主的心电监护系统已得到了广泛的应用,对于心脏系统疾病的预防、诊断发挥了很大的作用。但是此类心电 ...

  智己汽车:当电子电气架构迭代至中央集成式,如何布局其信息安全和功能安全?

  钠离子电池正式上车,钠电池时代线:安波福多域融合计算平台,颠覆汽车智能化?

  让是德科技带我们一起 了解汽车电子车载系统解决方案 看视频答题赢好礼!

  Follow me第2期来袭,与得捷电子一起解锁开源硬件 Adafruit ESP32-S3 TFT Feather!

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:

上一篇:MSP430F5529与LCD1602显示模块(上)

下一篇:1602字符型液晶显现篇