LED流水灯的实现

本文介绍了如何使用51单片机实现流水灯项目,包括电路设计(共阳极LED连接)和两种程序设计方法:基础延时控制和利用移位操作符。作者承诺每周一更,分享更多单片机实用程序。
摘要由CSDN通过智能技术生成

流水灯可以说是大多初学者都接触的一个必不可少的项目。那今天就让我们学习一下吧。

一、电路设计

 可以看到我们单片机的LED模块8个LED都接在VCC上(又称共阳极,这在后面学习数码管会提到),然后他们不同点在与引脚不一样。比如D1接的是P20,D2接的是P21等等。共同接在VCC,意味着他们都始终处于高电平1的位置。如果我们想让它点亮,只需要在程序设计时,给它一个低电平0,便可以实现。


二、程序设计

 

这里的代码有很多种,我下面会给大家介绍几种常见又容易懂的。

第一种便是我写的一种最麻烦的一种,虽然很麻烦但也是最容易懂的。开头的void Delayms()是一个延时子程序。单位是ms。需要延时多少ms,在下面的函数中就可以对其传参。比如我的程序就是延时100ms。从程序中不难看出。我把8个P2口都挨个打开,给低电平0,然后延时100ms,便可以实现流水灯。

第二种可能对初学者不是很友好,它涉及到了移位操作符。<<为左移操作符。其原理是除符号位不变,其它位上的数字均前进一位。然后空余的位置补0。

如果不理解的可以看一下上图。

开头的延时程序依然不变。主程序先让P2=0x01,这一步有很多人会理解错。这里的0x01,是让一个灯不亮,其他灯全亮,别弄反了。千万别弄反了!千万别弄反了!千万别弄反了!

接着就是给P2移位,最后再取反(让一个灯亮,其余灯灭)。

最后一步用if表判断,如果走到了D8,那就自动复位0,这样便可以一直循环。

三、结尾

这是up更新的第一篇文章,以后每周一更,主要更新51单片机的一些常用程序,以便之后大家学32的时候会更容易一些。

we don't know what is wrong tonight. Everybody's got no place to hide.

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值