用c语言编写单片机流水灯程序,(8个发光二极管从左至右循环点亮)
#include<reg51.h>
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;//点亮第八个发光管
}
}
#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;
}
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++)
}
类似这样,
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);
}
}
//这样就可以实现循环了