找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5235|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

ESP8266+STC89C52單片機(jī)通訊 并向串口發(fā)送數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:137121 發(fā)表于 2019-2-17 20:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
想實(shí)現(xiàn) 用手機(jī)連接WIFI模塊來控制紅外模塊(向串口發(fā)送數(shù)據(jù)就可以),通過捕捉WiFi收到的數(shù)據(jù),來調(diào)用寫好的16進(jìn)制數(shù)組?上旅娴某绦,只要上電就不斷運(yùn)行DYMS();還會(huì)影響向ESP8266發(fā)送初始化的命令。不知道問題出在哪了,代碼都是我東拼西湊來的,希望大神給指正

單片機(jī)源碼:
  1. #include <reg52.h>              
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit been=P2^5; // 蜂鳴器
  5. uchar code diannaoKG[] = {0x86,0x00,0x00,0x00,0x86};
  6. void delay(int i)           //延時(shí)函數(shù)
  7. {
  8.         int j,k;
  9.         for(j=0;j<i;j++)
  10.         for(k=0;k<j;k++);
  11. }
  12. void Delay10ms(uint c)
  13. {
  14.     unsigned char a, b;
  15.     for (;c>0;c--)
  16.         {
  17.                 for (b=38;b>0;b--)
  18.                 {
  19.                    for (a=130;a>0;a--);
  20.                 }         
  21.         }      
  22. }
  23. // 蜂鳴器發(fā)聲函數(shù)
  24. void di()
  25. {
  26.      been=0;
  27.      Delay10ms(40);
  28.      been=1;
  29. }
  30. void Out_Data (uchar Data[])        
  31. {
  32.         uchar i,j;
  33.         for (i=0;i<j;i++)
  34.         {
  35.                 SBUF = Data[i];
  36.                while (!TI);
  37.                 TI = 0;
  38.         }
  39. }

  40. void DYMS()
  41. {                    
  42.                 uchar j;
  43.                 j=sizeof(diannaoKG);
  44.                 Out_Data(diannaoKG);
  45.                                 di();
  46. }
  47. void init_serial()                  //串口初始化,設(shè)置波特率115200
  48. {
  49.         TMOD=0x20;  
  50.     TH1=0xFF;           
  51.     TL1=0xFD;
  52.         SCON=0x50;   
  53.     RCAP2H=0xFF;   
  54.     RCAP2L=0xFD;
  55.         TCLK=1;   
  56.         RCLK=1;   
  57.     C_T2=0;   
  58.     EXEN2=0;         
  59.     TR2=1 ;
  60.         TI=0;        
  61. }
  62. void Send_Uart(uchar value)         //單片機(jī)數(shù)據(jù)發(fā)送
  63. {
  64.         ES=0;                            //串口中斷關(guān)閉
  65.         TI=0;                           
  66.         SBUF=value;                   //將數(shù)據(jù)放入串口寄存器中
  67.         while(TI==0);   
  68.         TI=0;  
  69.         ES=1;   
  70. }        
  71. void ESP8266_Set(uchar *puf)     // WIFI模塊接收到單片機(jī)的AT指令         
  72. {   
  73.         while(*puf!='\0')   
  74.         {   
  75.                 Send_Uart(*puf);     
  76.                 Delay10ms(50);  
  77.                 puf++;
  78.                 delay(50);   
  79.         }   
  80.         delay(500);  
  81. }
  82. void ControlCar(unsigned char ConType)    //選擇小車運(yùn)行的模式
  83. {

  84.         switch(ConType)                       
  85.         {
  86.                 case 1:                          
  87.                 {         
  88.                     DYMS();
  89.                         break;
  90.                 }
  91.                 case 2:                              
  92.                 {                 

  93.                         break;
  94.                 }

  95.         }
  96. }

  97. void main()                       
  98. {
  99.         init_serial();            //串口初始化           
  100.         ES=1;                     //串口中斷打開      
  101.         REN=1;                    //單片機(jī)接收允許位        
  102.         EA=1;                                     //總中斷打開
  103.         delay(1000);
  104.         ESP8266_Set("AT+CWMODE=1\r\n");//SAT模式 就是路由器模式
  105.         ESP8266_Set("AT+CWJAP=\"banana\",\"123456789\"\r\n");//連接路由器
  106.         delay(1000);
  107.         ESP8266_Set("AT+CIPMUX=1\r\n");//開啟多連接
  108.         ESP8266_Set("AT+CIPSERVER=1,5000\r\n"); //連接端口號(hào)5000
  109.     delay(1000);   
  110.         P1=0xfe;                       
  111.         while(1)                          
  112.         {                 
  113.         }
  114. }
  115. void ComBreak() interrupt 4     //中斷函數(shù),單片機(jī)判斷串口接收到的數(shù)據(jù)   
  116. {
  117.         unsigned char RecvData;         
  118.         if(RI==1)                        
  119.         {
  120.                 RecvData=SBUF;          //從串口寄存器中讀取數(shù)據(jù)        

  121.                 if(RecvData=='S')              
  122.                 {
  123.                         ControlCar(1);
  124.                         
  125.                 }
  126.                 if(RecvData=='X')              
  127.                 {
  128.                         ControlCar(2);
  129.                 }
  130.                 //SBUF=RecvData;                 
  131.                 RI=0;        //把RI至0                    
  132.         }
  133.         if(TI==1)        //把TI至0              
  134.         {
  135.                 TI=0;                           
  136.         }
  137. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:303383 發(fā)表于 2019-2-18 08:55 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

板凳
ID:137121 發(fā)表于 2019-2-18 17:35 | 只看該作者
小貓貓愛吃魚 發(fā)表于 2019-2-18 08:55
你好!
1、你的代碼拼湊的有點(diǎn)亂
2、是要控制一個(gè)成品的紅外模塊嗎?

我是用手機(jī) 給ESP8266發(fā)送數(shù)據(jù),ESP8266連接在STC89C52上。只要能達(dá)到接受數(shù)據(jù)后 能調(diào)用相應(yīng)的數(shù)組到串口就可以了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表