标题: 单片机左右循环流水灯 [打印本页]

作者: fanhaiyu    时间: 2017-11-19 12:05
标题: 单片机左右循环流水灯
原理图:


单片机源程序如下:
  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. }
复制代码






作者: garrett_li2020    时间: 2020-12-2 14:44
你这个程序不对的,第一个for执行完成后,你第二个for再给for为0,只会执行一次第二个for语句后又回到第一个for循环,左右流水灯效果达不到的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1