86hupeng 发表于 2012-6-7 09:39:28

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

本帖最后由 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);

bisoo 发表于 2012-6-7 09:48:14

GOOD 收了。{:victory:}

lryxr2507 发表于 2012-6-7 10:07:15

留着有用.

cenkey 发表于 2012-6-7 10:14:06

留着学习

sync765 发表于 2012-6-7 10:21:07

收藏了
{:lol:}

zyyn123 发表于 2012-6-7 10:41:36

这个不错,学习学习{:smile:}

chengtina 发表于 2012-6-7 10:47:28

这样每次检测是否肯定有一按键产生?如果任何按键都没按下呢?是否应该在
                           else//只能是S6了*/
                                             KeyTemp=S6;   
的地方改成这样呢?
                           else//只可能是S6了*/
                                             {
                                                IO2=1;//拉高IO2,来读取状态
                                                 IO1=0;      
                                                 if(!IO2) KeyTemp=S6;//IO2==0的话,只能是S6按下会出现
                                                 elseKeyTemp=0;//无键
                                          }

CHEN1986 发表于 2012-6-7 10:54:02

学习学习...一下啊..

86hupeng 发表于 2012-6-7 10:59:39

chengtina 发表于 2012-6-7 10:47 static/image/common/back.gif
这样每次检测是否肯定有一按键产生?如果任何按键都没按下呢?是否应该在
                           el ...

恩,要改滴,我上面只是大改算法,不同单片机肯定还有那么一些不同的

qsq0128 发表于 2012-6-7 11:25:47

7楼,这样的话还有可能是S4和S6按下

liujialin_ 发表于 2012-6-7 11:34:08

收下了,学习中

lxa0 发表于 2012-6-7 11:50:21

好像楼主发的图片挂了。。。。。。。。。。

86hupeng 发表于 2012-6-7 12:01:02

lxa0 发表于 2012-6-7 11:50 static/image/common/back.gif
好像楼主发的图片挂了。。。。。。。。。。

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

蜂巢 发表于 2012-6-7 12:32:46

idea不错。

xue_pic 发表于 2012-6-14 16:05:55

想法不错,有谁实际用过吗。

keshipt 发表于 2012-7-11 12:56:45

或许日后有用 顶

614229816 发表于 2012-7-11 21:45:46

和当初的3个引脚22个IO一个道理

hzqy110 发表于 2012-7-11 22:09:18

hengjingdianzi 发表于 2012-7-12 11:12:25

{:lol:}给力啊

downtoearth 发表于 2012-7-12 20:02:31

作个记号,或者以后都不会用到!

slzm40 发表于 2012-7-14 00:30:27

正要用呢

wuyongwang2345 发表于 2012-7-14 09:47:28

给力,赞一个

rui631483900 发表于 2012-7-14 20:15:49

还可以 学习学习

tonyone 发表于 2012-7-14 20:47:58

不懂也mark一下

大道必成 发表于 2012-7-14 20:54:14

太有创意了,收藏了

cjc2010 发表于 2012-7-14 21:46:27

mark,以后可能有用

wayne1025 发表于 2012-7-14 22:01:23

有想法。。。算法坳不清了{:dizzy:}

城关珠 发表于 2012-7-15 00:05:57

很好很强大。。。。。。MARK

Lucky_Lucky 发表于 2012-7-15 00:26:06

很强大。。。。。。。。

WangF 发表于 2012-7-15 02:24:34

太有学习价值了!!

unifax001 发表于 2012-7-15 22:36:30

或许日后有大用场!

BG7JMW 发表于 2012-7-16 11:13:03

非常好,值得研究

peinsc 发表于 2012-7-20 11:30:27

51单片机,key4-key6检测不到

lncwangfeilnc 发表于 2014-8-13 09:54:22

正需要,谢谢{:lol:}

iquer 发表于 2014-8-13 10:03:34

收藏了,虽然可能用到的情况不多

蓝蓝的恋 发表于 2014-9-1 12:51:23

这个略叼~

jyrpxj 发表于 2014-9-1 13:34:51

额外加了四个二极管,四个电阻,并且不支持组合按键,虽略屌,但不实用。

michael.yang 发表于 2014-9-1 13:35:36

mark      

颜靖峰 发表于 2014-9-2 09:16:49

不支持两个同时按哈哈哈哈哈哈

tangly2017 发表于 2018-1-22 17:40:50

好东西,留着慢慢研究!!!!!!!!!!!

Put_down 发表于 2018-1-24 00:14:57

不看好这个电路。特别是S3键。

涵潇舒雅 发表于 2018-1-24 10:39:42

收藏 备用~

unnormal 发表于 2018-2-12 16:29:59

拓展一下硬件设计的思路不错的    原理领会了   实际中一般情况下估计是不会使用的谢谢分享

fuze2009 发表于 2018-2-12 21:44:14

思路很好,研究研究{:biggrin:}

HZY//123456 发表于 2018-9-28 16:19:55

好屌{:victory:}
页: [1]
查看完整版本: 单片机2个引脚识别6个按键