单片机IO口检测按键

[复制链接]
2659|12
 楼主| chest20090909 发表于 2014-4-28 08:49 | 显示全部楼层 |阅读模式

S1通过RC4高电平检测,S2通过RC3高电平检测,S3通过RC3给高电平检测RC4是否为高电平来检测,用S3来控制LED亮灭(检测到S3按下时IO控制的LED会亮,再次检测S3按下时LED会灭),测试中发现按按S3时正常,按S1或S2过程中有时会影响S3控制的LED的亮灭(比如LED是亮的,在没按S3情况下,有时按S2或S2过程中,LED会灭),是不是按键检测步骤有什么问题,请老师指导下,谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2014-4-28 09:24 | 显示全部楼层
先检测S1,再S2,再S3

如果检测到按键按下,后面的按键不检测了,

注意切换IO状态
 楼主| chest20090909 发表于 2014-4-28 09:35 | 显示全部楼层
keyscan()
{
   if(RC4==1)
   {
     检测S1 .....
   }
   if(RC3==1)
   {
     检测S2 ....
   }
   RC3输出1;
   if(RC4==1)
   {
      检测S3....
   }
   RC3置输入
}

是这样吗
ayb_ice 发表于 2014-4-28 09:54 | 显示全部楼层
        while(1)
        {
                RC4_input()
                if(RC4){
                        ...
                        // S1按下
                        ...
                        break;
                }

                RC3_input()
                if(RC3){
                        ...
                        // S2按下
                        ...
                        break;
                }

                RC4_input()
                RC3_output()
                RC3 = 1;
                if(RC4){
                        ...
                        // S3按下
                        ...
                        break;
                }

        break;
        }
 楼主| chest20090909 发表于 2014-4-28 10:26 | 显示全部楼层
ayb_ice 发表于 2014-4-28 09:54
while(1)
        {
                RC4_input()

按这样改,按S1和S2时影响不到S3的效果了,但按S3时有时对S1按的效果有影响
pang3dsa 发表于 2014-4-28 10:43 | 显示全部楼层
这电路够奇葩。
这电路设计上是假设了按键只能单个单个的按,你同时按两个按键肯定有问题了。
特别是S1按下后,不管你怎么检测,RC4都是高电平了。
建议修改电路,多加个IO口,不然就单个按钮按。
 楼主| chest20090909 发表于 2014-4-28 10:49 | 显示全部楼层
在检测S1时加了个标志位检测,暂时还没发现S3对S1`有影响
 楼主| chest20090909 发表于 2014-4-28 10:50 | 显示全部楼层
pang3dsa 发表于 2014-4-28 10:43
这电路够奇葩。
这电路设计上是假设了按键只能单个单个的按,你同时按两个按键肯定有问题了。
特别是S1按下 ...

电路已经定死了,只能从程序下手,使用时也是只按一个键
ayb_ice 发表于 2014-4-28 10:59 | 显示全部楼层
这个电路设计时就不能同时检测S3与其它两个按键,

 楼主| chest20090909 发表于 2014-4-28 13:12 | 显示全部楼层
又测试了下,按S1久了对S3还是有影响
ayb_ice 发表于 2014-4-28 14:09 | 显示全部楼层
chest20090909 发表于 2014-4-28 13:12
又测试了下,按S1久了对S3还是有影响

测试是基于你的驱动的,
驱动不对谈什么测试呢
icekoor 发表于 2014-4-29 00:39 来自手机 | 显示全部楼层
S3有些多余,因为S1,S2能够产生4种组合,S1=0,S2=0;S1=0,S2=1;S1=1,S2=0;S1=1,S2=1;而S1和S3同时按下不就是第四种情况吗,只通过单片机检测电平状态,单片机没法区分出来。不需明确第四种情况是谁产生的。
ayb_ice 发表于 2014-4-29 05:57 来自手机 | 显示全部楼层
icekoor 发表于 2014-4-29 00:39
S3有些多余,因为S1,S2能够产生4种组合,S1=0,S2=0;S1=0,S2=1;S1=1,S2=0;S1=1,S2=1;而S1和S3同时按下不就 ...

你这话明显不对

需要多少按键更多时候是由外观决定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

632

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部