搜索
bottom↓
回复: 37

怎样用硬件实现象手机那样的开关机设计?

[复制链接]

出0入0汤圆

发表于 2006-6-20 10:21:17 | 显示全部楼层 |阅读模式
想设计一个电路,实现长按按键启动单片机电源,请大家多多指教阿

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-6-20 10:45:52 | 显示全部楼层
单片机睡眠唤醒工作,分多路供电.   或4013  D触发器改变状态.

出0入0汤圆

发表于 2006-6-20 12:49:15 | 显示全部楼层
可以用继电器+接钮开关+单片机来实现。接下按钮开关后,单片机控制继电器吸合,实现自锁。再按下时单片机释放继电器。加上延时就可以实现长按了

出0入0汤圆

发表于 2006-6-20 12:54:35 | 显示全部楼层
按1楼的做法就行了。

出0入0汤圆

发表于 2006-6-20 23:05:47 | 显示全部楼层
楼主是说要实现电源开关,睡眠中还是消耗电源的,不如直接完全断开!

出0入0汤圆

发表于 2006-6-20 23:57:11 | 显示全部楼层
能否用单片机控制PNP三极管来关断电源?

出0入0汤圆

发表于 2006-6-21 22:25:53 | 显示全部楼层
看那个MEGA8的MP3电路,里面就有按钮开关电路.

出0入0汤圆

 楼主| 发表于 2008-3-13 11:28:29 | 显示全部楼层
偶是这么做的:
1


程序是c语言,用的430单片机
int main( void )
{     
      unsigned int i=0;
      nRes = 0xff;
      WDTCTL=WDTPW+WDTHOLD;               //停看门狗

      BCSCTL2 = SELM_2+SELS+DIVS_3;       //选择XT2CLK作为系统时钟8MHz,XT2CLK 4分频后为1MHz作为SMCLK的时钟。
      do
         {
           IFG1 &=~ OFIFG;
           for(i=0xFF;i>0;i--);
         } while((IFG1&OFIFG)==OFIFG);    //等待晶体震荡器正常
         
      P6DIR |= BIT2+BIT3+BIT4+BIT5;       //设置P6.2,P6.3,P6.4,P6.5为输出
      P6OUT = 0;                          //P6口全部输出低电平
      P6OUT |= 0x1c;                      //打开四组电源(其中-5V控制端为0才输出-5V,因此有上句指令)

      P2DIR |= 0xff;
      P3DIR |= 0xff;
      P4DIR |= 0xff;
      P2OUT = 0X00;
      P3OUT = 0X00;
      P4OUT = 0X00;
      Initialize();                       //初始化液晶屏
      KeyInit();                          //按键初始化
      Display16(2,12,7,&WelcomeBuddy[0][0]);    //显示开机画面
      for(i=0;i<20;i++)
      {
        Delay(65535);        
      }

      ClearScr();
      Display16(2,32,4,&TestKey[0][0]);   //显示 按键测试
      while(1)
      {
        nRes = 0xff;
        Delay(100);
        P6DIR = 0x38;                     //P6.2设置为输入(3.3V控制端)
        Delay(100);
        if(0x04==(0x04&P6IN))             //判断P6.2输入是否为1,为1,则执行关机操作
          {                               //关机时间要10s,有点长,以后再调
            P6DIR = 0xFF;
            P6OUT = 0x20;
            ClearScr();                   //以下为关机动画
            Display16(2,24,4,&ShutDown[0][0]);
            Delay(655350);
            while(1)
            {
            Display16(2,90,2,&Ellipsis[0][0]);
            Delay(655350);
            Display16(2,93,2,&Ellipsis[0][0]);
            Delay(655350);
            Display16(2,96,2,&Ellipsis[0][0]);
            Delay(655350);
            Display16(2,99,2,&Ellipsis[0][0]);
            Delay(655350);
            Display16(2,102,2,&Ellipsis[0][0]);
            Delay(655350);
            Display16(2,105,2,&Ellipsis[0][0]);
            Delay(655350);
            }                  
          }
        else                              //不为1,把P6.2口设为输出系统继续运行
          {
            P6DIR |= BIT2+BIT3+BIT4+BIT5; //3.3V输出高电平
            P6OUT |= 0X04;
          }
     }
}

出0入0汤圆

 楼主| 发表于 2008-3-13 11:29:47 | 显示全部楼层
就是有一个问题,现在关机需要10秒,只好做了一个关机动画等着关,是不是电容选择有问题?放电时间太长了?

出0入0汤圆

发表于 2008-3-13 11:42:45 | 显示全部楼层
1

出0入0汤圆

发表于 2008-3-13 11:53:52 | 显示全部楼层
没看明白电路,能大概说一下原理吗

出0入0汤圆

发表于 2008-3-13 12:10:20 | 显示全部楼层
用74反相器芯片加2个电容2个电组可实现开关翻转,
按一次关机,再按一次又开机...
低成本

出0入0汤圆

发表于 2008-3-13 12:45:39 | 显示全部楼层
2楼说的应该可以。同时如果单片机还是通电的就更容易实现了。

出0入0汤圆

 楼主| 发表于 2008-3-13 13:04:28 | 显示全部楼层
嗯,2楼关键是单片机要处于睡眠状态,通过中断唤醒才能实现

出0入0汤圆

发表于 2008-3-13 14:01:39 | 显示全部楼层
是不是现在的手机大部分都是主控制器处于睡眠状态的?
手机自动开机怎怎么实现是不是外部时钟芯片控制?

出0入0汤圆

