任务十键盘接口_第1页
任务十键盘接口_第2页
任务十键盘接口_第3页
任务十键盘接口_第4页
任务十键盘接口_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、任务十键盘接口按键及键盘按键及键盘u键盘:由若干个按键组成的开关矩阵,是实现人键盘:由若干个按键组成的开关矩阵,是实现人机对话或人机通信的常用工具。机对话或人机通信的常用工具。u 根据按键的识别方式分:根据按键的识别方式分:由硬件识别键的闭合由硬件识别键的闭合编码键盘编码键盘由软件识别键的闭合由软件识别键的闭合未编码键盘未编码键盘u 按键开关:机械弹性开关,机械开关在闭合及按键开关:机械弹性开关,机械开关在闭合及断开瞬间均伴随有一连串的抖动断开瞬间均伴随有一连串的抖动 ,时间一般为,时间一般为 510ms。按键及键盘按键及键盘键按下闭合稳定前沿抖动后沿抖动释放稳定键释放按键时的抖动按键时的抖动

2、u 消除键抖动可用硬件和软件两种方法消除键抖动可用硬件和软件两种方法硬件消抖:硬件消抖:RS触发器触发器软件消抖:延时软件消抖:延时10ms左右再检测左右再检测Vcc(+5V)Vcc(+5V)AB输出RS触发器消抖电路触发器消抖电路键盘扫描控制方式键盘扫描控制方式u 程序控制方式:键盘处理程序固定在主程序的某个程序程序控制方式:键盘处理程序固定在主程序的某个程序段。段。特点:对特点:对CPU工作影响小工作影响小应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输入响应的及时性。入响应的及时性。u 定时控制扫描方式:利用定时定时控制扫描

3、方式:利用定时/计数器每隔一段时间产计数器每隔一段时间产生定时中断,生定时中断,CPU响应中断后对键盘进行扫描。响应中断后对键盘进行扫描。特点:采用定时特点:采用定时/计数器定时控制扫描间隔。计数器定时控制扫描间隔。定时时间不能太长,否则影响对键盘输入响应的及时性。定时时间不能太长,否则影响对键盘输入响应的及时性。u 中断控制方式:利用外部中断源,响应键盘输入信号。中断控制方式:利用外部中断源,响应键盘输入信号。特点:能及时处理键盘输入,又能提高特点:能及时处理键盘输入,又能提高CPU运行效率运行效率要占用一个中断资源。要占用一个中断资源。独立式未编码键盘接口独立式未编码键盘接口u 独立式键盘

4、:各按键相互独立地接通一条输入数据线独立式键盘:各按键相互独立地接通一条输入数据线 。u 查询方式:查询方式:输入线平时为高电平;输入线平时为高电平;若有任意键按下时,输若有任意键按下时,输入线为低电平。入线为低电平。u 优点:电路、编程简单优点:电路、编程简单 u 缺点:按键较多时,占缺点:按键较多时,占用较多用较多I/OI/O口线。口线。K0K1K2 例、用查询方式编写独立式按键程序例、用查询方式编写独立式按键程序# include unsigned char key_value;void main(void) P1=P1|0 x07;/设置设置P1.0-P1.2为输入状态为输入状态whi

5、le(1) key_value=P1&0 x07;/读读P1.0-P1.2的状态的状态 switch(key_value) case 0 x06: ; break;/K0按下按下case 0 x05: ; break; /K1按下按下case 0 x03: ; break; /K2按下按下 default: ; break; 行列式未编码键盘原理行列式未编码键盘原理未编码未编码4*4行列式键盘行列式键盘K0K1K2K3K4K5K6K7K8K9K1 0K1 1K1 2K1 3K1 4K1 5A8A9A1 0A1 1A1 2A1 3A1 4A1 5行列式键盘行列式键盘列扫描查询原理列扫描查

6、询原理u行列式键盘列扫描查询原理行列式键盘列扫描查询原理先判别按键所在的行:由先判别按键所在的行:由P2口输出列扫描字口输出列扫描字0 x0F,然,然后读行线状态到变量后读行线状态到变量temp1中。中。 如果有按键按下,则行输入不全为如果有按键按下,则行输入不全为1,即不等于,即不等于0 x0F; 如果无按键按下,则行输入全为如果无按键按下,则行输入全为1,即等于,即等于0 x0F。再判别按键所在的列:由再判别按键所在的列:由P2口输出行扫描字口输出行扫描字0 xF0 ,然,然后读列线状态到变量后读列线状态到变量temp2中。中。将将temp1和和temp2的状态相或得到按键的编码,从而知的

7、状态相或得到按键的编码,从而知道按键的值。道按键的值。# include void mDelay ( unsigned int Delay );sbit LED_CS=P14;/延时子程序:由延时子程序:由Delay参数决定延时时间参数决定延时时间void mDelay(unsigned int Delay) unsigned int i; for(;Delay0;Delay-) for(i=0;i114;i+) ; /按键扫描子程序,有键按下,返回键值按键扫描子程序,有键按下,返回键值00-15;无键按下,返回;无键按下,返回0 xff。unsigned char Matrix_key()

8、unsigned char key, temp1,temp2; key=0 xff;/ 初始化键值初始化键值 P2=0 x0f;/ 输出列扫描字输出列扫描字 if( (P2&0 x0F) !=0 x0f)/ 读行线状态,判断是否有键按下读行线状态,判断是否有键按下 mDelay(10); / 延时消抖延时消抖P2=0 x0f;/ 输出列扫描字输出列扫描字 temp1=P2&0 x0f; / 读行线状态到读行线状态到temp1中中 if( temp1!=0 x0f ) / 有键按下有键按下 P2=0 xf0;/ 输出行扫描字输出行扫描字 temp2=P2&0 xf0;/

9、读列线状态到读列线状态到temp2中中 switch( temp1|temp2 ) case 0 xee:key=0; break; case 0 xde:key=1; break; case 0 xbe:key=2; break; case 0 x7e:key=3; break; case 0 xed:key=4; break; case 0 xdd:key=5; break; case 0 xbd:key=6; break; case 0 x7d:key=7; break; case 0 xeb:key=8; break; case 0 xdb:key=9; break; case 0 x

10、bb:key=10;break; case 0 x7b:key=11;break; case 0 xe7:key=12;break; case 0 xd7:key=13;break; case 0 xb7:key=14;break; case 0 x77:key=15;break; default: key=0 xff; break; else ; return ( key ); /返回键值返回键值 1、对实验板上的独立式按键编程,实现以下功能:(1)按K17,使得LED5点亮。(2)按K18,使得LED6点亮。K1 7K1 8K1 9K2 0OE11A12A24A36A48Y412Y314Y216Y118Y53Y65Y77Y89GND10A81

温馨提示

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

评论

0/150

提交评论