朋友在设计电路时,遇到这样一个问题。电路在工作时,单片机复位后,电路就断电关机,需要重新长按键才能开机。但是这不是他想要的,他设计的目的是,长按按键开关机,单片机复位时,电路不能断电关机。开关机电路如下所示。
![de4fcd6d51c394490aa5526d30e476b9.png](https://i-blog.csdnimg.cn/blog_migrate/c5447e552b769543e5defe5f8c4da1f8.jpeg)
分析上图的电路工作原理。长按按键时,PUSHBUTTONCONN被拉到地,R5和D3组成的回路导通,Q1的1脚被拉,Q1截止。U2的7脚EN被拉高,U2是一颗DC-DC,EN高电平使能,所以U2工作,输出3V3。单片机开始工作,IO口置高电平给3V3_EN,Q2的1脚被拉高,Q2导通,拉低 Q1的1脚,实现开机的功能。开机过程,长按按键,PUSHBUTTON_UC被拉低,单片机检测到PUSHBUTTON_UC拉低后,判断是长按后,就把3V3_EN置低电平,Q2截止,松开按键后,Q1的1脚被拉高,Q1导通,U2的EN脚被拉低,U2不工作,3V3停止输出,系统关机。朋友遇到的问题是因为单片机在复位时,IO默认是低电平,所以单片机复位时,3V3_EN会变低电平,机器会关机。如果要解决这个问题,必须要对电路做一些修改。电路修改如下。
![5b40586e2fb16d5a19cc3e6d04dc6fbe.png](https://i-blog.csdnimg.cn/blog_migrate/9e9f68d237baa7eaabbc4085d2aee1a6.jpeg)
只要是增加一个三极管,三极管的C极接到Q2的1脚,并上拉到3V3。3V3_EN接三极管的B极。这样改动后,3V3_EN低电平是开机,高电平是关机。所以,即使单片机复位,IO默认是低电平,也不会让系统断电关机。