浅谈键盘技术应用及实现方案讲解.docx

上传人:b****6 文档编号:12111255 上传时间:2023-06-04 格式:DOCX 页数:15 大小:293.77KB
下载 相关 举报
浅谈键盘技术应用及实现方案讲解.docx_第1页
第1页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第2页
第2页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第3页
第3页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第4页
第4页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第5页
第5页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第6页
第6页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第7页
第7页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第8页
第8页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第9页
第9页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第10页
第10页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第11页
第11页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第12页
第12页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第13页
第13页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第14页
第14页 / 共15页
浅谈键盘技术应用及实现方案讲解.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

浅谈键盘技术应用及实现方案讲解.docx

《浅谈键盘技术应用及实现方案讲解.docx》由会员分享,可在线阅读,更多相关《浅谈键盘技术应用及实现方案讲解.docx(15页珍藏版)》请在冰点文库上搜索。

浅谈键盘技术应用及实现方案讲解.docx

浅谈键盘技术应用及实现方案讲解

 

甘肃联合大学学生毕业论文

 

题目:

 

作者:

指导老师:

 

学院系

专业级

年制班

年月日

浅谈键盘技术应用及实现方案

内容摘要:

随着计算机技术的不断发展,如今鼠标应用越来越广泛,但在文字输入领域,键盘依旧有着不可动摇的地位。

作为重要的输入工具,键盘并不因循守旧,为了顺应潮流,向着多媒体、多功能和人体工程学方向不断研发,凭借新奇、实用、舒适,不断巩固着输入设备巨人的地位。

本论文简单说明键盘的应用与实现方案。

本文简单介绍了键盘的发展史及键盘的工作原理。

概述了8086、AT89C51作为CPU如何接,进行了键盘扫描电路的硬件设计,介绍按键式和编码式两种方法。

着重就矩阵式键盘做了详细说明,设计了主程序及子程序。

关键词:

键盘;矩阵式;键盘扫描电路;程序设计。

一、引言

1873年的肖尔斯打字机以“QwERTY”布局排列键盘最初只是为了减慢打字的速度,而在推广这种打字机的时候,发明者们说这是最科学的排列方法,能够有效地提高打字速度。

这一谣言被人们相信了接近100年之久。

早期键盘实物图见图1。

图1早期键盘图

今天的计算机键盘虽然无论是材质还是原理都和打字机相差甚远,但是键位的排列是相同的。

这种现象被叫做“路径依赖”:

当人们一旦做出了某种选择,惯性的力量就会让选择不断自我强化。

即便有更好的方案,也因为改变的成本太高而不得不被放弃。

今天的键盘布局,可以追溯到140年之前的灵机一动和120年前的一次意外,但是它们却能够决定了今天数十亿人的使用习惯。

计算机键盘和打字机之间的血缘关系一望可知。

今天的键盘看起来和IBM公司在上世纪50年代开发的电动打字机键盘十分相似,而再向前追溯,则是更早的机械打字机。

它的历史可以追溯到18世纪早期——为了让盲人也能够书写,1714年,一位名叫亨利·米尔的英国人申请了打字机的专利。

可惜他的专利文献和设计图现在都已经遗失,我们再也无缘看见世界上第一部打字机是什么样子。

显然,这种小众工具没能流行开来。

那个时代的人们依然满足于用手书写,他们对速度和整齐的要求似乎还不是很高。

直到资本主义变得越来越成熟,人们对文字的需求越来越大的时候,打字机的市场才真正开始培育起来。

在十九世纪,人们已经设计出了数十种打字机:

从能够打出精美的印刷字体的到模仿手工书写的,一应俱全。

早期的打字机有一个问题。

当按下一个按键后,会拉动一根钢丝,钢丝连接着上方字盘中的杠杆,每个杠杆末端都有一个字母的凸模,把字母像是盖章那样敲在纸面上。

如果打字速度过快的话,上方的杠杆往往来不及弹回,就会卡住。

不得不承认,解决这个问题的办法很有创意。

肖尔斯找到了他的妹夫詹姆斯-登斯莫尔帮忙,而这位数学老师建议减慢打字的速度,以尽可能避免卡键的状况。

他认为把字母乱序排列会有好处。

事实上这种以“QWERTY”布局排列的打字机的确减少了卡键的发生,而在推广这种打字机的时候,发明者们说这是最科学的排列方法,能够有效地提高打字速度。

这一谣言被人们相信了接近100年之久。

英国打字机博物馆馆长、《打字机世纪》一书的作者威尔弗雷德·比彻声称,“这种所谓科学安排以减少手指移动距离的说法,是彻头彻尾的谎言。

