




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章单片机的键盘控制7.1项目内容:简单计算器的设计7.2程序设计7.3相关知识:单片机系统中的键盘接口技术7.48255A并行I/O口扩充键盘7.1项目内容:简单计算器的设计7.1.1硬件电路设计下图7-1是简单计算器设计的硬件电路。由AT89C51、单片机、时钟电路、复位电路构成一个基本的单片机系统,然后接上显示电路和键盘接口电路,就构成了简单计算器的硬件电路。设计电路由以下部分组成:
1.复位电路采用“上电复位”方式;
2.时钟电路采用12MHz的振荡脉冲,以保证单片机能按一定的频率运行;
3.显示电路:在P0口和P3口分别接上限流电阻和
LED七段数码管;
4.键盘接口电路:在P1口连接上4x4按键电路。7.1.2基本功能简单计算器的基本功能如下:
1、通过小键盘,可以实现数据的输入,并立即在
LED数码管上显示;
2、可以实现数据的输出,显示及程序退出;
3、可以进行简单的“+”,“-”,“*”,“/”运算,并将计算所得结果(不超过两位)在显示器上输出显示。
4、可以进行“清零”。7.2程序设计7.2.1程序代码设计简单计算器的主程序如下:int
main(void){ unsignedcharKey; type=0;
dataend=0; while(1) { Key=Keycan(); KeyReadData1(Key); display(0,data1); } return0;}voidCalculator(void)//计算部分{
switch(type) { case0x2b: { result=data1+data2;//相加
} break; case0x2d: { result=data1-data2;//相减
} break; case0x2a: { result=data1*data2;//相乘
} case0x2f: { result=data1/data2;//相除
} }}7.2.2仿真结果下图7-2是截至简单计算器运算时的某一个时刻运行情况:7.3相关知识:单片机系统中的键盘接口技术7.3.1键盘工作原理及消抖键盘的处理主要涉及3个方面的内容:1.按键的识别由于键位未按下,输出为高电平;键位按下,输出为低电平。因此,可以通过检测输出线上电平的高/低来判断键位有无按下。如果检测到为高电平,说明没有按下;如果检测到为低电平,则说明该线路上对应的键位已按下。2.抖动的消除消除按键抖动通常有两种方法:硬件抖动和软件抖动。硬件抖动是通过在按键输出电路上加上一定的硬件线路来消除抖动,一般采用R-S触发器或单稳态电路。软件消抖是利用延时来跳过抖动过程,当判断有键按下时,先执行一段大于10ms的延时程序后再去判断按下的键位是哪一个,从而消除前沿抖动的影响。对于后沿抖动,只需要在接收一个键位后,经过一定时间再去检测有无按键,这样就自然跳过后沿抖动时间而消除后沿抖动了,键盘处理过程往往就是采用这样的方式。3.键位的编码通常有两种编码方法:(1)用键盘连接的I/O线的二进制组合进行编码。
(2)顺序排列编码。如下图所示,这种编码,获得编码值时根据行线和列线进行了相应的处理。处理方法如下:编码值=行首编码值X+列号Y。如果一行有K个键,则行首编码值为nxK,n为行号,从0开始取。列号Y也从0开始取。7.3.2独立式键盘计算机常用的键盘有全编码键盘和非编码键盘两种全编码键盘能够由硬件逻辑自动提供与被按键对应的编码。非编码键盘,此类键盘只提供通、断两种状态,其它工作都要靠软件来完成。非编码键盘从结构形式上划分,一般有两种:独立式键盘与矩阵式键盘。独立式键盘就是各个按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不会影响其它的I/O接口线。因此,通过检测I/O接口线的电平状态就可以很容易地判断出哪个按键被按下了。图7-7为查询方式工作的独立式键盘的结构形式,查询方式在工作时,通过执行相应的查询程序来判断有无键按下,是哪一个键按下。
图7-8为中断方式工作的独立式键盘的结构形式中断方式处理时,则是请求中断,在中断服务程序中通过执行判键程序,判断是哪一个键按下。
例7-1:如图7-8所示,使用外中断,编写独立式按键程序。源代码如下清单所示:#include<reg51.h>#defineKEY_PORTP1//按键接在P1口uchar
key_value//存放键值bitint0_flag;//中断标志voidmain(void){initUart();//初始化串口int0_flag=0;//设置中断
0标志TCON=0x55;//电平触发外部中断IE=0x81;//打开外中断int0do{if(int0_flag){//如果有中断switch(key_value){//根据中断源分支case1:printf(“key-press0ispressed\n”);//可在此处插入按键0处理程序break;case2:printf(“key-press0ispressed\n”);//可在此处插入按键1处理程序break;…………case8:printf(“key-press7ispressed\n”);//可在此处插入按键1处理程序
break;
default:break;}int0_flag=0;//清中断0标志
}}while(TRUE);}voidexint0(void)interrupt0{EA=0;//关中断
int0_flag=1;//设置中断0标志
key_Value=~KEY_PORT&0x07;EA=1;//开总中断
}7.3.3矩阵式键盘矩阵式键盘又叫行列式键盘。用I/O接口线组成行、列结构,键位设置在行、列的交点上。1.行列式键盘电路的结构及原理图7-9所示为用AT89S51单片机扩展I/O口组成的行列式键盘电路。当键盘上没有键闭合时,行线和列线之间是断开的,所有行线P2.0~P2.3输入全部为高电平。当按下键盘上某个键使其闭合时,则对应的行线和列线短路,行线输入即为列线输出。如果此时把所有列线初始化为输出低电平,则通过读取行线输入值P2.0~P2.3的状态是否为全1,即可判断有无键按下。2.键盘的工作方式检测键盘上有无键按下通常采用3种方式:查询工作方式、定时扫描工作方式和中断工作方式。(1)查询工作方式这种方式是直接在主程序中插入键盘检测子程序,主程序每执行一次,则键盘检测子程序被执行一次,对键盘进行检测一次。如果没有键按下,则跳过键识别,直接执行主程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值,然后根据编码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序流程图如下图7-10所示。(2)定时扫描工作方式定时扫描工作方式是利用单片机内部定时器产生定时中断,当定时时间到时,CPU执行定时器中断服务器,对键盘进行扫描。如果有键位按下,并执行相应的键处理功能程序。定时扫描方式的键盘硬件电路与查询方式的电路相同。定时扫描方式实际上是通过定时器中断来实现处理的,为处理方便,在单片机中设置两个标志位,第一个为消除抖动标志位F1,第二个为键处理标志位F2。软件处理过程如图7-11所示。(3)中断工作方式在计算机应用系统中,大多数情况下并没有键输入,但无论是查询方式还是定时扫描方式,CPU都在不断地对键盘进行检测,这样会大量占用CPU检测时间。为了提高效率,可采用中断方式,中断方式是通过增加一根中断请求信号线,当没有按键按下时,无中断请求;有按键按下时,向CPU提出中断请求,CPU响应后执行中断服务程序,在中断服务程序中才对键盘进行扫描。这样在没有键按下时,CPU就不会执行扫描程序,提高了CPU工作的效率。7.48255A并行I/O口扩充键盘下图就是通过8255A芯片扩展的并行I/O芯片扩展的并行I/O接口连接4x8的矩阵式键盘。7.4.18255A的基础知识1、引脚及其功能PA口有一个8位数据输出锁存器和缓冲器、一个8位数据输入锁存器;PB口有一个8位输入/输出锁存器缓冲器,一个8位的数据输入/输出缓冲器。PC口有一个8位的输出锁存缓冲器,一个8位输入缓冲器。PA口可设置为输入或输出或双向方式工作;PB口只能设置为输入或输出方式,不能设置为双向方式工作;PC口可设置为输入/输出口,也可作为PA、PB口选通方式操作时的状态控制信号。8255A共占用4个口地址,为PA、PB、PC口及控制口地址,这4个地址之间的选择由A0、A1两端口线控制。口地址选择方式如下:
A1A0选择口
00A口
01B口
10C口
11控制口2.方式选择及方式操作
(1)方式选择。
(2)方式操作。7.4.28255A键盘的扩充8255A并行I/O端口扩充键盘电路图8255A并行I/O端口扩充键盘的程序流程图其程序清单如下所示:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineuintunsignedintvoidmain(void){
uchari;XBYTE[0xc000]=0x90;//设置PA口为输入端口;PB口为输出端口;都工作在方式1for(;;){i=XBYTE[0x0000];//采集键值XBYTE[0x4000]=i;//把采集的键值送给PB口}}
练习与思考题7-1何为键抖动?键抖动对键位识别有什么影响?怎样消除键抖动?7-2单片机应用系统中有哪几种键盘类型?7-3矩阵键盘有几种编码方式?怎样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂区日常保洁服务合同范本
- 协议钢板销售合同范本
- 厂家房车租赁合同范本
- 压本不押车合同范本
- 使用林地合同范本
- 个体餐饮劳动合同范本
- 公司民间借贷合同范本
- 《圆的周长》教学反思
- 山东省德州市五校2024-2025学年高二上学期期末联考语文试题
- 产品租赁押金合同范本
- 2024年世界职业院校技能大赛高职组“声乐、器乐表演组”赛项参考试题库(含答案)
- 2024年共青团入团考试题库及答案
- 2024解析:第十二章机械效率-讲核心(原卷版)
- 2023年国家公务员录用考试《申论》真题(副省卷)及答案解析
- 2023年海南省公务员录用考试《行测》真题卷及答案解析
- 2024-2030年中国语言培训行业竞争分析及发展策略建议报告版
- 2024-2030年中国医疗器械维修设备行业供需状况及发展策略分析报告
- 中国心力衰竭诊断和治疗指南2024解读(完整版)
- 女性健康知识讲座课件
- DB11T 1787-2020 二氧化碳排放核算和报告要求 其他行业
- 企业网络安全管理规范作业指导书
评论
0/150
提交评论