键盘接口技术_第1页
键盘接口技术_第2页
键盘接口技术_第3页
键盘接口技术_第4页
键盘接口技术_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键盘接口技术独立式键盘矩阵式键盘训练项目键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。在单片机外围电路中,通常用到的按键是机械触点式弹性开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(1和0),当开关闭合(0)时,线路导通,开关断开(1)时,线路断开。常见的键盘种类有独立式键盘和矩阵式键盘。一、独立式键盘1、独立式键盘结构键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。每个按键单独占用一根I/O口线,每个按键工作不会影响其他I/O口线的状态。多用于所需键盘不多的场合。2、独立式键盘接口结构简单,每个按键接单片机的一条I/O线,通过对输入线的查询,可以识别每个按键的状态。3、按键触点的机械抖动机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。抖动时间的长短与开关的机械特性有关,一般为5—10ms。4、消抖方法为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件消抖;而当键数较多时,采用软件消抖。①硬件消抖②软件消抖软件上采取的措施是在检测到有按键按下时,执行一个10—20ms左右(具体时间应视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而消除抖动的影响。二、矩阵式键盘1、矩阵式键盘结构2、键盘扫描方式(1)扫描法

扫描法是在判定有键按下后逐列(或逐行)置低电平,同时读入行(或列)的状态,如果行(或列)的状态出现非全1状态,这时0状态的行、列交点的键就是所按下的键。

扫描法需要逐列扫描查询,当被按下的键处于最后一列时,则需要经过多次扫描才能获得此键所处的行列值

(a)将行线编程为输入线,列线为输出线,并使输出线输出为全零,行线变为低电平的为按键所在行。(b)将列线编程为输入线,行线为输出线,并使输出线输出为全零,列线变为低电平的为按键所在列。(a)线反转法第一步(b)线反转法第二步

(2)反转法三、训练项目1、简易数字调节器(1)训练目的①了解独立式键盘的结构与工作原理。②掌握按键的检测与软件消抖方法。③学会通过独立式按键操作设置参数的编程方法。(3)任务引导(2)训练任务本项目要完成的任务是设计一个简易数字调节器。用两位数码管显示数值,变化范围00—59。开始时显示00,每按下key1键一次,数值加1;每按下key2键一次,数值减1;每按下key3键一次,数值归零;按下key4键一次,利用定时器功能使数值开始自动每秒加1,再次按下key4键,数值停止自动加1,保持原来的数。Key1—key4键均采用独立式按键。由独立式键盘工作原理知,要通过四个按键实现不同的数字显示,只需要依次检测key1—key4键是否有键按下,若有,延时10—20ms消抖后再判断是否有键按下,若确认有,再转去执行相应的按键动作即可。(4)任务实施①硬件电路设计②软件设计#include<reg52.h>//52系列单片机头文件#include<stdio.h>//标准I/O库函数头文件#defineucharunsignedchar //宏定义#defineuintunsignedintucharcodeBitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};//8字节位选码ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//共阳极0~F字段码sbitkey1=P3^2;//定义按键sbitkey2=P3^3;sbitkey3=P3^4;sbitkey4=P3^5;ucharnumt0,num;voiddelayms(uintxms)//xms延时函数{ uinti,j; for(i=xms;i>0;i--) for(j=110;j>0;j--);} voiddisplay(ucharnumdis) //显示子函数{ ucharshi,ge; //将要显示的2位数分离成十位、个位 shi=numdis/10;//十位数 ge=numdis%10;//个位数 P0=table[shi]; //送十位数段选码 P2=0x02; //送位选 delayms(5); //延时 P2=0x00;//消隐 P0=table[ge]; //送个位数段选码 P2=0x01;//送位选 delayms(5);//延时 P2=0x00;//消隐}voidT0_init()//定时器T0初始化函数{ TMOD=0x01; //设置定时器T0为工作方式1(00000001) TH0=(65536-50000)/256; //装初值50ms中断一次 TL0=(65536-50000)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 }voidkeyscan()//键盘扫描子函数{ if(key1==0) { delayms(10);//消抖 if(key1==0) { num++;//数值加1 if(num==60)//当到60时重新归0 num=0; while(!key1); //等待按键释放 } } if(key2==0) { delayms(10);//消抖 if(key2==0) { if(num==0) //当到0时重新归60 num=60; num--; //数值减1

while(!key2); } } if(key3==0) { delayms(10);//消抖 if(key3==0) { num=0;//数值归0 while(!key3); } } if(key4==0) { delayms(10);//消抖 if(key4==0) { while(!key4);//等待按键释放 TR0=~TR0; //启动或停止定时器T0 } }}voidmain(){ T0_init(); while(1) { keyscan(); display(num); }}voidT0_time()interrupt1//T0中断服务函数{ TH0=(65536-50000)/256; //重装初值 TL0=(65536-50000)%256; numt0++; if(numt0==20) //如果中断次数到20次,说明1s时间到 { numt0=0; //numt0清0,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论