标题: 流水灯升级版 [打印本页]

作者: liyu124118    时间: 2018-3-12 16:21
标题: 流水灯升级版
普通的流水灯是让8个led依次点亮,此升级版会让流水灯点亮第三个LED后再回到第二个LED,让LED呈现出震荡的形式,从左边到右边,再从右边弹到左边,实验程序很简单,还是很有趣的。此程序会让初学者对FOR语句的掌握更加牢固。
一下是本程序的源码:
/*本程序使led向右移动2格再向左移动一格以此循环,在触及到第八个LED时又弹回来向左以以上规律移动*/
/********************************************************************/
#include<reg52.h>                         //         定义了一些特殊功能寄存器
#include<intrins.h>                         //         需用到左右移函数
#define led P2                                  // 将P2定义为led
typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;
/***********************************/                 
void delay(u16 i)                                          //延时函数   循环一次延时10us,当i=50000时大概延时450ms
{       
        while(i--);
}
/***********************************/
void main()                                                         //主函数
{
        u8 i,j;                                                         //        i led逐步右移计数,jled左右闪动计数
       
        while(1)                                                 //无限循环
        {        led=0x01;                                         //让第一个LED发光        ,延时
            delay(8000);
                        for(i=0;i<6;i++)                 //由于最后一个LED发光后不能跳到后一个LED,所以第七次单独运行
                {
                                for(j=0;j<2;j++)         //LED向右移动2
                        {
                                led=_crol_(led,1);         
                                delay(8000);
                        }
                                for(j=j;j>1;j--)         //LED向左移动1
                        {
                                led=_cror_(led,1);
                                delay(8000);
                        }
            }
                                        for(i=i;i<7;i++)   //当i=6时led向右移动2
                                {
                                        led=_crol_(led,1);
                                        delay(8000);
                                }
                         for(i=0;i<6;i++)                   // 和以上过程相反
                {
                                for(j=0;j<2;j++)
                        {
                                led=_cror_(led,1);
                                delay(8000);
                        }
                                for(j=j;j>1;j--)
                        {
                                led=_crol_(led,1);
                                delay(8000);
                        }
            }
                                        for(i=i;i<7;i++)
                                {
                                        led=_cror_(led,1);
                                        delay(8000);
                                }
       
        }

}

相机速度有点慢,看起来有两个LED同时移动

P80312-161843.gif (2.25 MB, 下载次数: 49)

P80312-161843.gif





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