完美版课件第五章单片机键盘及显示器接口技术汇编.ppt

上传人:知****量 文档编号:78674096 上传时间:2023-03-18 格式:PPT 页数:76 大小:3.20MB
返回 下载 相关 举报
完美版课件第五章单片机键盘及显示器接口技术汇编.ppt_第1页
第1页 / 共76页
完美版课件第五章单片机键盘及显示器接口技术汇编.ppt_第2页
第2页 / 共76页
点击查看更多>>
资源描述

《完美版课件第五章单片机键盘及显示器接口技术汇编.ppt》由会员分享,可在线阅读,更多相关《完美版课件第五章单片机键盘及显示器接口技术汇编.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第五章第五章 单片机键盘及显示器接口技术单片机键盘及显示器接口技术u键盘接口技术键盘接口技术uLEDLED显示技术显示技术uLCDLCD显示技术显示技术u实例实例 键盘向单片机输入数据、命令等功能,是人机对话的主要手段。键盘由若干按键按照一定规则组成,每一个按键实质上是一个按键开关。2图5-1 键盘开关及其行线波形5.1 5.1 键盘接口技术键盘接口技术 按键的识别:按键闭合与否,反应在行线输出电压上就是高电平或低电平,对行线电平高低状态检测,便可确认按键是否按下与松开。键盘接口设计应解决的问题:(1)开关状态的可靠输入:硬件去抖动、软件去抖动。软件去抖动的基本思想:在检测到有键按下时,该键所

2、对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms 的子程序后,检测该行线为高电平,说明按键确实已经松开。(2)键盘状态的监测方法:中断方式还是查询方式。如第四章例4-2(3)键盘编码方法:编码键盘和非编码键盘。编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由编码电路产生一个唯一对应的编码信息(如ASCII码)。非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序

3、转换成相应的编码信息。非编码键盘的速度较低,但结构简单的,并且通过软件能为某些键的重定义提供很大的方便。(4)键盘控制程序的编写。34【例4-2】在AT89C51单片机的P1口上接有8只LED。程序运行后,8只发光二极管流水点亮。按下按钮开关K1,低4位的LED和高4位的LED交替闪烁,闪烁5次后,8只发光二极管再次流水点亮。5#includesbit K1=P32;unsigned char code play8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;void delay(unsigned int i)unsigned int j;f

4、or(;i0;i-)for(j=0;j125;j+);void Alter()unsigned char n;for(n=0;n5;n+)P1=0 x0f;delay(500);P1=0 xf0;delay(500);void main()unsigned int a;for(;)for(a=0;a8;a+)delay(500);P1=playa;if(K1=0)Alter();6#includeunsigned char code play8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;void delay(unsigned int i)u

5、nsigned int j;for(;i0;i-)for(j=0;j125;j+);void main()unsigned int a;for(;)EA=1;EX0=1;IT0=1;for(a=0;a8;a+)delay(500);P1=playa;void int0()interrupt 0 using 1unsigned char n;for(n=0;n5;n+)P1=0 x0f;delay(500);P1=0 xf0;delay(500);5.1.1 独立式键盘接口技术 非编码键盘是利用按键直接与单片机相连接而成,常用在按键数量较少的场合。该类键盘,系统功能比较简单,需要处理任务较少,成

6、本低、电路设计简单。按下按键的键号信息通过软件来获取。非编码键盘常见的有:独立式键盘和矩阵式键盘两种结构。7图5-2 独立式键盘的接口电路(查询方式)u独立式键盘接口设计案例-查询方式 独立式键盘特点各键相互独立,每个按键各接一条I/O口线,通过检测I/O输入线的电平状态,易判断哪个按键被按下。图5-2为一独立式键盘,8个按键k1k8分别接到单片机的P1.0 P1.7引脚上,图中上拉电阻保证按键未按下时,保证对应I/O口线为稳定高电平。当某一按键按下时,对应I/O口线就变成低电平,与其他按键相连的I/O口线仍为高电平。因此,只需读入I/O口线状态,判别是否为低电平,就很容易识别出哪个键被按下。

