LCD显示和键盘模块的设计Word文档下载推荐.docx
- 文档编号:16790606
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:14
- 大小:504.52KB
LCD显示和键盘模块的设计Word文档下载推荐.docx
《LCD显示和键盘模块的设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LCD显示和键盘模块的设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
软件实现时,可以采用中断方式,也可以采用查询方式,示意图如图1所示。
图1独立式按键接口设计
2.1.2专用芯片式设计
专用键盘处理芯片一般功能比较完善,芯片本身能完成对按键的编码、扫描、消抖和重键等问题的处理,甚至象8279还集成了显示接口功能。
专用键盘处理芯片的优点很明显,可靠性高,接口简单,使用方便,适合处理按键较多的情况。
但在很多应用场合,考虑成本因素,可能并不是最佳选择。
2.1.3矩阵式接口设计
矩阵式按键设计适应于按键数量较多,又不想使用专用键盘芯片的场合。
这种方式的按键接口由行线和列线组成,按键位于行、列的交叉点上。
这种方式的优点就是相对于独立接口方式可以节省很多I/O资源,相对于专用芯片式可以节省成本,且更为灵活。
缺点就是需要用软件处理消抖、重键等问题。
接口示意图如图2所示。
矩阵式按键接口根据采用的按键识别方法不同基本有两种接法:
线反转法和扫描法。
其中扫描法的列线始终为输入,行线始终为输出;
线反转法则需要改变列线和行线的方向。
图2矩阵接口方式示意图
2.2按键编码方式
按键接口方式确定后,需要对按键进行编码。
按键编码没有特殊约定,只要有利于按键处理即可,同时应根据情况确定是否对按键进行缓冲。
但对于矩阵式按键接口一般是先获得按键的扫描码,然后将其转换为事先约定的按键编码。
2.3按键识别方法
不同的按键接口方式对应不同的按键识别方法,但无论哪种接口方式,按键的闭合与否都反映在电压的高低上,因此系统可以通过检测不同的电平状态来识别按键是否按下。
实际设计时可以根据需要设定键闭合或断开的电平状态。
例如,我们利用低电平表示键按下,高电平表示键释放。
对应上述三种按键接口方法,独立式按键识别方法很简单,只需要检测相应口线的电平即可,没有键按下时为高电平,有键按下时为低电平;
而专用芯片则直接完成了该项工作,因此下面主要讲述矩阵式按键接口方式对应的按键识别方法。
2.3.1按键识别原理
如图2所示,按键设置在行、列的交点上,行列线分别连接到按键开关的两端,行线或列线通过上拉电阻接到+5V上。
平时无按键动作时,处于高电平状态,而当有键按下时,电平状态将发生改变。
这一点是按键识别的关键所在。
由于矩阵键盘中行线和列线为多键共用,各按键均影响该键所在的行和列的电平,即各键相互间有影响,必须协调处理。
2.3.2扫描法识别按键
扫描法识别按键分两步进行:
第一步,识别有无按键按下;
第二步,若有键按下,识别出该键。
具体方法如下:
识别键盘有无按键按下方法:
让所有列线均置为0电平,检查各行线是否有变化,如果有变化,则说明有键被按下,如果没有变化,则说明无键被按下。
识别具体按键的方法:
逐列置零电平,其余各列置为高电平,检查各行线电平的变化,如果某行电平由高电平变为低电平,则可确定此行此列交叉点处的按键被按下。
2.3.3线反转法识别按键
扫描法要逐列扫描查询,若被按下的键处于最后一列时,要经过多次扫描才能最后获得此按键的行列值。
而线反转法则很简练,无论被按键处于第一列或是最后一列,均只需两步便能获得按键的行列值。
第一步:
将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。
第二步:
同第一步相反,将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在行为按键所在列。
综合一、二两步的结果,可确定按键所在行和列,从而识别所按的键。
该方法的优点是:
非常简单适用。
2.4键盘模块处理方式
单片机应用系统中,键盘扫描只是MCU的工作之一,MCU在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。
键盘工作方式的选取原则是既要保证能及时响应按键操作,又要不过多占用MCU的工作时间。
一般而言,有三种工作方式:
编程扫描、定时扫描和中断扫描。
2.4.1编程扫描方式
本方式中MCU对键盘的扫描采取程序控制方式,一旦进入键扫描状态,则反复地扫描键盘,等待用户从按键上输入命令或数据。
而在执行键入命令或处理键入数据过程中,MCU将不再响应键入要求,直到MCU返回重新扫描键盘为止。
编程扫描程序流程图如图3所示。
图3 键盘编程扫描方式流程图
2.4.2 定时扫描方式
定时扫描工作方式是利用MCU内部的定时器产生定时中断(例如:
10ms),CPU响应中断时对键盘进行扫描,并在有键按下时识别出该键并执行相应的键功能程序。
该种方式不再需要单独的延迟去抖动处理。
2.4.3 中断扫描方式
键盘工作在编程扫描方式时,MCU要不间断地对键盘进行扫描,其间MCU不能进行其它任何工作,若MCU工作量较大,该方式不适应;
定时扫描方式前进了一大步,只是定时的监视一下键盘输入情况,其它时间MCU可以做其它事情;
若想进一步提高MCU利用率,可以用中断扫描方式,即只有在有键按下时才理睬键盘,否则不理。
综上所述,键盘工作分为三个层次:
第一层:
监视键盘输入。
根据需要选择合适的键盘工作方式(如上所述三种方式)。
第二层:
确定具体按键。
根据需要选择合适的识别方法(扫描法或线反转法)。
第三层:
键功能程序执行。
上述三种键盘工作方式都可以根据系统需要灵活选用,并非任何情况下都要使用中断方式,也不是任何时候都不能用编程扫描方式。
本次键盘模块采用矩阵式接口设计,编程扫描方式,电路图如下:
图4 键盘模块仿真电路图
3LCD模块设计
3.112864液晶的介绍:
带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;
其显示分辨率为128×
64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×
4行16×
16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
12864的基本特性:
低电源电压(VDD:
+3.0--+5.5V)
显示分辨率:
128×
64点
内置汉字字库,提供8192个16×
16点阵汉字(简繁体可选)
内置128个16×
8点阵字符
2MHZ时钟频率
显示方式:
STN、半透、正显
驱动方式:
1/32DUTY,1/5BIAS
视角方向:
6点
背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
通讯方式:
串行、并口可选
内置DC-DC转换电路,无需外加负压
无需片选信号,简化软件设计
工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
3.2LCD介绍
ST7920控制器系列中文图形液晶模块的软件特性主要由ST7920控制驱动器决定。
ST7920同时作为控制器和驱动器,它可提供33路com输出和64路seg输出。
在驱动器ST7921的配合下,最多可以驱动256×
32点阵液晶。
ST7920系列产品硬件特性如下:
提供8位,4位并行接口及串行接口可选
并行接口适配M6800时序
自动电源启动复位功能
内部自建振荡源
64×
16位字符显示RAM(DDRAM最多16字符×
4行,LCD显示范围16
×
2行)
2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×
16点阵)
16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×
8点阵)
16位字符产生RAM(CGRAM)
15×
16位总共240点的ICONRAM(ICONRAM)
ST7920系列产品软件特性如下:
文字与图形混合显示功能
画面清除功能
光标归位功能
显示开/关功能
光标显示/隐藏功能
显示字体闪烁功能
光标移位功能功能
显示移位功能
垂直画面旋转功能
反白显示功能
休眠模式
中文字库选择:
ST7920-0A内建BIG-5码繁体中文字型库
ST7920-0B内建GB码简体中文字型库
3.1LCD介绍
3.2LCD与MCU的接口
LCD与单片机的连接方式由串行和并行之分,两种连接方式的不同在于PSB所接的电平不同。
PSB接高时选择并口,接低时选择串口。
模块上一般都有跳线方式将PSB接高或接低,使用时可以不再处理PSB脚(事先需声明是用并口还是串口)。
也可以选择不在模块上处理,而由自己选择并口还是串口。
图5 ST7920端口及功能
*注释1:
如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:
模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:
如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
3.3LCD与MCU的接口电路图
3.3.1并口直接访问方式
图6 并口直接访问方式
3.3.2.并口间接访问方式
图7 并口间接访问方式
3.3.3串口接线图
图7 串口访问方式
3.3.4单片机与LCD仿真图
图8单片机与LCD仿真图
5总结
5.1总结
本次设计的基于单片机施药监测系统的LCD显示和键盘模块的设计,键盘模块采用矩阵式接口设计,这种方式的优点就是相对于独立接口方式可以节省很多I/O资源且相对于专用芯片式可以节省成本,且更为灵活。
LCD模块选用12864液晶ST7920控制器,采用并行模式与单片机进行通信。
与串行模式相比,虽然占用的I/O引脚,但是,编程要相对简单。
参考文献
[1]姚德法《单片机应用中的键盘模块设计》[J].信息技术与信息化,2005,(6).
[2]杨龙,李建国《单片机系统键盘的设计小结》[J].大众科技,2006,(7).
[3]陈少航,李山,苗亮亮,苏宪龙《基于Proteus的单片机应用系统的设计与仿真》[J].现代电子技术,2008,(6).
[4]李东勋,沈文浩,陈小泉,.基于Proteus的液晶模块仿真[J].微计算机信息,2009,(13).
附录1
单片机键盘模块C程序:
#include<
reg51.h>
show.h>
uchark;
voiddelay(void)//延时程序
{
uchari,j;
for(i=20;
i>
0;
i--)
for(j=248;
j>
j--);
}
voidGetch()
{ucharX,Y,Z;
P3=0xff;
P3=0x0f;
//先对P3置数行扫描
if(P3!
=0x0f)//判断是否有键按下
{delay();
//延时,软件去干扰
if(P3!
=0x0f)//确认按键按下X=P3;
{
X=P3;
//保存行扫描时有键按下时状态
P3=0xf0;
//列扫描
Y=P3;
//保存列扫描时有键按下时状态
Z=X|Y;
//取出键值
switch(Z)//判断键值(那一个键按下)
{
case0xe7:
k=0;
break;
//对键值赋值
case0xeb:
k=1;
case0xed:
k=2;
case0xee:
k=3;
case0xd7:
k=4;
case0xdb:
k=5;
case0xdd:
k=6;
case0xde:
k=7;
case0xb7:
k=8;
case0xbb:
k=9;
case0xbd:
k=10;
break;
case0xbe:
k=11;
case0x77:
k=12;
case0x7b:
k=13;
case0x7d:
k=14;
case0x7e:
k=15;
}
}
}
}
voidmain(void)
{while
(1)
{P2=tv[4];
Getch();
P0=a[k];
delay();
}
头文件show.h源程序
#ifndef_show_H_
#define_show_H_
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetv[]={0x01,/*第一片*/
0x02,/*第二片*/
0x04,/*第三片*/
0x08,/*第四片*/
0x0f/*全部*/};
//数码管片选
ucharcodea[]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/
0x80,/*8*/0x90,/*9*/0x88,/*A*/0x83,/*b*/0xC6,/*C*/0xA7,/*c*/0xA1,/*d*/0x86,/*E*/0x8E,/*F*/
};
//数码管段选
uchardataled[4];
//显示缓冲区
voiddelay(uchardelaytime);
#endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD 显示 键盘 模块 设计