当前位置: 首页 新闻详细

单片机点亮八个led灯,制作一个LED流水灯程序,让你的灯光秀起来

专业网络营销推广——跟随大平台节奏

电话+V:159999-78052 ,欢迎咨询控制8个led灯同时点亮程序讲解,[专业新媒体运营推广],[各种商圈业内交流],[抖音运营推广课程],[微信运营推广课程],[小红书运营推广课程],[让你站在风口忘记焦虑]

一、单片机点亮八个led灯

要使用单片机点亮八个LED灯,首先需要确定你使用的单片机型号(如AT89C51、STM32等),因为不同型号的单片机其编程方式和引脚配置可能有所不同。以常见的51单片机为例,假设LED灯分别连接到了P1端口的八个引脚(P1.0到P1.7)。

在编程时,你需要将P1端口设置为输出模式,然后通过对P1端口写入相应的数据来控制LED灯的亮灭。例如,要同时点亮所有八个LED灯,可以将P1端口的值设置为0xFF(二进制为11111111),这样P1端口的每个引脚都会输出高电平,从而使连接的LED灯点亮。

具体代码实现(以C语言为例,针对51单片机)可能如下:

```c

#include//包含51单片机的寄存器定义

voidmain(){

P1=0xFF;//将P1端口的所有引脚设置为高电平,点亮LED灯

while(1);//程序进入无限循环,保持LED灯持续点亮状态

}

```

二、...循环点亮。1、画出接口图。2、写出控制程序。

/*-----------------------------------------------

名称:流水灯

编写:杨光楼

日期:2009.5

修改:无

内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果

------------------------------------------------*/

#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

/*------------------------------------------------

延时子程序

------------------------------------------------*/

voiddelay(unsignedintcnt)

{

while(--cnt);

}

/*------------------------------------------------

主函数

------------------------------------------------*/

main()

{

P1=0xfe;//给初始化值换算成二进制是11111110

while(1)

{

delay(30000);//延时程序

P1<<=1;//左移一位该语句等效于P1=P1<<1

P1|=0x01;//最后一位补1,该语句等效于P1=P1|0x01符号"|"表示"或"

if(P1==0x7f)//检测是否移到最左端?"=="表示检测符号2端的值是否相等

{

delay(30000);

P1=0xfe;//重新赋值

}

}

制作一个LED流水灯程序,让你的灯光秀起来

原创2023-10-2007:30·工控小新上节回顾:单片机第二课:制作一个程序,让你的LED会“眨眼睛”

本节重点:实现一个LED流水灯程序



预备知识:

一、C语言常用到的预处理命令

1、define

define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。

使用#define定义的常量也称为符号常量,可以提高程序的运行效率。

其常见的用法包括两种,分别是:

1)#define宏名宏值2)#define宏名(参数列表)表达式

而define命令的用法一般分为两种:

第一种语法就是定义符号常量

第二种语法常用来定义符号函数。

举例说明一下:

#defineA3.14

执行这个条件之后,就是能直接将3.14的数值给到A上。

#defineAREA(x,y)(x)*(y)

表示用来求长和宽分别是x和y的矩形的面积。

二、函数循环左移/右移

crol(a,b);循环左移函数,a是左移的值,b是左移的位数。包含在intrins.h库函数里面。

cror(a,b);循环右移函数,a是右移的值,b是右移的位数。包含在intrins.h库函数里面

编写程序:

有了上述的知识储备之后,我们在编写一个LED流水灯的程序。

流水灯思路:

首先点亮第一个LED灯,然后延时一段时间,再将当前LED熄灭,然后点亮第二个LED灯,这个过程通过一个函数移动的方式去实现,再延时一段时间,熄灭LED灯,如此往复的循环下去,就能实现一个LED灯的流水视觉。

(本此实验LED灯组采用的是共阴极接法,也就是说需要单片机引脚输出一个1,才会使得LED灯点亮)

程序编写:

#include<reg52.h>//头文件

#include<intrins.h>//头文件

typedefunsignedcharu8;//定义类型

typedefunsignedintu16;

#defineledP2//定义LED灯组使用的是P2的八个引脚

voiddelay(u16i)//延时函数delay

{

while(i--);

}

voidmain()

{

u8i=0;//定义变量i

led=0x01;//设置LED灯组的初始状态值(00000001,使用的是共阴极)

delay(50000);

while(1)

{

for(i=0;i<7;i++)//for循环函数,初始值i为0,满足i<7的条件,每次循环一次执行i自加1

{

led=_crol_(led,1);//LED左移函数,每次执行for循环执行一次函数移动

delay(50000);

}

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

{

led=_cror_(led,1);//LED右移函数,每次执行for循环执行一次函数移动

delay(50000);

}

}

}

展示效果:


控制8个led灯同时点亮程序讲解



#妙笔生花创作挑战#

【WINDRISES NETWORK MARKETING】尊享直接对接老板

电话+V: 159999-78052

专注于网络营销推广配套流程服务方案。为企业及个人客户提供高性价比的运营方案,解决小微企业和个人创业难题

控制8个led灯同时点亮程序讲解
发布人:goudeng8670 发布时间:2024-10-16