7、可见独立式键盘优点是电路简单,各条检测线独立,识别按键号的软件编写简单。独立式键盘适于按键数目较少场合,如按键数目较多,要占用较多I/O口线。对图5-2所示独立式键盘,用查询方式实现键盘扫描,根据按下不同按键,对其进行处理。扫描程序如下:8【例5-1】单片机与4个独立按键k1k4及8个LED指示灯的一个独立式键盘。4个按键接在P1.0P1.3引脚,P3口接8个LED指示灯,控制LED指示灯亮与灭,原理电路见图5-24。当按下k1键,P3口8个LED正向(由上至下)流水点亮;按下k2键,P3口8个LED全部点亮;按下k3键,P3口8个LED全部熄灭;k4键按下,高、低4个LED交替点亮。由于本案

8、例中的4个按键分别对应4个不同的功能,且具有不同的按键值“keyval”,具体如下:按下K1按键时,keyval=1按下K2按键时,keyval=2按下K3按键时,keyval=3按下K4按键时,keyval=4本独立式键盘工作原理如下:(1)首先判断是否有按键按下。将接有4个按键的P1口低4位(P1.0P1.3)写入“1”,使P1口低4位为输入状态。然后读入低4位的电平,只要有一位不为“1”,则说明有键按下。读取方法:P1=0 xff;if(P1&0 xf0)!=0 x0f);/读P1口低4位按键值,按位“与”运算后结果非0 x0f,/表明低4位必有1位是“0”,说明有键按下(2)按键去抖动

9、。当判别有键按下时,调用软件延时子程序,延时约10ms后再进行判别,若按键确实按下,则执行相应的按键功能,否则重新开始进行扫描。(3)获得键值。确认有键按下时,可采用扫描方法,来判哪个键按下,并获取键值。1213u独立式键盘的中断方式 采用中断扫描方式独立式键盘,只有在键盘有按键按下时,才进行处理,接口电路见图5-3。当键盘中有键按下时,8输入与非门74LS30输出经过74LS04反相后向单片机外中断请求输入引脚INT0发出低电平中断请求信号,单片机响应中断,进入外部中断的中断函数,在中断函数中,判断按键是否真按下。如确实按下,则把标志keyflag置1,并得到按下按键键值,然后从中断返回,根

10、据键值跳向该键的处理程序。14图5-3 中断扫描方式的独立式键盘的接口电路15165.1.2 矩阵式键盘接口技术 矩阵式(也称行列式)键盘用于按键数目较多的场合,由行线和列线组成,按键位于行、列交叉点上。见图5-4,一个44的行、列结构可以构成一个16个按键的键盘,只需要一个8位的并行I/O口即可。如果采用88的行、列结构,可以构成一个64按键的键盘,只需要两个并行I/O口即可。很明显,在按键数目较多场合,矩阵式键盘要比独立式键盘节省较多I/O口线。图5-4 矩阵式(行列式)键盘的接口电路针对图5-4矩阵式键盘,查询式的键盘处理程序编制算法:1)先判有无键按下,即把所有行线P1.0P1.3均置

11、为低,然后检测各列线状态,若列线不全为高电平,则表示键盘中有键被按下;若所有列线列均为高电平,说明键盘中无键按下。2)在确认有键按下后,即可查找具体闭合键位置,其方法是依次将行线置为低电平,再逐行检查各列线的电平状态。若某列为低,则该列线与行线交叉处键就是闭合键。1819【例5-2】数码管显示44矩阵键盘键号。单片机的P1口的P1.0P1.7连接44矩阵键盘,矩阵中各键编号见图5-5。数码管显示由P0口控制,当44矩阵键盘中的某一按键按下时,数码管上显示对应键号。例如,1号键按下时,数码管显示“1”;E键按下时,数码管显示“E”等等。20图5-5 数码管显示44矩阵键盘键号的原理电路21 程序

