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

 我来答
爱教育爱学习
高粉答主

2019-10-30 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112736

向TA提问 私信TA
展开全部

#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;//点亮第八个发光管

}

}

宿兴电子
2024-11-28 广告
点亮10ms还说的过去,但延迟10ms后点亮其它的,就太快了。这样8个灯只要0.8秒全点亮,因为视觉暂留的原因,你看到的将是8个灯全亮着。只是有点闪烁感。 修正一下: do { for ( i=0;i<8;i+) { 1.点亮第i个灯; 2... 点击进入详情页
本回答由宿兴电子提供
问明6E
高粉答主

2019-06-04 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.9万
展开全部

#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&lt;stdio.h&gt;

int main(void)

{

printf("Hello World!\n");

return 0;

}

2、有两个参数

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

#include&lt;stdio.h&gt;

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

{

int i=0;

for(;i&lt;argc;i++){

printf("%s\n",argv&lt;i&gt;);

}

printf("Hello World!\n");

return 0;

}

3、有三个参数

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

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

{

int i=0;

for(;envp&lt;i&gt;!='\0';i++){

printf("%s\n",envp&lt;i&gt;);

}

printf("Hello World!\n");

return 0;

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不知用啥名1
推荐于2017-05-20
知道答主
回答量:13
采纳率:0%
帮助的人:9.4万
展开全部
#include<reg52.h>

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++)

}
类似这样,
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wjsyjh0
2019-08-31
知道答主
回答量:6
采纳率:0%
帮助的人:4203
展开全部
#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);
}
}
//这样就可以实现循环了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式