找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4458|回复: 5
收起左侧

单片机通过ESP8266与手机端进行网络通信的源码与APP下载

  [复制链接]
ID:371965 发表于 2018-12-7 10:41 | 显示全部楼层 |阅读模式
在校期间研究了一套程序,手机通过网络可以读取单片机端的数据  比如温度 湿度 开关灯 等等  现在将程序源码上传交流学习,资料是一套视频,论坛限制没办法就先把程序上传,有兴趣可以加我qq1506175115联系我,本人电话18363353598

单片机使用为stc15w408as单片机

此程序 为前几个视频的程序 为方便查找在这里做了一个合集  wifi名称为 aaa 密码为 88888888  
手机app为wifi版  两个程序全部通用 蓝牙版本太过简单 就不做了

0.png

单片机源程序如下:
  1. /*********************************************************************************
  2. * 【外部晶振】: 11.0592mhz       
  3. * 【主控芯片】: STC89C52
  4. * 【编译环境】: Keil μVisio3       
  5. * 【程序功能】: 实时采集当前环境温度值,并显示于数码管上                                                                                           
  6. * 【使用说明】:
  7. *  说明:免费开源,不提供源代码分析.
  8. **********************************************************************************/

  9. #include <stc15.h>
  10. #include<stdio.h>
  11. #include<intrins.h>
  12. #define uchar unsigned char
  13. #define uint unsigned int
  14. sbit DS=P2^2;           //define interface
  15. uint temp;             // variable of temperature
  16. uchar flag1;            // sign of the result positive or negative
  17. unsigned int a;


  18. void  delay()
  19. {
  20. unsigned char i, j;

  21.         _nop_();
  22.         i = 2;
  23.         j = 199;
  24.         do
  25.         {
  26.                 while (--j);
  27.         } while (--i);
  28. }


  29. void inte()
  30. {
  31.                   
  32.         // 下面代码设置定时器
  33.         SCON = 0x50;                //8位数据,可变波特率
  34.         AUXR |= 0x01;                //串口1选择定时器2为波特率发生器
  35.         AUXR &= 0xFB;                //定时器2时钟为Fosc/12,即12T
  36.         T2L = 0xE8;                //设定定时初值
  37.         T2H = 0xFF;                //设定定时初值
  38.         AUXR |= 0x10;                //启动定时器2
  39.         ES   = 1;                // 开串口1中断
  40.         EA   = 1;                // 开总中断
  41. }
  42. void dsreset(void)       //send reset and initialization command
  43. {
  44.   uint i;
  45.   DS=0;
  46.   i=1003;
  47.   while(i>0)i--;
  48.   DS=1;
  49.   i=4;
  50.   while(i>0)i--;
  51. }

  52. bit tmpreadbit(void)       //read a bit
  53. {
  54.    uint i;
  55.    bit dat;
  56.    DS=0;i++;          //i++ for delay
  57.    DS=1;i++;i++;
  58.    dat=DS;
  59.    i=80;while(i>0)i--;
  60.    return (dat);
  61. }

  62. uchar tmpread(void)   //read a byte date
  63. {
  64.   uchar i,j,dat;
  65.   dat=0;
  66.   for(i=1;i<=8;i++)
  67.   {
  68.     j=tmpreadbit();
  69.     dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里
  70.   }
  71.   return(dat);
  72. }

  73. void tmpwritebyte(uchar dat)   //write a byte to ds18b20
  74. {
  75.   uint i;
  76.   uchar j;
  77.   bit testb;
  78.   for(j=1;j<=8;j++)
  79.   {
  80.     testb=dat&0x01;
  81.     dat=dat>>1;
  82.     if(testb)     //write 1
  83.     {
  84.       DS=0;
  85.       i++;i++;
  86.       DS=1;
  87.       i=80;while(i>0)i--;
  88.     }
  89.     else
  90.     {
  91.       DS=0;       //write 0
  92.       i=80;while(i>0)i--;
  93.       DS=1;
  94.       i++;i++;
  95.     }

  96.   }
  97. }

  98. void tmpchange(void)  //DS18B20 begin change
  99. {
  100.   dsreset();
  101.   delay();
  102.   tmpwritebyte(0xcc);  // address all drivers on bus
  103.   tmpwritebyte(0x44);  //  initiates a single temperature conversion
  104. }

  105. uint tmp()               //get the temperature
  106. {
  107.   float tt;
  108.   uchar a,b;
  109.   dsreset();
  110.   delay();
  111.   tmpwritebyte(0xcc);
  112.   tmpwritebyte(0xbe);
  113.   a=tmpread();
  114.   b=tmpread();
  115.   temp=b;
  116.   temp<<=8;             //two byte  compose a int variable
  117.   temp=temp|a;
  118.   tt=temp*0.0625;
  119.   temp=tt*10+0.5;
  120.   return temp;
  121. }


  122. void main()
  123. {
  124.         inte();
  125.          TI=1;
  126. while(1)
  127.   {
  128.     tmpchange();
  129.         for(a=10;a>0;a--)
  130.           {   
  131.                   temp=tmp();
  132.                 printf("%D\n",temp);
  133.           }
  134.   }
  135. }
  136. void ser() interrupt 4                                           //串口中断程序
  137. {       
  138.                 if(RI==1)
  139.                 {
  140.                   RI=0;       
  141.                 }
  142.                 if(TI==1)
  143.                 {
  144.                         TI=0;
  145.                 }
  146. }
复制代码

所有资料51hei提供下载:
程序合集 (完成版).zip (2.57 MB, 下载次数: 119)

评分

参与人数 2黑币 +55 收起 理由
mashuiyou + 5 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:585455 发表于 2019-7-26 19:29 | 显示全部楼层
感謝無私分享
回复

使用道具 举报

ID:280466 发表于 2021-2-9 14:30 | 显示全部楼层
没有app源码发来做啥呢小朋友
回复

使用道具 举报

ID:372579 发表于 2021-2-12 17:57 来自手机 | 显示全部楼层
这个是不是自己做无线温度显示?
回复

使用道具 举报

ID:849826 发表于 2021-2-13 09:07 | 显示全部楼层
有没有16路远程遥控开关程序,局域网的做过,远程的不会
回复

使用道具 举报

ID:648281 发表于 2021-2-13 11:04 | 显示全部楼层
6313 发表于 2021-2-13 09:07
有没有16路远程遥控开关程序,局域网的做过,远程的不会

远程的遥控开关,高级点的可以采用云控制,简单点的采用端口映射
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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