12、说明:本例关键是如何获取键号。具体采用了逐行扫描,先驱动行P1.4=0,然后依次读入各列的状态,第1列对应的i=0,第2列对应的i=1,第3列对应的i=2,第4列对应的i=3。假设4号键按下,此时第2列对应的i=1,又L2=0,执行语句“if(L2=0)P0=dis i*4+1”后,i*4+1=5,从而查找到字型码数组dis 中的第5个元素,即显示“4”的段码“0 x99”,把段码“0 x99”送P0口驱动数码管显示“4”。一、LED显示器的结构与原理LED数码管:“8”字型,7段(不包括小数点)或8段(包括小数点),每段对应一个发光二极管,共阳极和共阴极两种,见图5-6。共阳极数码管的阳极连

13、接在一起,接+5V;共阴极数码管阴极连在一起接地。对于共阴极数码管,当某发光二极管阳极为高电平时,发光二极管点亮,相应段被显示。同样,共阳极数码管阳极连在一起,公共阳极接+5V,当某个发光二极管阴极接低电平时,该发光二极管被点亮,相应段被显示。5.2 LED显示技术5.2.1 七段LED显示器24图5-6 8段LED数码管结构及外形 为使LED数码管显示不同字符,要把某些段点亮,就要为数码管各段提供一字节的二进制码,即字型码(也称段码)。习惯上以“a”段对应字型码字节的最低位。各字符段码见表5-1。2526 如要在数码管显示某字符,只需将该字符字型码加到各段上即可。例如某存储单元中的数为“02

14、H”,想在共阳极数码管上显示“2”,需要把“2”的字型码“A4H”加到数码管各段。将欲显示字符的字型码作成一个表(数组),根据显示字符从表中查找到相应字型码,然后把该字型码输出数码管各个段上,同时数码管的公共端接+5V,此时在数码管上显示字符“2”。下面介绍单片机如何控制LED数码管显示字符。【例5-3】利用单片机控制一个8段LED数码管先循环显示单个偶数:0、2、4、6、8,再显示单个奇数:1、3、5、7、9,如此反复循环显示。28二、二、LEDLED显示器的显示方式显示器的显示方式两种显示方式:静态显示和动态显示。1.静态显示方式 无论多少位LED数码管,都同时处于显示状态。多位LED数码

15、管工作于静态显示方式时,各位共阴极(或共阳极)连接在一起并接地(或接+5V);每位数码管段码线(adp)分别与一个8位I/O口锁存器输出相连。如果送往各个LED数码管所显示字符的段码一经确定,则相应I/O口锁存器锁存的段码输出将维持不变,直到送入下一个显示字符段码。静态显示方式显示无闪烁,亮度较高,软件控制较易。图5-7为4位LED数码管静态显示电路,各数码管可独立显示,只要向控制各位I/O口锁存器送相应显示段码,该位就能保持相应的显示字符。这样在同一时间,每一位显示的字符可各不相同。静态显示方式占用I/O口端口线较多。图5-7电路,要占用4个8位I/O口(或锁存器)。如数码管数目增多,则需增

16、加I/O口数目。图5-7 4位LED静态显示的示意图【例5-4】单片机控制2只数码管,静态显示2个数字“27”。原理电路见图5-8。单片机用P0口与P1口,分别控制加到两个数码管DS0与DS1的段码,而共阳极数码管DS0与DS1的公共端(公共阳极端)直接接至+5V,因此数码管DS0与DS1始终处于导通状态。利用P0口与P1口带有的锁存功能,只需向单片机P0口与P1口分别写入相应的显示字符“2”和“7”的段码即可。由于一个数码管就占用一个I/O端口。如果数码管数目增多,则需增加I/O口,但软件编程要简单的多。参考程序如下:#include /包含8051单片机寄存器定义的头文件void main

