|
課題是輸入時(shí)間發(fā)送給單片機(jī),單片機(jī)控制南北方向,東西方向路口綠燈時(shí)間為輸入時(shí)間。此為C語言單片機(jī)端源碼,供需要的人參考
ESP8266接線圖.png (244.22 KB, 下載次數(shù): 35)
下載附件
與單片機(jī)的接線,其中VCC我用的是5V轉(zhuǎn)3.3V模塊供電
2018-5-17 21:09 上傳
初始化ESP8266:
初始化之前用串口助手將ESP設(shè)置好運(yùn)行模式AP和Station共存,設(shè)置好密碼(這些助手都能夠直接一鍵設(shè)置),設(shè)置好波特率9600指令AT+CIOBAUD=9600。
首先初始化定時(shí)器,因?yàn)槲业恼n題要求
void time0_init()
{
EA = 1; //開總中斷
SCON=0x50;
TMOD = 0X21; //定時(shí)器0、定時(shí)器1工作方式1
ET0 = 1; //開定時(shí)器0中斷
TR0 = 1; //允許定時(shí)器0定時(shí)
ET1 = 0; //開定時(shí)器1中斷
TH1=0xfd;//賦初值
TL1=0xfd;//同上,此為波特率9600的初值
TR1=1;
REN=1;//允許串口接收
}//(此為串口通行的基礎(chǔ))
接下來發(fā)送命令到ESP8266
void connect_init()
{
char *a="AT+CIPMUX=1\r\n";
char *b="AT+CIPSERVER=1,5000\r\n";
while(*a!='\0')
{
SBUF=*a; //寫入要發(fā)送的字符
while(!TI); //等待發(fā)送完成
TI=0; //發(fā)送
a++;
}
delay_1ms(100);//這里添加延時(shí)函數(shù),延時(shí)5ms左右,給ESP8266反應(yīng)時(shí)間
while(*b!='\0')
{
SBUF=*b;
while(!TI); //等待發(fā)送完成
TI=0;
b++;
}
RI=0;
ES=1;
//初始化完成,串行口中斷打開
}
然后
void main()
{
time0_init();
connect_init();
//此處添加其他要實(shí)現(xiàn)的代碼
} //每次單片機(jī)開機(jī)都會(huì)向ESP發(fā)送命令將其初始化。
然后是發(fā)送完成以及接收完成時(shí)所產(chǎn)生的中斷處理
void serial com()interrupt 4
{
if(RI==1)//接收的中斷
{
RI=0;//取消本次接收中斷申請(qǐng),方便進(jìn)入下次中斷
temp=SBUF;//SBUF寫在后是把接受寄存器的值賦給P1
if(temp==':'||j>0)//由于ESP發(fā)送的字符有+IPD,0,1:等字符,故此為截取:及其以后的字符然后根據(jù)自己的目的進(jìn)行判斷
{
receive[j]=temp; //截取的字符保存在數(shù)組中
j++;
if(temp=='J')//判斷字符自設(shè),不發(fā)生沖突即可
{
//添加要實(shí)現(xiàn)的功能
j=0;
}
if(temp=='G'){
j=0;
dai=dai+1;
memset(receive,0,3);
switch(dai){
case 1:dx_time=15,nb_time=35;
case 2:dx_time=35,nb_time=15,dai=0; //添加要實(shí)現(xiàn)的功能代碼
}
}
if(temp=='N'||o>0){
receive[o]=temp;
o++;
if(temp=='S')
{
m= receive[1]*10+receive[2]-16;//此處截取的內(nèi)容和我要實(shí)現(xiàn)的相差16,不知道為何,有知道的還望告知。
nb_time=m;
temp=0;
memset(receive,0,sizeof(receive));
o=0;j=0;
}
}
if(temp=='D'||l>0){
receive1[l]=temp;
l++;
if(temp=='S'){
dx_time=receive1[1]*10+receive1[2]-16;
temp=0;
memset(receive1,0,sizeof(receive1));//調(diào)用該函數(shù)需要頭文件 string.h 不要忘了添加
l=0; j=0; }
}
}
RI=0;
}
if(TI==1){
TI=0;
}//發(fā)送中斷在發(fā)送完成時(shí)產(chǎn)生的中斷
RI=0;
}
好了,大概需要做的就這些,記得聲明數(shù)組char receive[];
需要安卓客戶端的再聯(lián)系吧
|
評(píng)分
-
查看全部評(píng)分
|