51单片机流水灯三种实现方法

流水灯可以用三种方法实现

一.通过移位函数  _crol_()  和  _cror_()

二.位移实现流水灯

三.数组流水灯实现

首先说一下流水灯的原理

51单片机流水灯三种实现方法_第1张图片

让0从左往右位移或者从右往左位移

从而实现流水灯依次点亮

电路图如下,使用软件是project

51单片机流水灯三种实现方法_第2张图片
一.通过移位函数  _crol_()  和  _cror_()
_crol_()是左移函数
_cror_()是右移函数
使用移位函数需要包含头文件#include

使用左移函数代码如下

51单片机流水灯三种实现方法_第3张图片

 ///运行结果是LED灯从上到下依次点亮

 右移函数代码如下

51单片机流水灯三种实现方法_第4张图片

 ///运行结果是LED灯从下到上依次点亮

二.位移实现流水灯

左移 “<<” 流水灯代码

51单片机流水灯三种实现方法_第5张图片

///运行结果是LED灯从上到下依次点亮

左移 “>>” 流水灯也是同理

三.数组流水灯实现

原理是新建一维数组,利用循环依次赋值11111110(0xFE),11111101(0xFD)........

代码如下

51单片机流水灯三种实现方法_第6张图片

///运行结果是LED灯从上到下依次点亮

补充,如果要从上到下依次点亮,再从下到上点亮,再加一个for(),就可以实现了

比如运用位移实现流水灯从上到下闪烁,再从下到上闪烁

代码如下

#include      //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<         delay(100);       //调用延时函数
        }
        
        for(i=0;i<7;i++)
        {
         P1=~(0x80>>i);       //0x80取反对应的是第8个led灯亮,LED从下到上依次点亮
         delay(100);
        }
    }
}

小白51单片机笔记,有不足之处欢迎指出,谢谢啦

你可能感兴趣的:(51单片机,嵌入式硬件,单片机)