资料介绍
开关机功能是使用电池供电系统的最基本功能。如果使用机械式开关(2段拨动开关,自锁开关等)等直接接通和切断电源,不说机械部件的可靠性,至少自动关机(一般在长时间不操作、电池电量低时需要自动关机)功能就比较难实现。所以电池供电系统一般采用按钮开关,用一个按钮配合软件实现按一次开机、再按一次关机的功能及自动关机的功能。
这部分内容就讲述如何在上实现一键式的开关机功能。开关机功能要使用单片机的一个引脚(PD4)作为输入端,连接到按钮,接收按纽按下产生的电信号,然后再使用另一个引脚(PD3)作为输出端去驱动由三极管8550构成的一个电子开关实现对系统电源的控制。而STM8S单片机本身就直接接在电池上,利用单片机的停机模式,将单片机本身的电流降低到μA级,对电池的消耗就可以忽略不计了。
1、电路设计
电路图如下,C1是STM8S单片机VCAP电容,保持内部1.8V电压的稳定,是STM8S单片机唯一必须接要的外部元件,选用容量为1μF的瓷片电容,而且从电路可靠性讲,这个电容越靠近单片机IC越好。
K1是按钮,一端接到单片机的PD4引脚上,另一端接地,这样按钮被按下就会产生一个低电平的脉冲。
Q1是三极管,通过发光二极管D1和限流电阻R1接到单片机的PD3上。这样当PD3输出低电平时,Q1导通,VCC上有电压,可以对系统供电,反之PD3输出高电平时,Q1截止VCC没有电压。
发光二极管D1还兼作电源指示灯的作用, Q1导通时发光反之不发光。
剩余的C2~C5都是电源退藕电容,用于消除电源上的干扰信号。P1、P2两个接线端分别接3.6V锂电池的正负极。
2、软件设计
软件要实现的功能是,在PD4引脚上监控按钮按下产生的低电压脉冲信号,并根据这个信号来设置PD3引脚的输出电平去控制Q1的导通和截止,以及设置单片机自身的工作状态,以此实现对电源供电的控制。
1)引脚工作模式设置
首先要做的,就是设置单片机引脚的工作模式,把PD4设置为输入模式,D3设置为输出模式。
在STM8S_StdPeriph_Lib库中,可以使用这个函数进行设置:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode)
GPIOx是端口编号,取值有GPIOA、GPIOB、GPIOC、GPIOD,分别对应单片机的PAx、PBx、PCx、PDx端口,GPIO_Pin是引脚编号,取值有GPIO_PIN_1~GPIO_PIN_7,函数通过GPIOx和GPIO_Pin两个参数指定一个唯一的引脚。
GPIO_Mode是工作模式了。表示输入模式的取值有四种,分别是要不要上拉,要不要中断的四种组合:
GPIO_MODE_IN_FL_NO_IT Input floating, no external interrupt
GPIO_MODE_IN_PU_NO_IT Input pull-up, no external interrupt
GPIO_MODE_IN_FL_IT Input floating, external interrupt
GPIO_MODE_IN_PU_IT Input pull-up, external interrupt
要上拉的话,单片机内部会自动为引脚提供一个上拉电流,在没有外部输入的情况下,引脚就是高电平了。
表示输出模式的取值有8种,分别是是否开漏输出、输出高低电平、是否高速输出的组合:
GPIO_MODE_OUT_OD_LOW_FAST Output open-drain, low level, 10MHz
GPIO_MODE_OUT_PP_LOW_FAST Output push-pull, low level, 10MHz
GPIO_MODE_OUT_OD_LOW_SLOW Output open-drain, low level, 2MHz
GPIO_MODE_OUT_PP_LOW_SLOW Output push-pull, low level, 2MHz
GPIO_MODE_OUT_OD_HIZ_FAST Output open-drain, high-impedance level,10MHz
GPIO_MODE_OUT_PP_HIGH_FAST Output push-pull, high level, 10MHz
GPIO_MODE_OUT_OD_HIZ_SLOW Output open-drain, high-impedance level, 2MHz
GPIO_MODE_OUT_PP_HIGH_SLOW Output push-pull, high level, 2MHz
在这个应用中,需要把PD4设置为带上拉(因为按钮未按下时要呈高电平)、有中断的输入模式。开机时,PD3要设置为低电平的输出模式(低电平才能让Q1导通)。关机时PD3要设置为不带上拉的输入模式,所以这部分代码要这样写:
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_IN_PU_IT); //PD4设置为带上拉、有中断的输入模式
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST); //开机时把PD3设置低电平的输入模
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);//关机时把PD3设置低电平的输入模式
额外提一下,除了GPIO_Init函数可以设置引脚是输出高电平还是低电平,还可以用下面四个函数继续引脚的高低电平:
void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal) //输出PortVal指定的电平
void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins) //输出高电平
void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins) //输出低电平
void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins) //高低电平翻转一次
2)停机模式设置
STM8S单片机有停机模式,在停机模式下,单片机功耗降到最低,所有时钟停止工作,但可以保留RAM和寄存器的值,停机模式只能可以通过下面几种方式退出:
-外部中断(GPIO)
-CAN接收中断
-SPI传输结束
-I2C中断(从地址匹配)
-复位
通过执行HALT指令,也就是执行库函数的halt()函数进入停机模式。
3)设置外部中断
外部中断通过SetExtIntSensitivity函数设置:
void EXTI_SetExtIntSensitivity(EXTI_Port_TypeDef Port, EXTI_Sensitivity_TypeDef SensitivityValue)
其中Port是要设置外部中断的端口,取值有GPIOA、GPIOB、GPIOC、GPIOD,分别对应单片机的PAx、PBx、PCx、PDx端口;
SensitivityValue是外部中断类型,有以下几种取值,分别表示下降沿和低电平触发中断、上升沿触发中断、下降沿触发中断、上升沿和下降沿触发中断:
EXTI_SENSITIVITY_FALL_LOW Interrupt on Falling edge and Low level
EXTI_SENSITIVITY_RISE_ONLY Interrupt on Rising edge only
EXTI_SENSITIVITY_FALL_ONLY Interrupt on Falling edge only
EXTI_SENSITIVITY_RISE_FALL Interrupt on Rising and Falling edges
在这个应用中,按钮按下是产生下降沿,要选取EXTI_SENSITIVITY_FALL_ONLY模式。
设置中断模式后,还需要启用中断,使用enableInterrupts()函数启用。
4)外部中断处理程序
在ST官方提供的STM8S_StdPeriph_Lib库自带的模板中,中断处理程序都在stm8s_it.c中实现。stm8s_it.c中已经根据中断向量设置好了每种中断处理程序的入口函数。只需在相应函数中填入内容即可。
这个应用中是要编写GPIOD端口的外部中断处理函数,所以要在这个中
这个应用中是要编写GPIOD端口的外部中断处理函数,所以要在这个中断处理函数中增加开关机的内容:
INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)
{
}
5)整体程序设计和源代码
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 6个常见单键开关机电路 26次下载
- 路由器自动定时开关机
- 单片机如何通过I/O口实现断电自关机
- 单片机 一键开关机 软件结合
- 学生用计算机怎么开关机,电脑如何正确开关机? 电脑开关机的正确步骤
- 手机控制NodeMCU实现远程电脑开关机
- windows系统设置定时开关机的方法
- 6个常见的单键开关机电路合集 91次下载
- 使用51单片机进行开关机次数显示的程序免费下载
- 使用WIFI控制电脑开关机的程序免费下载 14次下载
- 6个常见的单键开关机电路合集(最新) 97次下载
- 如何配置服务器定时开关机 0次下载
- STM8S开发入门 0次下载
- STM8S系列单片机的开发 0次下载
- 如何开始STM8S系列单片机的开发
- 定时开关机在哪里设置 定时开关机对手机有利还是有害 6416次阅读
- 基于单片机的一键开关机电路 2760次阅读
- 如何利用STM8S单片机实现一键式的开关机功能 4346次阅读
- 单键控制单片机电源开关电路图讲解 2.2w次阅读
- 单片机自关机电路原理图 5187次阅读
- 51、stm32单片机入门的一些经验 3181次阅读
- STM8S单片机通过蓝牙与智能手机实现串口通讯的设计 5573次阅读
- STM8S单片机外部中断唤醒 5206次阅读
- STM8S单片机开发的过程及方法 6658次阅读
- 如何在STM8S单片机上实现一键式的开关机功能 3939次阅读
- 单片机应用系统中如何通过IO实现断电自关机?通过电路图给你讲解 6951次阅读
- 浅析WIN10关机的4种方式 9563次阅读
- 三分钟看懂stm8s单片机实现多通道转换 9207次阅读
- stm8 halt低功耗模式 9419次阅读
- 自动关机电路,自动关机原理分析 1.7w次阅读
下载排行
本周
- 1TPS54202H降压转换器评估模块用户指南
- 1.02MB | 7次下载 | 免费
- 2华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 1次下载 | 3 积分
- 3SMD LED选型目录 灯珠手册
- 5.36 MB | 1次下载 | 免费
- 4Tiva C系列DK-TM4C129X入门指南
- 1.69MB | 1次下载 | 免费
- 5电涌保护器(SPD)的选择、安装以及装配
- 4.57 MB | 1次下载 | 免费
- 6时源芯微EMC前车灯案例
- 458.59 KB | 1次下载 | 免费
- 7bq25890、bq25892双级联充电器EVM(PWR692)用户指南
- 2.02MB | 1次下载 | 免费
- 8TPS54426降压转换器评估模块用户指南
- 847.7KB | 次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 156次下载 | 免费
- 22024PMIC市场洞察
- 2.23 MB | 63次下载 | 免费
- 3开关电源设计原理手册
- 1.83 MB | 30次下载 | 免费
- 4智能门锁原理图
- 0.39 MB | 28次下载 | 免费
- 5OAH0428最新规格书(中文)
- 2.52 MB | 15次下载 | 7 积分
- 6ST7789V2单芯片控制器/驱动器英文手册
- 3.07 MB | 9次下载 | 1 积分
- 7LTH7充电电路和锂电池升压5V输出电路原理图
- 0.04 MB | 7次下载 | 免费
- 8TPS54202H降压转换器评估模块用户指南
- 1.02MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183334次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多