17、(void)P0=0 xa4;/将数字2的段码送P0口 P1=0 xf8;/将数字7的段码送P1口 while(1)/无限循环 ;31图5-8 2位数码管静态显示的原理电路与仿真2.动态显示方式 显示位数较多时,静态显示所占的I/O口多,这时常采用动态显示。为节省I/O口,通常将所有显示器段码线相应段并联在一起,由一个8位I/O口控制,各显示位公共端分别由另一单独I/O口线控制。33图5-9 4位LED数码管动态显示示意图 图5-9是4位8段LED动态显示器电路示意图。其中单片机发出的段码占用1个8位I/O(1)端口,而位选控制使用I/O(2)端口中4位口线。动态显示就是单片机向段码线输出欲显

18、示字符的段码。每一时刻,只有1位位选线有效,即选中某一位显示,其他各位位选线都无效。每隔一定时间逐位轮流点亮各数码管(扫描方式),由于数码管余辉和人眼的“视觉暂留”作用,只要控制好每位数码管显示时间和间隔,则可造成“多位同时亮”的假象,达到同时显示效果。各位数码管轮流点亮的时间间隔(扫描间隔)应根据实际情况定。发光二极管从导通到发光有一定的延时,如果点亮时间太短,发光太弱,人眼无法看清;时间太长,产生闪烁现象,且此时间越长,占用单片机时间也越多。另外,显示位数增多,也将占用单片机大量时间,因此动态显示实质是以执行程序时间来换取I/O端口减少。下面是动态显示实例。34【例5-5】8只数码管,分别

19、滚动显示单个数字18。程序运行后,单片机控制左边第1个数码管显示1,其他不显示,延时之后,控制左边第2个数码管显示1,其他不显示,直至第8个数码管显示8,其他不显示,反复循环上述过程。本动态显示电路见图5-10,P0口输出段码,P2口输出扫描的位控码,通过由8个NPN晶体管的位驱动电路对8个数码管位控扫描。即使扫描速度加快,由于是虚拟仿真,数码管的余辉也不能像实际电路那样体现出来。如对本例实际硬件显示电路进行快速扫描,由于数码管余辉和人眼“视觉暂留”作用,只要控制好每位数码管显示的时间和间隔,则可造成“多位同时亮”假象,达到同时显示效果。但虚拟仿真做不到这一点。仿真运行下,只能是一位一位点亮显

20、示,不能看到同时显示效果,但本例使我们了解动态扫描显示实际过程。如采用实际硬件电路,用软件控制快速扫描,可看到“多位同时点亮”效果。图5-10 8只数码管分别滚动显示单个数字18参考程序如下:375.2.2 5.2.2 单片机控制单片机控制LEDLED点阵显示器点阵显示器 目前LED点阵显示器的应用非常广泛,在许多公共场合如商场、银行、车站、机场、医院随处可见。不仅能显示文字、图形,还能播放动画、图像、视频等信号。LED点阵显示器分为图文显示器和视频显示器,有单色显示,还有彩色显示。下面仅介绍单片机如何来控制单色LED点阵显示器的显示。一、一、LEDLED点阵显示器的结构与显示原理点阵显示器的

21、结构与显示原理 由若干个发光二极管按矩阵方式排列而成。阵列点数可分为57、58、68、88点阵;按发光颜色可分为单色、双色、三色;按极性排列可分为共阴极和共阳极。1.LED1.LED点阵结构点阵结构 以88LED点阵显示器为例,外形见图5-11,内部结构见图5-12,由64个发光二极管组成,且每个发光二极管是处于行线(R0R7)和列线(C0C7)之间交叉点上。图5-11 88 LED点阵显示器外形 图5-12 88LED点阵显示器(共阴极)的结构2.LED2.LED点阵显示原理点阵显示原理 显示一个字符?字符由一个个点亮的LED所构成。由图5-12点亮点阵中一个发光二极管条件:对应行为高电平,

