当前位置: 首页 > article >正文

单片机的省电模式及策略

目录

一、单片机省电的核心策略

二、单片机IO口的几种模式

三、单片机的掉电运行模式

       (1) 浅谈cpu运行为什么会需要时钟?

(2)STC15系列单片机内部可以配置时钟

(3)分频策略,降低功耗

(4)STC15系列单片机的省电模式

四、设置不同运行条件IO口的模式,进一步降低功耗


       

对于所有的单片机产品,无一例外的都需要电池的供应,虽然随着科技的日益发展,电池的容量已经越来越高,有的甚至能维持几年的工作,但是对于一般的小型干电池而言,电池的容量仍然需要我们省着利用,否则就可能让单片机每隔一段时间都需要换一次电池,所以本篇文章我们来讲讲单片机(基于STC15系列单片机)是如何省电的。

一、单片机省电的核心策略

        (1)单片机产品的省电需要硬件和软件相互配合着完成

        (2)硬件部分:

                a.硬件设计需要考虑低功耗,就需要选择低功耗的芯片

                b.硬件设计的相关电路也需要考虑低功耗设计(比如加大电阻等等)

                c.和单片机相关的需要和软件工程师配合调试

        (3)软件部分:

                a.没有用到的IO口需要按照芯片手册来进行配置(因为STC系列的单片机内核都是一样的,只不过不同种类的芯片的引脚引出不一样罢了,但是内核芯片都是含有这些的)

                b.通过配置寄存器,让单片机进入低功耗模式

                c.结合硬件设计在不同情况下配置成不同的IO口模式

二、单片机IO口的几种模式

        在这里我们可以看到,每一个IO口都有4种模式,而这4种模式是通过两个寄存器来配置的---PxM0和PxM1,两个寄存器的每一位都对应着IO口的相应位,一共有2*2=4种模式,依次为:准双向口;推挽输出;高阻输入;开漏模式

        我们可能看到了上面的描述后仍会比较懵,下面我们来看看简化图片,尝试着理解一下

        通过这张图,我们可以很明显的看到,准双向IO口和推挽输出模式好像仅仅只有接入的电阻大小不一样诶因为推挽输出需要的电流比较大,所以对应的电阻也就比较小;相反的因为准双向IO口需要的电流很小,对应的电阻也就比较大了!
        值得注意的是开漏模式,我们看到在文档的描述中,开漏模式的内部上拉电阻断开了,即内部不能够给这个IO口提供电压,所以一旦需要电压,就需要在IO口外部连接一个上拉电阻,而且这个电阻的阻值是由我们自己来决定的,只需要保证电压和电阻匹配即可

三、单片机的掉电运行模式

       (1) 浅谈cpu运行为什么会需要时钟?

(2)STC15系列单片机内部可以配置时钟

        传统的8051单片机的晶振是固定好的,我们不能修改其频率,最多也只能使用分频策略来改变其时钟频率,但是STC15系列的单片机给了我们这个权利,让我们自主选择时钟频率,这就给了我们更多的创造性

(3)分频策略,降低功耗

        分频的操作就是将频率降低,原来一秒钟震动12次,经过12分频后一秒钟就只震动1次了,可以类比我们生物,动的频率降低了,那么消耗的能力是不是也会减少呢

(4)STC15系列单片机的省电模式

        我们这里为了极大程度上的减少单片机的电流以达到省电的目的,我们会把单片机配置成掉电模式(停机模式),在停机模式下,由于内部的时钟停振,所以在main函数运行到这一句代码的时候就会关闭时钟,让程序停滞在这一行,等到外部中断上升沿或者下降沿触发唤醒的时候,继续从这一行开始执行程序,所以就极大程度的降低了功耗

(于是我们的代码就成了这样)

四、设置不同运行条件IO口的模式,进一步降低功耗

(1) 需要结合硬件设置单片机的GUAN   KAI 端口的IO模式
(2) 电池低压后,需要调整IO的工作模式。
在之前的文章中,我们曾分析过:
        关门时:GUAN引脚为低电平
        开门时:KAI引脚为低电平
但是从原理图中我们看到,关门时,由于VCC和GUAN引脚之间有电压差,所以会形成一个电流,造成功耗的升高,在开门时,GUAN引脚是默认的准双向IO口,与VCC之间没有电压降,所以不会形成电流,于是我们就明白了:
关门时,将GUAN引脚配置成开漏模式,KAI引脚配置成准双向IO口模式
同理:
开门时,KAI引脚配置成开漏模式,GUAN引脚配置成准双向IO口模式

到了这里我们的所有代码就已经完成啦!


http://www.kler.cn/a/232437.html

相关文章:

  • flink cdc 应用
  • debian 系统更新升级
  • Vue的基础使用
  • 轮转数组
  • 策略模式、状态机详细解读
  • 【excel】easy excel如何导出动态列
  • 自动驾驶稳步迈向商业化应用
  • [office] 5元+超过1以外的乘以3+地区费用 #微信#微信
  • leetcode(哈希表)49.字母异位词分组(C++详细解释)DAY5
  • 51单片机基础(C语言):定时器时钟
  • DockerPodman save
  • SpringCloud-Ribbon:负载均衡(基于客户端)
  • 【已解决】:pip is configured with locations that require TLS/SSL
  • 【力扣】快乐数,哈希集合 + 快慢指针 + 数学
  • echarts 曲线图自定义提示框
  • Kafka 生产调优
  • console.log导致内存泄露 打包时自动去掉console.log方法
  • 2024.2.8日总结(小程序开发5)
  • Flink Format系列(2)-CSV
  • C#用Array类的Reverse方法反转数组中元素
  • springboot/ssm出租车管理系统车辆调度管理系统Java系统
  • ChatGPT学习第一周
  • R语言rmarkdown使用
  • 用的到的linux-查找find-Day4
  • MySQL 的Sql脚本是如何被编译的
  • [office] Excel如何快速统一数字编号长度 #经验分享#其他