注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
键盘子程序(AVR)
文章长度[4221] 加入时间[2007/1/12] 更新时间[2024/10/15 15:51:10] 级别[0] [评论] [收藏]

键盘扫描有中断方式和查询方式
#i nclude "jn8515def.h"

/******以下是键盘排列图******
                   |       |       |
PC0  ___1|__2|__3|__
                    |      |        |
PC1  ___4|__5|__6|__
                   |       |        |
PC2  ___7|__8|__9|__
                    |       |       |
PC3  ___C|__0|__S|__  
                    |       |       |
                    |       |       |
               PC4 PC5 PC6
*****************************/  
//下沿为有效键值          0    1    2    3    4    5    6    7    8    9  s(10)  c0   c1   c4   c7   cs  c
flash uchar cKeyTab[]={0x57,0x6e,0x5e,0x3e,0x6d,0x5d,0x3d,0x6b,0x5b,0x3b,0x37,0x47,0x66,0x65,0x63,0x27,0x67};
flash uchar cKeyOut[]={0xef,0xdf,0xbf};           //其中一列为0
flash uchar cKeyDir[]={0x10,0x20,0x40}; 
uchar cMenu=0;

uchar cKeyVal()
{  static uchar cLastKv,cSameKvNum=0; 
   static   bit bKeyPress=0;
   uchar i,j,cKeytmp=0xff;
   for(i=0;i<3;i++)
   {  DDRC&=0x80;
      DDRC|=cKeyDir[i];
      PORTC=cKeyOut[i];  
      #asm("nop")
      #asm("nop")
      cKeytmp=PINC&0x7f;  
      for(j=0;j<16;j++)
      {  if(cKeyTab[j]==cKeytmp)
         {  cWaitTime=10;          //延时去抖
            goto Next;  
         }
      }
   }
  // do{                           //等待按键释放
   // }while(!bKeyPress);   
   cSameKvNum=0; 
   bKeyPress=0;
   return 0xff;
Next:
//   delay_ms(2);   
   if(bKeyPress) return 0xff;
   if(cKeytmp==cLastKv)                
   {  if(++cSameKvNum>10)
      {  cSameKvNum=0;
         bKeyPress=1;
         return j;
      }
   }
   else
   {  cSameKvNum=0; 
      cLastKv=cKeytmp;
   }
    
   return 0xff;//返回空键值    
}

1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389