22、对应列为低电平。如在很短时间内依次点亮很多个发光二极管,LED点阵就可显示一个稳定字符、数字或其他图形。控制LED点阵显示器显示,实质就是控制加到行线和列线上编码,控制点亮某些发光二极管(点),从而显示出由不同发光点组成的各种字符。1616 LED点阵显示器的结构与88LED点阵显示模块内部结构及显示原理是类似的,只不过行和列均为16。1616是由4个88 LED点阵组成,且每个发光二极管也是放置在行线和列线的交叉点上,当对应某一列置0电平,某一行置1电平时,该发光二极管点亮。下面以显示字符“子”为例,见图5-13。图5-13 1616 LED点阵显示器显示字符“子”显示过程如下:先给LED点

23、阵的第1行送高电平(行线高电平有效),同时给所有列线送高电平(列线低电平有效),从而第1行发光二极管全灭;延时一段时间后,再给第2行送高电平,同时给所有列线送“1100 0000 0000 1111”,列线为0的发光二极管点亮,从而点亮10个发光二极管,显示出汉字“子”的第一横;延时一段时间后,再给第3行送高电平,同时加到列线的编码为“1111 1111 1101 1111”,点亮1个发光二极管;延时一段时间后,再给第16行送高电平,同时给列线送“1111 1101 1111 1111”,显示出汉字“子”的最下面的一行,点亮1个发光二极管。然后再重新循环上述操作,利用人眼视觉暂留效应,一个稳定

24、字符“子”显示出来,见图5-13。二、二、控制控制161616 LED16 LED点阵显示屏的案例点阵显示屏的案例 单片机控制1616点阵显示屏显示字符案例。【例5-6】如图5-14,利用单片机及 74LS154(4-16译码器)、74LS07、1616 LED点阵显示屏来实现字符显示,编写程序,循环显示字符“电子技术”。图中1616 LED点阵显示屏16行行线R0R15电平,由P1口低4位经4-16译码器74HC154的16条译码输出线L0L15经驱动后的输出来控制。16列列线C0C15的电平由P0口和P2口控制。剩下问题是如何确定显示字符的点阵编码,以及控制好每一屏逐行显示的扫描速度(刷新

25、频率)。图5-14 控制1616LED点阵显示器(共阴极)显示字符/汉字汉字“电电”16161616点阵列码点阵列码/汉字汉字“子子”16161616点阵列码点阵列码/汉字汉字“技技”16161616点阵列码点阵列码/汉字汉字“术术”的的16161616点阵的列码点阵的列码 扫描显示时,单片机通过P1口低4位经4-16译码器74HC154的16条译码输出线L0L15经驱动后的输出来控制,逐行为高电平,来进行扫描。由P0口与P2口控制列码的输出,从而显示出某行应点亮的发光二极管。以显示汉字“子”为例,说明显示过程。由上面程序可看出,汉字“子”的前3行发光二级管的列码为“0 xFF,0 xFF,0

26、 x03,0 xF0,0 xFF,0 xFB,”,第一行列码为0 xff,0 xff”,由P0口与P2口输出,无点亮的发光二极管。第二行列码为“0 x03,0 xf0”,通过P0口与P2口输出后,由图5-13看出,0 x03加到列线C7 C0的二进制编码为“0000 0011”,这里要注意加到8个发光二极管上的对应位置。按照图5-12和图5-14连线关系,加到从左到右发光二极管应为C0 C7的二进制编码为“1100 0000”,即最左边的2个发光二极管不亮,其余的6个发光二极管点亮。同理,P2口输出的0 xF0加到列线C15 C8的二进制编码为“1111 0000”,即加到C8 C15的二进制

