巧用1个GPIO控制2个LED显示4种状态

很多电子产品有状态指示灯,比如电视机:

  • 待机状态亮红灯

  • 开机状态亮绿灯

实现起来很简单,微控制器MCU的两个GPIO分别控制就行:

不过资源总是紧张的,有时候会碰到GPIO不够用的情况。

如果只用1个GPIO,可不可以实现控制两个LED灯呢?

要实现4种状态:

  • 红灯亮,绿灯灭

  • 红灯灭,绿灯亮

  • 都灭

  • 都亮

直接上电路:

 


一、电路分析

 1、红灯亮,绿灯灭时,GPIO1输出5V高电平:

 2、红灯灭,绿灯亮时,GPIO1输出0V低电平:

 

3、红灯和绿灯都灭时,GPIO1设为浮空高阻态。此时由于两个LED灯总的导通压降要求大于5V,所以两个LED灯都不导通。

 

4、红灯和绿灯都亮时,GPIO1交替输出高低电平。只要高低电平切换的频率够高,由于视觉暂留效应,人眼看到的就是两个灯都常亮。

 


二、注意事项

 

使用这个电路时,要注意MCU的GPIO的电流驱动能力。

GPIO能承受的电流要大于LED灯流过的电流。

以下截图出自STM32芯片的数据手册,它的GPIO可以驱动或吸入8mA的电流。

 


三、总结

 

“1个GPIO控制2个LED显示4种状态”,电路的实现本身很妙。

“1个GPIO控制2个LED显示4种状态”,不知下面这位大神是否可以出个绝妙的下联。

 

关于电路的学习,希望大家,enjoy!

推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466508.shtml

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

相关文章

GetTickcount函数

GetTickCount是一种函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。 GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某…

网络大小端转换函数

网络大小端转换函数 //***************************************************************************** // // htonl/ntohl - big endian/little endian byte swapping macros for // 32-bit (long) values // //**********************************************************…

5-全排列总结:

https://www.nowcoder.com/acm/contest/76/H 给一道题&#xff0c;可以去测试代码。 这里总结一下全排列的几种方法&#xff1a; 方法一&#xff1a;利用交换排列&#xff1a;缺点&#xff1a;不能按字典序排列&#xff0c;但可以借助set处理。 #include <bits/stdc.h> …

大大大大数怎么求余?C语言

问题&#xff1a;一个特别大的数除以23求余数用C语言应该怎么算啊&#xff1f;比如23232323232323232323232323232323232323232323232323232323233除以23&#xff0c;怎么算余数&#xff1f;数据类型在计算机的存储是有大小限制的&#xff0c;所以才出现了大数求余这种问题&…

substr

substr &#xff08;C语言函数&#xff09; 编辑 substr是C语言函数&#xff0c;主要功能是复制子字符串&#xff0c;要求从指定位置开始&#xff0c;并具有指定的长度。如果没有指定长度_Count或_Count_Off超出了源字符串的长度&#xff0c;则子字符串将延续到源字符串的结尾…

***站长自述挂马经历 提醒挂马者回头是岸

我做站都已经接近三年了&#xff0c;期间像很多人一样买过很多玉米&#xff0c;但是因为养不起&#xff0c;至今只保留了一个域名&#xff08;159e.cn&#xff09; &#xff0c;当时学校正流行移动159的号码&#xff0c;然后e在网络上代表很多意思&#xff0c;就注册了这个域名…

微信公众号--相关资料

相关资料 l 官方文档&#xff1a;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 l 测试号&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actionshowinfo&tsandbox/index l 接口调试地址&#xff1a;https://mp.weixin.qq.…

程序员因拒绝带电脑回家工作被开除!获赔19.4万元

近日&#xff0c;男子拒绝春节带电脑回家工作被开除的消息&#xff0c;成为了不少网友关注的焦点&#xff0c;引发网友共鸣。因为春节拒绝带工作电脑回家被开除&#xff0c;上海一位软件工程师起诉公司获赔19.4万元。2月2日&#xff0c;据上海浦东法院公众号消息&#xff0c;该…

键值键名

