久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5208|回復: 2
打印 上一主題 下一主題
收起左側

ESP8266+STC89C52單片機通訊 并向串口發送數據

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

單片機源碼:
  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)           //延時函數
  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. // 蜂鳴器發聲函數
  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()                  //串口初始化,設置波特率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)         //單片機數據發送
  63. {
  64.         ES=0;                            //串口中斷關閉
  65.         TI=0;                           
  66.         SBUF=value;                   //將數據放入串口寄存器中
  67.         while(TI==0);   
  68.         TI=0;  
  69.         ES=1;   
  70. }        
  71. void ESP8266_Set(uchar *puf)     // WIFI模塊接收到單片機的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)    //選擇小車運行的模式
  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;                    //單片機接收允許位        
  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"); //連接端口號5000
  109.     delay(1000);   
  110.         P1=0xfe;                       
  111.         while(1)                          
  112.         {                 
  113.         }
  114. }
  115. void ComBreak() interrupt 4     //中斷函數,單片機判斷串口接收到的數據   
  116. {
  117.         unsigned char RecvData;         
  118.         if(RI==1)                        
  119.         {
  120.                 RecvData=SBUF;          //從串口寄存器中讀取數據        

  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. }
復制代碼


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

使用道具 舉報

沙發
ID:303383 發表于 2019-2-18 08:55 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

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

我是用手機 給ESP8266發送數據,ESP8266連接在STC89C52上。只要能達到接受數據后 能調用相應的數組到串口就可以了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区在线日韩在线深爱 | 精品一区二区三区不卡 | 在线观看免费毛片 | 日日干日日操 | 狠狠干五月天 | 欧美a视频| 91精品国产91久久久 | 国产精品久久久久久久久久免费 | 四色成人av永久网址 | 亚洲va欧美va天堂v国产综合 | 黄网站涩免费蜜桃网站 | 日本中文在线 | 米奇成人网 | 日韩欧美手机在线 | 日本黄色免费片 | 精品久久久久久中文字幕 | 成人久久 | 亚洲第一免费播放区 | 国产二区三区 | 毛片免费视频 | 日韩在线小视频 | 国产成在线观看免费视频 | 一区二区三区欧美在线观看 | 蜜桃毛片 | 精品一区在线看 | 久久久久一区二区 | 欧美日韩1区2区3区 欧美久久一区 | 9久久精品 | 成人国产精品久久 | 久久99精品国产 | 欧美一区视频 | 欧洲一级毛片 | 日韩影院一区 | 成人精品一区亚洲午夜久久久 | 久久久做 | 日韩欧美一区二区三区四区 | 羞羞的视频免费在线观看 | a级在线 | 国产精品亚洲一区二区三区在线 | 亚洲成人毛片 | 成人久久久 |