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

標題: ESP8266安卓客戶端.apk下載及51單片機測試程序 [打印本頁]

作者: Toreader    時間: 2017-5-15 17:21
標題: ESP8266安卓客戶端.apk下載及51單片機測試程序
esp8266測試程序和ESP8266安卓客戶端.apk提供下載


單片機源程序如下:
  1. /*************        本地常量聲明        **************/
  2. #define MAIN_Fosc                22118400L        //定義主時鐘
  3. #define        RX1_Lenth                32                        //串口接收緩沖長度
  4. //#define        BaudRate1                9600UL        //選擇波特率
  5. //#define        Timer1_Reload        (65536UL -(MAIN_Fosc / 4 / BaudRate1))                //Timer 1 重裝值, 對應300KHZ
  6. //#define        Timer2_Reload        (65536UL -(MAIN_Fosc / 4 / BaudRate1))                //Timer 2 重裝值, 對應300KHZ
  7. #include"STC15Fxxxx.H"
  8. #include<intrins.h>
  9. #define uchar unsigned char
  10. #define uint unsigned int
  11. /*************        本地變量聲明        **************/
  12. u8        idata RX1_Buffer[RX1_Lenth];        //接收緩沖
  13. u8        TX1_Cnt;        //發送計數
  14. u8        RX1_Cnt;        //接收計數
  15. bit        B_TX1_Busy;        //發送忙標志
  16. /*************        端口引腳定義        **************/
  17. sbit LED1=P1^0;//LED1
  18. sbit LED2=P1^1;//LED2
  19. sbit LED3=P3^7;//LED3
  20. sbit DK1=P3^3;//繼電器
  21. sbit BEEP=P3^4;//蜂鳴器
  22. sbit K1=P1^3;//按鍵1
  23. sbit K2=P1^2;//按鍵2
  24. sbit K3=P1^4;//按鍵3
  25. sbit DQ=P1^6;//18B20溫度傳感器
  26. char led1bl,led2bl,led3bl;
  27. #define jump_ROM 0xCC                   //跳過ROM命令
  28. #define start    0x44               //啟動轉換命令
  29. #define read_EEROM 0xBE                 //讀存儲器命令
  30. uchar TMPH,TMPL;                //溫度值
  31. uchar HL;                      //當前溫度
  32. unsigned char LYMS[13]="AT+CWMODE=2\r\n";
  33. unsigned char SZLY[38]="AT+CWSAP='ESP8266','0123456789',11,0\r\n";
  34. unsigned char RST[8]="AT+RST\r\n";
  35. unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n";
  36. unsigned char KQFU[21]="AT+CIPSERVER=1,5000\r\n";
  37. unsigned char FSSJ[13]="AT+CIPSEND=\r\n";//AT+CIPSEND= 發送數據
  38. unsigned char WDSJ[4]={0x00,0x00,0x00,0x00};
  39. void Delay1(unsigned long ms)
  40. {
  41.         unsigned char i, j,k;
  42.         for(k=0;k<ms;k++)
  43.         {
  44.                 _nop_();
  45.                 _nop_();
  46.                 i = 22;
  47.                 j = 128;
  48.                 do
  49.                 {
  50.                         while (--j);
  51.                 } while (--i);
  52.         }
  53. }
  54. void Delay2(unsigned long cnt)
  55. {
  56.         long i;
  57.         for(i=0;i<cnt*100;i++);
  58. }
  59. void Delay3(unsigned int N)
  60. {
  61.         int i;
  62.         for(i=0;i<N*10;i++);
  63. }
  64. //--------------------
  65. // 函數名稱: Reset
  66. // 入口參數: 無
  67. // 返回deceive_ready
  68. // 函數功能:復位
  69. //--------------------
  70. unsigned char Reset(void)
  71. {
  72.         unsigned char deceive_ready;
  73.         Delay3(10);
  74.         DQ=0;                               //拉低DQ線
  75.         Delay3(29);                          //延時至少480us~960us
  76.         DQ=1;                               //將DQ線設置位邏輯高   
  77.         Delay3(3);                           //延時等待deceive_ready響應
  78.         deceive_ready=DQ;                   //采樣deceive_ready信號
  79.         Delay3(25);                          //等待時序結束
  80.         return(deceive_ready);              //有deceive_ready信號時返回0,否則返回1
  81. }


  82. //---------------------------
  83. // 函數名稱:read_bit
  84. // 入口參數: 無
  85. // 返回接收的數據
  86. // 函數功能:讀一個bit子程序
  87. //---------------------------
  88. unsigned char read_bit(void)
  89. {
  90.         unsigned char i;
  91.         DQ=0;                                 //拉低DQ線開始時序
  92.         DQ=1;                                 //升高DQ線                        
  93.         for(i=0;i<3;i++);         //延時至時序開始15us
  94.         return(DQ);                           //返回DQ值
  95. }


  96. //---------------------------
  97. // 函數名稱: write_bit
  98. // 入口參數: bitval
  99. // 函數功能:寫一個bit子程序
  100. //---------------------------
  101. void write_bit(unsigned char bitval)
  102. {
  103.         DQ=0;                             //拉低DQ線開始時序
  104.         if(bitval==1)
  105.                 DQ=1;                             //如果寫邏輯為高
  106.         Delay3(5);                         //延時
  107.         DQ=1;                             //升高DQ線
  108. }


  109. //----------------------------
  110. // 函數名稱: write_byte
  111. // 入口參數: val
  112. // 函數功能:寫一個byte子程序
  113. //----------------------------
  114. void write_byte(unsigned char val)
  115. {
  116.         unsigned char i,temp;
  117.         for(i=0;i<8;i++)
  118.         {
  119.                 temp=val>>i;                        //將val位右移i位賦值給比temp
  120.                 temp=temp&0x01;                     //取temp最低位
  121.                 write_bit(temp);
  122.                 Delay3(5);                           //延時至時序結束
  123.         }
  124. }


  125. //----------------------------
  126. // 函數名稱: read_byte
  127. // 返回接收的數據 value
  128. // 函數功能:讀一個byte子程序
  129. //----------------------------
  130. unsigned char read_byte(void)
  131. {
  132.         unsigned char i,m,receive_data;
  133.         m=1;receive_data=0;                          //初始化
  134.         for(i=0;i<8;i++)
  135.         {
  136.                 if(read_bit())
  137.                 {
  138.                         receive_data=receive_data+(m<<i);
  139.                 }                                          //每讀一位數據據,左移一位
  140.                 Delay3(6);                                  //延時至時序結束
  141.         }
  142.         return(receive_data);                        //返回value
  143. }


  144. //---------------------------
  145. // 函數名稱: Get_temp
  146. // 返回接收的數據 TMPL, TMPH
  147. // 函數功能:取出溫度值
  148. //---------------------------
  149. uint Get_temp(void)
  150. {
  151.         unsigned int T;
  152.         //EA = 0;
  153.         Reset();
  154.         write_byte(jump_ROM);       //發跳過ROM命令
  155.         write_byte(start);          //發啟動轉換命令
  156.         Reset();
  157.         write_byte(jump_ROM);       //發跳過ROM命令
  158.         write_byte(read_EEROM);     //發跳過ROM命令
  159.         TMPL=read_byte();           //讀低8位溫度值
  160.         TMPH=read_byte();           //讀高8位溫度值
  161.        
  162.         //EA = 0;
  163.         T=TMPL+TMPH*256;     
  164.         if(T==0xFFFF) return 0xFFFF;
  165.         if(T>0x8000)   //溫度為負
  166.         {
  167.                 T=~T+1;
  168.                 return(0x8000+T*5/8);
  169.         }
  170.         else     //溫度位正
  171.         {
  172.                 return(T*5/8);
  173.         }
  174. }
  175. void UARTSendByte(unsigned char byte)//?????????
  176. {
  177.         SBUF=byte;              //???????????
  178.         while(TI==0);          //??????,TI?????1
  179.         TI=0;                    //?????????
  180. }
  181. void DisplayTemp(unsigned int temp)
  182. {
  183.         uchar i=0;
  184.         uchar TmpTable[3] = {0};
  185.         TmpTable[ 0 ] = (temp%1000)/100;
  186.         TmpTable[ 1 ] = (temp%100)/10;
  187.         TmpTable[ 2 ] = (temp%10);

  188. //        UARTSendByte(TmpTable[0] + 0x30);Delay3(9);
  189. //        UARTSendByte(TmpTable[1] + 0x30);Delay3(9);
  190. //        UARTSendByte('.');Delay3(9);
  191. //        UARTSendByte(TmpTable[2] + 0x30);Delay3(9);       
  192. //        UARTSendByte(0x0d);Delay3(9);       
  193. //        UARTSendByte(0x0a);Delay3(9);
  194.         WDSJ[0]=(TmpTable[0] + 0x30);
  195.         WDSJ[1]=(TmpTable[1] + 0x30);
  196.         WDSJ[2]=('.');
  197.         WDSJ[3]=(TmpTable[2] + 0x30);       
  198. }
  199. void main(void)
  200. {
  201.         char i=0;
  202.         B_TX1_Busy = 0;
  203.         RX1_Cnt = 0;
  204.         TX1_Cnt = 0;
  205.         S1_8bit();                                //8位數據
  206.         S1_USE_P30P31();                //UART1 使用P30 P31口        默認
  207.         /*AUXR &= ~(1<<4);        //Timer stop                波特率使用Timer2產生
  208.         AUXR |= 0x01;                //S1 BRT Use Timer2;
  209.         AUXR |=  (1<<2);        //Timer2 set as 1T mode
  210.         TH2 = (u8)(Timer2_Reload >> 8);
  211.         TL2 = (u8)Timer2_Reload;
  212.         AUXR |=  (1<<4);        //Timer run enable
  213.         REN = 1;        //允許接收
  214.         ES  = 1;        //允許中斷
  215.         EA = 1;                //允許全局中斷*/
  216.         S2CON = 0x50;                //8位數據,可變波特率
  217.         AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
  218.         T2L = 0xD0;                //設定定時初值
  219.         T2H = 0xFF;                //設定定時初值
  220.         AUXR |= 0x10;                //啟動定時器2
  221.         REN = 1;        //允許接收
  222.         ES  = 1;        //允許中斷
  223.         EA = 1;                //允許全局中斷*/
  224.         P3M1 = 0x00;
  225.     P3M0 = 0xFF;
  226.         RX1_Cnt=0;
  227.         DK1=0;
  228.         BEEP=0;
  229.         Delay2(2000);
  230.         for(i=0;i<13;i++)//AT+CWMODE=2 設置成路由模式
  231.         {
  232.                 SBUF=LYMS[i];Delay1(5);
  233.         }
  234.         Delay2(1000);
  235.         for(i=0;i<38;i++)//AT+CWSAP="ESP8266","0123456789",11,0 設置路由
  236.         {
  237.                 SBUF=SZLY[i];Delay1(5);
  238.         }
  239.         Delay2(3000);
  240.         for(i=0;i<8;i++)//AT+RST 重啟
  241.         {
  242.                 SBUF=RST[i];Delay1(5);
  243.         }
  244.         Delay2(5000);
  245.         for(i=0;i<13;i++)//AT+CIPMUX=1 設置成多連接
  246.         {
  247.                 SBUF=SZDLJ[i];Delay1(5);
  248.         }
  249.         Delay2(2000);
  250.         for(i=0;i<21;i++)//AT+CIPSERVER=1,5000 開啟TCP服務端口
  251.         {
  252.                 SBUF=KQFU[i];Delay1(5);
  253.         }
  254.         Delay2(2000);
  255.         Get_temp();
  256.         Delay3(50000);
  257.         Get_temp();
  258.         Delay3(50000);
  259.         while (1)
  260.         {
  261.                 DisplayTemp(Get_temp());//刷新18B20
  262.                 if(K1==0)
  263.                 {
  264.                         Delay1(5);
  265.                         if(K1==0)
  266.                         {
  267.                                 LED1=!LED1;
  268.                         }
  269.                         while(K1==0);
  270.                 }
  271.                 if(K2==0)
  272.                 {
  273.                         Delay1(5);
  274.                         if(K2==0)
  275.                         {
  276.                                 LED2=!LED2;
  277.                         }
  278.                         while(K2==0);
  279.                 }
  280.                 if(K3==0)
  281.                 {
  282.                         Delay1(5);
  283.                         if(K3==0)
  284.                         {
  285.                                 LED3=!LED3;
  286.                         }
  287.                         while(K3==0);
  288.                 }
  289.         }
  290. }

  291. /********************* UART1中斷函數************************/
  292. void UART1_int (void) interrupt UART1_VECTOR
  293. {
  294.         char i,a,b,c;
  295.         if(RI)
  296.         {
  297.                 RI = 0;
  298.                 RX1_Buffer[RX1_Cnt] = SBUF;                //保存一個字節
  299.                 if(RX1_Buffer[0]==0x45)
  300.                 {
  301.                         RX1_Cnt++;
  302.                 }
  303.                 else
  304.                 {
  305.                         RX1_Cnt=0;
  306.                 }
  307.                 if(RX1_Cnt>=10)
  308.                 {
  309.                         if(RX1_Buffer[0]==0x45&&RX1_Buffer[1]==0x53&&RX1_Buffer[2]==0x50)
  310.                         {
  311.                                 if(RX1_Buffer[4]==0x4C&&RX1_Buffer[5]==0x45&&RX1_Buffer[6]==0x44)//判斷LED
  312.                                 {
  313.                                         if(RX1_Buffer[7]==0x31)//判斷LED1
  314.                                         {
  315.                                                 if(RX1_Buffer[3]==0x4B)//判斷開
  316.                                                 {
  317.                                                         LED1=0;
  318.                                                 }
  319.                                                 if(RX1_Buffer[3]==0x47)//判斷關
  320.                                                 {
  321.                                                         LED1=1;
  322.                                                 }
  323.                                         }
  324.                                         if(RX1_Buffer[7]==0x32)//判斷LED2
  325.                                         {
  326.                                                 if(RX1_Buffer[3]==0x4B)//判斷開
  327.                                                 {
  328.                                                         LED2=0;
  329.                                                 }
  330.                                                 if(RX1_Buffer[3]==0x47)//判斷關
  331.                                                 {
  332.                                                         LED2=1;
  333.                                                 }
  334.                                         }
  335.                                         if(RX1_Buffer[7]==0x33)//判斷LED3
  336.                                         {
  337.                                                 if(RX1_Buffer[3]==0x4B)//判斷開
  338.                                                 {
  339.                                                         LED3=0;
  340.                                                 }
  341.                                                 if(RX1_Buffer[3]==0x47)//判斷關
  342.                                                 {
  343.                                                         LED3=1;
  344.                                                 }
  345.                                         }
  346.                                 }
  347.                                 if(RX1_Buffer[4]==0x4A&&RX1_Buffer[5]==0x44&&RX1_Buffer[6]==0x51)//判斷繼電器
  348.                                 {
  349.                                         if(RX1_Buffer[7]==0x31)//判斷LED1
  350.                                         {
  351.                                                 if(RX1_Buffer[3]==0x4B)//判斷開
  352.                                                 {
  353.                                                         DK1=1;
  354.                                                 }
  355.                                                 if(RX1_Buffer[3]==0x47)//判斷關
  356.                                                 {
  357.                                                         DK1=0;
  358.                                                 }
  359.                                         }
  360.                                 }
  361.                                 if(RX1_Buffer[3]==0x46&&RX1_Buffer[4]==0x4D&&RX1_Buffer[5]==0x51&&RX1_Buffer[6]==0x43&&RX1_Buffer[7]==0x53)//判斷蜂鳴器
  362.                                 {
  363.                                         BEEP=1;Delay2(100);BEEP=0;Delay2(100);BEEP=1;Delay2(100);BEEP=0;Delay2(100);
  364.                                 }
  365.                                 if(RX1_Buffer[3]==0x43&&RX1_Buffer[4]==0x58&&RX1_Buffer[5]==0x53&&RX1_Buffer[6]==0x4A)//查詢數據
  366.                                 {
  367.                                         if(LED1==0){a=0x4B;}else{a=0x47;}
  368.                                         if(LED2==0){b=0x4B;}else{b=0x47;}
  369.                                         if(LED3==0){c=0x4B;}else{c=0x47;}
  370.                                         for(i=0;i<11;i++)//AT+CIPSEND= 發送數據
  371.                                         {
  372.                                                 SBUF=FSSJ[i];Delay1(5);
  373.                                         }
  374.                                         SBUF=0x30;Delay1(5);
  375.                                         SBUF=0x2C;Delay1(5);
  376.                                         SBUF=0x32;Delay1(5);
  377.                                         SBUF=0x36;Delay1(5);
  378.                                         SBUF=0x0D;Delay1(5);
  379. ……………………

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

所有資料51hei提供下載:
安信可測試版使用說明.rar (1.04 MB, 下載次數: 286)



作者: admin    時間: 2017-5-15 18:54
好資料,51黑有你更精彩!!!
作者: hymtnzc    時間: 2017-5-15 20:36
太好了下來測試,論壇有你更精彩。
作者: kk276988160    時間: 2017-5-16 15:19
真有你的 不過還是不錯
作者: 維超    時間: 2017-5-18 14:19
通過串口發送AT命令來實現無線傳輸的
作者: 583653368    時間: 2017-10-23 18:55
你好 源碼編譯是提示目標未創建    不知道該怎么解決


* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 12D5H BYTE (235%) *
******************************************************************************
Program Size: data=204.1 xdata=225 code=5197
LINK/LOCATE RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)
*** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
    MODULE:  C:\KEIL\C51\LIB\C51C.LIB (-----)
    LIMIT:   0800H BYTES
目標未創建

         
       

作者: wuxishun    時間: 2017-12-10 13:16
安裝了,運行不了怎么解決?
作者: 陳百通    時間: 2017-12-12 13:41
學習一下!!!!!!!!!!!!!!!!
作者: 陳百通    時間: 2017-12-12 13:41
學習一下!!!!!!!!!!!!!!!!
作者: zc98    時間: 2017-12-13 20:10
apk不能用,,
作者: 876866648    時間: 2017-12-14 12:50
謝謝你,很有用
作者: aking991    時間: 2017-12-16 16:18
值得學習,可惜黑幣不夠了
作者: ntlclxyc    時間: 2018-2-11 17:06
好好東西啊,能免費下么?
作者: jjj12345    時間: 2018-4-10 20:36
ntlclxyc 發表于 2018-2-11 17:06
好好東西啊,能免費下么?

還不錯,只需要謝謝
作者: stillwater    時間: 2018-4-14 19:12
希望有用
作者: 么么了    時間: 2018-4-16 20:46
好想試試

作者: itzheng    時間: 2018-7-24 15:34
好好東西啊,能免費下么?
作者: chuyuanjie    時間: 2018-9-23 16:24
終于找到了,正發愁手機客戶端不知怎么編寫呢,可以用以下下
作者: 可可分享    時間: 2018-9-24 14:44
安裝了可惜打不開APP
作者: WFX777888    時間: 2018-10-26 10:52
好資料,51黑有你更精彩!!!
作者: Wong410yj    時間: 2018-10-26 17:10
感覺有點難,慢慢寫
作者: zgp    時間: 2018-11-19 13:16
學習學習
作者: 無色丶    時間: 2018-12-17 16:00
贊。好東西
作者: 阿斯頓馬丁    時間: 2019-5-11 22:54
學習一下
作者: jemery1030    時間: 2019-7-22 16:53
這很棒,感謝分享。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲成人网在线观看 | 欧美性生活免费 | 国产精品成人一区二区三区夜夜夜 | 欧美视频日韩 | 国产成人亚洲精品 | 国产黄色av网站 | 毛片久久久 | 亚洲第一视频 | 亚洲欧美日韩在线 | 欧美色视频免费 | 欧美日韩国产精品一区 | 日韩欧美三区 | 成人水多啪啪片 | 一级毛片视频 | 一区二区高清不卡 | 免费v片| 三级黄色大片网站 | 日韩久久久久久久 | 91在线免费视频 | 国产一区二区在线免费视频 | 亚洲男人天堂2024 | 特级黄一级播放 | 国产精品久久网 | 天堂成人国产精品一区 | 欧美久久一区二区三区 | 午夜视频在线免费观看 | 久久久久久黄 | 一级毛片视频 | 日本亚洲欧美 | 欧美xxxⅹ性欧美大片 | 欧美日韩中文字幕在线 | 一区二区三区四区在线 | 国产午夜亚洲精品不卡 | 一区二区三区精品 | 国产在线一区二区三区 | 一区二区三区不卡视频 | 日本精品视频在线观看 | 国产精品久久久久av | 亚洲成人免费观看 | 毛片综合 | 欧美黑人一区二区三区 |