焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

8个led灯依次点亮程序最后全部点亮(8个led灯左右循环点亮程序)

工品易达2022-11-16led灯20

单片机控制8个灯依次亮,全亮了,再依次灭的c语言流程图,顺便加上解释,不然看不懂

1、创建项目,如图所示。

2、创建延迟函数。

3、创建C语言主函数。设计unsigned char k=0;变量。

4、添加循环效果。

5、点亮灯,通过k++,改变效果。

6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

设计一个具有8个LED灯,要求从右向左依次点亮一秒后熄灭,循环往复的单片机程序。跪求

#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

//从右到左依次点亮

led8=1;

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

led7=1;

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

led6=1;

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

led5=1;

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

led4=1;

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

led3=1;

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

led2=1;

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

led1=1;

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

leda=1;//全部灯亮

}

}

扩展资料:

main()应用:

1、C++中的main函数

C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统,

但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。

虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。

C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。

2、Java中的main函数

Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。

首先,返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。

其次,Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。

第三,由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。

第四,main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因)

Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行)

public class MainDemo{

public static void main(String[]args){

//TODO:在此处写入主函数的内容

}

}

Java Applet的运行机制与Java Application完全不同,因此不需要main函数

3、C#中的main函数

C#中的main函数与Java大同小异,同样必须是类成员,同样使用字符串数组作唯一参数,同样是静态函数,同样的void main,

与之不同的是:main的首字母变成了大写,即"Main函数“,且是否限定为public级别已经无所谓了(默认没有public,但某些场合可能还是需要public)

另外,需要注意的是,C#中不再有”类名必须与主文件名同名“的限制,即使类名不和主文件名相同,程序照样可以运行。

C#应用程序中的main函数默认是这样的(注意main的首字母已是大写)

C#和C/C++、java不同的是C#不在拘泥于必须从main()函数开始执行,C#是属于事件触发。

class Program{

static void Main(string[]args){

//TODO:在此处写入主函数的内容

}

}

单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i120;i++);

}

}

//主程序

void main()

{

uint s;

while(1)

{

P0=0xfe;

DelayMS(150);

for(s=8;s1;s--)

{

P0=_crol_(P0,1); //P0 的值向左循环移动

DelayMS(150);

}

P0=0x00;

DelayMS(150);

p0=0xff;

DelayMS(150);

扩展资料:

常用单片机汇编指令:

1 .MOV A,Rn 寄存器内容送入累加器

2 .MOV A,direct 直接地址单元中的数据送入累加器

3 .MOV A,@Ri (i=0,1)间接RAM 中的数据送入累加器

4 .MOV A,#data 立即数送入累加器

5 .MOV Rn,A 累加器内容送入寄存器

6 .MOV Rn,direct 直接地址单元中的数据送入寄存器

7 .MOV Rn,#data 立即数送入寄存器

8 .MOV direct,A 累加器内容送入直接地址单元

9 .MOV direct,Rn 寄存器内容送入直接地址单元

10. MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元

11 .MOV direct,@Ri (i=0,1)间接RAM 中的数据送入直接地址单元

12 MOV direct,#data 立即数送入直接地址单元

13 .MOV @Ri,A (i=0,1)累加器内容送间接RAM 单元

14 .MOV @Ri,direct (i=0,1)直接地址单元数据送入间接RAM 单元

15 .MOV @Ri,#data (i=0,1)立即数送入间接RAM 单元

16 .MOV DPTR,#data16 16 位立即数送入地址寄存器

17 .MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器

18 .MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器

19 .MOVX A,@Ri (i=0,1)外部RAM(8 位地址)送入累加器

20 .MOVX A,@DPTR 外部RAM(16 位地址)送入累加器

21 .MOVX @Ri,A (i=0,1)累计器送外部RAM(8 位地址)

22 .MOVX @DPTR,A 累计器送外部RAM(16 位地址)

23 .PUSH direct 直接地址单元中的数据压入堆栈

24 .POP direct 弹栈送直接地址单元

25 .XCH A,Rn 寄存器与累加器交换

26 .XCH A,direct 直接地址单元与累加器交换

27 .XCH A,@Ri (i=0,1)间接RAM 与累加器交换

28 .XCHD A,@Ri (i=0,1)间接RAM 的低半字节与累加器交换

参考资料来源:百度百科-单片机汇编指令

控制8个LED灯,完成从左到右依次点亮,然后从右到左依次熄灭,魂环10次后完成全部闪烁。C语言代码

#includereg51.h

#define uchar unsigned char

void delay(uchar a)

{

uchar i;

while(a--)for(i=0;i120;i++);

}

main()

{

uchar i,j,led;

for(i=0;i10;i++)

    {

    led=0xfe;

    for(j=0;i8;i++)

        {

        P0=led;

        led=led1;

        delay(200);

        }

    led=0x80;

    for(j=0;i8;i++)

        {

        P0=led;

        led=(led1)|0x80;

        delay(200);

        }    

    }

    P0=0xff;

    while(1);

}

8个led灯依次点亮程序最后全部点亮的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于8个led灯左右循环点亮程序、8个led灯依次点亮程序最后全部点亮的信息别忘了在本站进行查找喔。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~