找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5145|回复: 1
收起左侧

单片机左右循环流水灯

[复制链接]
ID:250436 发表于 2017-11-19 12:05 | 显示全部楼层 |阅读模式
原理图:
TIM图片20171119120439.png

单片机源程序如下:
  1. #include<reg51.h>

  2. #include<intrins.h>

  3. unsignedchar temp;                              //定义字符变量temp,temp左移或右移并给连接LED的P1口赋值

  4. inta;                                                    //定义延迟函数delay()

  5. voiddelay(void);

  6. voidmain()

  7. {

  8.     temp=0xfe;                                   //给temp赋初值

  9.        P1=temp;                                      //temp赋值给P1口,第一个LED(红色)点亮

  10.        while(1)                                 //主程序,括号中的程序将一直循环

  11.        {

  12.           for(a=0;a<7;a++)             //左移部分,LED从左到右依次点亮

  13.               {

  14.                  temp=_crol_(temp,1);   //_crol_语句控制变量temp左移

  15.                      delay();                    //每个灯点亮之后延迟一会在点下一个灯

  16.                      P1=temp;

  17.               }

  18.               for(a=0;a<7;a++)            //右移部分,LED从右到左依次点亮

  19.               {

  20.                  temp=_cror_(temp,1);   //第8个灯点亮后开始右移程序,LED从右向左点亮

  21.                      delay();                    

  22.                      P1=temp;

  23.               }

  24.        }

  25. }


  26. voiddelay()                                  //延时子程序

  27. {

  28.        int i,j;                                    //定义局部变量i,j

  29.        for(i=200;i>0;i--)                    //i,j不断计数占用CPU时间,达到延时目的

  30.        for(j=1;j<150;j++);

  31. }
复制代码





回复

使用道具 举报

ID:853093 发表于 2020-12-2 14:44 | 显示全部楼层
你这个程序不对的,第一个for执行完成后,你第二个for再给for为0,只会执行一次第二个for语句后又回到第一个for循环,左右流水灯效果达不到的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表