单片机很好玩2,借助三极管,让LED小灯更亮
发表于: 2019-01-04 21:29:00 | 已被阅读: 43 | 分类于: 单片机
上一节讨论了C语言的强项其实是与硬件打交道,并在最后编写了简单的代码,通过单片机控制LED小灯闪烁起来了。
好久不玩51单片机了,差点连怎样点亮LED小灯都忘了。
使用三极管,让 LED 小灯更亮
不过,因为我是使用单片机的 IO 直接驱动 LED 小灯的,而单片机的 IO 输出电流的能力又比较弱,所以 LED 小灯亮度比较弱。因此,今天决定使用单片机通过三极管,间接控制 LED 小灯闪烁,争取让 LED 小灯更亮些。
我这个菜鸟想学一点硬件知识。本系列文章正是学习过程中记下的笔记,高手们请多些指导,少些鄙视哈。
思路是这样的,三极管外接电源,LED 小灯串联在三极管的集电极上,单片机的 IO 连接三极管的基极,通过输出高低电平,控制三极管的导通与否,间接控制小灯的亮灭。电路原理图可以如下图设计:
理论上,单片机的 IO 输出高电平时,LED 小灯不会亮。IO 输出低电平时,LED 小灯才会亮,实物图如下:
写C语言代码做实验
先将三极管的基极与单片机的 P2.0 引脚相连,然后使用 C语言控制 P2.0 引脚输出低电平:
#include "reg52.h"
sbit P20 = P2^0;
int main()
{
P20 = 0;
while(1);
}
再让 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);
}
}