单片机2个引脚识别6个按键

2020-01-13 18:36发布

本帖最后由 86hupeng 于 2012-6-7 12:02 编辑

利用单片机2个引脚识别6个按键
大概的程序如下,具体的程序还有待改进
#define S1    1
#define S2    2
#define S3    3
#define S4    4
#define S5    5
#define S6    6  

//***************两IO出六键*************************
unsigned char KeyValue(void)
{
        unsigned char KeyTemp;
        if(!IO1&&!IO2) KeyTemp=S3;//如果都为低,则说明是S3
          else if(!IO1) KeyTemp=S2;
           else if(!IO2) KeyTemp=S1;
             else
                     {
                             IO1=1;//拉高IO1,来读取状态
                             IO2=0;//扫描,置IO1=0;
                             if(!IO1) //IO1==0的话,只有S4或S5按下会出现               
                                         { //反向扫描按键
                                                 IO2=1;//拉高IO2,来读取状态
                                                 IO1=0;        
                                                 if(!IO2) KeyTemp=S4;//IO2==0的话,只能是S4按下会出现   
                                          else       KeyTemp=S5;
                                         }         
                             else//只能是S6了*/
                                             KeyTemp=S6;                             
                     }
        IO1=1;
        IO2=1;
        return(KeyTemp);

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
45条回答
CHEN1986
1楼-- · 2020-01-14 19:47
学习学习...一下啊..
86hupeng
2楼-- · 2020-01-14 20:26
chengtina 发表于 2012-6-7 10:47
这样每次检测是否肯定有一按键产生?如果任何按键都没按下呢?是否应该在
                             el ...

恩,要改滴,我上面只是大改算法,不同单片机肯定还有那么一些不同的
qsq0128
3楼-- · 2020-01-15 02:12
7楼,这样的话还有可能是S4和S6按下
liujialin_
4楼-- · 2020-01-15 06:49
 精彩回答 2  元偷偷看……
lxa0
5楼-- · 2020-01-15 09:39
好像楼主发的图片挂了。。。。。。。。。。
86hupeng
6楼-- · 2020-01-15 11:10
lxa0 发表于 2012-6-7 11:50
好像楼主发的图片挂了。。。。。。。。。。

的确是不知道为什么就挂了,现在重发

一周热门 更多>