大家好,我是一個單片機新手,也是一個興趣者,我以前想用c51單片機用esp8266模塊的熱點控制led小燈的,實驗,可是網上的資料很少,所以今天來給新生,老手也好,想出一個教程,希望給大家一點點幫助,
準備材料:
1.c51單片機開發板(最小系統板也可以,可是要自己準備led燈和小電阻,分好陽極和陰極)
2.esp8266模塊(測驗待一會兒講)
3.ttl轉usb線(開發板不需要ttl轉換模塊)
注意:以下一樣接線,esp才能正常作業,
1.esp8266的管腳和接線:

TXD-接單片機或ttl模塊的RXD
RXD-接單片機或ttl模塊的RXDvcc-接3.3v(接5v可能啥訓esp的mcu)
gnd-接地線,接單片機的GND或ttl的GNDgpio0-不用接
gpio1-不用接
ch_pd-默認為高電平,和3.3v短接即可
2.開發板接線圖:

提示:如圖有紅色標記的是,單片機的開發板串口,分別是:usb的串口和單片機的串口,
3.3v-接模塊的3.3v(接5v會啥訓esp8266)
ch-pd-也接3.3v
GND-接GND
RXD-接TXDTXD-接RXD
3.ttl轉usb線:

3.3v-接模塊的3.3
vch-pd-也接3.3v
GND-接GND
RXD-接TXD
TXD-接RXD
4.最小系統板:(沒有圖片)
3.3v-接模塊的3.3
vch-pd-也接3.3v
GND-接GND
RXD-接P3.0
TXD-接P3.1
測驗wifi模塊:
(關于AT指令,如果不會,去百度看看)
打開xcon軟體,接好線,然后選擇波特率,wifi模塊的波特率一般在115200,選好波特率后點擊打開串口,發送輸入框,輸入下命令并發送,
發送:AT(必須大寫)
回應:ok(測驗成功)
回應:error(很可能韌體失效,重刷韌體)

回復ok,模塊正常
在發送:AT+CIOBAUD=9600 (波特率改9600)
因為單片機的波特率跑不了那么高,所以改9600,
下次打開串口的時候波特率選9600
這次我們要看模塊的ip地址:命令:AT+CIFSR成功圖:

測驗手機通信:
(1)需要下載網路調式工具,百度搜出的一批,隨便下一個,然后用xcon軟體給esp發送建服務器命令
命令1:AT+CIPMUX=1(打開多連接服務)
回應:ok
命令2:AT+CIPSERVER=1,8080(開啟服務器模式,埠號8080)
回應:ok
(2)連上esp模塊的熱點,打開網路調式軟體點擊tcp鏈接,然后輸入模塊ip和埠號,鏈接,鏈接成功xcon(串口調式軟體)會有成功的字符,隨便發個字符會出現電腦的軟體上,
資料格式:+IPD,0,1:1測驗成功,

單片機通信(程式撰寫和下載)
提示:下載完程式以后再接esp8266,然后單片機復位,
步驟:連上熱點,打開網路調式軟體發送1,燈亮,發送2,燈滅,代碼塊:
#include "public.h"
#include "temp.h"
sbit led1=P2^0; //定義管腳
sbit led2=P2^1;
#define RELOAD_COUNT 0xFA //宏定義波特率發生器的載入值 9600
#if
1u8 RecBuf[50];
u8 recFlagOK=0;
#endif
u8 tempData[9];
void UART_Init()
{
SCON=0X50; //設定為作業方式1 TMOD=0X20; //設定計數器作業方式2 PCON=0X80; //波特率加倍 TH1=RELOAD_COUNT; //計數器初始值設定 TL1=TH1;
ES=0; //關閉接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數器}
void UART_SendByte(u8 dat)
{
ES=0; //關閉串口中斷
TI=0; //清發送完畢中斷請求標志位
SBUF=dat; //發送
while(TI==0);
//等待發送完畢
TI=0; //清發送完畢中斷請求標志位
ES=1; //允許串口中斷
}
void ESP8266_SendCmd(u8 *pbuf)
{
while(*pbuf!='\0') //遇到空格跳出回圈
{
UART_SendByte(*pbuf); d
elay_10us(5);
pbuf++;
}
delay_10us(5);
UART_SendByte('\r');//回車
delay_10us(5);
UART_SendByte('\n');//換行 delay_ms(1000);}//ESP8266-WIFI模塊作業模式初始化
void ESP8266_ModeInit(void)
{
后續
ESP8266_SendCmd("AT+CWMODE=2");//設定路由器模式 1 staTIon模式 2 AP點 路由器模式 3 station+AP混合模式 ESP8266_SendCmd("AT+CWSAP=\"PRECHIN\",\"prechin168\",11,0"); //設定WIFI熱點名及密碼 ESP8266_SendCmd("AT+CIPAP=\"192.168.4.1\"");//重新啟動wifi模塊 ESP8266_SendCmd("AT+RST");//重新啟動wifi模塊 ESP8266_SendCmd("AT+CIPMUX=1"); //開啟多連接模式,允許多個各客戶端接入 ESP8266_SendCmd("AT+CIPSERVER=1,8080"); //啟動TCP/IP 埠為8080 實作基于網路控制
}
void main()
{
u16 i=0;
led1=led2=1;
UART_Init(); //串口初始化
ESP8266_ModeInit();
ES=1; //允許串口中斷
while(1)
{
}
}
#if 1
void Usart() interrupt 4
{
static u8 i=0; if(RI)
{
RecBuf[i++]=SBUF;
if(RecBuf[i-1]=='\n')
{
i=0;
recFlagOK=1;
RecBuf[11]='\0';
}
if(recFlagOK==1)
{
recFlagOK=0;
if(RecBuf[9]=='1')
{
led1=0;
}
if(RecBuf[9]=='2')
{
led1=1;
}
} i
f(RecBuf[9]=='3') //led控制
{
led2=0;
}
if(RecBuf[9]=='4')
{
led2=1;
}
RI=0;
}
}
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196636.html
標籤:AI
