我需要做一個智能語音的遙控,目前入手了一塊ld3320(有代碼,可修改)和兩塊esp8266,還有自己的單片機開發(fā)板(普中的)。我想要讓語音識別助手識別后傳送信息給一塊8266,再發(fā)送給另一塊8266,然后這塊8266驅(qū)動單片機控制單片機上的led開關(guān),蜂鳴器開關(guān)等。程序?qū)懺谡Z音模塊的單片機和單片機開發(fā)板上的單片機上用AT指令(比較看的懂),可以做到嗎?
可以幫忙看看程序的嗎?
- #include <reg52.h>
- #define uchar unsigned char
- sbit LED=P0^0;
- void delay(int i) //延遲
- {
- int j,k;
- for(j=0;j<i;j++)
- for(k=0;k<j;k++);
- }
- void init_serial()
- {
- SCON=0X50;//設(shè)置為工作方式1
- TMOD=0X20;//設(shè)置計數(shù)器工作方式2
- PCON=0X80;//波特率加倍
- TH1=0XF3;//計數(shù)器初始值設(shè)置,波特率是4800
- TL1=0XF3;
- ES=1;//打開接收中斷
- EA=1;//打開總中斷
- TR1=1; //打開計數(shù)器
- TI=0;
- }
- void Send_Uart(uchar value) //單片機數(shù)據(jù)發(fā)送
- {
- ES=0; //串口中斷關(guān)閉
- TI=0;
- SBUF=value; //把數(shù)據(jù)放入串口寄存器
- while(TI==0);
- TI=0;
- ES=1;
- }
- void ESP8266_Set(uchar *s) // WIFI模塊接收到單片機的AT指令
- {
- while(*s!='\0')
- {
- Send_Uart(*s);
- //ms_delay(50);
- s++;
- //delay(50);
- }
- delay(500);
- }
- void ComBreak() interrupt 4 //中斷函數(shù),單片機判斷串口接收到的數(shù)據(jù)
- {
- unsigned char kong;
- if(RI==1)
- {
- kong=SBUF; //從串口寄存器讀取數(shù)據(jù)
- if(kong=='K')
- { while(1)
- {
- LED=0;
- delay(50000);
- LED=1;
- delay(50000);
- }
- }
- RI=0; } //清除接收中斷標志位
- if(TI==1) //清除 發(fā)送完成標志位
- {
- TI=0;
- }
- }
- void main()
- {
- init_serial(); //串口初始化
- ES=1; //串口中斷打開
- REN=1; //單片機接收允許位
- EA=1; //總中斷打開
- delay(1000);
- ESP8266_Set("AT+CIPMUX=1\r\n");//發(fā)送AT指令
- delay(100);
- ESP8266_Set("AT+CIPSERVER=1,8080\r\n");
- while(1)
- {
- }
- }
復制代碼
用網(wǎng)絡(luò)調(diào)試助手調(diào)試每次看到有AT指令輸入,但是esp8266就偶然連接上了一次,為什么?
|