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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

89C52單片機+ESP8266做的物聯網+反饋 e4a手機客戶端源程序

  [復制鏈接]
跳轉到指定樓層
樓主
MCU是89C52單片機
WiFi模塊是ESP8266
其他 8路繼電器 電源模塊  使用貝殼物聯做服務器 還有客戶端。
也可以用花生殼做內網穿透,8266做服務器,也可以實現物聯以及反饋(8266支持同時5個客戶端)
已經實現8開關+反饋+遠程開門和鎖門(汽車中控鎖)
附C代碼以及手機客戶端代碼(E4A)  ID以及APIKEY 需要去貝殼物聯申請貝殼物聯用戶中心

e4a源代碼:

手機客戶端含源程序:


制作出來的實物圖如下:



單片機源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char   
  4. sbit lcd0=P2^0;                 //輸出端口
  5. sbit lcd1=P2^1;
  6. sbit lcd2=P2^2;
  7. sbit lcd3=P2^3;
  8. sbit lcd4=P2^4;
  9. sbit lcd5=P2^5;
  10. sbit lcd6=P2^6;
  11. sbit lcd7=P2^7;
  12. sbit lcd8=P0^5;
  13. sbit lcd9=P0^6;                   //暫定為開鎖按鈕
  14. sbit state=P0^4;         //門鎖開關反饋狀態




  15. sbit sw0=P1^0;
  16. sbit sw1=P1^1;
  17. sbit sw2=P1^2;
  18. sbit sw3=P1^3;
  19. sbit sw4=P1^4;
  20. sbit sw5=P1^5;
  21. sbit sw6=P1^6;
  22. sbit sw7=P1^7;            

  23. /*****************相關變量**************/
  24. uchar Receive;                              
  25. uchar Recive_table[150];                //用于接收wifi模塊反饋到MCU上的數據
  26. uchar ac;            //登錄狀態標識
  27. /*******************************************************************
  28. 名稱:延時函數  作用:毫秒級延時,微妙級延時函數,為數據收發完成作等待.......  
  29. ********************************************************************/
  30. void ms_delay(uint t)
  31. {  
  32.         uint i,j;  
  33.         for(i=t;i>0;i--)   
  34.         for(j=110;j>0;j--);
  35. }   

  36. void us_delay(uchar t)
  37. {  
  38.         while(t--);
  39. }         

  40. void Uart_Init()                                //使用定時器1作為波特率發生器(STC89C52、STC89C51、AT89C51等均可)
  41. {  
  42.     TMOD = 0x20;
  43.     SCON = 0x50;                                 //設置串行方式
  44.     TH1 = 0xFD;                                         //波特率9600
  45.     TL1 = TH1;
  46.     PCON = 0x00;
  47.     EA = 1;                                                //總中斷打開
  48.     ES = 1;                                                //開串口中斷
  49.     TR1 = 1;
  50.         }
  51.         
  52. void InitTimer0(void)
  53. {
  54.     TMOD |= 0x01;
  55.     TH0 = 0x0DC;
  56.     TL0 = 0x00;
  57.     EA = 1;
  58.     ET0 = 1;
  59.     TR0 = 1;
  60. }


  61. /********************************************************************
  62. 名稱:串口發送函數  功能:MCU向無線WIFI模塊ESP8266發送數據
  63. ********************************************************************/
  64. void Send_Uart(uchar value)
  65. {  
  66.         ES=0;                                                  //關閉串口中斷
  67.         TI=0;                                           //清發送完畢中斷請求標志位  
  68.         SBUF=value;                                 //發送
  69.         while(TI==0);                                 //等待發送完畢  
  70.         TI=0;                                           //清發送完畢中斷請求標志位  
  71.         ES=1;                                                  //允許串口中斷  
  72. }  

  73. /********************************************************************
  74. 名稱:WIFI模塊設置函數  作用: 啟動模塊,以便可以實現無線接入和控制
  75. ********************************************************************/

  76. void ESP8266_Set(uchar *puf,uchar a)         // 數組指針*puf指向字符串數組               
  77. {   
  78.         
  79.                
  80.                 while(*puf!='\0')                    //遇到空格跳出循環
  81.            {   
  82.                 Send_Uart(*puf);                  //向WIFI模塊發送控制指令。  
  83.                 us_delay(5);   
  84.                 puf++;   
  85.            }
  86.                
  87.        if(a==1)
  88.                 {
  89.                 us_delay(5);  
  90.         Send_Uart('\r');                         //回車
  91.         us_delay(5);  
  92.         Send_Uart('\n');
  93.                 }                           //換行
  94. }


  95. unsigned char *Itoa(unsigned int ni,int dd)
  96. {char i=0,j=0,temp[16],outstr[16];
  97. unsigned int n,num=ni;
  98. while(num>=dd)
  99. {n=num%dd;
  100.   if(n>9)temp[i]=n+0x37;else temp[i]=n+0x30;
  101.   num=num/dd;
  102.   i++;
  103.   }
  104.   n=num;if(n>9)temp[i]=n+0x37;else temp[i]=n+0x30;
  105.   j=0;
  106.   for(;i>=0;i--){outstr[j]=temp[i];j++;}
  107.   outstr[j]=0;
  108.   return outstr;
  109.   }
  110. //------------------------------------------------------
  111. void ML_fasong()
  112. {
  113.    ESP8266_Set("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"",0);
  114.                   ESP8266_Set(Itoa(P2,2),0);
  115.                   ESP8266_Set(Itoa(state,2),0);
  116.                   ESP8266_Set("\",\"SIGN\":\"00\"}\n",1);
  117. }
  118. void ledcl(uchar a)                //led處理
  119. {                                                                                                   
  120.    
  121.    if(a==0)
  122.      {       lcd0=~lcd0;
  123.                             ML_fasong();
  124.                             }
  125.    if(a==1)
  126.       {      
  127.           lcd1=~lcd1;
  128.           ML_fasong();              }
  129.    if(a==2)  
  130.     {      
  131.          lcd2=~lcd2;
  132.           ML_fasong();            
  133.           }
  134.    if(a==3)   
  135.    {      
  136.            lcd3=~lcd3;
  137.          ML_fasong();         
  138.            }
  139.    if(a==4)  
  140.     {      
  141.          lcd4=~lcd4;
  142.                  ML_fasong();
  143.      }
  144.    if(a==5)   
  145.    {      
  146.           lcd5=~lcd5;
  147.           ML_fasong();   
  148.    }
  149.    if(a==6)  
  150.     {      
  151.               lcd6=~lcd6;         
  152.              ML_fasong();   
  153.     }
  154.    if(a==7)  
  155.     {
  156.           lcd7=~lcd7;
  157.                      ML_fasong();
  158.      }
  159.          if(a==8)  
  160.     {
  161.                              lcd8=0;
  162.                         ms_delay(500);
  163.                         lcd8=1;
  164.                      ML_fasong();
  165.      }
  166.          if(a==9)
  167.          {
  168.                           lcd9=0;
  169.                         ms_delay(500);
  170.                         lcd9=1;
  171.                         ML_fasong();                  
  172.          }

  173. }  
  174. void key()                   //獨立按鍵處理
  175. {
  176.   if(sw0==0)                  
  177.         {        
  178.                 ms_delay(10);   
  179.                 if(sw0==0)         
  180.                 {        ledcl(0);                }
  181.                     while(!sw0);         
  182.         }               
  183.         if(sw1==0)                  
  184.         {        
  185.                 ms_delay(10);   
  186.                 if(sw1==0)         
  187.                 {                ledcl(1);        }
  188.                     while(!sw1);         
  189.         }               
  190.    if(sw2==0)                  
  191.         {        
  192.                 ms_delay(10);   
  193.                 if(sw2==0)         
  194.                 {                        ledcl(2);        }
  195.                     while(!sw2);
  196.         }               
  197.         if(sw3==0)                  
  198.         {        
  199.                 ms_delay(10);   
  200.                 if(sw3==0)         
  201.                 {                ledcl(3);                }
  202.                     while(!sw3);         
  203.         }
  204.         if(sw4==0)                  
  205.         {        
  206.                 ms_delay(10);   
  207.                 if(sw4==0)         
  208.                 {                        ledcl(4);                }
  209.                          while(!sw4);         
  210.         }               
  211.         if(sw5==0)                  
  212.         {        
  213.                 ms_delay(10);   
  214.                 if(sw5==0)         
  215.                 {                ledcl(5);                 }
  216.                     while(!sw5);         
  217.         }               
  218.    if(sw6==0)                  
  219.         {        
  220.                 ms_delay(10);   
  221.                 if(sw6==0)         
  222.                 {                        ledcl(6);        }
  223.                      while(!sw6);         
  224.         }               
  225.         if(sw7==0)                  
  226.         {        
  227.                 ms_delay(10);   
  228.                 if(sw7==0)         
  229.                 {                ledcl(7);        }
  230.                                 while(!sw7);        
  231.         }
  232. }
  233.          
  234. void ML_panduan()
  235. {
  236.    uchar x,i,y,z;
  237.            x=30;
  238.          y=50;
  239.          i=0;
  240.          if(Recive_table[6]=='b')
  241.        {
  242.                    ms_delay(1000);
  243.                            ESP8266_Set("{\"M\":\"beat\"}\n",1);
  244.                         Recive_table[6]='0';
  245.                         if(ac>2)
  246.                          {
  247.                         ac--;
  248.                         }
  249.                               else
  250.                         {
  251.                          ac=0;
  252.                         }        
  253.                         
  254.                
  255.         }


  256.           while(x--)
  257.                  {
  258.                  if (Recive_table[i]=='s')
  259.           {
  260.                             if(Recive_table[i+1]=='a')
  261.                         {
  262.                           z=i+25;
  263.                           x=0;
  264.                           while(y--)
  265.                           {
  266.                                    if(Recive_table[z]=='C')
  267.                                  {
  268.                                           if(Recive_table[z+2]==':')
  269.                                          {
  270.                                                   switch(Recive_table[z+4])
  271.                                                  {
  272.                                                          case('a'):  y=0; ledcl(0); Recive_table[z+4]='1'; break;
  273.                                                         case('b'):  y=0; ledcl(1); Recive_table[z+4]='1'; break;
  274.                                                         case('c'):  y=0; ledcl(2); Recive_table[z+4]='1'; break;
  275.                                                         case('d'):  y=0; ledcl(3); Recive_table[z+4]='1'; break;
  276.                                                         case('e'):  y=0; ledcl(4); Recive_table[z+4]='1'; break;
  277.                                                         case('f'):  y=0; ledcl(5); Recive_table[z+4]='1'; break;
  278.                                                         case('g'):  y=0; ledcl(6); Recive_table[z+4]='1'; break;
  279.                                                         case('h'):  y=0; ledcl(7); Recive_table[z+4]='1'; break;
  280.                                                         case('i'):  y=0; ledcl(8); Recive_table[z+4]='1'; break;
  281.                                                         case('j'):  y=0; ledcl(9); Recive_table[z+4]='1'; break;
  282.                                                         case('o'):  y=0; lcd5=0; Recive_table[z+4]='1'; break;
  283.                                                         case('n'):  y=0; lcd5=1; Recive_table[z+4]='1'; break;
  284.                                                         case('0'):  y=0; ML_fasong();  Recive_table[z+4]='1'; break;

  285.                                                 
  286.                                                  }
  287.                                          }
  288.                                  }
  289.                                  else
  290.                                  z++;
  291.                           }
  292.                         }
  293.           }
  294.                   else
  295.                   i++;
  296.         }
  297. }

  298. //-------------------------------------------------------------------------
  299. void ML_chushihua()
  300. {         
  301.        uint p;
  302.                    p=2000;
  303.            // ESP8266_Set("AT+RST",1);
  304.            // ms_delay(p);
  305.                 ESP8266_Set("AT+CIPMUX=0",1);
  306.             ms_delay(p);
  307.         ESP8266_Set("AT+CIPSTART=\"TCP\",\"121.42.180.30\",8282",1);
  308.                 ms_delay(p);   
  309.                 ESP8266_Set("AT+CIPMODE=1",1);
  310.                 ms_delay(p);
  311.                 ESP8266_Set("AT+CIPSEND",1);
  312.                 ms_delay(p);
  313.                 ESP8266_Set("{\"M\":\"checkin\",\"ID\":\"此處為ID\",\"K\":\"此處為APIKEY\"}\n",1);
  314.                 ac=0;
  315. }



  316. void main()
  317. {        bit bdat;
  318.            bdat=state;         
  319.               Uart_Init();
  320.                 InitTimer0();
  321.           ML_chushihua();
  322.          
  323.           while(1)
  324.                    {
  325.                             ML_panduan();
  326.                          key();
  327.                          if(state!=bdat)
  328.                            {
  329.                              bdat=state;
  330.                                      ML_fasong();
  331. ……………………

  332. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
89C52+ESP8266簡易物聯網+手機客戶端.zip (638.02 KB, 下載次數: 666)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:277550 發表于 2020-11-24 10:31 | 只看該作者

在 ESP8266 直接寫程序聯網、收發消息等;STC單片機做控制板,控制繼電器等;;;之間可以串口通訊。可玩性更高。
回復

使用道具 舉報

板凳
ID:693523 發表于 2020-11-24 12:15 來自手機 | 只看該作者
devcang 發表于 2020-11-24 10:31
在 ESP8266 直接寫程序聯網、收發消息等;STC單片機做控制板,控制繼電器等;;;之間可以串口通訊。可玩 ...

我也想啊,但是技術不允許啊
回復

使用道具 舉報

地板
ID:277550 發表于 2020-11-24 15:02 | 只看該作者
89C52都會了,ESp8266更可以了
回復

使用道具 舉報

5#
ID:693523 發表于 2020-11-24 19:27 來自手機 | 只看該作者
devcang 發表于 2020-11-24 15:02
89C52都會了,ESp8266更可以了

8266目前只會一點AT指令,固件還不會
回復

使用道具 舉報

6#
ID:846386 發表于 2020-11-25 12:04 | 只看該作者
這資源不錯,學習
回復

使用道具 舉報

7#
ID:822447 發表于 2020-11-26 12:55 | 只看該作者
樓主動手能力強!
回復

使用道具 舉報

8#
ID:61192 發表于 2020-12-5 19:59 | 只看該作者
看得我心癢癢,實在是厲害,我也照葫蘆畫瓢試試看
回復

使用道具 舉報

9#
ID:756506 發表于 2020-12-7 10:28 | 只看該作者
這個很不錯,跟樓主學習學習。。
回復

使用道具 舉報

10#
ID:796012 發表于 2020-12-17 16:39 | 只看該作者
你敢再按一次我就關掉程序。呵呵!
回復

使用道具 舉報

11#
ID:285416 發表于 2021-7-26 03:58 來自手機 | 只看該作者
兄弟,你做的很不錯。我也是正在找,e4a手機客戶端與物聯網連接的方法。手機app開發不怎么會。手機與單片機usb連接,你會嗎?能不能教一教?還有就是看到你做的洞洞板。不明白你為什么還用洞洞板來做。給你推薦一下吧,挺不錯的。擔心廣告嫌疑,我就不打地址了。jppcb  jlcpcb  兩家都不錯,四層都可以的。
回復

使用道具 舉報

12#
ID:315554 發表于 2021-7-26 10:22 | 只看該作者
學習了,謝謝分享,8266多控,值得搞一下,我以前都只會用兩個IO口,控一個繼電器
回復

使用道具 舉報

13#
ID:584195 發表于 2021-8-6 21:32 | 只看該作者
ESP8266直接就用IO控制了,還另整一個單片機,會不會把事情辦復雜了?
回復

使用道具 舉報

14#
ID:505058 發表于 2021-8-18 06:46 來自手機 | 只看該作者
nmgbtzyf 發表于 2021-7-26 03:58
兄弟,你做的很不錯。我也是正在找,e4a手機客戶端與物聯網連接的方法。手機app開發不怎么會。手機與單片機 ...

他用的是各個模塊組合啊,這焊接量也不大
回復

使用道具 舉報

15#
ID:577423 發表于 2021-8-19 14:42 | 只看該作者
易語言編譯器,看著全中文字體很有親切感,手上正好有兩個esp8266,看看這個程序有多么強大
回復

使用道具 舉報

16#
ID:700827 發表于 2021-11-20 21:27 | 只看該作者
沒有看到8266聯網啊?
回復

使用道具 舉報

17#
ID:3802 發表于 2021-12-10 17:08 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

18#
ID:101114 發表于 2022-1-20 11:54 | 只看該作者
學習了,感覺 8266這塊芯片通過51玩出了新花樣
回復

使用道具 舉報

19#
ID:581038 發表于 2022-2-18 10:22 | 只看該作者
這個好,有學習價值,下了下了!
回復

使用道具 舉報

20#
ID:1002378 發表于 2022-2-18 13:50 | 只看該作者
這個有興趣,向你學習動手能力
回復

使用道具 舉報

21#
ID:229010 發表于 2022-2-24 17:16 | 只看該作者
正學習這方面的知識,感謝。
回復

使用道具 舉報

22#
ID:65691 發表于 2023-6-2 12:45 | 只看該作者

正學習這方面的知識,感謝。
回復

使用道具 舉報

23#
ID:359281 發表于 2023-8-22 21:31 來自手機 | 只看該作者
好資料,51黑有你更精彩!
回復

使用道具 舉報

24#
ID:216265 發表于 2023-8-25 05:37 | 只看該作者
歷害了,支持你
回復

使用道具 舉報

25#
ID:359281 發表于 2023-10-10 12:07 | 只看該作者
51黑有你更精彩!
回復

使用道具 舉報

26#
ID:98880 發表于 2023-11-23 15:55 | 只看該作者
不錯呀。我當年也是這樣搞的,土味制作。
回復

使用道具 舉報

27#
ID:596977 發表于 2024-3-7 10:35 | 只看該作者
51黑有你更精彩!
回復

使用道具 舉報

28#
ID:511699 發表于 2024-3-24 14:29 | 只看該作者
正學習這方面的知識,感謝
回復

使用道具 舉報

29#
ID:81135 發表于 2024-5-5 15:20 | 只看該作者
思路很好,跟樓主好好學習一下。
回復

使用道具 舉報

30#
ID:65580 發表于 2024-9-11 09:24 | 只看該作者
跟著學習,下載程序到ST89C52單片機,注冊貝殼物聯,下載到手機APP,測試不成功,是那里出問題了呢
回復

使用道具 舉報

31#
ID:1131387 發表于 2024-10-6 16:24 | 只看該作者
先收藏了,后面再慢慢研究,謝謝了
回復

使用道具 舉報

32#
ID:876947 發表于 2024-10-23 11:49 | 只看該作者
是個極具實用性的實驗
回復

使用道具 舉報

33#
ID:25103 發表于 2024-11-4 16:57 | 只看該作者
這資源不錯,學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91日日| 亚洲精品欧美 | 91性高湖久久久久久久久_久久99 | 国产在线精品一区 | 亚洲aⅴ精品 | 国产美女特级嫩嫩嫩bbb片 | 欧美精品一区二区免费视频 | 欧美一级免费 | 欧美一区二区三区在线视频 | 色姑娘综合网 | 午夜欧美a级理论片915影院 | 色婷婷综合久久久中文字幕 | 一级h片 | 日韩一二三区视频 | 午夜小视频免费观看 | 中文字幕视频在线观看 | 欧美中文一区 | 午夜精品一区二区三区在线视频 | 嫩草视频入口 | 中文字幕综合 | 天天久久| 中文字幕91| www.狠狠干 | 97超碰在线免费 | 久久精品91久久久久久再现 | 欧美日韩久久精品 | 欧美在线视频网 | 成人精品在线视频 | 精品国产伦一区二区三区观看体验 | 黄色毛片在线看 | 欧美精品一区二区在线观看 | 黄色片网站国产 | 91久久久久久久久久久久久 | 色综合成人网 | 毛片韩国 | 精品无码久久久久国产 | 在线免费观看毛片 | 激情视频网站 | 电影午夜精品一区二区三区 | 完全免费在线视频 | 日本a视频 |