51单片机89c51rc,怎么设计心形流水灯?led至少30个,?求电路,和程序!步骤要具体

核心提示#include?//51系列单片机定义文件#define?uchar?unsigned?char?//定义无符号字符#define?uint?unsigned?int?//定义无符号整数void?delay(uint);?//声明延时函数

#include?//51系列单片机定义文件

#define?uchar?unsigned?char?//定义无符号字符

#define?uint?unsigned?int?//定义无符号整数

void?delay(uint);?//声明延时函数

void?main(void)

{?

uint?i;

uchar?temp;?

while(1)

{

temp=0x01;

for(i=0;i<8;i++)?//8个流水灯逐个闪动

{

P0=~temp;

delay(100);?//调用延时函数

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++)?//8个流水灯反向逐个闪动

{

P0=~temp;

delay(100);?//调用延时函数

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++)?//8个流水灯依次全部点亮

{

P0=temp;

delay(100);?//调用延时函数

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++)?//8个流水灯依次反向全部点亮

{

P0=temp;

delay(100);?//调用延时函数

temp>>=1;

}

}

}

void?delay(uint?t)?//定义延时函数

{

register?uint?bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

单片机P0~P3复位时都等于0FFH,也就是高电平。所以初始时让这里的P0为0.再就是在主函数内的最后面加一条挂起语句:while(1);这是为了保证运行到此结束,否则加载后的程序可能一直往下运行,从而出现无法预知的结果。

 
友情链接
鄂ICP备19019357号-22