27、编码为“0000 1111”,所以第二行的最右边的4个发光二极管不亮,如图5-13所示。对应通过P0口与P2口输出加到第3行16个发光二极管的列码为“0 xFF,0 xFB,”,对应于从左到右的C0 C15的二进制编码为“1111 1111 1011 1111”,从而第3行左边数第11个发光二极管被点亮,其余均熄灭,如图5-13所示。其余各行点亮的发光二极管,也是由1616点阵的列码来决定。5.3 LCD5.3 LCD显示技术显示技术 液晶显示器(Liquid Crystal Display,LCD)具有省电、体积小、抗干扰能力强等优点,LCD显示器分为字段型、字符型和点阵图形型。(1)字段型

28、。以长条状组成字符显示,主要用于数字显示,也可用于显示西文字母或某些字符,广泛用于电子表、计算器、数字仪表中。(2)字符型。专门用于显示字母、数字、符号等。一个字符由57或510的点阵组成,在单片机系统中已广泛使用。(3)点阵图形型。广泛用于图形显示,如笔记本电脑、彩色电视和游戏机等。它是在平板上排列的多行列的矩阵式的晶格点,点大小与多少决定了显示的清晰度。5.3.1 LCD 16025.3.1 LCD 1602液晶显示模块液晶显示模块 最常见的字符型液晶显示模块,单片机系统中常用。由于LCD显示面板较为脆弱,厂商已将LCD控制器、驱动器、RAM、ROM和液晶显示器用PCB连接到一起,称为液晶

29、显示模块(LCD Module,LCM),用户只需购买现成的液晶显示模块即可。单片机只需向LCD显示模块写入相应命令和数据就可显示需要的内容。1字符型液晶显示模块LCD 1602特性与引脚 字符型LCD模块常用的有16字1行、16字2行、20字2行、20字4行等模块,型号常用1602、1604、2002、2004来表示,其中为商标名称,16代表液晶显示器每行可显示16个字符,02表示显示2行。LCD1602内部具有字符库ROM(CGROM),能显示出192个字符(57点阵),如图5-15所示。图5-15 ROM字符库的内容 由字符库可看出显示器显示的数字和字母部分代码,恰是ASCII码表中编码

30、。单片机控制LCD 1602显示字符,只需将待显示字符的ASCII码写入内部的显示,用数据存储器(DDRAM)内部控制电路就可将字符在显示器上显示出来。例如,显示字符“A”,单片机只需将字符“A”的ASCII码41H写入DDRAM,控制电路就会将对应的字符库ROM(CGROM)中的字符“A”的点阵数据找出来显示在LCD上。模块内有80字节数据显示RAM(DDRAM),除显示192个字符(57点阵)的字符库ROM(CGROM)外,还有64字节的自定义字符RAM(CGRAM),用户可自行定义8个57点阵字符。LCD 1602工作电压4.55.5V,典型5V,工作电流2mA。标准的14引脚(无背光)

31、或16个引脚(有背光)的外形及引脚分布如图5-16所示。(a)LCD 1602的外形 (b)LCD 1602的引脚图5-16 LCD 1602外形及引脚 引脚包括8条数据线、3条控制线和3条电源线,见表5-2。通过单片机向模块写入命令和数据,就可对显示方式和显示内容做出选择。2LCD1602字符的显示及命令字 显示字符首先要解决待显示字符的ASCII码产生。用户只需在C51程序中写入欲显示的字符常量或字符串常量,C51程序在编译后会自动生成其标准的ASCII码,然后将生成的ASCII码送入显示用数据存储器DDRAM,内部控制电路就会自动将该ASCII码对应的字符在LCD1602显示出来。让液晶

32、显示器显示字符,首先对其进行初始化设置,还必须对有、无光标、光标移动方向、光标是否闪烁及字符移动方向等进行设置,才能获得所需显示效果。对LCD 1602的初始化、读、写、光标设置、显示数据的指针设置等,都是单片机向LCD 1602写入命令字来实现。命令字见表5-3。表5-3中11个命令功能说明如下:命令1:清屏,光标返回地址00H位置(显示屏的左上方)。命令2:光标返回到地址00H位置(显示屏的左上方)。命令3:光标和显示模式设置。I/D地址指针加1或减1选择位。I/D=1,读或写一个字符后地址指针加1;I/D=0,读或写一个字符后地址指针减1。S屏幕上所有字符移动方向是否有效的控制位。S=1

