找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14480|回复: 34
收起左侧

蓝牙温度计 安卓app源码和单片机源码都有 还带温度监测系统原理图

  [复制链接]
ID:196719 发表于 2017-5-4 23:11 | 显示全部楼层 |阅读模式
基于51单片机与蓝牙Android温度监测系统,提供安卓app的源码和下位机单片机端的代码

下面是原理图:
0.png
0.png

单片机源码如下:

  1. /*****************************************************************
  2. * 此部分为主程序
  3. *控制数码管的显示 以及定义发向串口的函数
  4. *!!!
  5. *此程序只能与上位机程序配合使用,或者修改相应上位机代码
  6. ******************************************************************/
  7. #include <reg52.H>

  8. extern GetTemp();                                                                           //声明引用外部函数
  9. extern unsigned int  idata Temperature;                      // 声明引用外部变量
  10.                                                                  
  11. extern STC_send_bluetooth(unsigned char a);                          //声明外部函数,与串口相关
  12. extern Serial_port_init();
  13. extern ctrl();

  14. extern unsigned char tmp;
  15. extern void Init18b20(void);
  16. extern bit  flag;//DS18B20是否损坏标志位,1为完好


  17. void send();//处理18B20发来的温度值,将各个位分别存储,并控制发向串口
  18. void delay(unsigned int i);//延时程序

  19. //138的C、B、A端 用于数码管的位选
  20. sbit    LS138A=P2^2;       //管脚定义
  21. sbit    LS138B=P2^3;
  22. sbit    LS138C=P2^4;
  23. sbit    PowerDown=P2^1;           //若18B20损坏,指示灯灭





  24. //此表为 LED 的字模, 共阴数码管 0-9  -
  25. unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
  26. unsigned long  LedOut[3],LedNumVal;

  27. unsigned char num[3];
  28. unsigned char end_char;                         //定义串口发送结束符


  29. unsigned char ARQFlag=0;//请求重发标志位,若为0,表示不重发
  30. unsigned char AutoSendFlag=0;//为了减小硬件带来的误差,单片机用于重新发送给上位机的标志位

  31. /********************************
  32. *判断18B20是否损坏或未连接
  33. *若损坏或未连接,发给上位机FF作为提示
  34. *************************************/
  35. bit Is_18B20()
  36. {
  37.         Init18b20();
  38.         if(!flag)
  39.         {
  40.           STC_send_bluetooth(0x46);        //字符F

  41.           delay(500);                                         //发送完一个字符加一定的延时

  42.           STC_send_bluetooth(0x46);

  43.           delay(500);

  44.           STC_send_bluetooth(0x43);                  //字符C的ASCII码,作为此次发送完毕的结束标?
  45.          
  46.           delay(5000);                                          //稍微延长延时,等待发送完毕

  47.           PowerDown=1;                                          //指示灯灭

  48.           PCON |= 0x02;                                          //单片机进入停机模式,此时内部晶振停振,只能靠外部INT0~3引脚唤醒或复位

  49.           return 0;
  50.         }
  51.         return 1;
  52. }

  53. /********************************
  54. *定时器中断相关初始化
  55. *********************************/
  56. void system_Init()
  57. {
  58.         TMOD&=0xF0;
  59.     TMOD|= 0x01;
  60.     TH0 = 0xD8;    //10ms
  61.     TL0 = 0xF0;               
  62.     TR0  = 1;
  63.         ET0=1;
  64.         EA=1;

  65. }

  66. /************************************************************************************
  67. *主函数,用于定时器中断,波特率发生器初始化,处理串口数据,以及数码管的显示
  68. ************************************************************************************/
  69. void main()
  70. {
  71.         unsigned char i;
  72.         end_char='C';
  73.         Serial_port_init();
  74.     system_Init();
  75.         //delay(1050);         
  76. //        1000           19.57ms
  77. //800 15.67
  78. //1200 23.49
  79. //1100 21.52
  80. //1050 20.55
  81. if(Is_18B20())                  //若18B20没有损坏,则继续执行
  82. {
  83.     while(1)
  84.    {
  85.                    if(RI==1)                     // 是否有数据到来
  86.         {
  87.            RI = 0;
  88.            tmp = SBUF;                   // 暂存接收到的数据
  89.                    ctrl();                                                 //根据接收的字符做出相应的处理
  90.                 }
  91.           GetTemp();                                                 //获取温度

  92.              /********以下将读18b20的数据送到LED数码管显示*************/

  93.      for(i=0; i<2; i++)  
  94.           {               
  95.                  P0 = LedOut[i] ;
  96.                                             
  97.                 switch(i)                                          
  98.          {                      //138译码                    
  99.             case 0:LS138C=0;LS138B=0;LS138A=0;   break;
  100.             case 1:LS138C=0;LS138B=0;LS138A=1;   break;  //001B 表示位选第一个数码管
  101.                         //case 2:LS138C=0;LS138B=1;LS138A=0;   break;
  102.          }
  103.                  
  104.                 delay(100);
  105.           }
  106.          
  107.           P0 = 0;  
  108.   
  109.     }
  110. }
  111. }

  112. /**********************************************
  113. *延时程序
  114. **********************************************/
  115. void delay(unsigned int i)
  116. {
  117.     char j;
  118.     for(i; i > 0; i--)
  119.         for(j = 200; j > 0; j--);
  120. }

  121. /******************************************
  122. *单片机串口发送函数
  123. ******************************************/
  124. void send()
  125. {
  126.         if(AutoSendFlag==20)                                  //当单片机有20秒没有发送数据给上位机时,发送一次数据,防止硬件误差
  127.         {
  128.                 AutoSendFlag='s';
  129.         }        
  130.          if((LedNumVal)==(Temperature) && ARQFlag==0&&AutoSendFlag!='s')  // 温度值与上次相等并且不要求重发,则不执行send()发送到串口
  131.          {
  132.                    return;        
  133.          }
  134.         else
  135.          {
  136.           LedNumVal=Temperature;      //把实际温度送到LedNumVal变量中

  137.          num[0]=        LedNumVal%100/10;
  138.          num[1]=        LedNumVal%10;

  139.          /* //若需要小数后一位的数据
  140.          num[0]=        (LedNumVal/100)%10;        //十位
  141.          num[1]=        (LedNumVal/10)%10;        //个位
  142.          num[2]=     LedNumVal%10;                //小数点后一位
  143.          */
  144.          delay(1050);

  145.          STC_send_bluetooth(num[0]+0x30);

  146.          delay(1050);                                         //发送完一个字符加一定的延时

  147.          STC_send_bluetooth(num[1]+0x30);

  148.          delay(1050);                                         //15.67ms

  149.          STC_send_bluetooth(0x43);                  //字符C的ASCII码,作为此次发送完毕的结束标志

  150.          delay(1050);

  151.      LedOut[0]=Disp_Tab[num[0]];         //温度的十位
  152.      LedOut[1]=Disp_Tab[num[1]];    //温度的个位
  153.          //LedOut[2]=Disp_Tab[num[2]];         //温度的小数后一位


  154.          if(ARQFlag)                                  //若是上位机请求重发的,此时ARQFlag为1,需要手动置0
  155.          

  156. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料打包下载:
Android的温度采集系统源码.zip (1.75 MB, 下载次数: 428)

评分

参与人数 4黑币 +26 收起 理由
xiaofeizhu + 1 赞一个!
2452873337 + 8 共享资料的黑币奖励!
abcabc22222 + 5 共享资料的黑币奖励!
练氏 + 12

查看全部评分

回复

使用道具 举报

ID:198451 发表于 2017-5-9 00:23 | 显示全部楼层
正需要~!  谢谢分享
回复

使用道具 举报

ID:201935 发表于 2017-5-17 20:21 | 显示全部楼层
我正在做个测转速的,通过霍尔3144传感器获取数据在1602A上展示,同时传送给Android端APP
回复

使用道具 举报

ID:236674 发表于 2017-9-29 22:29 | 显示全部楼层
谢谢楼主分享!!!!
回复

使用道具 举报

ID:141278 发表于 2017-10-10 23:21 | 显示全部楼层
好资料
回复

使用道具 举报

ID:236674 发表于 2017-10-11 20:43 | 显示全部楼层
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

ID:244203 发表于 2017-11-16 20:17 | 显示全部楼层
辛苦了辛苦了
回复

使用道具 举报

ID:230826 发表于 2017-11-17 10:07 | 显示全部楼层
看下app码
回复

使用道具 举报

ID:217743 发表于 2017-11-28 22:37 | 显示全部楼层
请问打开app 与HC-06怎么连接呢      一直连不上的
回复

使用道具 举报

ID:187478 发表于 2017-11-29 10:43 | 显示全部楼层
兄弟  谢谢分享,还带安卓源码?是用易安卓写的???
回复

使用道具 举报

ID:187478 发表于 2017-11-29 10:46 | 显示全部楼层
问题是我不知道你的安卓代码怎么用啊  老铁

评分

参与人数 1黑币 +5 收起 理由
elementalmas + 5

查看全部评分

回复

使用道具 举报

ID:270072 发表于 2018-1-2 16:18 | 显示全部楼层
没有黑币 可以发一份到986394529@qq.com

评分

参与人数 1黑币 +5 收起 理由
happy. + 5

查看全部评分

回复

使用道具 举报

ID:270072 发表于 2018-1-2 16:50 | 显示全部楼层
非常感谢
回复

使用道具 举报

ID:270297 发表于 2018-1-2 16:51 | 显示全部楼层
设计不错,很好 值得学习
回复

使用道具 举报

ID:270072 发表于 2018-1-4 17:18 | 显示全部楼层
请问有pcb的库吗?
回复

使用道具 举报

ID:277017 发表于 2018-1-17 15:45 | 显示全部楼层
刚好需要这个   谢谢楼主
回复

使用道具 举报

ID:294036 发表于 2018-3-19 15:20 | 显示全部楼层
qsc518 发表于 2018-1-17 15:45
刚好需要这个   谢谢楼主

多交流问题
回复

使用道具 举报

ID:294036 发表于 2018-3-19 15:21 | 显示全部楼层
elementalmas 发表于 2018-1-4 17:18
请问有pcb的库吗?

百度有很多
回复

使用道具 举报

ID:297693 发表于 2018-3-27 11:45 | 显示全部楼层
想看安卓源代码是怎么写的
回复

使用道具 举报

ID:296926 发表于 2018-4-20 10:02 | 显示全部楼层
想看安卓源代码是怎么写的 发一份1216754090@qq.com
回复

使用道具 举报

ID:318656 发表于 2018-5-9 17:10 | 显示全部楼层
好厉害
回复

使用道具 举报

ID:186936 发表于 2018-5-10 16:44 | 显示全部楼层
楼主,无法下载,能分享一份吗谢谢1306501801@qq.com
回复

使用道具 举报

ID:332788 发表于 2018-5-18 10:42 | 显示全部楼层
急需要这个资料
谢谢
回复

使用道具 举报

ID:332788 发表于 2018-5-18 10:54 | 显示全部楼层
怎么下不了
回复

使用道具 举报

ID:275869 发表于 2018-7-3 20:21 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:292119 发表于 2018-7-5 16:47 | 显示全部楼层
学习一下
回复

使用道具 举报

ID:407596 发表于 2018-10-10 16:00 | 显示全部楼层
刚好需要,黑币不够,可以发514699340@qq.com吗?谢谢
回复

使用道具 举报

ID:425264 发表于 2018-11-12 20:33 | 显示全部楼层
真好,非常有用
回复

使用道具 举报

ID:63317 发表于 2019-1-12 06:59 | 显示全部楼层
谢谢分享资料
回复

使用道具 举报

ID:456364 发表于 2019-1-15 13:34 来自手机 | 显示全部楼层
谢谢分享,学习了
回复

使用道具 举报

ID:321635 发表于 2019-2-17 17:46 | 显示全部楼层
很好,正好要用
回复

使用道具 举报

ID:505993 发表于 2019-4-6 22:42 | 显示全部楼层
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

ID:505993 发表于 2019-4-6 22:43 | 显示全部楼层
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

ID:518661 发表于 2019-5-17 11:07 | 显示全部楼层
有实物图嘛
回复

使用道具 举报

ID:517951 发表于 2020-11-15 14:56 | 显示全部楼层
学习第一手资料
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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