《51单片机的接口与应用.ppt》由会员分享,可在线阅读,更多相关《51单片机的接口与应用.ppt(164页珍藏版)》请在三一文库上搜索。
1、第6章 MCS51单片机的接口与应用,6.1 按键、键盘及其接口 6.2 显示及显示器接口 6.3 A/D转换器接口 6.4 D/A转换器接口 6.5 行程开关、晶闸管、 继电器与单片机的接口,6.1 按键、键盘及其接口,6.1.1 键输入过程与软件结构,图6.1 MCS51单片机键输入过程,6.1.2 键盘接口和键输入软件中应解决的几个问题 1消除键抖动,图6.3 消除键抖动电路,2键编码及键值,(1) 用键盘连接的I/O线的二进制组合表示键码。例如用4行、4列线构成的16个键的键盘,可使用一个8位I/O口线的高、低4位口线的二进制数的组合表示16个键的编码,如图6.4(a)所示。各键相应的
2、键值为88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H。这种键值编码软件较为简单直观,但离散性大,不便安排散转程序的入口地址。,(2) 顺序排列键编码。如图6.4(b)所示。这种方法,键值的形成要根据I/O线的状态作相应处理。键码可按下式形成: 键码=行首键码+列号,图6.4 行列式键盘的编码与键值,(a) 二进制组合编码;(b) 顺序排列编码,3键盘的监测方法 对于计算机应用系统,键盘扫描只是CPU工作的一部分,键盘处理只是在有键按下时才有意义。对是否有键按下的信息输入方式有中断方式与查询方式两种。,6.1.3 独
3、立式按键 1独立式按键接口结构,图6.5 独立式按键的接口电路示意图 (a) 中断方式;(b) 查询方式,2独立式按键的软件结构 下面是查询方式的键盘程序。K0K7为功能程序入口地址标号,其地址间隔应能容纳JMP指令字节,PROM0PROM7分别为每个按键的功能程序。设I/O为P1口。,START:MOV A,#0FFH ; MOV P1,A ;置P1口为输入状态 MOV A,P1 ;键状态输入 JNB ACC.0,K0 ;检测0号键是否按下,按下转 JNB ACC.1,K1 ;检测1号键是否按下,按下转,JNB ACC.2,K2 ;检测2号键是否按下,按下转 JNB ACC.3,K3 ;检测
4、3号键是否按下,按下转 JNB ACC.4,K4 ;检测4号键是否按下,按下转 JNB ACC.5,K5 ;检测5号键是否按下,按下转 JNB ACC.6,K6 ;检测6号键是否按下,按下转 JNB ACC.7,K7 ;检测7号键是否按下,按下转 JMP START ;无键按下返回,再顺次检测 K0:AJMP PROM0 K1:AJMP PROM1 K7:AJIMP PROM7,;入口地址表,6.1.4 行列式键盘 行列式键盘又叫矩阵式键盘。用I/O口线组成行、列结构,按键设置在行列的交点上。例如44的行列结构可组成16个键的键盘。因此,在按键数量较多时,可以节省I/O口线。 1行列式键盘的接
5、口 行列式键盘的接口方法有许多,例如直接接口于单片机的I/O口上;利用扩展的并行I/O接口;用串行口扩展并行I/O口接口;利用一种可编程的键盘、显示接口芯片8279进行接口等。其中,利用扩展的并行I/O接口方法方便灵活,在单片机应用系统中比较常用。,图6.6 8155扩展I/O口组成的行列式键盘,2键盘工作原理 按键设置在行、列线的交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接+5 V,被箝位在高电平状态。 对键盘的工作过程可分两步:第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。 检测键盘上有无键按下可采用查询工作方式、定时扫描工作方式和中断工作方式。,
6、1) 查询工作方式 键盘中有无键按下是由列线送入全扫描字,读入行线状态来判别的。其方法是:PA口输出00H,即所有列线置成低电平,然后将行线电平状态读入累加器A中。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为“1“。 键盘中哪一个键按下是由列线逐列置低电平后,检查行输入状态,称为逐列扫描。其方法是:从PA0开始,依次输出“0“,置对应的列线为低电平,然后从PC口读入行线状态,如果全为“1“,则所按下之键不在此列;如果不全为“1“,则所按下的键必在此列,而且是与0电平行线相交的交点上的那个键。 为求取键码,在逐列扫描时,可用计数器记录下当前扫描列的列号,然后用行线值为“0
7、“的行首键码加列号的办法计算。,键盘扫描子程序如下: KEY1:ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下时,(A) 0转消抖延时 AJMP KEY1 ;无键按下返回 LK1:ACALL TM12S ;调12 ms延时子程序 ACALL KS1 ;查有无键按下,若有则真有键按下 JNZ LK2 ;键(A) 0逐列扫描 AJMP KEY1 ;不是真有键按下,返回 LK2:MOV R2,#0FEH ;初始列扫描字(0列)送入R2 MOV R4,#00H ;初始列(0列)号送入R4,LK4:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,R2
8、 ;列扫描字送至8155PA口 MOVX DPTR,A INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;从8155 PC口读入行状态 JB ACC.0,LONE ;查第0行无键按下,转查第1行 MOV A,#00H ;第0行有键按下,行首键码#00HA AJMP LKP ;转求键码 LONE:JB ACC.1,LTWO ;查第1行无键按下,转查第2行 MOV A,#08H ;第1行有键按下,行首键码#08HA AJMP LKP ;转求键码,LTWO:JB ACC.2,LTHR ;查第2行无键按下,转查第3行 MOV A,#10H ;第2行有键按下,行
9、首键码#10HA AJMP LKP ;转求键码 LTHR:JB ACC.3,NEXT ;查第3行无键按下,转该查下一列 MOV A,#18H ;第3行有键按下,行首键码#18HA LKP:ADD A,R4 ;求键码,键码=行首键码+列号 PUSH ACC ;键码进栈保护 LK3:ACALL KS1 ;等待键释放 JNZ LK3 ;键未释放,等待 POP ACC ;键释放,键码A RET ;键扫描结束,出口状态(A)=键码,NEXT:INC R4 ;准备扫描下一列,列号加1 MOV A,R2 ;取列号送累加器A JNB ACC.7,KEND ;判断8列扫描否?扫描完返回 RL A ;扫描字左移一
10、位,变为下一列扫描字 MOV R2,A ;扫描字送入R2 AJMP LK4 ;转下一列扫描 KEND:AJMP KEY1 KS1:MOV DPTR,#7F01H ;DPTR指向8155PA口 MOV A,#00H ;全扫描字A MOVX DPTR,A ;全扫描字送往8155PA口,INC DPTR ;DPTR指向8155PC口 INC DPTR MOVX A,DPTR ;读入PC口行状态 CPL A ;变正逻辑,以高电平表示有键按下 ANL A,#0FH ;屏蔽高4位,只保留低4位行线值 RET ;出口状态:(A)0时有键按下 TM12ms:MOV R7,#18H ;延时12 ms子程序 TM
11、: MOV R6,#0FFH TM6 : DJNZ R6,TM6 DJNZ R7,TM RET,2) 定时扫描工作方式,定时10ms, KM:消抖标志; KP:键处理标志。,3) 中断工作方式 计算机应用系统工作时,并不经常需要键输入。但无论是查询工作方式还是定时扫描工作方式,CPU经常处于空扫描状态。为了提高CPU的效率,可采用中断工作方式。这种工作方式是当键盘上有键按下时,向CPU发一个中断请求信号,CPU响应中断后,在中断服务程序中扫描键盘,执行键功能程序。中断请求信号的接口电路可参考图6.5(a)。中断服务程序中应完成键识别、消除抖动、排除多次执行键功能操作等功能,可参考查询工作方式键
12、盘程序。,6.2 显示及显示器接口,6.2.1 LED显示器结构与原理,图6.9 七段显示块管脚与结构图,表6.1 七段LED的段选码,6.2.2 LED显示器与显示方式,图6.10 N位LED显示器静态显示方式电路,1LED静态显示方式,LED工作在静态显示方式下,共阴极接地或共阳极接+5 V;每一位的段选线(ag、dp)与一个8位并行I/O口相连,如图6.10所示。该图表示了一个4位静态LED显示器电路,显示器的每一位可独立显示,只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。由于每一位由一个8位输出口控制段选码,故在同一时刻各位可以显示不同的字符。 N位静态显示器要求有N
13、8根I/O口线,占用I/O口线较多。故在位数较多时往往采用动态显示方式。,2LED动态显示方式,图6.11 8位LED动态显示器电路,6.2.3 LED显示器接口,1硬件译码显示器接口,图6.12 MC14495内部逻辑与引脚图,图6.13 使用MC14495的多位LED静态显示接口,2软件译码显示器接口,图6.14 通过扩展8155 I/O口控制的8位LED动态显示接口,3动态显示程序设计,DISPLAY:MOV A,#00000011B ;8155初始化 MOV DPTR,#7F00H ;使DPTR指向8155控制寄存器端口 MOVX DPTR,A MOV R0,#78H ;动态显示初始化
14、,使R0指向缓冲区首址 MOV R3,#7FH ;首位位选字送R3 MOV A,R3 ; LD0:MOV DPTR,#7F01H ;使DPTR指向PA口 MOVX DPTR,A ;选通显示器低位(最右端一位) INC DPTR ;使DPTR指向PB口,MOV A,R0 ;读要显示数 ADD A,#0DH ;调整距段选码表首的偏移量 MOVC A,A+PC ;查表取得段选码 MOVX DPTR,A ;段选码从PB口输出 ACALL DL1 ;调用1 ms延时子程序 INC R0 ;指向缓冲区下一单元 MOV A,R3 ;位选码送累加器A JNB ACC.0,LD1 ;判断8位是否显示完毕,显示完
15、返回 RR A ;未显示完,把位选字变为下一位选字 MOV R3,A ;修改后的位选字送R3 AJMP LD0 ;循环实现按位序依次显示,LD1:RET DSEG:DB 3FH,06H,5BH;4FH,66H,6DH,7DH ;段码表 DB 07H,7FH,6FH,77H,7CH,39H,5EH,79H DL1:MOV R7,#02H ;延时子程序 DL: MOV R6,#0FFH DL0:DJNZ R6,DL6 DJNZ R7,DL RET,6.2.4 键盘、显示器组合接口,1键盘、显示器组合接口电路,图6.15是一个采用8155并行扩展口构成的键盘、显示器组合接口电路。图中设置了32个键。
16、如果多使用PC口线,可以增加按键,最多可达88=64个键。可根据需要进行设置。 LED显示器采用共阴极。段选码由8155 PB口提供,位选码由PA口提供。键盘的列输出由PA口提供,与显示器的位选输出公用,行输入由PC0PC3提供。显然,因为键盘与显示器公用了PA口,比单独接口节省了一个I/O口。,图6.15 8155扩展I/O口的键盘、显示器组合接口,2软件设计 LED采用动态显示、软件译码,键盘采用逐列扫描查询工作方式。由于键盘与显示做成一个接口电路,因此在软件中合并考虑键盘查询与动态显示,键盘消抖的延时子程序可用显示子程序替代。 相应的程序如下:,KD1:MOV A,#03H ;初始化81
17、55PA、PB口为基 本输出,PC口为输入 MOV DPTR,#7F00H MOVX DPTR,A,KEY1:ACALL KS1 JNZ LK1 ACALL DISPLAY ;调用显示子程序实现延时,防止抖动引起按键拒认 AJMP KEY1 ;延时后再检测键盘 LK1:ACALL DISPLAY ;调用两次显示实现延时,防止抖动引起误处理 ACALL DISPLAY ACALL KS1 JNZ LK2 ACALL DISPLAY AJMP KEY1,LK2:MOV R2,#0FEH MOV R4,#00H LK4:MOV DPTR,#7F01H MOV A,R2 MOVX DPTR,A INC
18、 DPTR INC DPTR MOVX A,DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP,LONE:JB ACC.1,LTWO MOV A,#08H AJMP LKP LTWO:JB ACC.2,LTHR MOV A,#10H AJMP LKP LHR: JB ACC.3,NEXT MOV A,#18H LKP: ADD A,R4 PUSH ACC,LK3:ACALL DISPLAY ACALL KS1 JNZ LK3 POP ACC RET NEXT:INC R4 MOV A,R2 JNB ACC.7,KEND RL A MOV R2,A AJMP LK4 K
19、END:AJMP KEY1,KS1: MOV DPTR,#7F01H MOV A,#00H MOVX DPTR,A INC DPTR INC DPTR MOVX A,DPTR CPL A ANL A,#0FH RET DISPLAY:见6.2.3节8155扩展动态扫描子程序。,6.2.5 液晶显示器概述 液晶显示器是一种低功耗显示器件, 具有显示内容丰富、 体积小、 重量轻、 寿命长、 使用方便、 安全省电等优点, 在计算器、 万用表、 袖珍式仪表和低功耗微机应用系统中得到广泛使用。,1. 液晶显示器的工作原理 2. 液晶显示器的主要技术参数 3. 液晶显示器的分类,6.2.6 字符型液晶显示
20、模块LCM的组成与原理 1. 液晶显示模块LCM简介 液晶显示器件是一种高新技术的基础元器件。 虽然其应用已很广泛, 但对许多人来说, 使用、 装配时仍感到困难, 特别是点阵液晶显示器件, 更是让使用者无从下手, 而特殊的连接方式和所需的专用设备也非人人了解和具备。 因此, 将液晶显示器件与控制、 驱动集成电路装在一起, 形成一个功能部件, 用户只需用传统工艺即可将其装配成一个整体系统, 这样就形成了实际应用中的液晶显示模块。,2. 通用液晶显示模块LCM的分类 实际使用中的通用液晶显示模块主要有通用段式液晶显示模块、 通用段式液晶显示屏、 点阵字符型液晶显示模块、 点阵图形液晶显示模块等几种
21、。 通用段式液晶显示模块一般做成多个8段数码位和一些通用的提示符, 使用比较简单, 成本较低, 一般用于数字化仪表。,通用段式液晶显示屏本身不带控制器和驱动电路, 显示内容做成比较简单的数码位, 相对成本较低, 必须使用具有液晶驱动能力的电路, 一般用于电子产品, 如电话机、 计算器等。 点阵字符型液晶显示模块可显示西文字符、 数字、 符号等, 显示内容比较丰富, 字符是由57或511点阵块实现的, 但无法显示汉字和复杂图形。 点阵字符型液晶显示模块的通用性好, 一方面是它能适用各种领域, 另一方面是不同厂家、 不同型号的模块所用控制器相同或相互兼容, 主要区别仅是可显示字符数、 屏幕大小、
22、点阵大小不同, 使用方法和软件基本相同。,点阵图形液晶显示模块可以混合显示西文字符、 符号、 汉字、 图形等, 灵活性好, 一般用于要求显示汉字、 图形、 人机交互界面等内容复杂的仪器设备。 不同厂家、 不同型号的点阵图形液晶显示模块所使用的控制器可能不同, 因而相应的接口电路、 接口特性、 指令系统也有所不同, 使用时除需选择点阵数、 尺寸外, 还要注意所选控制器的型号。 从上面的介绍可看出, 不同的液晶显示模块其显示性能和显示控制是有较大区别的, 应用中应根据不同的显示要求进行灵活选取。 本书仅以点阵字符型液晶显示模块为例, 介绍其原理、 组成和应用。,3. 字符型液晶显示模块LCM的组成
23、与工作原理 1) 字符型液晶显示模块LCM的组成 点阵字符型液晶显示模块包括液晶显示器件、 控制器、 字符发生器、 译码驱动器等部分, 可以直接与单片机接口或者挂接在其总线上, 接口电路设计较为简单。 控制器和译码驱动器对液晶显示模块进行显示驱动控制, 一般将二者组合在一起, 做成专用集成电路。 字符发生器可提供常见的192个字符库, 包括英文大小写字母、 阿拉伯数字、 特殊字符或符号, 固化在其内部ROM中, 有时还可根据用户需要内置RAM, 由用户自行设计字符和符号, 进行字符扩充。,2) 字符型液晶显示模块LCM的工作原理 在字符型液晶显示模块中, 字符发生器产生的点阵字符模块是由57、
24、 58或511的一组组点阵像素排列而成的, 相邻位间有一定的间隔, 相邻行间也有一定的间隔, 所以不能显示图形。 在点阵图形液晶显示模块中, 其点阵像素连续排列, 行和列在排布中均没有空隔, 因而可以显示连续、 完整的图形和汉字。,字符型液晶显示模块在显示字符时, 被显示的每个字符都有一个对应的十六进制代码, 液晶显示模块从处理器得到此代码, 并把它存储到显示数据RAM中, 字符发生器根据此代码产生相应的点阵图形。 代表字符在液晶显示屏上位置的地址是通过数据总线, 由微处理器送到液晶显示模块的指令寄存器中, 每个字符代码送入液晶显示模块以后, 液晶显示模块将显示地址自动加1或减1。 使用一些指
25、令, 可以使液晶显示模块实现清除显示, 光标恢复初始位置, 开/关显示及光标、 闪烁字符、 移动光标等功能。 液晶显示模块可以采用上电复位, 也可以采用软件编程的方法来复位。,6.2.7 字符型液晶显示模块LCM的引脚及说明 字符型液晶显示模块的应用很广泛, 在电子表、 单片机应用系统、 传真机、 电动玩具中经常使用这类液晶显示器。 在实际使用中, 字符型液晶显示模块上常采用内置式HD44780驱动控制器的集成电路。 下面先对HD44780驱动控制器的特点和电路特性进行介绍, 然后介绍内置该控制器的字符型液晶显示模块的应用。,1. HD44780驱动控制器的电路特性和设计特点 1) 电路特性
26、HD44780集成电路是集驱动器和控制器于一体, 专门用于字符型液晶显示模块的显示控制驱动的集成电路, 它是字符型液晶显示模块控制器的典型集成电路。 该集成电路对外引出80个引脚, 采用FP 80扁平塑料外壳形式的封装, 使用时通常已组装在相应的液晶显示模块内部。 因此, 用户可以不考虑其各个引脚的名称、 功能、 用法和相应的电路连接, 但必须了解其指令系统、 主要设计特点、 内部结构及工作原理。,2) 主要设计特点 (1) HD44780集成电路具有驱动4016点阵液晶像素的能力, 还可通过外接驱动电路扩展成360列驱动。 (2) 其显示缓冲区与用户自定义的字符发生器RAM 全部内置在集成电
27、路中。 (3) 接口可选择8位数据传输和4位数据传输两种方式。 (4) 可使用简单而功能较强的指令实现字符移动、 闪烁等显示功能。,3) HD44780集成电路的内部结构及工作原理 HD44780集成电路的内部结构如图6.17所示。 在HD44780集成电路的内部集成了输入/输出缓存器、 指令寄存器(IR)、 指令解码器(ID)、 地址计数器(AC)、 数据寄存器(DR)、 808位数据显示RAM(DDRAM)、 1928位字符产生器ROM(CGROM)、 光标闪烁控制器、 并行/串行转换电路等11个单元电路。 下面结合HD44780集成电路的内部结构来分析HD44780中各功能框的工作原理。
28、,3) HD44780集成电路的内部结构及工作原理 HD44780集成电路的内部结构如图6.17所示。 在HD44780集成电路的内部集成了输入/输出缓存器、 指令寄存器(IR)、 指令解码器(ID)、 地址计数器(AC)、 数据寄存器(DR)、 808位数据显示RAM(DDRAM)、 1928位字符产生器ROM(CGROM)、 光标闪烁控制器、 并行/串行转换电路等11个单元电路。 下面结合HD44780集成电路的内部结构来分析HD44780中各功能框的工作原理。,图 6.17 HD44780集成电路的内部结构图,(1) 数据显示RAM(Data Display RAM, DDRAM)。 这
29、个存储器用来存放所要显示的数据, 只要将标准的ASCII码放入DDRAM 中, 内部控制电路就会自动将数据传送到显示器上。 例如, 要液晶显示器显示字符“C”, 只需将ASCII码43H存入DDRAM中就可以了。 DDRAM有80字节比特(bit) 空间, 总共可显示80个字(每个字为1个字节比特 ), 其存储地址和实际显示位置的排列顺序与字符型液晶显示模块的型号有关。 不同类型的字符型液晶显示模块显示位置、 地址之间的对应关系见表6.2。,表 6.2 不同类型的液晶显示模块显示位置、 地址之间的对应关系,(2) 字符产生器ROM(Character Generator ROM, CGROM)
30、。 这个存储器储存了192个57点阵字符, CGROM中的字符要经过内部的转换才会传到显示器上, 只能内部读出,不能写入。 字符的排列方式、 字符码与标准的ASCII码相同, 例如, 字符码31H为字符“1”, 字符码43H为字符“C”。 (3) 字符产生器RAM(Character Generator RAM, CGRAM)。 这个存储器是供用户储存自己设计的特殊字符码的RAM, 共有512位(648位)。 但用户只能用8 8位做CGRAM。一个57点阵字型为88 位, 所以CGRAM 最多可存8个字符。,(4) 指令寄存器(Instruction Register, IR)。 指令寄存器负
31、责储存微处理器要写给字符型液晶显示模块的指令码。 当处理器要发一个命令到指令寄存器IR时, 必须要控制字符型液晶显示模块的RS、 R/W 与E这三个引脚, 当RS及R/W 的引脚信号为低电平“0”, E引脚信号由高电平“1”变为低电平“0”时, 就会把DB0DB7引脚上的数据存入IR指令寄存器。,(5) 数据寄存器(Data Register, DR)。 数据寄存器负责微处理器要写到CGRAM或DDRAM的数据, 或者存储微处理器要从数据显示RAM(DDRAM)读出的数据。 因此, 数据寄存器DR可视为一个数据缓冲区, 它是由字符型液晶显示模块的RS、 R/W 与E三个引脚来控制的。 当RS与
32、R/W 引脚信号为1, E引脚信号由“0”变为“1”时, 字符型液晶显示模块会将DR数据寄存器内的数据从DB0DB7输出, 以供读取; 当RS引脚信号为“1”、 R/W 引脚信号为“0”, E引脚信号由“0”变为“1”时, 就会把DB0DB7引脚上的数据存入数据寄存器。,(6) 忙碌信号(Busy Flag, BF)。 忙碌信号的作用是告诉微处理器, 字符型液晶显示模块内部是否忙着处理数据, 当BF=1时, 表示字符型液晶显示模块内部正在处理数据, 不能接受微处理器送来的指令或数据。 字符型液晶显示模块设置BF是因为微处理器处理一个指令时间很短, 所以微处理器要写数据或指令到字符型液晶显示模块
33、之前, 必须先查看BF是否为0。,(7) 地址计数器(Address Counter, AC)。 地址计数器的作用是负责记录写到CGRAM或DDRAM数据的地址, 或从CGRAM或DDRAM读取数据的地址。 使用地址设定指令写到指令寄存器后, 地址数据会经过指令解码器存入地址计数器中。 当微处理器从DDRAM或CGRAM 读取数据时, 地址计数器将按照微处理器对字符型液晶显示模块的设定值自动进行修改。,2. 内置HD44780驱动控制器的字符型液晶显示模块的引脚信号 字符型液晶显示模块主要用于显示字符、 数字、 符号, 它是由若干个57或511点阵字符组成的, 每一个点阵字符都可以显示一个字符
34、, 点阵字符之间空有一个点距和行距的距离。 目前常用的有16字1行、 16字2行、 20字2行 和40字2行等字符型液晶显示模块, 虽然这些字符型液晶显示模块显示的字数各不相同, 但都具有相同的输入与输出接口。,图 6.18 内置HD44780驱动控制器的 字符型液晶显示模块的引脚排列,图6.18所示为16字2行字符型液晶显示模块, 该模块采用的驱动控制器为HD44780及其兼容集成电路。 从前面的介绍可知, 虽然HD44780集成电路对外引出80个引脚, 但它与其他器件加工成的液晶显示模块对外引脚线却只有14条, 应用时只需设计该14条引脚线与微处理器的接口电路与程序。 内置HD44780驱
35、动控制器的16字2行字符型液晶显示模块的引脚排列如图6.18 所示。 下面对其引脚信号作以介绍。,DB7DB0: 8条数据线。 用于微处理器与字符型液晶显示模块之间交换数据或命令。 VO: 对比度调整电压输入端。 在使用中接可调电压, 如电位器的滑动端, 用来调整液晶显示屏的对比度。 VDD: 电源电压输入端。 接+5 V单电源电压。 VSS: 参考地端。 接工作电源参考地。 RS: 寄存器选择输入端。 当输入高电平时, 选择数据寄存器; 输入低电平时, 选择指令寄存器。 R/W: 读/写选通信号输入端。 当输入高电平时, 对液晶显示模块进行读操作; 当输入低电平时, 对液晶显示模块进行写操作
36、。,E: 使能信号输入端。 当输入高电平时, 可对液晶显示模块进行读/写操作; 当输入低电平时, 液晶显示模块不工作。,图 6.19 字符型液晶显示模块的内部框图,6.2.8 LCM的命令字 在应用LCM进行显示控制时, 通过其引脚线发送相应命令和数据到内部指令寄存器或数据寄存器中, 使LCM完成相应的显示功能。 内置HD44780驱动控制器的字符型液晶显示模块可以使用的指令共有11条, 其指令格式如表6.3所示。,下面对表6.3中的指令功能及格式定义做进一步说明。 1. 清屏指令 该指令的功能是清除液晶显示器(即将DDRAM的内容全部填入“空白”的ASCII代码20H), 光标撤回到液晶显示
37、屏的左上方, 将地址计数器(AC)的值设为0。 指令执行时间为1.64 s。 2. 光标归位指令 该指令的功能是将光标撤回到液晶显示屏的左上方, 地址计数器(AC)的值设为0, 保持DDRAM的内容不变。 指令执行时间为1.64 s。,3. 进入模式设置指令 该指令的功能是设定每次写入1位数据后光标的移位方向, 并且设定每次写入的一个字符是否移动。 指令执行时间为40 s。 根据指令表6.3 中I/D、 S的变化, 又可设定为如表6.4 所示的4种模式操作。,表6.4 模式设置设定情况,4. 显示器ON/OFF控制指令 该指令的功能是控制显示器开/关, 光标开/关, 决定光标是否闪烁, 由指令
38、表6.4定义的D、 C、 B三位来设定。 D位控制显示器开(ON)或关(OFF), D=1时显示, D=0时不显示。 C位控制光标开(ON)或关(OFF), C=1时显示光标, C=0时不显示光标。 B位控制光标是否闪烁, B=1时光标闪烁, B=0时光标不闪烁。 指令执行时间为40 s。,5. 设定显示器或光标移动方向指令 该指令的功能是控制光标移位或使整个显示字幕移位。 指令执行时间为40 s。 由表6.3定义的S/C、 R/L两位编码, 又可设定为如表6.5所示的四种情况。,表6.5 光标、 显示器的字符移动设定,6. 功能设定指令 通过该指令可设定数据长度、 显示行数和字型。 由表6.
39、3中定义的DL、 N、 F 三位来设定。 DL用于设定数据的长度, DL=1时, 数据为8位; DL=0时, 数据为四位。 N用于设定显示行数, N=1时, 显示2行; N=0时, 显示1行。 F用于设定字型, F=1时, 选定510点阵字型; F=0时, 选定57点阵字型。 功能的指令执行时间为40 s。,7. 设定CGRAM地址指令 该指令的功能是设定下一个要存入数据的CGRAM地址。 由表6.3中的指令格式定义可知, 从数据线的低6位设定输入CGRAM的6位地址。 指令执行时间为40 s。,8. 设定DDRAM地址指令 该指令的功能是设定下一个要存入数据的DDRAM地址。 由表6.3中的
40、指令格式定义可知, 从数据线的低7位设定输入DDRAM的7位地址。 指令执行时间为40 s。 对照表6.3和设定DDRAM地址指令的控制字格式, 不同显示字数和行数的字符型LCM的地址分配情况如表6.6所示。,表6.6 字符型液晶显示模块的地址分布,9. 读取忙碌状态数据和AC地址指令 通过该指令可读取忙碌信号和AC地址。 指令执行时间为40 s。 由表6.3中的指令格式定义可知, 从LCM数据寄存器读取的8位数据的最高位DB7表示忙碌状态, 低7位是地址计数器(AC)的7位地址。 当最高位BF=1, 表示在忙碌中, LCM无法接收数据; 当BF=0, 表示空闲, LCM可以接收数据。,10.
41、 数据写入到DDRAM或CGRAM中的指令 通过该指令可将字符码写入DDRAM中, 以使液晶显示屏显示出相应字符, 或将使用者自己设计的图形码存入CGRAM中。 从表6.3中的指令格式定义可知, 从LCM的8位数据线写入编码对应的8位数据。 指令执行时间为40 s。,11. 从CGRAM或DDRAM读取数据指令 从表6.3中的指令格式定义可知, 从数据线DB7DB0可读取CGRAM或DDRAM的内容。 指令执行时间为40 s。,6.2.9 字符型LCM的接口及应用举例 1. 内置HD44780驱动控制器的字符型LCM与51单片 机的接口电路 在设计字符型LCM与单片机的接口电路时, 一般是将L
42、CM作为终端与单片机的并行接口连接, 单片机通过该并行接口改变LCM的控制信号、 设置相应命令编码, 实现对LCM的控制和显示要求。 对并行接口的选用, 原则上没有限制, 可用单片机的内部I/O及其扩展I/O口。,但在设计接口电路和应用程序时, 应特别注意以下问题: (1) 对字符型LCM进行读/写操作不是利用单片机的读/写信号, 而是通过对LCM使能信号(E)的控制来完成的。 (2) 字符型LCM的数据总线不是三态总线, 所以在调试阶段, R/W引脚为低电平, 以保证LCM处于写状态; 如果R/W 引脚为高电平, 则LCM处于读状态, 将会造成数据总线混乱, 形成死机现象。 (3) 由于51
43、单片机复位后4个并行口都为FFH, 因此其并行口输出信号要经过反相器反相后, 连接到字符型液晶显示模块的R/W 输入端。,图6.20是51系列单片机驱动字符型液晶显示模块的电路图。 这种驱动控制方式是把字符型液晶显示模块作为终端与单片机的并行接口连接, 单片机通过该并行接口的操作间接地实现对字符型液晶显示模块的控制。,图 6.20 51单片机与LCM的接口电路,在图6.20中, 单片机的P0和P1口为并行接口与字符型液晶显示模块连接。 在编制程序时, 对LCM控制信号(RS、 R/W、 E)的要求是: 写操作时, 使能信号E的下降沿有效; 读操作时, 使能信号E在高电平有效; 在控制顺序上,
44、先设置RS、 R/W 的状态, 再设置E信号为高电平, 这时从数据口读取数据, 然后将使能信号E设置为低电平, 写入数据, 最后复位RS和R/W的状态。,2. LCM初始化 对LCM的初始化, 实质上是对其进行指令系统中的指令操作。 LCM驱动控制器的指令系统并非是单片机内部执行相关操作的命令, 而是通过接口电路对LCM引脚信号设置相应命令编码, 主要通过相应程序来实现。,1) 查看忙碌信号的子程序 对单片机来说, LCM是一个慢速的外部设备, 单片机每发送一个指令到LCM, LCM至少要40 s的时间工作才能完成。 LCM执行一个指令时不能接受其他的指令(除了忙碌信号读取指令), 所以在单片
45、机要对LCM下指令以前, 必须先检查LCM正在执行的指令的状态, 单片机必须确定LCM有空的时候才能正式发送指令给LCM。,检查忙碌信号的子程序(CheckBusy)如下: CheckBusy: PUSH ACC CheckBusyLoop: CLR P1.2 ; 设定RS=0, 选择指令缓存器 CLR P1.1 ; 设定R/W=1, 选择读模式 CLR P1.0 SETB P1.0 ; 令字符型LCM使能 MOV A, P0 ; 将字符型LCM的DB0DB7数据由P0口 读入ACC中, 以检查BF是否为0,CLR P1.0 ; 使字符型LCM禁止使能, 不作数据传递或设 定 JB ACC.7
46、, CheckBusyLoop ; 检测BF是否为“1”, 若为“1”, 则检测等待 POP ACC LCALL DELAY ; 调用延时子程序, 延时约几个毫秒, 保证数据操作有效稳定 RET DELAY : MOV R6, #05H ; 延时子程序, 延时的时间约 为2.5 ms, 设振荡频率为6 MHz D1: MOV R7, #248 ; 设置循环次数 DJNZ R7, $ DJNZ R6, D1 RET ; 返回主程序,2) 将指令码写到ID指令寄存器的子程序(Write Instruction) Write Instruction: LCALL CheckBusy ; 延时, 确定
47、字符型LCM不忙碌, 可以执行指令 CLR P1.0 CLR P1.2 ; 设定RS=0, 选择指令寄存器 SETB P1.1 ; 设定R/W=0, 选择写模式 SETB P1.0 ; 令字符型LCM使能 MOV P0, A ; 将存在ACC内的指令码经过单片机的P0口输出到字符型LCM CLR P1.0 ; 写入指令, 使字符型LCM禁止使能 RET,3) 将数据写到DR数据寄存器的子程序(Write LCD Data) Write LCD Data: LCALL CheckBusy ; 调用检测子程序, 确定LCM不忙碌, 可以执行指令 CLR P1.0 SETB P1.2 ; 设定RS=1, 选择数据寄存器 SETB P1.1 ; 设定R/W=0, 选择写模式 SETB P1.0 ; 令字符型LCM可以使能 MOV P0, A ; 将存在ACC内的指令码经过单片机 的P0口输出到字符型LCM CLR P1.0 ; 写入数据, 使字符型LCM禁止使能 RET,4) 清除显示器的子程序(CLS) 由于清除显示器指令是属于写数据到IR指令寄存器中的一个, 因此在编写程序时, 只需要将消除指令00000001B(即01H)存入ACC, 再调用Write Instruction子程
链接地址:https://www.31doc.com/p-3017636.html