标题:
单片机实验 流水灯实验
[打印本页]
作者:
xuelongxl
时间:
2016-11-5 20:57
标题:
单片机实验 流水灯实验
内容:是12个LED发光二极管左循环闪亮,然后右循环闪亮
#include "reg52.h"
#define LEDPORT1 (P1) //定义LED灯的端口
#define LEDPORT2 (P2)
#define MOVESPEED (500) //定义流水的速度
#define ALLLEDOFF (0xff) //使所有灯熄灭的值
//初始化函数
void Init(void)
{
LEDPORT1=ALLLEDOFF; //熄灭所有灯
LEDPORT2=ALLLEDOFF;
}
//延时函数
//x为延时时间,范围1~65535
void xDelay(unsigned int x)
{
unsigned char y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
//流水效果1函数
void Effect1(void)
{
unsigned char TempOut1,TempOut2,xIndex;
TempOut1=0xfe; //输出值赋初值
TempOut2=0xfe;
for(xIndex=8;xIndex>0;xIndex--) //循环处理8个灯
{
LEDPORT1=TempOut1; //输出值刷新到端口线
TempOut1<<=1; //计算下一个输出值
xDelay(MOVESPEED); //延时一会
}
LEDPORT1=ALLLEDOFF;
for(xIndex=4;xIndex>0;xIndex--) //循环处理8个灯
{
LEDPORT2=TempOut2; //输出值刷新到端口线
TempOut2<<=1; //计算下一个输出值
xDelay(MOVESPEED); //延时一会
}
}
//流水效果2函数
void Effect2(void)
{
unsigned char TempOut1,TempOut2,xIndex;
TempOut1=0xfe;
TempOut2=0xfe;
for(xIndex=8;xIndex>0;xIndex--)
{
LEDPORT1=TempOut1;
TempOut1<<=1;
TempOut1|=1;
xDelay(MOVESPEED);
}
for(xIndex=4;xIndex>0;xIndex--)
{
LEDPORT2=TempOut2;
TempOut2<<=1;
TempOut2|=1;
xDelay(MOVESPEED);
}
}
void main(void)
{
Init(); //调用初始化函数
while(1){ //无限循环
Init();
Effect1(); //调用效果1函数
Init();
Effect2(); //调用效果2函数
}
}
复制代码
04实验四 流水灯.zip
2016-11-5 20:57 上传
点击文件名下载附件
下载积分: 黑币 -5
18.54 KB, 下载次数: 2, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1