ESP8266NodeMCU板点亮LED灯-ArduinoIDE

ESP8266NodeMCU板点亮LED灯-ArduinoIDE,第1张

本文采用 ESP8266 NodeMCU 板开发,该开发板板载LED灯,同IO引脚为D0(GPIO16)口相连,LED灯为共阳接法,也就是要想LED灯点亮,D0(GPIO16)口要输出低电平“0”。

打开 Arduino 点击 “工具” - “开发板” ,选择 NodeMCU10(ESP12E Module)

点击菜单栏 “文件” - “示例”- “01Basice”- “01Basice”- “Blink”, 可查看示例LED闪光灯控制程序,该程序控制LED灯亮一秒灭一秒。

程序说明:

1在使用输入或者输出功能前需通过 pinMode() 函数配置引脚模式。

其调用形式为:

pinMode(pin,mode);

I/O引脚的三种模式分别为: INPUT —— 输入模式; OUTPUT —— 输出模式;INPUT _PULLUP —— 输入上拉模式;

2配置为输出模式后,需用通过 digitalWrite() 函数输出高电平或低电平;其调用形式为:

digitalWrite(pin,value);

a点击 “工具” - “端口” ,选择在设备管理中看到的串口。

b点击 “工具” - “Upload Speed” ,选择 115200

c点击 上传 ,将写的程序烧录到 MCU 中,期间 ESP8266 的指示灯会一直闪烁,在 Arduino 控制台中会显示上传进度,上传到 100% 就可以查看效果了。

在上传完车后,开发板上LED灯将会亮一秒灭一秒的循环进行下去。

比如发光二极管的负级接到PA端口的PA0上,正极接电源正极。串一个限流电阻,程序这样写。

#include<iom128vh>

void main(void)

{

DDRA |= (1<<0); //设置方向为输出

PORTA &=~ (1<<0); //PA0输出低电平点亮

while(1);

}

unsigned

char

tmp;

sbit

led=p1^0;

void

main(void)

{

tmod

=

0x20;

//

定时器1工作于8位自动重载模式,

用于产生波特率

th1

=

0xfd;

//

波特率9600

tl1

=

0xfd;

scon

=

0x50;

//

设定串行口工作方式

pcon

&=

0xef;

//

波特率不倍增

tr1

=

1;

//

启动定时器1

ie

=

0x0;

//

禁止任何中断

while(1)

{

if(ri)

//

是否有数据到来

{

ri

=

0;

tmp

=

sbuf;

//

暂存接收到的数据

switch(tmp

)

{

case

0x03:led=1;break;//收到0x03,led灯亮

case

0x33:led=0;break;//收到0x03,led灯灭

}

}

}

}

#include"reg51h"

#include"stdioh"

sbit led=P1^0;//LED灯接P10口,低电平有效。

sbit key=P1^1;//按键接P11口,低电平有效。

bit key_flag=0;//给你定义一个按键标志,为后面点亮LED保持使用

void main(void)//进入主程序

{

led=1;开机的时候保持LED不亮

while(1)//进入主程序循环状态,一直在这个while循环里检测

{

if(key==0)//如果有按键被按下

{

key_flag = ~key_flag;//将这个标志取反,如果在按下前,他是1,则变为0,如果是0,则变为1

while(!key);//按键是否松开,如果松开,上面的取反有效,否则一直不变LED的状态。

}

if(key_flag)//如果这个标志为1,则LED=0,就是点亮了。

{led=0;}//点亮

else{led=1;}//否则就是熄灭LED指示灯。

}

}

}

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

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:在此处写入主函数的内容

}

}

初始化部分你要自己根据芯片资料写,数码管部分可以根据数码管的资料做数组xs[10]={0x3b……}要看数码管引脚定义了,看原理图看不出来的,可以做个200MS的定时器,然后计数5次就是1S

直接给数码管的IO口附数组的值,如P1=xs[5];要看你给的是哪个IO口了,我这边看不清你的原理图,LED亮200MS后就换动作太快,看不出效果,可以把时间加长

晶振认为是12MHz定时器中断时间为50ms,累计20次中断的时间为1s

这个程序是精确定时的,不像楼上的delay函数定时不精确

#include

#include

unsigned

char

i=0;

void

init();

void

main()

{

init();

while

(1)

{

if(i==20)

{

i=0;

P1=_crol_(P1,1);//循环移位函数

在intrins函数中定义

}

}

}

void

init()

{

TH0=0x3c;

//定时器赋初值定时时间50ms

TL0=0xB0;

TMOD=0x01;

//设置定时器工作方式为方式1

EA=1;

//开总中断

ET0=1;

//开中断允许位

TR0=1;

//定时器计数

P1=0xfe;

//这里假设led灯与P1口相连并且

//低电平有效

}

void

timer0()

interrupt

1

{

TH0=0x3c;

TL0=0xB0;

//溢出后重新赋初值

i++;

//定时器中断时间为50ms

//20次中断时间为1s

}

以上就是关于ESP8266NodeMCU板点亮LED灯-ArduinoIDE全部的内容,包括:ESP8266NodeMCU板点亮LED灯-ArduinoIDE、128单片机点亮一个led,新手,求程序、怎么用上位机通过串口去控制51单片机点亮一个LED 求程序。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9971203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存