简介高效的键盘扫描程序

2020-02-04 09:29发布

发一个51单片机的键盘扫描程序,算法简单有效

/****************************************

键盘_不采用定时器_不延时

特点:
按键在松手后有效,灵敏度高,消耗资源少,运行效率高

独立键盘为:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7;
矩阵键盘为:行(上到下)_P2.3_P2.2_P2.1_P2.0
           列(左到右)_P2.7_P2.6_P2.5_P2.4

提供的操作函数:

//独立键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key
extern unsigned char keyboard_self();

//矩阵键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key****检测高四位
extern unsigned char keyboard_matrix();

****************************************/
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
binaimei2007
1楼-- · 2020-02-05 03:52
 精彩回答 2  元偷偷看……
tangwei039
2楼-- · 2020-02-05 05:29
good
gan1211
3楼-- · 2020-02-05 09:28
学习
amazing030
4楼-- · 2020-02-05 11:08
if(temp!=0xF0)//低电平判断
        {
                num_check++;
                if(num_check==10)//连续10次(10ms)低电平有效,则认为按键有效
                {
                        key_flag=1;//使能按键有效标识
                        temp_code=temp;//保存按键值
                }
        }

无延时无定时器的话这里怎么会是10ms?
外部每1ms调用一次?那也就是定时延时了
liaowei
5楼-- · 2020-02-05 16:58
if(temp!=0xF0)//低电平判断
        {
                num_check++;
                if(num_check==10)//连续10次(10ms)低电平有效,则认为按键有效
                {
                        key_flag=1;//使能按键有效标识
                        temp_code=temp;//保存按键值
                }
        }
1、延时的楼上提出了
2、要想更可靠,不是判断10次有没有低电平,而是这十次是不是都是一样的值
不管用定时器延时还是直接延时,都只是换汤不换药,换来一种写法而已
jianwenle
6楼-- · 2020-02-05 18:14
 精彩回答 2  元偷偷看……

一周热门 更多>