”,而且,“对字母的任何一种随机性的安排,都会比现在这种安排合理。

”虽然今天的卡键问题早已不存在了,但是这种布局已经固定了下来。

直到今天,我们还会在大多数英文键盘上看到它,完全无法想象,在过去的100年里,它浪费了多么惊人的时间。

二、浅谈键盘技术应用及实现方案

(一)8086作为CPU如何接

Intel8086集成2.9万只晶体管,时钟频率为4.77MHz,内部数据总线(CPU内部传输数据的总线)、外部数据总线(CPU外部传输数据的总线)均为16位,地址总线为20位,可寻址1MB内存。

Intel8086拥有四个16位元一般的暂存器,也能够当作八个8位元暂存器来存取,以及四个16位元索引暂存器(包含了堆栈指标)。

资料暂存器通常由指令隐含地使用,针对暂存值需要复杂的暂存器配置。

它提供64K8位元的输出输入(或32K16位元)埠,以及固定的向量中断。

大部分的指令只能够存取一个内存位址,所以其中一个运算子必须是一个暂存器。

运算结果会储存在运算子中的一个。

Intel8086有四个内存区段(segment)暂存器,可以从索引暂存器来设定。

区段暂存器可以让CPU利用奇怪的方式存取内存的1MB。

在现今有区段的处理器中,8086把区段暂存器左移4位元然后把它加上去位址。

大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各区段有重叠。

尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制区段,但是在语言中,让使用指标(像是C编程语言)变得困难。

它导致指标的高效率表示变得困难,且有可能产生两个指向同一个地方的指标拥有不同的位址。

更坏的是,这种方式产生要让内存扩充到大于1MB的困难。

而80286的寻址方式改变让内存扩充较有效率。

(二)AT89C51作为CPU如何接,比较之后用AT89C51

