目前在单片机市场上,8位单片机和32位的ARM嵌入式微处理器占据的市场份额达70%以上。在单片机市场中,代表性的产品有MCS-51系列产品,其中ATMEL公司的AT89C51/C52两个系列8位单片机在焊接领域应用较为广泛。1994年ATMEL公司以其E2PROM和Intel公司的80C31单片机核心技术进行交换,从而取得80C31核的使用权。......
2023-06-26
液晶显示器的原理与观看的立体电影有相似之处。当观看立体电影时,需要佩戴具有偏振功能的眼镜,眼镜的左右眼分别贴有两片偏振片,其偏振角度相差90°,这样在观看电影时左右眼就能分别看到由两台电影机投射的图像。液晶显示器也是利用光的偏振原理显示信息的,在两个偏光板之间注入液态晶体并安放电极,就构成了最基本的液晶显示器。其结构如图8-15所示。
图8-15 液晶显示器的结构
图8-15中上下两个偏光板的偏振角相差90°,置于其间的液晶分子可以被光穿透,并能影响光的偏振性。当液晶分子没有施加电压时,光线不能通过两块偏光板,而在液晶分子施加电压后晶体的排列会发生翻转,将光线的偏振角度扭转90°,光线就可以从两块偏光板间通过,这样信息就会显示出来。
8.3.1 1602液晶显示器的特点
1602液晶显示器是字符型液晶显示器,它因为能显示2排,每排16个西文字符而得名,是目前应用最为广泛的模块化液晶显示产品。1602液晶最初采用的控制芯片是HD44780,之后各厂家生产的1602液晶模块基本上也都采用了与HD44780兼容的控制IC,所以市场上出售的1602液晶显示器的结构和功能都基本相同,驱动程序也互相兼容,不同品牌和型号的1602液晶显示器只是在供电电压、字符颜色和背光等辅助功能上有些区别。常用的1602液晶显示器的外观如图8-16所示。
图8-16 1602字符型液晶显示器
8.3.2 1602液晶显示器的引脚功能
1602液晶显示器总计有16个引脚,其功能见表8-3。
表8-3 1602液晶显示器的引脚功能
1602液晶显示器与8051系列单片机的接口电路如图8-17所示。单片机通过一组I/O口与1602液晶的数据端D0~D7端相连,另外三个I/O口分别与1602液晶的RS、R/W和E端相连。VL端为液晶显示偏压信号输入端,通过一个10 kΩ电位器调整电压以改变液晶屏的对比度,BLA、BLK是液晶屏的背光电源端。
图8-17 1602液晶显示器的驱动原理
8.3.3 1602液晶显示器的显示数据RAM
1602液晶显示器内部带了 80个字节的显示 RAM,用来存储发送的数据,其结构如图8-18所示。1602液晶显示器的显示数据RAM称为DDRAM,分为两行且地址是不连续的。
图8-18 DDRAM地址和显示的对应关系
第一行的地址是0x00H到0x27,第二行的地址从0x40到0x67,其中第一行0x00到0x0F是与液晶上第一行16个字符显示位置相对应的,第二行0x40到0x4F 是与第二行16个字符显示位置相对应的。而每行都多出来一部分,是为了显示移动字幕设置的。1602字符型液晶显示器是显示字符的,因此它与ASCII字符表是对应的。比如我们给0x00地址写一个“a”,也就是十进制的97,液晶的最左上方的那个小块就会显示一个字母a。
8.3.4 1602液晶显示器的字符发生器
1602液晶显示器的控制器内部有两种类型的字符发生器,一种是CGROM,其内部已经固化有字模库;另一种是CGRAM,用于保存用户自定义的图形。
1.CGROM
CGROM中内置了192个常用字符的字模,包含有阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码。CGROM中存储的字符和代码如图8-19所示。
表格的第一行列出了字符代码的高四位,第一列列出了字符代码的低四位,二者组合在一起就是一个完整的字符代码,用于对该字符的寻址。在1602的CGROM中,字符代码20H~7FH为标准的ASCII码,A0H~FFH为日文字符和希腊文字符,其余字符代码10H~1FH及80H~9FH没有定义。
从图8-19中可以看出,大写的英文字母“A”的代码高四位是“0100”,低四位是“0001”,组合在一起则是01000001B,即十六进制的41H。如果要在屏幕上显示字母“A”时,只需把“A”的字符代码41H发送至1602液晶模块,模块会自动把地址41H中的字符点阵数据取出并在屏幕上显示出来。
图8-19 1602液晶显示器的CGROM
2.CGRAM
1602液晶显示器提供了64字节的CGRAM,用于保存自定义的点阵图形,存储地址为00H~3FH。CGRAM 64字节的存储空间每8个为一组,总计可以存储8个5×8点阵的自定义图形。1602液晶显示器每行仅使用5位数据作为字符点阵,所以作为CGRAM字模库仅使用存储单元字节的低5位,而高3位虽然存在但并不作为字模数据使用。
在1602液晶显示器的字符发生器列表中,CGRAM与CGROM统一编址,字符代码00H~07H就是用户自定义的这8组字模库的访问代码,另外8个字符访问代码08H~0FH没有使用。自定义字符代码和CGRAM存储地址的对应关系见表8-4。
表8-4 自定义字符代码和CGRAM存储地址的对应关系
8.3.5 1602液晶显示器的工作时序
1.读操作
读操作的时序如图8-20所示。对1602液晶显示器的读操作分为读状态字和读数据两种,其引脚的逻辑关系如下:
图8-20 1602液晶显示器的读操作时序
(1)读状态字操作:RS=0,R/W=1,E=1。当E端由高电平向低电平跳变(下降沿)时,状态字会从液晶的数据总线上被读出。
(2)读数据操作:RS=1,R/W=1,E=1。当E端由高电平向低电平跳变(下降沿)时,数据会从液晶的数据总线上被读出。
2.写操作
写操作的时序如图8-21所示。对1602液晶显示器的写操作分为写指令和写数据两种,其引脚的逻辑关系如下:
图8-21 1602液晶显示器的写操作时序
(1)写指令操作:RS=0,R/W=0,E=1。当E端由高电平向低电平跳变(下降沿)时,指令会写入液晶显示模块。
(2)写数据操作:RS=1,R/W=0,E=1。当E端由高电平向低电平跳变(下降沿)时,数据会写入液晶显示模块。
8.3.6 1602液晶显示器的操作指令
对1602液晶显示器的操作是通过一系列的指令来完成的,这些指令主要有以下9个:
(1)读取状态字指令:该指令也称为检测忙信号命令,使用此命令可以读回1602液晶显示器自身的状态。
① BF:读/写允许位。置1时表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;清0时表示液晶显示器可以接收单片机发送来的数据或指令。
② AC6~AC0:读取地址计数器AC的内容。
(2)工作方式设置指令:该指令用于设定液晶显示器的工作状态。
工作方式设置指令:
① DL:设置液晶显示器与MCU的接口形式。该位置1时设定数据总线宽度为8位,即DB7~DB0有效,该位清0时数据总线宽度为4位,即DB7~DB4有效。
② N:设置显示字符的行数。该位置1时为两行字符,清0时为一行字符。
③ F:设置显示字符的字体。该位置1时为5×11点阵字符体,清0时为5×7点阵字符体。
(3)显示状态设置指令:该指令控制着画面、光标和闪烁的开与关。(www.chuimin.cn)
① D:画面显示状态位。该位置1时显示功能开启,清0时显示功能关闭。该指令仅影响显示屏的开关,并不影响显存中的数据。
② C:光标显示状态位。该位置1时显示光标,清0时不显示光标。
③ B:闪烁显示状态位。该位置1时光标闪烁,清0时光标不闪烁。
(4)输入方式设置指令:该指令用于设定每次输入1位数据后光标的移位方向,并且设定每次写入的1个字符是否移动。
① I/D:光标移动设定位。该位置1时写入新数据后光标右移,清0时写入新数据后光标左移。
② S:字符移动设定位。该位置1时写入新数据后显示屏整体右移1个字符,清0时写入新数据后显示屏不移动。
(5)清屏指令:该指令用于清除液晶显示器屏幕信息。
该指令的功能为清除屏幕信息,即将DDRAM的内容全部填入“空白”的ASCII码20H,将光标置为液晶显示屏的左上方,并将地址计数器AC的值清0。
(6)光标归位指令:将光标置于显示屏左上方。
该指令用于把光标移至显示屏的左上方,把地址计数器AC的值清0并保持DDRAM的内容不变。
(7)DDRAM地址设置指令:该指令用于设置DDRAM的访问地址。
该指令将7位的DDRAM地址写入地址指针计数器AC中,随后的读或写操作则是针对DDRAM中上述地址的读或写操作。
(8)光标或画面滚动设置指令:该指令设置光标和画面的特性。
① S/C:滚动对象的选择位。该位置1时画面滚动,清0时光标滚动。
② R/L:滚动方向的选择位。该位置1时向右滚动,清0时向左滚动。
画面滚动是将DDRAM每一行40个显示单元的第一个单元和最后一个单元连接起来,形成闭环式的滚动,其效果是将屏幕上两行显示内容同时向左或向右移动。光标滚动则是在整个DDRAM范围内,将AC指针计数器的值加1或减1,其效果是最初写入的字符不动,后续字符依次向左或向右写入。本条指令在执行后画面即开始变化,每执行一次画面就变化一次。
(9)CGRAM地址设置指令:该指令用于设置CGRAM的访问地址。
该指令用于将6位的CGRAM地址写入地址指针计数器AC内,随后的读或写操作则是针对CGRAM的读或写操作。
编程向导:初始化1602液晶显示器。
对1602液晶显示器的初始化,主要是完成对其基本功能的设置。为了简化操作,在实际使用时往往只向1602液晶显示器中写入命令或数据,而不检测忙信号,对1602液晶显示器的初始化操作可以参考以下步骤:
(1)写入指令38H,将1602液晶显示器设置为8位数据线、2行字符显示、5×7点阵。
(2)写入指令0x0F,将1602液晶显示器设置为显示功能开、有光标且光标闪烁。
(3)写入指令0x06,将1602液晶显示器设置为写入新数据后光标右移、显示屏不移动。
(4)写入指令0x01,清除液晶屏幕信息,将光标撤回液晶显示屏的左上方并且将地址计数器AC的值清零。
这里需要说明的是:上述前三条指令的执行速度都很快,大约在40 µs的时间内就可以完成,只有最后一条清屏指令用时较长,大约需要1.64 ms的时间,因此在使用这条指令时,要考虑加入适当的延时。
8.3.7 1602液晶显示器的编程应用
在Proteus中绘制好液晶显示的电路图,可参考图8-17所示的连接方法,在实际实验箱连接时要根据实验箱的实际电路进行连接,重点要明白电源线、控制线、数据线的连接。
【实训8.3】通用字符显示。将CGROM中内置的192个常用字符显示出来,并按照预先设计的方式产生移动等特殊效果,具体程序见代码清单。
程序运行后液晶屏上会有两行文字显示,显示的内容会以半秒钟的时间间隔向屏幕的左侧移动,具体状态如图8-22所示。如果此时液晶屏显示模糊,可以用调整RP1的电位器,直至液晶屏显示清晰为止。
图8-22 1602液晶显示器通用字符显示
【实训8.4】自定义字符显示。在1602液晶显示器上显示一个心形自定义字符,在初始化1602液晶显示器时关闭闪烁的光标。
1.定义心形字模
CGRAM可以存储用户自定义的字符信息,它本身是一个动态存储器,存入其中的字符在液晶屏掉电后会消失,所以程序在每次执行时需要先将字模数据调入,再通过固定的代码调用并显示出来。例如,我们要自定义一个心形字模,存储在0x00~0x07这组CGRAM里面,需要准备的数据如图8-23所示。
图8-23 心形字模
在向CGRAM中写入字模数据时,需要使用CGRAM地址设置指令,该指令的高2位已固定为“01”,只有后面的6位是地址数据。这样一个自定义字符的字模地址就表示为“01000000~01000111”8个,使用时先用地址设置指令将CGRAM地址写入地址指针计数器AC内,随后再用写数据指令将字模数据依次写入这8个存储单元中,即可将心形字模保存至CGRAM。
2.调用自定义字模
自定义字模调用时只需将与其地址对应的字符代码写入DDRAM中,即可在液晶屏上显示出该字符,CGRAM中的8个自定义字符代码如图8-24所示。
图8-24 CGRAM字符代码
以下程序代码用于在1602液晶显示器上显示一个心形自定义字符,在初始化1602液晶显示器时关闭闪烁的光标,具体程序见代码清单。
以上程序执行后,一个心形字符会在1602液晶屏幕的第一行第一个字符的位置上显示出来,具体状态如图8-25所示。
图8-25 1602液晶显示器自定义字符显示
有关单片机原理与应用 基于C语言的文章
目前在单片机市场上,8位单片机和32位的ARM嵌入式微处理器占据的市场份额达70%以上。在单片机市场中,代表性的产品有MCS-51系列产品,其中ATMEL公司的AT89C51/C52两个系列8位单片机在焊接领域应用较为广泛。1994年ATMEL公司以其E2PROM和Intel公司的80C31单片机核心技术进行交换,从而取得80C31核的使用权。......
2023-06-26
使用查询标志位的方法通过串行口发送C语言的经典语句“hello World!”,在PC上运行串口调试助手软件接收此消息并在屏幕上显示出来。单击“打开串口”按钮,这时会发现在串口调试助手的接收区有“hello World!”图9-29 串口调试助手向单片机发送数字单片机接收到来自PC发送的信息后,用LED灯显示该数字的状态,系统板的具体状态如图9-30所示。......
2023-11-17
图9-1 彩灯的远程控制原理图4.源程序设计若系统时钟信号频率为12 MHz,利用定时器T1作为波特率发生器,定时器T1工作在方式2,串行接口工作在方式1,甲机为发送机,乙机为接收机,均采用查询方式编程,源程序如下:5.Proteus仿真在绘制好的原理图中分别双击甲机和乙机,将Keil中生成的甲机hex文件和乙机hex文件分别添加到两片单片机中。图9-2 彩灯远程控制Proteus仿真运行结果8051系列单片机内部集成有一个通用异步收发器,简称UART或串行口。......
2023-11-17
如果将单片机的一个I/O口连接于K点,通过检测K点电压的高低,就可以确认是否有按键按下,这就是键盘检测的基本原理。基于中断方式工作的独立键盘的电路原理如图6-8所示。矩阵键盘能有效地节省I/O口,简化电路,非常适用于按键数量较多的应用。......
2023-11-17
其实,keil C51的调试模式间接地提供了程序延时的方法,下面通过实验来说明。因为Keil软件本身具备程序优化的功能,如果想在所有的代码位置都能设置断点,可以在工程选项里把优化等级设置为0,就是告诉Keil不要进行优化,如图4-29所示。......
2023-11-17
表4-3 C51支持的数据类型续表注:数据类型中加底色的部分为C51语言扩展的数据类型。C51语言中使用的数据类型包括C语言中标准的数据类型和C51语言扩展的数据类型。C51语言扩展的数据类型有位类型、可位寻址的位类型、特殊功能寄存器和16位特殊功能寄存器型等。另外,C51语言还支持由基本数据类型组成的数组、结构体、联合体和枚举类型等结构类型数据。......
2023-11-17
单片机的外部结构主要是指其I/O引脚、控制总线等。通常,将使用最少元器件搭建起的单片机运行电路称为单片机的最小运行系统。对于8051单片机而言,最小系统包括时钟电路和复位电路两个部分。......
2023-11-17
A.8 KBB.16 KBC.32 KBD.64 KB三、判断题1.8位二进制无符号数的大小范围是0~256。()2.CPU的时钟周期为振荡器频率的倒数。()4.计算机中机器码就是由若干位二进制数构成的。()5.51系列单片机的产品8051与8031的区别是:8031片内无ROM。()9.8位二进制数原码的大小范围是-127~+127。为什么在计算机系统中广泛使用二进制数?......
2023-11-17
相关推荐