《任务十键盘接口.ppt》由会员分享,可在线阅读,更多相关《任务十键盘接口.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、任务十任务十 键盘接口扩展键盘接口扩展u 任务分析:实现任务分析:实现键盘接口键盘接口扩展扩展u 硬件硬件独立式独立式键盘与键盘与行列式行列式键盘键盘的的结构和原理结构和原理u 软件软件独立式键盘独立式键盘查询查询原理原理 行列式键盘行列式键盘列扫描查询列扫描查询原理原理u 编译、下载、调试编译、下载、调试 编译软件:编译软件:keil 下载软件:下载软件:STC-ISP按键及键盘按键及键盘u键盘:由若干个键盘:由若干个按键按键组成的组成的开关矩阵开关矩阵,是实现人,是实现人机对话或人机通信的常用工具。机对话或人机通信的常用工具。u 根据按键的识别方式分:根据按键的识别方式分:由由硬件硬件识别
2、键的闭合识别键的闭合编码键盘编码键盘由由软件软件识别键的闭合识别键的闭合未编码键盘未编码键盘u 按键开关:机械弹性开关,机械开关在闭合及断按键开关:机械弹性开关,机械开关在闭合及断开瞬间均伴随有一连串的开瞬间均伴随有一连串的抖动抖动,时间一般为,时间一般为 510ms。按键及键盘按键及键盘键按下闭合稳定前沿抖动后沿抖动释放稳定键释放按键时的抖动按键时的抖动u 消除键抖动可用消除键抖动可用硬件硬件和和软件软件两种方法两种方法硬件硬件消抖:消抖:RS触发器触发器软件软件消抖:消抖:延时延时10ms左右再左右再检测检测Vcc(+5V)Vcc(+5V)AB输出RS触发器消抖电路触发器消抖电路键盘扫描控
3、制方式键盘扫描控制方式u 程序控制方式程序控制方式:键盘处理程序固定在主程序的某个程序:键盘处理程序固定在主程序的某个程序段。段。特点:对特点:对CPU工作影响小工作影响小应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输入响应的及时性。入响应的及时性。u 定时控制扫描方式定时控制扫描方式:利用定时:利用定时/计数器每隔一段时间产生计数器每隔一段时间产生定时中断,定时中断,CPU响应中断后对键盘进行扫描。响应中断后对键盘进行扫描。特点:采用定时特点:采用定时/计数器定时控制扫描间隔。计数器定时控制扫描间隔。定时时间不能太长,否则影响
4、对键盘输入响应的及时性。定时时间不能太长,否则影响对键盘输入响应的及时性。u 中断控制方式中断控制方式:利用外部中断源,响应键盘输入信号。:利用外部中断源,响应键盘输入信号。特点:能及时处理键盘输入,又能提高特点:能及时处理键盘输入,又能提高CPU运行效率运行效率要占用一个中断资源。要占用一个中断资源。独立式未编码键盘接口独立式未编码键盘接口u 独立式独立式键盘:各按键键盘:各按键相互独立相互独立地接通一条地接通一条输入输入数据线数据线。u 查询查询方式:方式:输入线平时为输入线平时为高电平高电平;若有任意若有任意键按下键按下时,输时,输入线为入线为低电平低电平。u 优点:电路、编程优点:电路
5、、编程简单简单 u 缺点:按键较多时,占缺点:按键较多时,占用用较多较多I/OI/O口线。口线。K0K1K2例、用查询方式编写独立式按键程序例、用查询方式编写独立式按键程序#include unsigned char key_value;void main(void)P1=P1|0 x07;/设置为输入状态设置为输入状态while(1)key_value=P1&0 x07;/读的状态读的状态 switch(key_value)case 0 x06:;break;/K0按下按下case 0 x05:;break;/K1按下按下case 0 x03:;break;/K2按下按下 default:;
6、break;行列式未编码键盘原理行列式未编码键盘原理未编码未编码4*4行列式键盘行列式键盘行列式键盘行列式键盘列扫描查询原理列扫描查询原理u行列式行列式键盘键盘列扫描查询列扫描查询原理原理先判别先判别按键所在的行按键所在的行:由:由P2口输出口输出列列扫描字扫描字0 x0F,然,然后读后读行线状态行线状态到变量到变量temp1中。中。如果如果有按键按下有按键按下,则行输入,则行输入不全为不全为1,即不等于,即不等于0 x0F;如果如果无按键无按键按下,则行输入按下,则行输入全为全为1,即等于,即等于0 x0F。再判别再判别按键所在的列按键所在的列:由:由P2口输出口输出行扫描字行扫描字0 xF
7、0,然,然后读后读列线状态列线状态到变量到变量temp2中。中。将将temp1和和temp2的状态的状态相或相或得到按键的编码,从而知得到按键的编码,从而知道按键的值。道按键的值。#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+);/按键扫描子程序,有键按下,返回键值按键扫描子程序,有键按下,返回键值
8、00-15;无键按下,返回;无键按下,返回0 xff。unsigned char Matrix_key()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;/输出行扫描字输
9、出行扫描字 temp2=P2&0 xf0;/读列线状态到读列线状态到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 xb
10、b: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);/返回键值返回键值 void main(void)unsigned char key_value;LED_CS=0;while(1)key_value=Matrix_key();/调用按键识别子程序调用按键识别子程序 switch(key_val
11、ue)/根据按键分支根据按键分支 case 0:P0=0 xfe;break;/0号按键,号按键,LED1点亮点亮 case 1:P0=0 xfd;break;/1号按键,号按键,LED2点亮点亮 case 2:P0=0 xfb;break;/2号按键,号按键,LED3点亮点亮 case 3:P0=0 xf7;break;/3号按键,号按键,LED4点亮点亮 case 4:P0=0 xef;break;/4号按键,号按键,LED5点亮点亮 case 5:P0=0 xdf;break;/5号按键,号按键,LED6点亮点亮 case 6:P0=0 xbf;break;/6号按键,号按键,LED7点亮点亮 case 7:P0=0 x7f;break;/7号按键,号按键,LED8点亮点亮 default:break;/无效按键无效按键 1、对实验板上的独立式按键编程,实现以下功能:(1)按K17,使得LED5点亮。(2)按K18,使得LED6点亮。2、对实验板上的行列式按键编程,实现以下功能:(1)按K0,使得数码管显示00;(2)按K1,使得数码管显示01;.;(16)按K15,使得数码管显示15。
限制150内