在注册表中 所谓的键&#xff0c;是指一个注册表条目。 键名&#xff0c;是这个条目的名称 键值是为这个条目所赋予的值。 比如&#xff1a; NoDesktop1 这就是一个键 NoDesktop是一个键名 1就是一个键值 这个条目的意思是说&#xff1a;NoDesktop是没有桌面当值为1的时候&…

随便写写(5)

也许是今年发生的事情太多了&#xff0c;所以比以前要更关注时事&#xff0c;虽然面对一些既成的事实&#xff0c;难免要进行痛心的思考。 昨天晚上关注了一下东方卫视播出的9.8特大尾矿库溃坝事故的后续报道&#xff0c;这起特大人为事故已经得到了认定&#xff0c;相关的责任…

STM32 LED灯的另一种写法

STM32 LED灯的另一种写法 #ifndef __BSP_LED_ #define __BSP_LED_#include <MM32x103.h> // 这个换成STM32的库文件就行 #include "type.h"// #define LED1_RUN_GRP GPIOC #define LED1_RUN_IDX GPIO_Pin_6 #define LED1_RUN_OFF() GPIO_ResetBit…

C# 获取枚举的描述属性

https://www.cnblogs.com/TanSea/p/6923743.html 转载于:https://www.cnblogs.com/niuniu0108/p/8532161.html

利用C语言中的setjmp和longjmp,来实现异常捕获和协程

一、前言二、函数语法介绍与 goto 语句比较与 fork 函数比较与 Python 语言中的 yield/resume 比较三、利用 setjmp/longjmp 实现异常捕获四、利用 setjmp/longjmp 实现协程五、总结一、前言 在 C 标准库中&#xff0c;有两个威力很猛的函数&#xff1a;setjmp 和 longjmp&…

VS2010

https://jingyan.baidu.com/article/d5a880eb74824013f147cca4.html

1、如何理解SQL Server的实例

在项目实施过程中&#xff0c;不少用户会有这样的需求&#xff1a;要求开发一套基于SQL Server的新系统&#xff0c;这套系统验收通过后&#xff0c;要和一个原有的SQL Server系统合并&#xff0c;共用一个服务器&#xff0c;所以不能为新系统提供单独的服务器&#xff08;资金…

centos6.9系列LNMP环境的安装

一、Nginx 1.先解决Nginx的依赖关系&#xff1a; yum install -y pcre-devel openssl-devel 2.安装wget&#xff1a;sudo yum -y install wget 3.下载nginx的安装包&#xff1a;wget http://nginx.org/download/nginx-1.10.3.tar.gz 4.解压nginx文件包&#xff1a;tar xf nginx…

MDK临界区

Keil临界区/********************************************************************************************************* ** Function name: __ENTER_CIRTICAL, __EXIT_CIRTICAL ** Descriptions: 临界区代码保护宏 ** input parameters: 返回…

Linux 修改 ELF 解决 glibc 兼容性问题

转自&#xff1a;Soul Of Free Loophttps://zohead.com/archives/mod-elf-glibc/Linux glibc 问题相信有不少 Linux 用户都碰到过运行第三方&#xff08;非系统自带软件源&#xff09;发布的程序时的 glibc 兼容性问题&#xff0c;这一般是由于当前 Linux 系统上的 GNU C 库&am…

VS2010创建ATL工程及使用C++测试COM组件

VS2010创建ATL工程及使用C测试COM组件 1.创建ATL项目&#xff0c;取名MyCom 2. ATL 项目向导&#xff0c;勾选 【支持COM 1.0】和【支持部件注册器】&#xff0c;其他默认&#xff0c;点击完成。 3.在该项目中添加类 4.添加一个ATL简单对象 5. ATL 简单对象向导&#xff0c…

基于气动人工肌肉的双足机器人关节设计

介绍了一种由气动人工肌肉构建的双足机器人关节&#xff0c;该关节利用气动人工肌肉的柔性特性&#xff0c;可以有效控制双足机器人快速行走或跑步时的落地脚冲击问题。   详细给出了气动人工肌肉的工作原理以及由其构成的关节系统的硬件架构。同时介绍了基于此硬件关节搭建的…