按键电路设计

[复制链接]
3590|26
 楼主| magic_yuan 发表于 2015-10-26 15:05 | 显示全部楼层 |阅读模式
本帖最后由 magic_yuan 于 2015-10-26 15:17 编辑

大神们,
  想用一个键实现多个功能,如用一个键实现长按开机,长按关机,短按模式设置,大概可以实现吧。。。。。  注:长按开机时MCU没有上电,不是唤醒模式。
  多谢!

forgot 发表于 2015-10-26 15:12 | 显示全部楼层
songchenping 发表于 2015-10-26 15:13 | 显示全部楼层
完全可以啊。靠软件可以实现啊。
 楼主| magic_yuan 发表于 2015-10-26 15:17 | 显示全部楼层
songchenping 发表于 2015-10-26 15:13
完全可以啊。靠软件可以实现啊。

多谢,
长按开机时MCU没有上电,不是唤醒模式
bloodwelkin 发表于 2015-10-26 15:21 | 显示全部楼层
那也能
wh6ic 发表于 2015-10-26 15:37 | 显示全部楼层
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机了。
 楼主| magic_yuan 发表于 2015-10-26 15:53 | 显示全部楼层
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

呵呵,
  大神分析得是,应该是存在逻辑冲突。
songchenping 发表于 2015-10-26 16:04 | 显示全部楼层
magic_yuan 发表于 2015-10-26 15:17
多谢,
长按开机时MCU没有上电,不是唤醒模式

这个只能用MOS管了。
cliffboy 发表于 2015-10-26 16:17 | 显示全部楼层
可以实现,按键与MCU之间加一个CPLD
lfc315 发表于 2015-10-26 16:17 | 显示全部楼层
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

哈哈 软件处理当然是等你长按触发关机动作,然后实际松手才关机。

评论

说的是,多谢!  发表于 2015-10-26 16:27
lrhsx33 发表于 2015-10-26 17:13 | 显示全部楼层
硬件+软件才能实现
元方义城 发表于 2015-10-26 17:28 | 显示全部楼层
一个按键实现这么多功能,软件上除非逻辑判断很准确,不然就会出现长按开机,再长按又开机不关机的情况。一键功能,设计感觉上要高级一点,其实和几个按键没区别。就像iphone的home键一样。可大部分操作还是要通过触摸屏,home除非在开机唤醒屏幕用一下,其余大部分时间然并卵。建议少用
HydeTI 发表于 2015-10-26 17:40 | 显示全部楼层
可以使用一键开关机,如图所示

本帖子中包含更多资源

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

×
457344370 发表于 2015-10-26 17:43 来自手机 | 显示全部楼层
这个应该可以满足你的要求

本帖子中包含更多资源

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

×
王栋春 发表于 2015-10-26 19:47 | 显示全部楼层
这个既然这么多高手都说能搞定,就麻烦你们用8951写个程序好吗
qhdjxy 发表于 2015-10-26 20:55 | 显示全部楼层
确实需要结合硬件才能实现0功耗待机。
2546522197 发表于 2015-10-26 21:16 | 显示全部楼层
靠软件编程可以实现的。
冰零分子 发表于 2015-10-27 11:41 | 显示全部楼层
if(PIN0_IS_CLR(K1))                //如果 确定 按下
        {
          if(K1Cnt<1000)
                {
                        ++K1Cnt;
                        K1bOK=0;
                }
                else
                {
                    K1bOK=1;                        //长按
                        if(0==Power)                          // 开机
                         {
                                IO0DIR = BV(17);                //管脚方向为输出
                                PIN0_SET(17);                         //置位
                                Power=1;                          //开机标志
                         }
                        else if(1==Power)                  //关机
                         {
                                  Power=0;
                                  ClearScreen();
                                  delay2(2000);
                                  IO0DIR = BV(17);
                                 PIN0_CLR(17);                 
                 
                         }
                         
                }          
                if(++K1Cnt>20)
                {
                        K1Set = 1;
                }
        }
        else
        {
                 K1Cnt = 0;
                 if(K1Set==1)
                 {
                          K1Set = 0;
                    K1OK = 1;                                //短按标志
                 }
        }
把对应管脚修改一下试试
ticomi 发表于 2015-10-27 13:23 | 显示全部楼层
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

其实也可以靠软件实现的,长按确定要关机时,待按键松开后马上关机则避开这个问题!
wh6ic 发表于 2015-10-27 13:50 | 显示全部楼层
lfc315 发表于 2015-10-26 16:17
哈哈 软件处理当然是等你长按触发关机动作,然后实际松手才关机。

所以我对LZ的建议是,不要搞关机下电,增加的器件、电路的消耗,极可能比单片机停机的消耗还大,成本也上去了,实在没有必要。找个带停机时可以外部IO唤醒的单片机就完全可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:发到3000帖时,生活大概完成了一种转折。

359

主题

2770

帖子

7

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