当前位置:文档之家› 单片机流水灯所有程序

单片机流水灯所有程序

#include
#define uchar unsigned char //char是字符数组
#define unit unsigned int
uchar num;
sbit led1=P1^0;
void main()
{
TMOD=0x01; // 打开工作方式寄存器,选择工作方式1(0000 0001)
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1); //程序停止在这里等待中断发生
}
void T0_time()interrupt 1
{
TH1=(65536-45872)/256; //装初值50ms
TL1=(65536-45872)%256;
num++; //num每加一次判断是否到了20次
if(num==20) // 20*50ms=1000ms=1s,间隔1s
{
num=0; //然后把num清0重新再计20次
led1=~led1; //让发光管状态取反
}
}
用定时器使1灯间隔1s闪烁





#include
#define uchar unsigned char
#define unit unsigned int
unit num ;
#define ucha unsigned char
#define uni unsigned int
uni a ;
uchar table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; //????
ucha table1[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
void delayms(unit);
void main()
{
while(1)
{
for(num=0;num<8;num++) //????
{
P1=table[num];
delayms(500);
}

for(a=8;a>0;a--) //改成for(a=0;a>8;a++)
{
P1=table1[a];
delayms(500);
}
}
}
void delayms(unit xms)
{
unit i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
没有实现理想的流水灯,问题已解决,见下面程序





#include
#define uchar unsigned char
#define unit unsigned int
unit num ;
uchar table[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
void delayms(unit);
void main()
{
while(1)
{
for(num=0;num<9;num++)
{
P1=table[num];
delayms(500);
}
for(num=9;num>0;num--)
{
P1=table[num];
delayms(500);
}
}
}
void delayms(unit xms)
{
unit i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
用数组实现流水灯循环,依次点亮,然后依次熄灭





#include
#define uchar unsigned char //char是字符数组
#define unit unsigned int
unit num ;
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 改变数组
void delayms(unit);
void main()
{
while(1)
{
for(num=0;num<8;num++) //for循环
{
P1=table[num];
delayms(500);
}
}
}
void delayms(unit xms)
{
unit i,j;
for(i=xms;i>0;i--) //延迟0.5s,下一灯亮 // 加for语句
for(j=110;j>0;j--);
}
用数组实现流水灯











#include
#include //包含_crol_函数所在的头文件
#define unit unsigned int
uni

t i,j;
#define uchar unsigned char
uchar a;
void delayms(unit);
void main()
{
a=0xfe; //赋给a初值0xfe,即1111 1110,第一个灯亮
while(1)
{
P1=a;
delayms(500);
a=_crol_(a,1); //循环左移指令或 a=a<<1;8 7 6 5 4 3 2 1灯

}
}
void delayms(unit xms) //自定义毫秒X
{
unit i,j;
for(i=xms;i>0;i--) //延迟Xms
for(j=110;j>0;j--);
}
用循环左移指令实现流水灯












#include //头文件
#define unit unsigned int //宏定义
unit i,j; //定义i;j
void delay1s();
sbit led1=P1^0; //连接1灯的是锁存器的P10端口
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
void main()
{
while(1) //循环永不停止
{
led1=0;
delay1s(); //1灯亮1S
led1=1; led2=0 ; //1灯灭,二灯亮
delay1s();
led2=1;led3=0 ;
delay1s();
led3=1;led4=0;
delay1s();
led4=1;led5=0;
delay1s();
led5=1;led6=0;
delay1s();
led6=1;led7=0;
delay1s();
led7=1;led8=0;
delay1s();
led8=1;led1=0;
}
}
void delay1s()
{
unit i,j; //
for(i=500;i>0;i--) //延迟0.5s,下一灯亮
for(j=110;j>0;j--);
}
流水灯



#include
#define unit unsigned int
unit i,j;
void delay1s();
sbit led=P1;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
void main()
{
while(1)
{led1=0;
delay1s();
led2=0 ;
delay1s();
led3=0 ;
delay1s();
led4=0;
delay1s();
led5=0;
delay1s();
led6=0;
delay1s();
led7=0;
delay1s();
led8=0;
delay1s();led8=1;
delay1s();led7=1;
delay1s();led6=1;
delay1s();led5=1;
delay1s();led4=1;
delay1s();led3=1;
delay1s();led2=1;
delay1s();led1=1;
delay1s();
P1=0;delay1s();
P1=0xff;delay1s();
}
}
void delay1s()
{
unit i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
依次点亮,一亮二亮----全亮---依次熄灭---全灭------全亮









#include
#define unit unsigned int
unit i,j;
void delay1s();
sbit led=P1;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
void main()
{
while(1)
{led1=0;
delay1s(

); //1灯亮1S
led1=1; led2=0 ; //1灯灭,二灯亮
delay1s();
led2=1;led3=0 ;
delay1s();
led3=1;led4=0;
delay1s();
led4=1;led5=0;
delay1s();
led5=1;led6=0;
delay1s();
led6=1;led7=0;
delay1s();
led7=1;led8=0;
delay1s();
led8=1;
P1=0;
delay1s();
P1=0xff ;
}
}
void delay1s()
{
unit i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
} 依次亮,全亮,全灭,循环








#include
#define unit unsigned int
unit i,j;
void delay1s();
sbit LED4=P1^3;
sbit LED5=P1^4;
sbit dula=P2^1;
void main()

{
while(1)
{
LED4=0;
delay1s();
LED4=1; LED5=0 ;
delay1s();
}
}
void delay1s()
{
unit i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}4闪5亮






#include
sbit LED2=P1^1;
sbit dula=P2^6;
void main()
{ dula=1;
LED2=0;
dula=0;
} 二灯亮





#include
sbit LED4=P1^3;
sbit LED5=P1^4;
sbit dula=P2^1;
#define unit unsigned int
unit i,j;
void main()
{ while (1)
{ LED4=0;
for(i=1000;i>0;i--)
for(j=110;j>0;j--);
LED4=1;LED5=0;
for(i=1000;i>0;i--)
for(j=110;j>0;j--);
}
dula=1;
LED4=0;
dula=0;
}
4闪5亮





#include
#define unit unsigned int
sbit led1=P1^0;
void delays(unit);
void main()
{
while(1)
{
led1=0;
delay1s();
led1=1;
delay1s();
}
}
void delay1s()
{
unit i,j; //使用局部变量可节约单片机内存
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}







#include
sbit led=P1^0;
unsigned int a;
void main() //主函数
{
while(1)
{
a=51000;
led=0;
while(a--);
led=1;
a=51000;
while(a--);
}
}
用while函数实现延迟,延迟0.5s




#include
#define unit unsigned int
sbit led1=P1^0;
unit i,j;
void main ()
{ while (1)
{ led1=0;
for(i=1000;i>0;i--)
for(j=110;j>0;j--);
led1=1;
for(i=1000;i>0;i--)
for(j=110;j>0;j--);
}
}
一灯亮,延迟1s,灭。循环

相关主题
文本预览
相关文档 最新文档