单片机系统键盘的设计小结Word格式.docx
- 文档编号:3915287
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:25
- 大小:140.75KB
单片机系统键盘的设计小结Word格式.docx
《单片机系统键盘的设计小结Word格式.docx》由会员分享,可在线阅读,更多相关《单片机系统键盘的设计小结Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
(这种消除抖动影响的软件措施是切实可行的。
)
2.采取串键保护措施。
串键:
是指同时有一个以上的键按下,串键会引起CPU错误响应。
通常采取的策略:
单键按下有效,多键同时按下无效。
3.处理连击。
连击:
是一次按键产生多次击键的效果。
要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。
否则的话,键功能程序的执行次数将是不可预知,由按键时间决定。
连击是可以利用的。
连击对于用计数法设计的多功能键特别有效。
三、键盘工作方式
单片及应用系统中,键盘扫描只是CPU的工作内容之一。
CPU忙于各项任务时,如何兼顾键盘的输入,取决于键盘的工作方式。
考虑仪表系统中CPU任务的份量,来确定键盘的工作方式。
键盘的工作方式选取的原则是:
既要保证能及时响应按键的操作,又不过多的占用CPU的工作时间。
键盘的工作方式有:
查询方式(编程扫描,定时扫描方式)、中断扫描方式。
四、键盘电路结构
(一)独立式按键接口设计
独立式按键就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。
因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。
优点:
电路配置灵活,软件结构简单。
缺点:
每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。
因此,此键盘是用于按键较少或操作速度较高的场合。
中断方式
查询方式
也可以用扩展I/O口搭接独立式按键接口电路,可采用8255扩展I/O口,用三态缓冲器扩展。
这两种配接方式,都是把按键当作外部RAM某一工作单元的位来对待,通过读片外RAM的方法,识别按键的工作状态。
上电路中独立式按键电路,各按键开关均采用了上拉电阻,是为了保证在按键断开时,各I/O有确定的高电平。
如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。
(二)矩阵式键盘接口设计
矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的交叉点上。
节省I/O口。
矩阵键盘工作原理:
行线通过上拉电阻接到+5V上。
无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相连的列线电平决定。
列线电平为低,则行线电平为低;
列线电平为高,则行线电平为高。
五、双功能及多功能键设计
在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总希望设置最少的按键,获得最多的控制功能。
矩阵键盘与独立式按键键盘相比,硬件电路大大节省。
可通过软件的方法让一键具有多功能。
方法:
选择一个RAM工作单元,对某一个按键进行按键计数,根据不同计数值,转到子程序。
这种计数多功能键最好与显示器结合用,以便知道当前计数值,同时配合一个启动键。
复合键是使用软件实现一键多功能的另一个途径。
所谓复合键,就是两个或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。
实际情况做不到“同时按下”,他们的时间差别可以长到50ms,解决策略是:
定义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。
引导键的例子:
微机键盘上的CTRL、SHIFT、ALT。
一是操作变得复杂,二是操作时间变长。
多功能键的利用,应具体情况具体分析。
要求速度的场合最好做一键一功能。
如果系统功能很多,一键一功能不现实,可采取一键多功能。
六、功能开关及拨码盘接口设计
设计原因:
键盘输入灵活性大,操纵方便。
但某些重要功能或数据由键盘输入,误操作将产生一些不良后果。
因此常设定静态开关的方法来执行这些功能或输入数据。
静态开关一经设定,将不再改变,一直维持设定的开关状态。
通常这些开关状态是在单片机系统加电时由CPU读入内存RAM的,以后CPU将不再关注这些开关的状态,因此,即使加电后,这些开关的状态发生变化,也不会影响CPU的正常工作,只有在下一次加电时,这些新状态才能生效。
第一,功能开关:
主要是根据开关的状态执行一些重要的功能。
第二,拨码盘:
单片机应用系统中,有时要输入一些控制参数,这些参数一经设定,将维持不变,除非给系统断电后重新设定。
这时使用数字拨码盘既简单直观,又方便可靠。
七、按键介绍
常用的按键有三种:
机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。
机械触点式按键是利用弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。
但是触点处易侵入灰尘而导致接触不良,体积相对较大。
导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装配方便,适合批量生产。
但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘。
柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两种。
凸球型动作幅度触感明显,富有立体感,但制造工艺相对复杂;
平面型幅度微小,触感较弱,但工艺简单,寿命长。
柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。
而且外形和面板的布局、色彩、键距可按照整机的要求来设计。
八、单片机系统键盘设计实例
本次设计中,键盘结构采用非编码键盘系统中的独立式按键结构。
用三态缓冲器573扩展I/O口搭接独立式按键接口电路,按键状态由573锁存。
键盘工作方式采用定时扫描方式。
采用定时器T0定时,CPU每隔200ms扫描键盘一次,即通过读取573的输出数据,识别按键的工作状态。
设计中对于重键和连击的处理:
对于重键(串键:
指同时有一个以上的键按下),采用软件提供保护,当判断为一个以上的键按下,则不处理,返回重新进行监测。
只有监测到一个键按下时,才判断键值,执行相应键处理工作。
键盘对液晶显示的控制是通过显示画面的页码作为接口参数来完成的。
在每一页中,键盘对数据的修改是通过对按键次数的计算作为接口参数来实现的。
具体例程如下:
void
keyscan()
/*键盘扫描*/
{ucherdatanewz,temp,pat;
if(time_out)
{ACC=MJP;
/*读取573数据*/
temp=ACC&
0x0f,
/*取低四位*/
if(temp!
=0x0f)
/*有键按下*/
{msec(10);
/*延时10MS*/
ACC=MJP;
/*读取573数据*/
0x0f
if(temp=0x0f)
{newz=temp;
/*读取新键值*/
pat=newz^old;
/*键值有无变化*/
if(pat)>
0)
/*有变化*/
{old=newz;
/*原键值等于新键值*/
keymana();
/*调键散转程序*/
}
(下转第66页)
(上接第64页)
else;
}
elsr;
old=temp;
/*原键值不变*/
time_out=0
/*标志位置零*/
esel;
九、结语
键盘是单片机系统设计中一种主要的信息输入接口,合理的设计,不仅可以节省系统的设计成本,更可使仪器设备的操作变得更为简单、方便,很大程度上提高系统综合性能。
摘
要:
本文介绍采用AT89C2051构成多达128键的键盘扩展电路及其编程。
该电路是采用串行口与上位机进行通讯的。
经长期使用,证明这一方法是可行和可靠的,有较强的实用价值。
关键词:
AT89C2051;
键盘;
串行口
1.扩展键盘电路
AT89C2051是美国ATMEL公司采用CMOS工艺生产的20脚八位单片机。
它带有2k字节flashROM和128字节的片内RAM,15根I/O线,2个16位定时/计数器,5个两级中断源,一个全双工串行口。
另外还带有精确的模拟比较器、片内振荡器和时钟电路。
其指令集和输出管脚与工业标准的MCS-51系列器件兼容,是当前性/价比较高的一种八位单片机。
虽然采用8279/8155等芯片扩展键盘较为方便,但在某些场合,特别是电路要求较为紧凑、印刷电路板较小的情况下,AT89C2051扩展键盘较为合适。
其优点是体积小、成本低,同时在合理安排15根I/O口线的情况下,可以获得与8279/8155相同数量甚至更高的键盘数。
其难点在于,在软件中必须妥善解决键盘扫描、去抖动、双键同时按下、与上位机通讯等问题。
图1所示为采用AT89C2051构成的键盘扩展电路。
AT89C2051的串行口作为上位机的通讯口,以减轻多机通讯时上位机的串行负担,P1.0口线向上位机申请中断。
为提高电路工作的可靠性,可以采用MAX705/706、MAX813L等看门狗电路,负责对CPU进行监视。
本文采用MAX706复位/看门狗电路,并采用P3.7口线对其定时刷新,即“喂狗”。
采用74LS138扩展行扫线,使用P1.1、P1.2、P1.3对其进行控制,使行扫线依次改变状态。
采用这种方法,行扫线最多为八根。
由于本文键盘仅为20键,因此采用P1.4、P1.5、P1.6、P1.7作为列扫线已经足够。
对于所需键盘数更多的情况,可以补充P3.5、P3.4、P3.3、P3.2等口线作为列扫线。
在此情况下,可以扩展的键盘数为64键。
如不存在多机通讯的要求,可以继续补充P1.0口线作为列扫线。
在此情况下,可扩展的键盘数为72个。
如以P1.0扩展行扫线,采用两片74LS138或其它4-16译码器,则可扩展的键盘数最多可达128个。
本电路中采用AT89C52作为上位机。
2.软件结构
2.1软件去抖动处理
按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。
本文采用软件延时的方法来避开抖动阶段,在延时开始和结束时读取列扫线状态,如果一致,则判断有键按下。
延时时间为10ms。
2.2按键连击的处理
连击是指操作者按下某一键但没有释放该键,则该键对应的功能将反复被执行,好象操作者在连续操作该键一样。
由于单片机的速度较快,这种情况很容易发生。
连击在很多情况下是不允许的,它使操作者很难准确地进行操作。
解决连击的关键是一次按键只让它响应一次,该键不释放就不执行第二次。
2.3键盘扫描
本文采用的键盘为20键的小键盘,其扫描码较为简单,可参见图1,在此不作专门介绍。
2.4与上位机通讯本文提出的方法是采用串行口进行通讯的。
采用定时/计数器1为波特率发生器,具体数值为1200bps。
AT89C2051采用串行中断方式与上位机进行通讯;
而上位机的键盘响应与处理则安排在外中断1服务程序中。
上位机在INT1中断服务程序中首先应向键盘发送相应的地址,然后再进入接收状态。
在上位机的中断服务程序中,还可以设置接收键值的时间范围,超时则认为此键值作废。
2.5MAX706的复位
AT89C2051对MAX706的复位安排在定时/计数器0的中断服务程序中。
而上位机对MAX706等监控电路的复位可以自由安排,但必须在1.6s之内完成。
3.软件程序清单
软件的流程框图如图2所示。
具体的程序清单如下:
THIS_051 EQU #0AAH
NO_KEY EQU #0F0H
ORG0000H
AJMPMAIN
ORG000BH
AJMPINT_T0
ORG0023H
AJMPINT_SERIES
ORG0030H
MAIN:
MOVSP,#40H
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
CLRP3.7
MOVTMOD,#21H
MOVTL1,#0E6H
MOVTH1,#0E6H
MOVTL0,#00H
MOVTH0,#80H
CLRET1
SETBTR1
SETBET0
SETBTR0
MOVPCON,#80H
MOVSCON,#0D0H
SETBES
SETBEA
READKEY:
CLRP1.1
CLRP1.2
CLRP1.3
MOVR1,#00H
LCALLDELAY10US
MOVA,P1
ANLA,#0F0H
CJNEA,NO_KEY,DEL_SHAKER1
SJMPTEST_LINE2
DEL_SHAKER1:
LCALLDELAY10MS
CJNEA,NO_KEY,KEY_VALUE
TEST桳INE2:
SETBP1.1
MOVR1,#01H
CJNEA,NO_KEY,DEL_SHAKER2
SJMPTEST_LINE3
DEL_SHAKER2:
CJNEA,NO_KEY,KEY_CALUE
TEST_LINE3:
SETBP1.2
MOVR1,#02H LCALLDELAY10US
CJNEA,NO_KEY,DEL_SHAKER3
SJMPTEST_LINE4
DEL_SHAKER3:
ANLA,#0F0H
TEST_LINE4:
MOVR1,#03H
CJNEA,NO_KEY,DEL_SHAKER4
SJMPTEST_LINE5
DEL_SHAKER4:
TEST_LINE5:
SETBP1.3
MOVR1,#04H
CJNEA,NO_KEY,DEL_SHAKER5
SJMPRET_READKEY
DEL_SHAKER5:
RET_READKEY:
AJMPREADKEY
KEY_VALUE:
JNBACC.7,FIRST_LINE
JNBACC.6,SECOND_LINE
JNBACC.5,THIRD_LINE
JNBACC.4,FOUTH_LINE
FIRST_LINE:
MOVR0,#03H
SJMPSEND_KEY
SECOND_LINE:
MOVR0,#02H
THIRD_LINE:
MOVR0,#01H
SJMPSEND-KEY
FOUTH_LINE:
MOVR0,#00H
SEND_KEY:
MOVA,R0
MOVB,#05H
MULAB
ADDA,R1
MOVDPTR,#KBTAB
MOVCA,@A+DPTR
MOVR3,A
CLRP1.0
SETBP1.0KEY_LOOP:
MOVA,P1
CJNEA,NO_KEY,KEY_LOOP
INT桾0:
CPLP3.7
RETI
INT_SERIES:
PUSHACC
JNBRI,TRANSMISSION
CLRRI
MOVA,SBUF
CJNEA,THIS?
051,RETURN
MOVA,R3
MOVSBUF,A
SJMPRETURN
TRANSMISSION:
CLRTI
RETURN:
POPACC
DELAY10MS:
MOVR6,#10
DELAY1:
MOVR5,#250
DELAY2:
DJNZR5,DELAY2
DJNZR6,DELAY1
RET
DELAY1MS:
MOVR5,#250
DELAY4:
DJNZR5,DELAY4
DELAY10US:
MOVR5,#05H
DELAY3:
DJNZR5,DELAY3
KBTAB:
DB′TG369CF258DP147SH0IR′
74LS164连接IO口动态扫描键盘
#ifndef_DISP_KEY_H_
#define_DISP_KEY_H_
#include"
Common.h"
#defineDISP_KEY
3
//显示和键盘任务Identificatio
#definePROCESS_KEY
5
//键值处理任务Identification
#defineKEYSPEED
1
//越大越慢,2慢4倍,4慢8倍
#defineKEY_VALID_COUNT
12
//检测有效次数
//定义设置的参数
#defineSETUP_RUNMODE
0x01
#defineSETUP_DEST
0x02
#defineSETUP_PROP
0x03
#defineSETUP_INTEGRAL
0x04
#defineSETUP_DERIVATIVE
0x05
#defineSETUP_TIME
0x06
//定义命令字
#defineSETUP0x02
#defineINC
0x04
#defineDEC
0x08
#defineSTART_STOP
0x10
//定义模式
#define
HRD_MODE
0x00
CONST_TEMP_MODE
0x01
DEFAULT_RUN_MODE
HRD_MODE
//显示和键盘
#defineKEY_BASE
1
sbitKEY
=P2^0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 系统 键盘 设计 小结