巧用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,一经查实,立即删除!

相关文章

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

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

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

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

随便写写(5)

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

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

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

centos6.9系列LNMP环境的安装

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

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

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

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

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

芯片IC附近为啥要放0.1uF的电容?看完秒懂~

数字电路要运行稳定可靠,电源一定要”干净“,并且能量补充一定要及时,也就是滤波去耦一定要好。什么是滤波去耦,简单的说就是在芯片不需要电流的时候存储能量,在需要电流的时候又能及时地补充能量。有读者看到这里会说…

无线中继蹭网(转)

随着无线技术的逐渐成熟,无线设备的价格也越来越低,已经有不少的家庭开始在自己的家中建立无线网络,利用笔记本,具备WiFi功能的手机连接无线网络享受冲浪乐趣,很多时候为了节约网费可能几家人一起共用一个ADSL上网帐号…

深入掌握Linux操作系统,其实也没你想象那么难

曹政大家应该都不陌生吧,众多IT人的偶像,数据、技术、业务,无一不精,被大家称为曹大。在曹大的一篇文章中,他曾经提到过,1998年,自己的第一份工作接手的是一个Windows系统下的人才网站系统&…

WSS页面定制系列(1)--如何启用表单页面的编辑模式

wss的大多数页面右上角的“站点操作”菜单都有一个编辑网页菜单项,用这个菜单项,可以启用当前页面的设计模式,修改或添加webpart。但是奇怪的是,所有的表单页面(用来新建,编辑,查看列表项的页面…

单片机检测220V交流电通断电路

我们在topemic网站上分享过一篇题为"单片机检测220V交流电通断电路"的文章,目前有近万次阅读,在这里做个总结分享给没有读过该文的公众号朋友。废话不多说,直接上图:该电路工作原理如下:当220V断开时&#x…

Qt值得学习吗?详解Qt的几种开发方式

qt值得学习吗?嵌入式要学的东西真的很多,我们可能会说不写界面的话就不用学qt了?我不赞同。Qt的实现主要是采用p-impl手法,实现接口与实现分离,它有很好的消息循环机制,有的对象与线程的相关性,…

技术QA:如何安装并启用BITS和WebDAV?

引子: 在安装SCCM 2007 SP1时,必须要安装并启用BITS和WebDAV,否则在SCCM 2007 SP1安装先决条件检查时将会报错。它们以前都是IIS的功能组件,但是在IIS 7中变动很大,特别是在 Windows Server 2008 操作系统中现在已经不…

C语言,谁都能看得懂的归并排序

喜欢看排序算法动态效果的,可以看看这个网站https://visualgo.net/zh/sorting里面很多算法的动画解释,可以看到算法的排序效果,而且还附带了伪代码的实现过程。本来想录制几张动图放上来,但是因为图片较大,传不上来&am…

内核链表list.h文件剖析

内核链表list.h文件剖析 一、内核链表的结构【双向循环链表】 内核链表的好主要体现为两点,1是可扩展性,2是封装。可以将内核链表复用到用户态编程中,以后在用户态下编程就不需要写一些关于链表的代码了,直接将内核中list.h中的代…

CAN总线很难吗?CAN总线看不懂是不可能的!

CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel)CAN有很多优秀的特点,使得它能…

C语言必须写main函数?最简单的 Hello world 你其实一点都不懂!

我们在刚写程序的时候,第一个都是 hello world,而在这里,完整的代码就是:我们打眼一看,其实很简单,就是引入头文件,写一个主函数,然后输出一句话,但是当我们编译出来ELF的…

源码包安装

一、源码包和RPM包的区别 1、区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 2、RPM包安装位置 是安装在默认位置中 注:安装位置是写RPM包的作者决定的 注:RPM包支持指定安装位置,但是不建议指定位置安…

Linux下修改SSH登录端口

Linux下修改SSH登录端口LINUX 的默认SSH 端口是 22。为了防止别人暴力破解,建议修改SSH 访问端口:vim /etc/ssh/sshd_config 找到Port 22 这一行,这是是默认端口22,现在改成Port 1234这个数字自己定,但是不要超过65536…