找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13402|回复: 24
打印 上一主题 下一主题
收起左侧

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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-5-15 18:54 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:173860 发表于 2017-5-15 20:36 来自手机 | 只看该作者
太好了下来测试,论坛有你更精彩。
回复

使用道具 举报

地板
ID:139785 发表于 2017-5-16 15:19 来自手机 | 只看该作者
真有你的 不过还是不错
回复

使用道具 举报

5#
ID:46999 发表于 2017-5-18 14:19 | 只看该作者
通过串口发送AT命令来实现无线传输的
回复

使用道具 举报

6#
ID:241215 发表于 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
目标未创建

         
       
回复

使用道具 举报

7#
ID:243748 发表于 2017-12-10 13:16 来自手机 | 只看该作者
安装了,运行不了怎么解决?
回复

使用道具 举报

8#
ID:260617 发表于 2017-12-12 13:41 | 只看该作者
学习一下!!!!!!!!!!!!!!!!
回复

使用道具 举报

9#
ID:260617 发表于 2017-12-12 13:41 | 只看该作者
学习一下!!!!!!!!!!!!!!!!
回复

使用道具 举报

10#
ID:255871 发表于 2017-12-13 20:10 来自手机 | 只看该作者
apk不能用,,
回复

使用道具 举报

11#
ID:261480 发表于 2017-12-14 12:50 | 只看该作者
谢谢你,很有用
回复

使用道具 举报

12#
ID:65956 发表于 2017-12-16 16:18 | 只看该作者
值得学习,可惜黑币不够了
回复

使用道具 举报

13#
ID:217448 发表于 2018-2-11 17:06 | 只看该作者
好好东西啊,能免费下么?
回复

使用道具 举报

14#
ID:6428 发表于 2018-4-10 20:36 来自手机 | 只看该作者
ntlclxyc 发表于 2018-2-11 17:06
好好东西啊,能免费下么?

还不错,只需要谢谢
回复

使用道具 举报

15#
ID:308141 发表于 2018-4-14 19:12 | 只看该作者
希望有用
回复

使用道具 举报

16#
ID:302373 发表于 2018-4-16 20:46 | 只看该作者
好想试试
回复

使用道具 举报

17#
ID:378525 发表于 2018-7-24 15:34 | 只看该作者
好好东西啊,能免费下么?
回复

使用道具 举报

18#
ID:371680 发表于 2018-9-23 16:24 | 只看该作者
终于找到了,正发愁手机客户端不知怎么编写呢,可以用以下下
回复

使用道具 举报

19#
ID:262559 发表于 2018-9-24 14:44 来自手机 | 只看该作者
安装了可惜打不开APP
回复

使用道具 举报

20#
ID:63317 发表于 2018-10-26 10:52 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

21#
ID:415902 发表于 2018-10-26 17:10 来自手机 | 只看该作者
感觉有点难,慢慢写
回复

使用道具 举报

22#
ID:59003 发表于 2018-11-19 13:16 | 只看该作者
学习学习
回复

使用道具 举报

23#
ID:448083 发表于 2018-12-17 16:00 | 只看该作者
赞。好东西
回复

使用道具 举报

24#
ID:95072 发表于 2019-5-11 22:54 | 只看该作者
学习一下
回复

使用道具 举报

25#
ID:585455 发表于 2019-7-22 16:53 | 只看该作者
這很棒,感謝分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表