流水灯可以用三种方法实现
一.通过移位函数 _crol_() 和 _cror_()
二.位移实现流水灯
三.数组流水灯实现
首先说一下流水灯的原理
让0从左往右位移或者从右往左位移
从而实现流水灯依次点亮
电路图如下,使用软件是project
一.通过移位函数 _crol_() 和 _cror_()_crol_()是左移函数 _cror_()是右移函数 使用移位函数需要包含头文件#include<intrins.h>
使用左移函数代码如下
///运行结果是LED灯从上到下依次点亮
右移函数代码如下
///运行结果是LED灯从下到上依次点亮
二.位移实现流水灯
左移 “<<” 流水灯代码
///运行结果是LED灯从上到下依次点亮
左移 “>>” 流水灯也是同理
三.数组流水灯实现
原理是新建一维数组,利用循环依次赋值11111110(0xFE),11111101(0xFD)........
代码如下
///运行结果是LED灯从上到下依次点亮
补充,如果要从上到下依次点亮,再从下到上点亮,再加一个for(),就可以实现了
比如运用位移实现流水灯从上到下闪烁,再从下到上闪烁
代码如下
#include<reg51.h> //51头文件
void delay(int t) //定义延时函数
{
int j;
while(t--)
{
for(j=0;j<500;j++);
}
}
void main()
{
int i;
while(1)
{
for(i=0;i<7;i++) //循环点亮LED,到第7个LED延时一会就结束循环
{
//P1对应的是P1端口,对端口赋值
P1=~(0x01<<i); //根据原理,0x01转换2进制是00000001,所以取反变成11111110,依次位移i位,就形成了流水灯
delay(100); //调用延时函数
}
for(i=0;i<7;i++)
{
P1=~(0x80>>i); //0x80取反对应的是第8个led灯亮,LED从下到上依次点亮
delay(100);
}
}
}文章来源:https://www.toymoban.com/news/detail-407459.html
小白51单片机笔记,有不足之处欢迎指出,谢谢啦文章来源地址https://www.toymoban.com/news/detail-407459.html
到了这里,关于51单片机流水灯三种实现方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!