51单片机 流水灯 ~ 花样灯 程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机为89c52 晶振为11.0592,
/***此程序为流水灯*** /
#include
#include
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar led;
void delay(uint z) //延时子函数体
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
led=0xfe; //赋初值
while(1)
{
P1=led; //点亮第一个小灯
delay(100); //延时100毫秒
led=_crol_(led,1); 将led的变量左移给下一位}
}
/*8个发光管间隔200ms由上至下,返回再由上至下,一个个往下亮,后全亮由下至上,返回再由下至上,一个个往下亮,后全亮
再重复2次,
然后全部熄灭再以500ms间隔
全部闪烁3次。重复此过程*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar led;
uint i,j;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
while(1)
{
for(j=0;j<2;j++)
{
led=0xfe; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led=_crol_(led,1); //将led变量循环左移给下一位
}
led=0xfe; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led<<=1; //左移给下一位
}
led=0x7f; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led=_cror_(led,1); //将led变量循环右移给下一位}
led=0x7f; //赋初值
for(i=0;i<8;i++)
{
P1=led; //点亮第一个小灯
delay(200); //延时200毫秒
led>>=1; //右移给下一位
}
}
for(j=0;j<6;j++)
{
P1=~P1; //全部取反6次,即闪烁5次
delay(500); //延时500毫秒
}
}
}