用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)

2024-10-28 21:46:56
推荐回答(4个)
回答(1):

#include

voiddelay(void)

{

unsignedinti,j;

for(i=0;i<200;i++)

for(j=0;j<1000;j++)

;

}

voidmain(void)

{

while(1)

{

P3=0xfe;//第一个灯亮

delay();//延时

P3=0xfd;//第二个灯亮

delay();

P3=0xfb;//第三个灯亮

delay();

P3=0xf7;//第四个灯亮

delay();

P3=0xef;//第五个灯亮

delay();

P3=0xdf;//第六个灯亮

delay();

P3=0xbf;//第七个灯亮

delay();

P3=0x7f;//第八个灯亮

delay();

}

}

扩展资料

单片机C语言16种方式流水灯

voidmain()

{

while(1)

{

P1=0xfe;//点亮第一个发光管

Delay(5000);

P1=0xfd;//点亮第二个发光管

Delay(5000);

P1=0xfb;

Delay(5000);

P1=0xf7;

Delay(5000);

P1=0xef;

Delay(5000);

P1=0xdf;

Delay(5000);

P1=0xbf;

Delay(5000);

P1=0x7f;//点亮第八个发光管

}

}

回答(2):

#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;//对数据类型进行声明定义

typedef unsigned char u8;为每个LED灯命名

sbit leda=P0;

sbit led1=P0^0;

sbit led2=P0^1;

sbit led3=P0^2;

sbit led4=P0^3;

sbit led5=P0^4;

sbit led6=P0^5;

sbit led7=P0^6;

sbit led8=P0^7;

void delay(u16 i)

{

while(i--);

}

void main()

{

while(1)

{

leda=1;//全部灯亮

//从左到右依次熄灭

led1=0;

delay(50000);//大约延时450ms

led2=0;

delay(50000);//大约延时450ms

led3=0;

delay(50000);//大约延时450ms

led4=0;

delay(50000);//大约延时450ms

led5=0;

delay(50000);//大约延时450ms

led6=0;

delay(50000);//大约延时450ms

led7=0;

delay(50000);//大约延时450ms

led8=0;

delay(100000);//大约延时900ms

leda=1;//全部灯亮

}

}

扩展资料:

main函数用法:

main()函数有三种形式。

1、无参数

#include<stdio.h>

int main(void)

{

printf("Hello World!\n");

return 0;

}

2、有两个参数

习惯上第一个参数是整型argc,保存了外部调用命令的参数个数,第二个参数是指针数组或二级指针argv,以字符串形式保存了与argc对应的参数,如下例子:

#include<stdio.h>

int main(int argc,char*argv[])

{

int i=0;

for(;i<argc;i++){

printf("%s\n",argv<i>);

}

printf("Hello World!\n");

return 0;

}

3、有三个参数

在argc和argv的基础上多了一个环境变量参数,环境变量的形式是“ENV=value”,参数类型是指针数组或二级指针,如下例子:

int main(int argc,char*argv[],char*envp[])

{

int i=0;

for(;envp<i>!='\0';i++){

printf("%s\n",envp<i>);

}

printf("Hello World!\n");

return 0;

}

回答(3):

#include

sbit LED0=P1^0;发光二极管跟单片机io口对应
sbit LED1=P1^1;
sbit LED2=P1^2;
while(1)
{
LED0=0; 一个二极管对应的单片机io置低
for(i=0;i<10000;i++)非精确延时,调整闪烁频率需要更改中间10000那个值,可以改成5000之类的试试
LED0=1; 置高(io先置高还是先置低需要看你的电路图。。。。。)
for(i=0;i<10000;i++)

LED1=0;
for(i=0;i<10000;i++)
LED1=1;
for(i=0;i<10000;i++)

LED2=0;
for(i=0;i<10000;i++)
LED2=1;
for(i=0;i<10000;i++)

}
类似这样,

回答(4):

#include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器
void delay(unsigned char i )
{

unsigned char a
{
for(i=100;i>0;i--)
for(a=10;a>0;a--);
}

}
void main()
{
while(1)
{
P0=0x01;
delay(1);
P0=0x02;
delay(1);
P0=0x04;
delay(1);
P0=0x08;
delay(1);
P0=0x10;
delay(1);
P0=0x20;
delay(1);
P0=0x40;
delay(1);
P0=0x80;
delay(1);
}
}
//这样就可以实现循环了