单片机的省电模式及策略

目录

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

二、单片机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.mzph.cn/news/675411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法之美学习笔记:51 | 并行算法:如何利用并行处理提高算法的执行效率?

目录 前言并行排序并行查找并行字符串匹配并行搜索总结引申 前言 本节课程思维导图: 时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度并不能跟性能划等号。在真实的软件开发中,即便在不降低时间复杂度的情况下,也可以…

Linux应用开发---网络通信

Linux应用开发—网络通信 1 网络通信概述 Linux下的网络编程,我们一般称为 socket 编程,socket 是内核向应用层提供的一套网络编程接口,我们可以基于socket接口开发自己的网络相关应用程序。 1.1 socket 简介 套接字(socket&…

Jenkins升级后,构建任务配置界面重复错位

最近我把公司的Jenkins服务升级到了最新版本,升级完成后,点了一下构建任务,发现能够构建成功,就以为顺利完成升级了,下班走了,结果第二天,进入构建任务配置界面发现,界面一团乱麻&am…

LabVIEW热电偶自动校准系统

设计并实现一套基于LabVIEW平台的工业热电偶自动校准系统,通过自动化技术提高校准效率和精度,降低人力成本,确保温度测量的准确性和可靠性。 工业生产过程中,温度的准确测量对产品质量控制至关重要。传统的热电偶校准方式依赖人工…

[Java][算法 双指针]Day 02---LeetCode 热题 100---04~07

LeetCode 热题 100---04~07 第一题:移动零 思路 找到每一个为0的元素 然后移到数组的最后 但是需要注意的是 要在给定的数组原地进行修改 并且其他非零元素的相对顺序不能改变 我们采用双指针法 定义两个指针i和j i和j一开始分别都在0索引位置 然后判断j所…

tab 切换类交互功能实现

tab切换类交互&#xff1a; 记录激活项&#xff08;整个对象/id/index)动态类型控制 下面以一个地址 tab 切换业务功能为例&#xff1a; <div class"text item" :class"{active : activeAddress.id item.id}" click"switchAddress(item)"…

v-if 和v-for的联合规则及示例

第073个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使用&#xff0c;computed&a…

《游戏引擎架构》 -- 学习2

声明&#xff0c;定义&#xff0c;以及链接规范 翻译单元 声明与定义 链接规范 C/C 内存布局 可执行映像 程序堆栈 动态分配的堆 对象的内存布局 kilobyte 和 kibibyte 流水线缓存以及优化 未完待续。。。

SQL注入(SQL Injection)从注入到拖库 —— 简单的手工注入实战指南精讲

基本SQL注入步骤&#xff1a; 识别目标&#xff1a;确定目标网站或应用程序存在潜在的SQL注入漏洞。收集信息&#xff1a;通过查看页面源代码、URL参数和可能的错误信息等&#xff0c;搜集与注入有关的信息。判断注入点&#xff1a;确定可以注入的位置&#xff0c;比如输入框、…

【网工】华为设备命令学习(Telnet)

本次实验AR3为我们实际中远程的路由&#xff0c;AR4模拟我们的设备&#xff0c;最终实现Telnet的远程控制路由&#xff01; 本次笔记主要记录Telnet技术实现原理&#xff0c;后续再补充具体配置代码。 Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的…

基于微信小程序的新生报到系统的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

前端实现支付跳转以及回跳

// 支付地址 const baseURL http://pcapi-xiaotuxian-front-devtest.itheima.net/ const backURL http://127.0.0.1:5173/paycallback const redirectUrl encodeURIComponent(backURL) const payUrl ${baseURL}pay/aliPay?orderId${route.query.id}&redirect${redirec…

【精选】java初识多态 子类继承父类

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

github拉取项目,pycharm配置远程服务器环境

拉取项目 从github上拉取项目到pycharmpycharm右下角选择远程服务器上的环境 2.1. 如图 2.2. 输入远程服务器的host&#xff0c;port&#xff0c;username&#xff0c;password连接 2.3. 选择服务器上的环境 链接第3点 注&#xff1a;如果服务器上环境不存在&#xff0c;先创建…

vue3-内置组件-Teleport

Teleport <Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。 基本用法 有时我们可能会遇到这样的场景&#xff1a;一个组件模板的一部分在逻辑上从属于该组件&#xff0c;但从整个应用视图的角度来看…

基于Linux操作系统的Docker容器安装MySQL随笔

1、在Linux上安装Docker容器 cd /etc/yum.repos.d/ curl -O https://download.docker.com/linux/centos/docker-ce.repo sed -i s/$releasever/8/g docker-ce.repo yum install -y docker-ce 2、修改Docker默认镜像仓库&#xff0c;然后启动Docker容器 sudo mkdir -p /etc/do…

yolov8自制数据训练集

目录 1.YOLOv8是啥 2.系统环境 3.安装labelimg 3.1安装 3.2启动 labelimg 4.自制分类图片 4.1 YOLO数据集要求 4.2 图片保存目录 4.3 利用labelimg进行标注 4.4 存储图片 4.5 标注文件 5.数据集训练 5.1yaml文件 5.2训练命令 5.3查看训练过程 5.3.1启动tensorb…

实例分割论文阅读之:FCN:《Fully Convolutional Networks for Semantica Segmentation》

论文地址:https://openaccess.thecvf.com/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf 代码链接&#xff1a;https://github.com/pytorch/vision 摘要 卷积网络是强大的视觉模型&#xff0c;可以产生特征层次结构。我们证明&#xff0c…

Qt网络编程-TCP与UDP

网络基础 TCP与UDP基础 关于TCP与UDP的基础这里就不过多介绍了&#xff0c;具体可以查看对应百度百科介绍&#xff1a; TCP&#xff08;传输控制协议&#xff09;_百度百科 (baidu.com) UDP_百度百科 (baidu.com) 需要知道这两者的区别&#xff1a; 可靠性&#xff1a; TC…

Java面向对象 方法的重写

目录 重写重写的规则实例创建Person类创建Student类测试 重载和重写的区别 重写 发生在子类和父类中&#xff0c;当子类对父类提供的方法不满意的时候&#xff0c;要对父类的方法进行重写。 重写的规则 子类的方法名字和父类必须一致&#xff0c;参数列表&#xff08;个数&…