导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→:(小程序)键盘扫描:怎么会这样?DX帮忙,实在不解!

* 24006: :(小程序)键盘扫描:怎么会这样?DX帮忙,实在不解!

   foyyof 
foyyof发表的帖子 

 :(小程序)键盘扫描:怎么会这样?DX帮忙,实在不解!
我用的是芯片是华邦的W78E52B,P1口的p1.0,p1.1,p1.2接3-8译码器,与
p1.4,p1.5,p1.6,p1.7组成矩阵(共32键),具体扫描也就是传统做法如下:
void Keyscan() interrupt 1 using 1
{
  uchar pbf,n,key=0;
  TL0=0x55;//定时器初植
  TH0=0x95;//利用定时器来做定时扫描,不用延时去抖动:每隔20ms扫描一次.
  n=0;    //利用n来计算相应的键值
  pbf=0xf0;//74ls138的Q0=0,扫描开始;
  P1=pbf;送P1口
  if((P1&0xf0)!=0xf0) //判断是否有键闭合?有,则进一步确定键值。否则退出
    {
     while(key==0&&n  <8)//扫描条件:是否找到闭合键?不然就一直扫描8行(也就是
      {
         if(p14==0)
           key=4*n+1;
         else if(p15==0)
           key=4*n+2;
         else if(p16==0)
           key=4*n+3;
         else if(p17==0)
           key=4*n+4;//这样利用n可以有1-32个连续键值
         else 
            {
             pbf++; //使下一条行线为0
             P1=pbf;
             n++;
            }

       }
         Keywork(key); //键盘功能子程序
         key=0;
         while((P1&0xf0)!=0xf0);//等待释放
     }  
}
我感觉思路挺顺,但遇到了问题:结果发现它只能扫描到对应Q0行上的4个键!
别的行的键不能捕获!实在不解!请大虾指点!!!!谢谢了



发表时间:2003年4月9日22:33:03

  
回复该帖

本主题共有 5 帖,分页:>>>>>该主题的所有内容[5]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  24025.[详细]你去看看北航出的何立民的单片机应用系统设计上面有!!
摘要:......(无内容)
- [langren0468][1416次] 2003年4月10日

  24139.[详细]有什么?这样的例子?还是我的错误之处?
摘要:......(无内容)
- [foyyof][1289次] 2003年4月10日

  24141.[详细]那有很多关于键盘扫描的程序实列
摘要:......(无内容)
- [langren0468][1435次] 2003年4月10日

[上一篇帖子]:用涤纶电容或是聚苯电容都可以
[下一篇帖子]:请教黄河彩电红外接收头的问题?请教哪位用过黄河彩电的红外接收头(型号为HC 337M),若