保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

一种软件去除键抖动的方法


0
  由图2获得了如下最简逻辑表达式,作为表达式(1)的扩展:
  
  Kstore中是上一次的Kready,所以
  
  Kstroe=Kready(4)
  
  根据表2绘出的卡诺图如图2所示。
  
  表达式(3)是1个包含了表达式(1)的通用逻辑表达式。它用于既有重复键输出也有非重复键输出的系统中。对于只有重复键输出的系统,Kconst全为1,则Koutput=Kready,所以只用表达式(1)就可以了。如果系统只要求非重复键输出,则Kconst全为0,表达式(3)简化为:
  
  
  
  在实际应用中,1个比特表示1个键。C51中的字符变量可以处理8个键,如果系统需要更多的键,可选用整型变量、长整型变量或数组。如果系统的按键数量过多,则会占用较多单片机宝贵的内部寄存器,这是该方法的不足之处。
  
  三.应用程序实例
  
  为了进一步理解上述方法如何在编程中得以实现,在此提供了1个用C51单片机编程语言编制的8个按键的键处理程序,以供参考。该程序在KEILC51V6.02/uVsion2demo编译环境下编译通过。
  
  #include<intrins.h>
  
  #include<at89x51.h>
  
  unsignedcharkey_value;
  
  unsignedcharKinput;
  
  unsignedcharKtemp;
  
  unsignedcharKstore;
  
  unsignedcharKready;
  
  unsignedcharKoutput;
  
  unsignedcharbdataflag;
  
  codeunsignedcharKconst=0xaa;/*重复键和非重复键格式*/
  
  sbitendebounce=flag^0;
  
  sbitgetkey=iag^1;
  
  sbitkprocess=flag^2;
  
  sbitACC_7=ACC^7;
  
  voidmain(void);
  
  voiddebounce(void);
  
  voidget_key_value(void);
  
  voidmain(void)
  
  {
  
  /*初始化*/
  
  kinput=Ktemp=kready=Kstore=0;
  
  endebounce=0;
  
  getkey=0;
  
  kprocess=0;
  
  TMOD=0x01;
  
  TL0=0xe0;
  
  TH0=0xb1;
  
  TR0=1;
  
  ET0=1;
  
  EA=1;
  
  /*……*/
  
  while(1)/*循环*/
  
  {
  
  debounce();/*调用去除键抖动函数*/
  
  get_key_value();/*调用获取键值函数*/
  
  key_processing();/*调用键处理函数*/
  
  /*otherfunctions*/
  
  }
  
  }
  
  voiddebounce(void)
  
  {
  
  if(endebounce)
  
  {
  
  /*以下是去除键抖动表达式*/
  
  Kreqdy=Ktemp&Kinput|Kready&(Ktemp^Kinput);
  
  Ktemp=Kinput;
  
  /*以下表示式用于输出重复键和非重复键*/
  
  Koutput=Kready&(~Kstore|Kconst);
  
  Kstore=Kready;
  
  if(Koutput!=0)/*如果有键按下,置标志准备获取键值*/
  
  getkey=1;
  
  }

《一种软件去除键抖动的方法(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/178443.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。