欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: ESP8266+STC89C52單片機(jī)通訊 并向串口發(fā)送數(shù)據(jù) [打印本頁]

作者: dianzi541    時間: 2019-2-17 20:21
標(biāo)題: ESP8266+STC89C52單片機(jī)通訊 并向串口發(fā)送數(shù)據(jù)
想實(shí)現(xiàn) 用手機(jī)連接WIFI模塊來控制紅外模塊(向串口發(fā)送數(shù)據(jù)就可以),通過捕捉WiFi收到的數(shù)據(jù),來調(diào)用寫好的16進(jìn)制數(shù)組。可下面的程序,只要上電就不斷運(yùn)行DYMS();還會影響向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ù)
  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"); //連接端口號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ù)制代碼



作者: 小貓貓愛吃魚    時間: 2019-2-18 08:55
你好!
1、你的代碼拼湊的有點(diǎn)亂
2、是要控制一個成品的紅外模塊嗎?
3、這個紅外模塊應(yīng)該是有控制協(xié)議的吧
4、要向 ESP8266 發(fā)控制信息,是手機(jī)還是電腦?
5、手機(jī),需要寫APP軟件;電腦,需要寫上位機(jī)軟件
6、給你 2 個紅外遙控的實(shí)物看看,做參考
7、具體設(shè)計(jì),可以按照你的要求做,加 QQ 好友

一體化紅外學(xué)習(xí)型遙控器,NEC解碼、發(fā)射測試成功 - 51單片機(jī) 單片機(jī)論壇
http://www.raoushi.com/bbs/dpj-119972-1.html

ESP8266-WIFI無線紅外遙控器(固件版) - 51單片機(jī) 單片機(jī)論壇
http://www.raoushi.com/bbs/dpj-119058-1.html

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

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




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1