我需要做一个智能语音的遥控,目前入手了一块ld3320(有代码,可修改)和两块esp8266,还有自己的单片机开发板(普中的)。我想要让语音识别助手识别后传送信息给一块8266,再发送给另一块8266,然后这块8266驱动单片机控制单片机上的led开关,蜂鸣器开关等。程序写在语音模块的单片机和单片机开发板上的单片机上用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;//设置为工作方式1
- TMOD=0X20;//设置计数器工作方式2
- PCON=0X80;//波特率加倍
- TH1=0XF3;//计数器初始值设置,波特率是4800
- TL1=0XF3;
- ES=1;//打开接收中断
- EA=1;//打开总中断
- TR1=1; //打开计数器
- TI=0;
- }
- void Send_Uart(uchar value) //单片机数据发送
- {
- ES=0; //串口中断关闭
- TI=0;
- SBUF=value; //把数据放入串口寄存器
- 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 //中断函数,单片机判断串口接收到的数据
- {
- unsigned char kong;
- if(RI==1)
- {
- kong=SBUF; //从串口寄存器读取数据
- if(kong=='K')
- { while(1)
- {
- LED=0;
- delay(50000);
- LED=1;
- delay(50000);
- }
- }
- RI=0; } //清除接收中断标志位
- if(TI==1) //清除 发送完成标志位
- {
- TI=0;
- }
- }
- void main()
- {
- init_serial(); //串口初始化
- ES=1; //串口中断打开
- REN=1; //单片机接收允许位
- EA=1; //总中断打开
- delay(1000);
- ESP8266_Set("AT+CIPMUX=1\r\n");//发送AT指令
- delay(100);
- ESP8266_Set("AT+CIPSERVER=1,8080\r\n");
- while(1)
- {
- }
- }
复制代码
用网络调试助手调试每次看到有AT指令输入,但是esp8266就偶然连接上了一次,为什么啊?
|