发表于 2008-3-28 17:55:51 | 显示全部楼层
单键实现单片机开关机
1,控制流程,按下按键,Q1导通.单片机通电复位,进入工作.
2,检测 K-IN 是否低电平,否 不处理.是 单片机输出 K-OUT 为高电平,Q2导通,相当于按键长按.LED指示灯亮.
3,放开按键,K-IN 经过上拉电阻,为高电平.单片机可以正常工作.
4,在工作期间,按键按下,K-IN 为低电平,单片机检测到长按1秒,K-OUT 输出低电平,Q2截止.LED指示灯熄灭.放开按键,Q1截止,单片机断电.
5,通过软件处理,可以实现短按开机,长按关机.
单片机用PIC16F84A,通过简单的程序演示,证实此电路的可行性.

点击此处打开 ourdev_241142.jpg(文件大小:942K,只有300K以内的图片才能直接显示) (原文件名:LED.jpg)


(原文件名:LED2.jpg)


(原文件名:LED3.jpg)


;...............................
LIST P=16F84A
#include <p16F84A.inc>

;PORTB,0 = K_IN
;PORTB,1 = K_OUT
;PORTB,2 = LED

         ORG    000H
;...............................
RESET
         BSF    STATUS,5       ;初始程序

         MOVLW  00H            ;定义脚位
         MOVWF  TRISA          ;

         MOVLW  01H            ;
         MOVWF  TRISB          ;

         BCF    STATUS,5       ;初始程序

         MOVLW  0FFH           ;定义脚位
         MOVWF  PORTA          ;

         MOVLW  01H            ;
         MOVWF  PORTB          ;

         MOVLW  18H            ;分配比值
         OPTION                ;
;...............................
LOOP
         CLRWDT                ;短按开机

         BTFSC  PORTB,0        ;按键检测
         GOTO   LOOP           ;

         CALL   DELAY          ;防误处理

         BTFSC  PORTB,0        ;
         GOTO   LOOP           ;

         BSF    PORTB,1        ;正常开机
         BSF    PORTB,2        ;LED ON

         CALL   DELAY          ;

         BTFSS  PORTB,0        ;按键长按
         GOTO   $-2            ;原地打转
;...............................
LOOS
         CLRWDT                ;长按关机

         MOVLW  64H            ;
         MOVWF  22H            ;

         BTFSC  PORTB,0        ;
         GOTO   LOOS           ;

         CALL   DELAY          ;

         BTFSC  PORTB,0        ;等待长按
         GOTO   LOOS           ;

         DECFSZ 22H,1          ;
         GOTO   $-4            ;

         BCF    PORTB,2        ;LED OFF
;...............................
LOOD
         CALL   DELAY          ;

         BTFSS  PORTB,0        ;等待放开
         GOTO   $-2            ;

         MOVLW  01H            ;关机退出
         MOVWF  PORTB          ;
         
         GOTO   $              ;
;...............................
DELAY
         CLRWDT                ;延时程序

         MOVLW  64H            ;
         MOVWF  20H            ;
D1
         MOVLW  20H            ;
         MOVWF  21H            ;
D2
         DECFSZ 21H,1          ;
         GOTO   D2             ;
         DECFSZ 20H,1          ;
         GOTO   D1             ;

         RETLW  0              ;
;...............................
         END

出0入0汤圆

发表于 2010-5-11 16:38:51 | 显示全部楼层
怎样用硬件实现象手机那样的开关机设计?

出0入0汤圆

发表于 2010-5-12 10:29:08 | 显示全部楼层
学习了,谢谢。

出0入0汤圆

发表于 2010-5-12 10:30:37 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-1 16:26:37 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-12-15 18:41:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-15 19:33:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-15 19:39:01 | 显示全部楼层
按键连接主控电源芯片  按下按键后使能电源管理芯片向主控供电,主控启动后开始计时超过设定的时间后使能一个GPIO端口输出一个电平控制电源芯片继续供电。也可以用RC控制有使能端的电源芯片。

出675入8汤圆

发表于 2012-2-15 13:33:22 | 显示全部楼层
先MARK

出0入0汤圆

发表于 2012-2-15 13:36:23 | 显示全部楼层
mk

出0入0汤圆

发表于 2012-2-15 15:43:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-15 17:48:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-15 18:08:34 | 显示全部楼层
上NMOS PMOS管就可以解决的啊,具体电路网上找找就有大把的啊 !

出0入0汤圆

发表于 2012-2-15 18:26:12 | 显示全部楼层
这个要MARK一下。

出0入0汤圆

发表于 2012-2-15 18:31:18 | 显示全部楼层
这个学名叫“单按键开关”或者叫“一键开关”电路

知道了你就好搜了。否则你这样的描述是很难找到答案的。

出0入0汤圆

发表于 2012-2-15 22:04:49 | 显示全部楼层
记号

出0入0汤圆

发表于 2012-2-15 22:22:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-15 22:51:22 | 显示全部楼层
ding

出90入0汤圆

发表于 2012-2-16 16:12:39 | 显示全部楼层
学习了~

出0入0汤圆

发表于 2012-2-16 19:12:27 | 显示全部楼层
受教了!谢谢!!

出0入0汤圆

发表于 2013-6-29 23:57:43 | 显示全部楼层
学习了

出0入0汤圆

发表于 2013-7-27 19:53:17 | 显示全部楼层
mark!           

出0入0汤圆

发表于 2013-7-29 12:54:28 | 显示全部楼层
一键开关,以前也想弄,现在又看到了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 01:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表