单片机应用技术 单片机与键盘的连接 单片机与键盘的连接.pptVIP

  • 63
  • 0
  • 约6.05千字
  • 约 34页
  • 2020-08-29 发布于北京
  • 举报

单片机应用技术 单片机与键盘的连接 单片机与键盘的连接.ppt

模块七 系统扩展与接口技术 7.2.1 键盘及其抖动问题 键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。一般单片机系统中采用非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。 7.2.1 键盘及其抖动问题 组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。当开关S断开时,P1.0输入为高电平,S闭合时,P1.0输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动。 消除抖动的方法 硬件方法:一般不常用。 软件方法:单片机设计中常用软件法,软件去除抖动其实很简单,就是在单片机获得P1.0口为低的信息后,不是立即认定S已被按下,而是延时10毫秒或更长一段时间后再次检测P1.0口,如果仍为低,说明S的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高),再延时5~10个毫秒,消除后沿的抖动,然后再对键值处理。 7.2.2 单片机与键盘的连接 将每个按键的一端接到单片机的I/O口,另一端接地。 实例 如下图所示,采用不断查询的方法,即检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。假设两个键定义如下: P3.0:开始执行某种操作(假设让8只发光二极管闪烁) 。 P3.1:停止执行。 源程序 void delay(unsigned char); bit key(); void lsd(unsigned char); unsigned char vkey; bit start_end=0; void main() {unsigned char ldata; while(1) { } } 源程序(延时函数delay()) void delay(unsigned char t) { unsigned char i,j; for(i=t;i0;i--) for(j=200;j0;j--); } 源程序(判断是否有键按下函数) bit key() { unsigned char temp; bit flag=0; temp=P3; temp=temp|0xfc; temp=temp^0xff; if(temp==0) return flag; else { } } 2、采用中断方式 各个按键都接到一个与非门上,当有任何一个按键按下时,都会使与门输出为低电平,从而引起单片机的中断,它的好处是不用在主程序中不断地循环查询,如果有键按下,单片机再去做相应的处理。 实例 试编程实现由3个按键控制发光二极管的全亮、闪烁或全灭。 #includereg51.h void delay(unsigned char); unsigned char flag; void main() { IT0=1;EA=1;EX0=1; while(1) {switch(flag) { case 1:P0=0x00;break; case 2:P0=~P0;delay(250);break; case 3:P0=0xff;break; } } } 中断服务函数 void isr_int0() interrupt 0 { unsigned char kdata; kdata=P1;kdata=kdata^0xff; kdata=1; if(kdata!=0) { kdata=1; if(kdata!=0) flag=3; else flag=2; }else flag=1; } 二、矩阵式键盘接口技术 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 1、矩阵式键盘的结构 当按键没有按下时,所有的输入端都是高电平,代表无键按下。一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可判断是否有键按下了。 2、矩阵式键盘的按键识别方法——行扫描法 1)判断键盘中有无键按下。将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 2)判断闭合

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档