AT89C51是一种带4K字节FLASH存储器(FPEROMFlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图2所示。

图2AT89C51结构框图

三、键盘扫描电路的硬件设计

单片机键盘根据不同的驱动控制方式,大体可分为两大类,一类是独立式键盘;一类是矩阵式键盘。

独立式键盘是键盘发展的早期阶段,应用在对按键复杂度要求较低的设备上。

独立式键盘的原理非常简单,就是将单片机的I/O口(输入/输出口)与按键物理连接起来,键盘有多少按键,每个按键都要和单片机的一个I/O口相连。

这样设计的优点是结构简单,不需要过多的连线。

但是缺点也非常明显:

常见的80系列单片机总共只有四十个端口,而I/O口只有三十二个,一个键盘就占去了其中大部分的I/O口,那单片机就没有足够的端口去控制其它设备了。

(一)按键式和编码式

1.简要说明一下键盘的工作原理:

按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。

行线通过上拉电阻接到+5V电源上。

无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。

2.行列扫描法原理第一步,使行线为编程的输入线,列线是输出线,拉低所有的列线,判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则所有的行线都为高电平。

第二步,在第一步判断有键按下后,延时10ms消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下一步,否则返回第一步重新判断。

第三步,开始扫描按键位置,采用逐行扫描,每间隔1ms的时间,分别拉低第一列,第二列,第三列,第四列,无论拉低哪一列其他三列都为高电平,读取行值找到按键的位置,分别把行值和列值储存在寄存器里。

第四步,从寄存器中找到行值和列值并把其合并,得到按键值,对此按键值进行编码,按照从第一行第一个一直到第四行第四个逐行进行编码,编码值从“0000”至“1111”,再进行译码,最后显示按键号码。

3.数码管动态扫描原理:

数码管动态扫描原理:

数码管的7个段及小数点都是由LED块组成的,显示方式分为静态显示和动态显示两种。

数码管在静态显示方式时,其共阳管的位选信号均为低电平,四个数码管的共用段选线a、b、c、d、e、f、g、dp分别与CPLD的8根I/O口线相连,显示数字时只要给相应的段选线送低电平。

数码管在动态显示方式时,在某一时刻只能有一个数码管被点亮显示数字,其余的处于非选通状态,位选码端口的信号改变时,段选码端口的信号也要做相应的改变,每位显示字符停留显示的时间一般为1-5ms,利用人眼睛的视觉惯性,在数码管上就能看到相当稳定的数字显示。

通用键盘长按键实现方法及其在输入中的应用方法,属于计算机应用领域。

通用键盘长按键实现方法包括:

创建并安装键盘钩子动态链接程序,当使用键盘时,获取底层键盘消息并记录键盘的“按下消息”和“放开消息”的顺序和次数;根据重复键与“按下消息”和“放开消息”顺序和次数的关系判断出当前按键是否为长按键。

长按键在输入中的应用方法包括:

监控当前按键是否为长按键,如果是,查询是否存在与当前按键匹配的汉字首编码,如果存在,将修改光标定位到对应的汉字或编码上,更新显示提示行并等待修改。

本发明通过识别通用键盘的长按键,实现了输入时快速定位和修改错误汉字功能,明显地增强了通用键盘的实用功能。

(二)矩阵式

1.4*4矩阵式键盘识别显示系统概述

矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。

显示按键信息,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。

并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键。

矩阵式键盘简介:

矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为N*N个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

最常见的键盘布局如图1所示。

一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。

阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

2.路硬件说明

(1)在“单片机系统”区域中,把单片机的P1.0-P1.7端口通过8联拨动拨码开关JP3连接到“4*4行列式键盘”区域中的M1-M4,N1-N4端口上[3]。

即将P1口作为整个系统的输入接口电路。

(2)在“单片机系统”区域中,把单片机的P0.0-P0.6端口通过上拉电阻连接到“静态数码显示模块”区域中的任何一个a-g端口上。

(3)此实验采用的是共阴极LED显示块,只有当a-g端口输入高电平时才有效,即显示块中的对应的发光二极管才发光,低电平时不显示,通过a-g端口的不同输入使显示器显示不同的字符。

3.硬件电路设计及电路图

硬件电路设计图如下图3所示。

把单片机的P1.0-P1.7端口通过8联拨动拨码开关连接到“4*4行列式键盘”,其中P1.0-P1.3作为列线,P1.4-P1.7作为行线,把单片机的P0.0-P0.6端口连接到共阴极“静态数码显示模块”区域中对应的a-g端口上;系统首先通过CPU对全部键盘进行扫描,即把第一根行线置为“0”状态,其余行线置于“1”状态,读入输入缓冲器的状态,若其状态全为“1”表明该行无键按下,再将第二根行线置为“0”状态,同样读入输入缓冲器的状态,如其状态也全为“1”,则置第一根行线置为“0”状态,以此类推[5]。

如读入输入缓冲器的状态不全为“1”,确定哪一根列线为“0”状态,当某个键的行线和列线都为“0”状态时,表明该键按下。

最后通过显示程序将该键的序号显示出来。

图3硬件电路图

四、程序说明及其流程图

(一)汇编程序

KEYEQU30H

ORG0000H;入口地址

SJMPSTART

START:

MOVP0,#00H

JIXU:

MOVP1,#0FFH;判第0行是否有键按下

CLRP1.4;将P1.4清零

MOVA,P1

ANLA,#0FH;屏蔽高4位

XRLA,#0FH

JZNOKEY0;A为0,转向NOKEY0

LCALLDELAY10MS;延时,去抖动

MOVA,P1;再确认一次

ANLA,#0FH

XRLA,#0FH

JZNOKEY0;A为0,转向NOKEY0

MOVA,P1;判哪一个键按下

ANLA,#0FH

CJNEA,#0EH,NEXT1

MOVKEY,#0

LJMPOK;转向显示程序

NEXT1:

CJNEA,#0DH,NEXT2

MOVKEY,#1

LJMPOK

NEXT2:

CJNEA,#0BH,NEXT3

MOVKEY,#2

LJMPOK

NEXT3:

CJNEA,#07H,NOKEY0

MOVKEY,#3

LJMPOK

NOKEY0:

MOVP1,#0FFH;判第1行是否有键按下

CLRP1.5;将P1.5清零

MOVA,P1

ANLA,#0FH;屏蔽高4位

XRLA,#0FH

JZNOKEY1;A为0,转向NOKEY1

LCALLDELAY10MS;延时,去抖动

MOVA,P1;再确认一次

ANLA,#0FH

XRLA,#0FH

JZNOKEY1;A为0,转向NOKEY1

MOVA,P1;判哪一个键按下

ANLA,#0FH

CJNEA,#0EH,NEXT5

MOVKEY,#4

LJMPOK

NEXT5:

CJNEA,#0DH,NEXT6

MOVKEY,#5

LJMPOK

NEXT6:

CJNEA,#0BH,NEXT7

MOVKEY,#6

LJMPOK

NEXT7:

CJNEA,#07,NOKEY1

MOVKEY,#7

LJMPOK

NOKEY1:

MOVP1,#0FFH;判第2行是否有键按下

CLRP1.6;将P1.6清零

MOVA,P1

ANLA,#0FH;屏蔽高4位

XRLA,#0FH

JZNOKEY2;A为0,转向NOKEY2

LCALLDELAY10MS;延时,去抖动

MOVA,P1;再确认一次

ANLA,#0FH

XRLA,#0FH

JZNOKEY2;A为0,转向NOKEY2

MOVA,P1;判哪一个键按下

ANLA,#0FH

CJNEA,#0EH,NEXT9

MOVKEY,#8

SJMPOK

NEXT9:

CJNEA,#0DH,NEXT10

MOVKEY,#9

SJMPOK

NEXT10:

CJNEA,#0BH,NEXT11

MOVKEY,#10

SJMPOK

NEXT11:

CJNEA,#07,NOKEY2

MOVKEY,#11

SJMPOK

NOKEY2:

MOVP1,#0FFH;判第2行是否有键按下

CLRP1.7;将P1.6清零

MOVA,#P1

ANLA,#0FH;屏蔽高4位

XRLA,#0FH

JZNEXT16;A为0,转向NEXT16

LCALLDELAY10MS;延时,去抖动

MOVA,P1;再确认一次

ANLA,#0FH

XRLA,#0FH

JZNEXT16;A为0,转向NEXT16

MOVA,P1;判哪一个键按下

ANLA,#0FH

CJNEA,#0EH,NEXT13

MOVKEY,#12

SJMPOK

NEXT13:

CJNEA,#0DH,NEXT14

MOVKEY,#13

SJMPOK

NEXT14:

CJNEA,#0BH,NEXT15

MOVKEY,#14

SJMPOK

NEXT15:

CJNEA,#07H,NEXT16

MOVKEY,#15

SJMPOK

NEXT16:

LJMPJIXU

OK:

MOVA,KEY;查表显示

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

LJMPJIXU

DELAY10MS:

MOVR6,#10;延时

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

(二)流程图

程序流程图见图4所示。

 

3.仿真结果及分析

在proteus中设计好实验电路后,然后在proteus编程环境中进行程序设计和编译,生成HEX文件并加载HEX文件,点启动,运行仿真[6]。

由于开始时P0口的值被赋为00H,P1口的值为FFH,当无键按下时,将P1.4口置0,再将P1口的值送A,屏蔽高4位,与0F相异或后,A的值变为0,即第0行没有键按下,转入NOKEY0子程序中,重新赋值P1口的值为FFH,将P1.5口置0后送A,屏蔽高4位,与0F相异或后,A的值又变为0,即第1行没有键按下[7],转入NOKEY1子程序中,同理,可以得知第2行和第3行也没有键按下。

因而,P0口没有被重新赋值,保持为00H不变,又显示器是共阴极的,此时P0.0-P1.6口均为“0”,即“a-g”段均不显示,从而显示器不显示,并转向程序的开始继续循环扫描键盘,直到有键按下为止。

五、结论

回顾起此次课程设计,感觉受益匪浅,从拿到题目到完成整个编程,从理论到实践,学到很多很多的课堂理论中没学到过的东西,不仅对键盘的识别技术这一章节的知识点有了深刻的认识,而且对这学期开设的单片机这门课程有了更全面的了解,尤其是在学习使用proteus软件片编程和仿真时收获良多。

通过这次单片机课程设计,还使我懂得了实践的重要性。

同时在程序调试的过程中提高自己的发现问题、解决问题、实际动手和独立思考的能力。

致谢

本论文是老师的悉心指导下完成的。

老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。

不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。

本论文从选题到完成,每一步都是在老师的指导下完成的。

在此,谨向老师表示崇高的敬意和衷心的感谢!

还要感谢同学们对我的关心、支持和帮助。

最后,感谢我远在千里之外的父母,是他们默默的关心和爱,让我在大学安逸地学习。

在今后的生活中,我会尽我最大的努力回报所有关心我的人。

参考文献:

[1]张俊谟.单片机中级教程[M].北京:

北京航空航天大学出版,2006

[2].何立民编著.《MCS-51单片机应用系统设计系统配置与接口技术》

[3]GallagerRG.Low-DensityParity-CheckCodes[J].IRETrans.Inform.Theory,1962,8

(1):

21~28.

[4]MacKayD.EncyclopediaofSparseGraphCodes[EB/OL].http:

//www.Inference.Phy.Cam.ac.uk/mackay/cods/data.htm.2004,10.

[5]电子工业出版社.单片机设计与应用[M].

[6] 谢自美.电子线路设计•实验•测试.:

华中科技大学出版社,2008

[7] 陈小忠.单片机实用接口技术子程序[M].人民邮电出版社,2005

主要内容简介:

(300——500字)

指导老师姓名

职称

 

成绩

指导老师签名

总评意见:

 

评审人:

年月日

注:

1.评语、成绩由指导老师填写。

2.评语及总评意见应包括学术价值、实际意义、达到水平、学术观点和论证有无错误。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2