单片机led闪烁代码_【51单片机】有关LED那些事,你必须要学会的这些

导航

I  原理图剖析

II  实战操作

  1. 点亮led

  2. led闪烁

  3. 流水灯

I 原理图剖析

在来看原理图之前,我们要先有以下这几点知识做铺垫:

  1. 单片机电平特性:高电平为+5V,低电平为0V;

  2. 单片机在通电时所有I/O口均为高电平;

  3. 常见发光二极管点亮之后压降值为1.7V(可以自行仿真求证),电流正常值为3~10mA

     咱也不知道为什么,这就好比为啥俺一出生就被设定成male一样。

4c7b1eacd7ef5782560bc8d2d45958ce.png

     因此这就解决了我们的第一个问题:排阻的值为什么是1KΩ

     答曰:此时排阻电压为(5-0)-1.7=3.3V,I=3.3*103/103=3.3mA。

     同时我们又知道:标号(如上图中P20表示P2端第1位)相同(主要指各模块与主芯片之间)相互连接:

f828f8963db722bdf5f432e1be1b410b.png

     于是乎我们知道了:发光二极管D1与芯片20引脚连接。

     至此,整个单片机我们可以用仿真软件仿真出来了。

II 实战操作

a. 点亮LED

①:原理

     上面我们也提到P2.0其实是一个特殊功能位,结合上篇文章《【51单片机】预备知识——我与单片机的第一次约会》发的c51拓展数据结构,我们对其操作时应用sbit对其定义;其次我们知道通电时此I/O口为高电平(c51中1为高电平),因此我们只需将其电平值设为0(低电平)即有电流流过,就会亮,很简单。

②:代码实现:

bacff026b61ec811a7ac1ac5ad3ca88e.png

③:效果展示:

614635877317d65752e7671f591a7f90.png

④:拓展知识:

     这里值得注意的是:我们可直接操作的是P2口(由八位即P2.0-.7组成),例如2位即第3个LED亮,若对P2.2操作即如上同理编写代码,如对P2端口操作,则P2此时用二进制表示为1111 1011,十六进制表示为

94d26967f9b78b2e82b4d8c36819153d.png

代码如下

5f724e31bb84b8224053ad80f878297a.png

展示如下

274d6b98a79c925adcdb4a636bc77c36.png

     至此咱们点亮了第一个LED,它的七大姑八大姨该怎么点亮你们应该都懂得。

2. LED闪烁

     LED闪烁的原理不必多讲,无非就是亮-灭-亮-灭,但是好玩的是,当我第一次尝试这样编写程序时:

11013bdd0d87b7ac91f54175db34f768.png

     达不到预期的效果,这是为什么呢?原来是灯亮灭的频率太快,巧妙地骗过了人的眼睛,就像光电子偏移实验中实际看到的是一条亮线,因此我们要加个延时程序:

b32d6265ba18d0cbc87d673bd34a9af2.png

     但是问题又来了,你看,学习就是一个不断发现问题并解决的过程:我给了50000的延时单位,到底是多久呢?经过查找,我发现了方法

①:设置晶振频率;②:调试(见上图)。

04ba982c165facce22ecd798e30ed6dd.png

     这个对学过C的小伙伴来说都小case了,不赘述了。不懂的可以来后台讨论哈,不建议用秒表测,太考验手速,误差也大。

c. 流水灯的实现

     学过C语言的都知道,当你想做两个同样事时,写两个相同语句就好了,多了就不可行,因此流水灯的实现显然已经有同学和我想的笨方法一样了,嘿嘿,对于爱偷懒的我,告诉你那是不可能的,于是乎,百度

a1a3b8f931a92c86d8477148fd808e0f.png

这是个啥?百度一下

5758161798c0348a404bbc81769cf125.png

     这不正是咱们要的东西吗?赚大了,省去一大笔不需要的代码(单片机内存本来就小,对自己抠门不行,但对单片机内存一定要抠);

于是有了下面代码:

cc2b2a52c4cdf255b0bac962c6cd2f7d.png

效果演示

ec5737b587daae6a54ec9acf3ec2fe11.gif

今天就先到这里~

下面给勤奋的小宝贝布置点任务:

①:自己去搞懂_crol_和<

②:用其他算法写流水灯;

③:自行拓展。

有什么不懂得请在后台留言,咱们一块学习讨论。下次学习俺会带你们了解蜂鸣器模块,并用它做一首简单的音乐出来呦~

1de277654fe32ed1faf623fdf6e3d782.png

1deadede93a15ed1e2c22635dcd8e903.png

6adc559512911753c29d0b4c7977034a.png

a0b18cece81fc35fc35c1db2095688ac.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值