33、当写入一字符时,整屏显示左移(I/D=1)或右移(I/D=0);S=0整屏显示不移动。命令4:显示开/关及光标设置。D屏幕整体显示控制位,D=0关显示,D=1开显示。C光标有无控制位,C=0无光标,C=1有光标。B光标闪烁控制位,B=0不闪烁,B=1闪烁。命令5:光标或字符移位。S/C光标或字符移位选择控制位。S/C=1移动显示的字符,S/C=0移动光标。R/L移位方向选择控制位。0:左移,1:右移,命令6:功能设置命令。DL传输数据的有效长度选择控制位。1:8位数据线接口;0:4位数据线接口。N显示器行数选择控制位。0:单行显示,1:两行显示。F字符显示的点阵控制位。0:显示57点阵字符,1

34、:显示510点阵字符。命令7:CGRAM地址设置。命令8:DDRAM地址设置。LCD内部有一个数据地址指针,用户可通过它访问内部全部80字节的数据显示RAM。命令格式为:80H+地址码。其中,80H为命令码命令9:读忙标志或地址。BF忙标志。BF=1表示LCD忙,此时LCD不能接受命令或数据;BF=0表示LCD不忙。命令10:写数据。命令11:读数据。例如,将显示模式设置为“162显示,57点阵,8位数据接口”,只需要向1602写入光标和显示模式设置命令(命令3)“00111000B”,即38H即可。再如,要求液晶显示器开显示,显示光标且光标闪烁,那么根据显示开关及光标设置命令(命令4),只要

35、令D=1,C=1和B=1,也就是写入命令“00001111B”,即0FH,就可实现所需的显示模式。3字符显示位置的确定 LCD1602内部有80字节DDRAM,与显示屏上字符显示位置一一对应,图5-17给出LCD1602显示RAM地址与字符显示位置的对应关系。当向DDRAM的00H0FH(第1行)、40H4FH(第2行)地址的任一处写数据时,LCD立即显示出来,该区域也称为可显示区域。而当写入10H27H或50H67H地址处时,字符不会显示出来,该区域也称为隐藏区域。如果要显示写入到隐藏区域的字符,需要通过字符移位命令(命令5)将它们移入到可显示区域方可正常显示。需说明的是,在向DDRAM写入

36、字符时,首先要设置DDRAM定位数据指针,此操作可通过命令8完成。图5-17 LCD内部显示RAM的地址映射图4LCD1602的复位LCD1602上电后复位状态为:u 清除屏幕显示u 设置为8位数据长度,单行显示,57点阵字符。u 显示屏、光标、闪烁功能均关闭。u 输入方式为整屏显示不移动,I/D=1。LCD1602的一般初始化设置为:u 写命令38H,即显示模式设置(162显示,57点阵,8位接口)。u 写命令08H,显示关闭。u 写命令01H,显示清屏,数据指针清0。u 写命令06H,写一个字符后地址指针加1。u 写命令0CH,设置开显示,不显示光标。需说明,在进行上述设置及对数据进行读取

37、时,通常需要检测忙标志位BF,如果为1,则说明忙,要等待;如果BF为0,则可进行下一步操作。5LCD1602基本操作 LCD慢显示器件,所以在写每条命令前,一定要查询忙标志位BF,即是否处于“忙”状态。如LCD正忙于处理其他命令,就等待;如不忙,则向LCD写入命令。标志位BF连接在8位双向数据线的D7位上。如果BF=0,表示LCD不忙;如果BF=1,表示LCD处于忙状态,需等待。LCD1602的读写操作规定见表5-4。图5-18 单片机与LCD1602接口电路由图5-18可看出,LCD1602的RS、R/W和E这3个引脚分别接在P2.0、P2.1和P2.2引脚,只需通过对这3个引脚置“1”或清

