微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么给线旋转法扫描矩阵键盘加延时?不想用delay(),打算用定时器延时防抖,或着加状态机,该怎么加呢?

怎么给线旋转法扫描矩阵键盘加延时?不想用delay(),打算用定时器延时防抖,或着加状态机,该怎么加呢?

时间:10-02 整理:3721RD 点击:

我写了一个矩阵扫描程序,proteus下运行还可以,主要的思想是建立两个变量keylast,keynow,当定时器每计时10ms时检查if(P1 != 0x0f),进入扫描程序,把扫描后的键值赋给keynow,if(keynow != keylast){keychange =1;keynow = keylast;},之后通过keychang的变化去控制其他任务,其他任务完成后keychange清零。具体程序如下:
if(g_bSystemTime10mS == 1)
                 {
                     if(0x0f != P1)
                    {
                                 keynow = P1;
                                 switch(keynow)
                                 {
                                         case 0x07: j = 3; break;
                                         case 0x0b: j = 2; break;
                                         case 0x0d: j = 1; break;
                                         case 0x0e: j = 0; break;
                                         default: break;
                                 }
                    
                                 P1 = 0XF0;                                                                  
                                 keynow = P1;
                                 switch(keynow)
                                 {
                                         case 0x70: i = 3; break;
                                         case 0xb0: i = 2; break;
                                         case 0xd0: i = 1; break;
                                         case 0xe0: i = 0; break;
                                         default: break;
                                 }
                                 P1 = 0x0f;
                                 keynow = MatNum[j];
                                 if(keynow != keyLast)
                                 {
                                         keyChange = 1;
                                         keyLast = keynow;
                                 }
                }g_bSystemTime10mS = 0;
}

已经找到资料了,附链接http://bbs.elecfans.com/forum.ph ... &extra=page%3D1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top