打印

按键电路设计

[复制链接]
2953|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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没有上电,不是唤醒模式

使用特权

评论回复
5
bloodwelkin| | 2015-10-26 15:21 | 只看该作者
那也能

使用特权

评论回复
6
wh6ic| | 2015-10-26 15:37 | 只看该作者
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机了。

使用特权

评论回复
7
magic_yuan|  楼主 | 2015-10-26 15:53 | 只看该作者
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

呵呵,
  大神分析得是,应该是存在逻辑冲突。

使用特权

评论回复
8
songchenping| | 2015-10-26 16:04 | 只看该作者
magic_yuan 发表于 2015-10-26 15:17
多谢,
长按开机时MCU没有上电,不是唤醒模式

这个只能用MOS管了。

使用特权

评论回复
9
cliffboy| | 2015-10-26 16:17 | 只看该作者
可以实现,按键与MCU之间加一个CPLD

使用特权

评论回复
10
lfc315| | 2015-10-26 16:17 | 只看该作者
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

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

使用特权

评论回复
评论
magic_yuan 2015-10-26 16:27 回复TA
说的是,多谢! 
11
lrhsx33| | 2015-10-26 17:13 | 只看该作者
硬件+软件才能实现

使用特权

评论回复
12
元方义城| | 2015-10-26 17:28 | 只看该作者
一个按键实现这么多功能,软件上除非逻辑判断很准确,不然就会出现长按开机,再长按又开机不关机的情况。一键功能,设计感觉上要高级一点,其实和几个按键没区别。就像iphone的home键一样。可大部分操作还是要通过触摸屏,home除非在开机唤醒屏幕用一下,其余大部分时间然并卵。建议少用

使用特权

评论回复
13
HydeTI| | 2015-10-26 17:40 | 只看该作者
可以使用一键开关机,如图所示

QQ图片20151026174053.png (285.16 KB )

QQ图片20151026174053.png

使用特权

评论回复
14
457344370| | 2015-10-26 17:43 | 只看该作者
这个应该可以满足你的要求

使用特权

评论回复
15
王栋春| | 2015-10-26 19:47 | 只看该作者
这个既然这么多高手都说能搞定,就麻烦你们用8951写个程序好吗

使用特权

评论回复
16
qhdjxy| | 2015-10-26 20:55 | 只看该作者
确实需要结合硬件才能实现0功耗待机。

使用特权

评论回复
17
2546522197| | 2015-10-26 21:16 | 只看该作者
靠软件编程可以实现的。

使用特权

评论回复
18
冰零分子| | 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;                                //短按标志
                 }
        }
把对应管脚修改一下试试

使用特权

评论回复
19
ticomi| | 2015-10-27 13:23 | 只看该作者
wh6ic 发表于 2015-10-26 15:37
如果长按关机时,不下电,可以做。 如果要同时下电,有一定逻辑错误风险 --- 时间再按长一点,NND 它又开机 ...

其实也可以靠软件实现的,长按确定要关机时,待按键松开后马上关机则避开这个问题!

使用特权

评论回复
20
wh6ic| | 2015-10-27 13:50 | 只看该作者
lfc315 发表于 2015-10-26 16:17
哈哈 软件处理当然是等你长按触发关机动作,然后实际松手才关机。

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

359

主题

2770

帖子

7

粉丝