• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

c语言 的51单片机流水灯循环流水程序

a0d6d68a6351c9f1 2019-10-28 浏览量:1204
c语言 的51单片机流水灯循环流水程序
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 51系列是8位机,其IO都是映射到P0、P1之类上的,每个P0、P1等等都对应8个管脚,每个管脚可以作为一个开关的控制量,从而实现多个LED之类的控制。

    所谓流水循环灯,就是让组成循环的IO脚相应管脚一次实现开关打开状态,即去修改对应的P0、P1的值(定时循环修改),修改值的次序也是依据一定的顺序,最简单的在比如8个LED的循环流水灯,可以假定是P0对应的管脚,就是让P0=0x01然后在定时器作用下循环左移(右移)操作而已。


    如果是超过8bit的,就需要用到数组查表操作更方便,比如用到了P0、P1对应管脚的,

    先初始化一个对应P0P1状态的 二维数组,共有16个状态,比如:


    Arr[16][2]={ {01}{02}..{0128}{10}{20}...{1280} };

    //下面是循环遍历伪语句:

    i=0;

    while{1}{

        P0=Arr[i][0];

        P1=Arr[i][1];

        i++;

        if(i>15) i=0;

       // 下面是延时处理调用

       delay();

    }


    上面的语句就是循环流水灯的逻辑关键代码啦。

    • 发布于 2019-10-28
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 这还要跟你的硬件相结合,比如用P1口,你就写个循环程序中包含:P1=00000000,然后不停的把0改成1,在两者之间加个延时,这是最直接的方法,
    • 发布于2019-10-28
    • 举报
    • 评论 0
    • 1
    • 0

  • 51单片机流水灯程序有几百种写法,有通过位控制灯的,也有通过整个字节控制端口的,延时可以通过定时,也可以总用普通延时函数,你可以先看下郭天祥的51单片机例程里面有流水灯教程
    • 发布于2019-11-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 流水灯就是依次给每个IO口输出高电平再输出低电平,用51的IO操作就行
    • 发布于2019-11-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 以八个灯接在P2口为例

    #include <reg52.h>

    #include<intrins.h>
    #define unchar unsigned char 
    #define unint unsigned int 
    void DelayMS(unint ms)

    {

        unint  ab;

        for(a=0;a<ms;a++)
        for(b=0; b<113; b++);
    }
    void main(void)
    {
        unint i;
        while(1)
        {
            P2=0xfe;
            for(i=0;i<9;i++)
        {
        P2=P2<<1;
        DelayMS(100);
    }
    }
    }
    • 发布于2019-12-10
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

c语言 的51单片机流水灯循环流水程序