38、“0”,就可实现对LCD1602的读写操作。具体来说,显示一个字符的操作过程为“读状态写命令写数据自动显示”。66(1)读状态 是对LCD1602 的“忙”标志BF进行检测,如果BF=1,说明LCD处于忙状态,不能对其写命令;如果BF=0,则可写入命令。检测忙标志的函数具体如下:void check_busy(void)/检查忙标志函数uchar dt;dodt=0 xff;/dt为变量单元,初值为0 xff E=0;RS=0;/按照表5-4读写操作规定RS=0,E=1时才可以读忙标志RW=1;E=1;dt=out;/out为P0口,P0口的状态送入dt中 while(dt&0 x80);/如

39、果忙标志BF=1,继续循环检测,等待BF=0E=0;/BF=0,LCD不忙,结束检测函数检测P0.7脚电平,即检测忙标志BF,如=1,说明LCD处于忙状态,不能执行写命令;=0,可以执行写命令。(2)写命令写命令函数如下:void write_command(uchar com)/写命令函数check_busy();E=0;/按规定RS和E同时为0时可以写入命令RS=0;RW=0;out=com;/将命令com写入P0口E=1;/按规定写命令时,E应为正脉冲,即正跳变,所以前面先置E=0_nop_();/空操作1个机器周期,等待硬件反应E=0;/E由高电平变为低电平,LCD开始执行命令dela

40、y(1);/延时,等待硬件响应67(3)写数据 将要显示字符的ASCII码写入LCD中的数据显示RAM(DDRAM),例如将数据“dat”,写入LCD模块,写数据函数如下:void write_data(uchar dat)/写数据函数check_busy();/检测忙标志BF=1则等待,若BF=0,则可对LCD操作E=0;/按规定写写数据时,E应为正脉冲,所以先置E=0RS=1;/按规定RS=1和RW=0时可以写入数据RW=0;out=dat;/将数据dat从P0口输出,即写入LCD E=1;/E产生正跳变_nop_();/空操作,给硬件反应时间E=0;/E由高电平变为低电平,写数据操作结束

41、delay(1);(4)自动显示 数据写入LCD模块后,自动读出字符库ROM(CGROM)中的字型点阵数据,并将字型点阵数据送到液晶显示屏上显示,该过程是自动完成的。686.LCD 1602初始化 使用LCD 1602前,需对其显示模式进行初始化设置,初始化函数如下:void LCD_initial(void)/液晶显示器初始化函数write_command(0 x38);/写入命令0 x38:两行显示,57点阵,8位数据_nop_();/空操作,给硬件反应时间write_command(0 x0C);/写入命令0 x0C:开整体显示,光标关,无黑块_nop_();/空操作,给硬件反应时间wr

42、ite_command(0 x06);/写入命令0 x06:光标右移_nop_();/空操作,给硬件反应时间write_command(0 x01);/写入命令0 x01:清屏delay(1);注意:在函数开始处,由于LCD尚未开始工作,所以不需检测忙标志,但是初始化完成后,每次再写命令、读写数据操作,均需检测检测忙标志。6970【例5-7】用单片机驱动字符型液晶显示器LCD1602,使其显示两行文字:“Welcom”与“Harbin CHINA”。在Proteus中,LCD1602的仿真模型采用LM016L。1LM016L引脚及特性 LM016L的原理符号及引脚见图5-20。与LCD1602引脚信号相同。引脚功能如下:(1)数据线D7D0;(2)控制线(3根:RS、RW、E);(3)两根电源线(VDD、VEE)。(4)地线Vss;LM016L的属性设置见图5-21,具体如下:(1)每行字符数为16,行数为2;(2)时钟为250kHz;(3)第1行字符的地址为80H8FH;(4)第2行字符的地址为C0HCFH。7172 图5-20 字符型液晶显示器LCD引脚 图5-21 字符型液晶显示器LM016L的属性设置747576

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