单片机c语言必背代码_单片机很好玩2,看看我这个菜鸟,是如何把LED小灯弄得更亮的...

上一节讨论了C语言的强项其实是与硬件打交道,并在最后编写了简单的代码,通过单片机控制LED小灯闪烁起来了。

好久不玩51单片机了,差点连怎样点亮LED小灯都忘了。
58edd436355251fa6eea492dc15f6ab9.png

使用三极管,让 LED 小灯更亮

不过,因为我是使用单片机的 IO 直接驱动 LED 小灯的,而单片机的 IO 输出电流的能力又比较弱,所以 LED 小灯亮度比较弱。因此,今天决定使用单片机通过三极管,间接控制 LED 小灯闪烁,争取让 LED 小灯更亮些。

我这个菜鸟想学一点硬件知识。本系列文章正是学习过程中记下的笔记,高手们请多些指导,少些鄙视哈。

思路是这样的,三极管外接电源,LED 小灯串联在三极管的集电极上,单片机的 IO 连接三极管的基极,通过输出高低电平,控制三极管的导通与否,间接控制小灯的亮灭。电路原理图可以如下图设计:

1dd44c5bd2d0b6aa8d98971af1260cf2.png

理论上,单片机的 IO 输出高电平时,LED 小灯不会亮。IO 输出低电平时,LED 小灯才会亮,实物图如下:

efe76eddb4402a96117983dff79956a9.png

写C语言代码做实验

先将三极管的基极与单片机的 P2.0 引脚相连,然后使用 C语言控制 P2.0 引脚输出低电平:

#include "reg52.h"sbit P20 = P2^0;int main(){ P20 = 0; while(1);}
34a79d1e9e0e50bb090a6674b4e2b4c0.png

编译后烧写程序,观察 LED 小灯,发现小灯亮起来了,而且明显比上一节直接使用单片机 IO 驱动亮得多。

c5ffa04fc33d48e38b21ab90f549ac4d.png

再让 P20=1;控制单片机 IO 输出高电平,发现小灯灭了。这证明利用电路的设计是没有问题的,现在编写 C语言代码,控制 P20 交替输出高低电平:

#include "reg52.h"sbit P20 = P2^0;void delay(unsigned int n){ unsigned int x; while(n--){ x = 5000; while(x--); }}int main(){ while(1){ P20 = 0; delay(10); P20 = 1; delay(10); }}
bfd5f8b78f1e4e78a058ac757e0d2c8e.png

编译程序并烧写,发现 LED 小灯闪起来了,并且小灯亮的时候亮度也比上一节高:

58e26462628664824132e8cb3e5a1772.gif

下面这张图是上一节的闪烁 LED 小灯:

c33e955b8bdf7da028802962bffb4fa5.gif

可以看出效果还是非常明显的。

更好玩的现象

按理说,三极管的基极只有在输入是低电平时,LED 小灯才会亮。可是,将基极与我相连,小灯也会亮,只不过亮度不太高而已。估计这是因为对于三极管来说,我的电位也是很低的原因。

d4c177a24c9289ef521f0e77eaa6e205.png

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值