一、矩阵式键盘
1.工作原理
矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。一个4x4的行、列结构可以构成16只按键的键盘,在按键数量较多的场合,矩阵式键盘比独立式键盘,更节省I/0口。
如图1所示,每只按键在行列线交节点上,一端接行线,另一端按列线,列线通过上拉电阻RP1接到VCC上,设QO~Q3为低电平,在没有动作时行线处于低电平状态,列线处于高电平状态,而当有按键被接下时,该键所在的列线的电平由高变低,这也是识别矩阵式键盘是否有键被接下的关键所在。要将行与列线信号配合起来并作适当的处理才行。
2.按键识别方法
下面以下图中9号键被接下为例,来说明该按键是如何被识别出来的。当9号键被接下时,与之键相连的列线3的电平将由与此键相连的行线A的电平决定。由于在天键接下时列线处于高电平状态,如果让所有行线也处于高电平,那么将不会引起列线电平的变化,也就没法判断有无键被接下,更不用说是判断接下的是哪个键了。如果将所有行线置为低电平,则接下的键所在的列线将变成低电平,根据此变化能准确判定该列有按键接下,但仍不能确定是哪个键被按下,即被接下的键在哪一行。若某时刻让一条行线处于低电平,让其余所有行线处于高电平,如A行为低电平,其余行为高电平,因为是按键9被按下,所以列3立刻变为低电平,据此可确定是A行与列3交叉点的按键(即9号键)被按下。同理可以判断出矩阵键盘中每一个被接下的键所在的行、列,即知道被按下的键名。
根据上面的分析,可以总结出用单片机控制和读取I/0的状态来识别矩阵键盘按键的方法:
第一步,单片机通过总线地址adr0、adr1、adr2、adr3,分别扫描矩阵键盘的四条行线,看是否有按健被接下;
第二步,单片机调用延时去抖程序排除干扰因素,确认有按键被接下,然后通过总线数据线ADO、AD1、AD2、AD3,读回列线电平状态再通过软件读出行线和列线的交叉点,即找出被接下的键。
以上识别按键的方法称为扫描法。
二、液晶显示器
液晶显示器微功耗、体积小、显示内容丰富、超薄轻巧,在袖珍式仪表和低功耗系统中得到越广泛的应用。字符型液晶模块采用5×7点阵图形显示字符,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等,下面以2行16个字的LMl602液晶模块来介绍其编程方法。
LMl602采用标准的(14)脚接口,其引脚定义及功能如下表所示。VSS为地,VDD按5V正电源;VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一只1Oka的电位器来调整对比度;RS为寄存器选择,为高电平时选择数据寄存器、低电平时选择指令寄存器;RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW均为低电平时可以写入指令或显示地址,当RS为低电平、RW为高电平时可以读忙信号;当RS为高电平、RW为低电平时可以写入数据。E为使能端,当E由高电平跳变成低电平时,液晶模块执行命令。DO~D7为8位双向数据线。
LMl602液晶模块内部的字符发生存储器CGROM内存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母的大小写、常用符号和日文假名等。每个字符都有一个固定的代码,如大写英文字母“A”的代码是O1OOOOO1B(41H),只要显示地址41H中的点阵字符图形,使用者就能看到字母“A”。
引脚 | 符号 | 引脚说明 |
1 | VSS | 电源地 |
2 | VDD | 电源正 |
3 | VL | 液晶显示偏压信号 |
4 | RS | 数据 /命令选择端(H/L) |
5 | R/W | 读 /写选择端(H/L) |
6 | E | 使能信号 |
7 | DO | Data I/0 |
8 | D1 | Data I/0 |
9 | D2 | Data I/0 |
10 | D3 | Data I/0 |
11 | D4 | Data I/0 |
12 | D5 | Data I/0 |
13 | D6 | Data I/0 |
14 | D7 | Data I/0 |
15 | BLA | 背光源正极 |
16 | BLK | 背光源负极 |
2.基本操作时序
读状态:输入RS=L、RW=H、E=H输出DO~D7=状态字
写指令:输入RS=L、RW=L、DO~D7=指令码、E=高脉冲输出无
读数据:输入RS=H、RW=H、E=H输出DO~D7=数据
写数据:输入RS=H、RW=L、DO~D7=数据、E=高脉冲输出无
3.初始化流程
初始化过程(复位过程)
延时15ms
写指令38H(不检测忙信号)
延时5ms写指令38H
(不检测忙信号)
延时5ms
写指令38H(不检测忙信号)
延时5ms
写指令38H(不检测忙信号)
说明:以后每次写指令、读/写数据操作之前均需检测忙信号。
写指令38H:显示模式设置
写指令08H:显示关闭
写指令01H:显示清屏
写指令06H:显示光标移动设置
写指令0CH:显示开及光标设置
给出以上具体操作时序主要是为了帮助大家更好地理解LCD驱动程序,并按照基本初始化流程书写驱动程序。驱动程序没不需要每次都编写,需要使用时,只要把以前编写的驱动程序作为头文件调用即可。液晶驱动程序见后边附程序。
三、单片机总线模式的键盘检测与液晶显示总体电路
下图中的总线键盘主要是用于制作大键盘。单片机通过74LS138与74LS573进行总线模式扩展,使键盘扫描和液晶显示共用数据口通过地址信号分别控制与二者间的数据传输,以充分地利用单片机的I/O口资源。
四、按键程序流程图
按键程序流程如下图所示。
本实验在已Proteus仿真软件上验证通过。通过Keil软件进行编程,然后将生成的Hex文件加载到51单片机中,就能观察到液晶屏显示的实验现象内容。在矩阵键盘上按下任意键,在液晶显示器上就会以移位显示的方式看到软件定义的键值。
键盘和显示器是单片机应用系统经常使用的人机交互界面,此实验可以帮助单片机初学者了解总线模式,学会用总线模式实现键盘扫描与液晶显示的技术。
上一篇:ISP程序下载方式
下一篇:基于MT8816AE的语音系统设计
推荐阅读最新更新时间:2024-03-16 15:59