每天一个单片机小实验—LED流水灯

就如你学习编程语言你写下的“Hello world”,LED流水灯也是这样的一个例子。通过这个实验,我们可以快速了解到51单片机I/O口的基本用法,以及LED灯的基本原理。

LED(发光二极管),是一种能够将电能转化为光能的固态半导体器件。LED有两个端口一端接正极一端接负极,当LED正向偏压(正极接电源正极)时,LED将发光。LED的发光电流一般为5-15ma。由于单片机I/O口的输出电流太小,所以我们无法用I/O口直接驱动LED的。

想要LED能通过单片机I/O口对LED进行控制,首先我们需要将LED一端接一电阻,电阻这里选择470欧姆,电阻的一端接5V电源,LED的另一端单片机I/O口。在本次实验中我将P2口全部用上,连8个LED,8LED分别连470欧姆电阻,8个470欧姆电阻串联起来,连接到5V电源。

如何控制LED灯的亮灭?我们知道,我LED正向偏压的时候,LED会亮。也就是说当你往LED对应的I/O口清零或者置一LED等就会亮或者灭(清零亮还是置一亮取决于LED正极还是负极与电源相连)。

下面是具体代码:

#include<reg51.h>
#define LED_PROT P2//宏定义P2口
void delay_1ms(unsigned short );//不精准延时函数
//P2有八个管脚,0xfe对应的二进制数为0b11111110,也就是让p2.7-p2.1输出高电平,p2.0输出点电平,此时p2.0口对应的LED亮
unsigned int LED[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main()
{
while(1){
unsigned char i;
for(i=0;i<8;i++){
LED_PROT=LED[i];
delay_1ms(100);//循环每次取数组一个数,让对应的p2.x口亮,并且延时。
}
}
}
void delay_1ms(unsigned short t_ms)
{
int i,j;
while(t_ms--){
for(i=0;i<100;i++)
for(j=0;j<10;j++);
}
}

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值