短按开机/长按关机的电路和代码实现思路

这篇具有很好参考价值的文章主要介绍了短按开机/长按关机的电路和代码实现思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

应用场景

在我们实际的项目中,我们做的设备或者自己的DIY一个东西的时候,经常要实现的一个功能是:通过一个按键实现短按开机,长按关机。下面我就给大家简单介绍一下其中一种的实现方法,包含电路和代码的实现

电路功能及其说明

首先是电路图:
短按开机长按关机电路,常用电路学习和应用,单片机,stm32,嵌入式硬件

先给大家介绍一下上面几个网络标号的意义:

  1. Power_In:电源的输入正极,电路主要是通过开关电源的正极实现开关机的
  2. MCU_Power:接在MOS管的漏极,可以是MCU的供电段,也可以是接在 DCDC的输入端,这个主要是看Power_In的代表的是哪里的供电端。
  3. GPIO_Ctl:单片机的一个IO口,主要控制QV1这个三极管的开关从而控制电源的PMOS的开关
  4. GPIO_Det:单片机的一个IO口,主要是用来检测的按键是否按下

电路实现原理:文章来源地址https://www.toymoban.com/news/detail-525806.html

  • 首先我们的电源输入正极Power_In通过MOS管来流向MCU_Power,这里的MCU_Power可以直接是我们的单片机的VCC,也可以是一个DCDC芯片,然后转出的电源再来给单片机供电,具体情况具体对待。
  • 短按开机:当我们按下按键K1的时候,MOS管的栅极和源极有了压差(通过电阻比可调节压差在mos管的承受范围),MOS管导通。从而MCU供电开始运行,MCU控制GPIO_Ctl脚输入高电平将三极管QV1导通,此时即便松开按键,MOS管也扔可导通,从而实现短按开机的效果。
  • 长按关机:当我们MCU已经正常供电开始运行后,我们想要实现长按关机,就要用到GPIO_Det引脚,GPIO_Det脚由于有上拉电阻,默认运行状态都是高电平,当我们按键按下的时候GPIO_Det由高电平变成低电平,然后我们便可以通过单片机检测到按键时间长短,达到我们关机的阈值便可关闭GPIO_Ctl,这样再松开按键的时候便可以让整个系统断电关机。

代码及其说明

首先是单片机IO口的初始化,我这里检测脚是PC1 控制脚是PC2:
void initPowerKey() {
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	// POWER_KEY input mode
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
}

然后是主函数的实现,这里我就简单写一下供大家参考:
int main()
{
	unsigned char TimeCount=0;
	initPowerKey()//初始化IO口
	GPIO_SetBits(GPIOC, GPIO_Pin_2)//打开控制电源开关
	while1{
		if(time200ms)//time200ms是我一个定时器中断 200ms触发一次
		{
			if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1) == RESET)//按键按下
			{
				TimeCount++if(TimeCount>=15)//15*200ms=3S 长按3秒关机
				{
					GPIO_ResetBits(GPIOC, GPIO_Pin_2)//关闭控制电源开关
				}
			}
			else
			{
				TimeCount=0}
		}
	}
}
如果对大家有帮助的话,欢迎帮忙点个赞,如果想一起学习进步,也可以直接找我哦~

到了这里,关于短按开机/长按关机的电路和代码实现思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 独立按键检测短按、长按,松手后响应操作

    有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点,只处理一个按键。并且这个按键,只检测短按、长按两种状态。

    2024年02月08日
    浏览(44)
  • (软件02)单片机按键处理,区分短按与长按

    本文目录     本篇前言     代码思路     实操练习 本篇前言         今天接着上篇与大家继续分享软件方面关于按键事件的处理,上篇软件01篇已提到整个软件框架时基的处理,其中提到了关于按键的处理,这篇将具体地介绍按键处理的思路与实例。         话不

    2024年02月03日
    浏览(35)
  • 蓝桥杯单片机 | 特训案例【进阶02】长按与短按控制数码管显示

    新建工程,以 I/O模式 编写代码,在CT107D单片机综合训练平台上,实现以下功能: 1、系统上电后,关闭蜂鸣器和继电器,关闭全部指示灯,数码管最右边两位显示计数初始值28,其余数码管关闭。 2、利用 定时器0 实现 10ms 的间隔定时,将其作为长定时的基本单位,用于记录

    2023年04月09日
    浏览(47)
  • 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按

    此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下:   使用矩阵键盘时,要将跳线帽J5跳至KBD模式。   值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用。如果单片机为IAP15,则在上述原理图中,要将P36换成P42,P37换成P44。  

    2023年04月10日
    浏览(46)
  • 【亲测有效】iPhone实现定时关机、开机 - 远离手机 准时睡觉

    一到晚上11点,准时锁定所有应用!配合密码,今晚别想玩手机了! 首先,iphone、ios自身不支持定时开机关机,第三方APP也没有解决办法! 但是,苹果手机有一个功能叫“访问时间” 如下图,进入设置 “屏幕使用时间” “为屏幕使用时间设置密码” “停用时间” 开启“定

    2024年02月04日
    浏览(107)
  • 电脑长按电源键强行关机,对SSD有伤害吗?SSD 掉盘之殇

    主页 : 元存储的博客_CSDN博客 https://blog.csdn.net/vagrant0407?type=blog 本文依据公开知识及个人经验整理而成,若有任何疑问或有侵权行为请联系作者处理。 文章为个人辛苦整理,付费内容,禁止私自转载。 内容摘要 1. 电脑关机方式 1.1 正常关机 1.2 按住电源键强行关机 1.3 拔电源

    2024年02月09日
    浏览(37)
  • android 12.0长按Power弹出关机对话框去掉屏幕截图和紧急呼救功能

    在12.0的系统长按关机键,会弹出关机的对话框,关机对话框里面由关机重启截图和紧急呼叫等功能,而由于开发功能需求要求去掉屏幕截图和紧急呼叫等功能,所以就要先找到关机对框的代码 然后实现功能 功能分析: 长按电源键弹出关机对话框,通过adb shell命令发现 就是

    2024年02月06日
    浏览(66)
  • Android 13.0 framework中实现默认长按电源键弹出关机对话框功能

    在13.0的系统定制化开发中,在12.0的系统之前默认的都是长按电源键弹出关机对话框,而在13以后 就改成音量+电源键弹出对话框,由于使用不方便,所以就改成默认长按弹出关机对话框功能 PhoneWindowManager是供系统进程使用,是WindowManagerService 的一部分,WindowManagerService 会利用

    2024年02月11日
    浏览(60)
  • 电脑关机 重启 开机怎么看日志

    cmd中输入net statistics workstation 可以通过桌面电脑菜单日志选项查询电脑自动关机等信息。 1、在桌面,右键点击桌面上的此电脑图标,在弹出菜单中选择管理菜单项。 2、这时就会打开计算机管理窗口,点击窗口中的事件查看器菜单项。 3、在打开的事件查看器窗口中,依次点

    2024年02月11日
    浏览(33)
  • 在SHELL脚本中用curl处理服务器开机、关机、强制关机、重启动作

    思路:利用了一张主控板来获取服务器的开关机状态,开关机其实是给服务器一个500ms~1000ms的脉冲,等同与按了机箱面板的开关机按钮开关。

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包