单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
跳转到指定楼层
楼主
基于51单片机与蓝牙Android温度监测系统,提供安卓app的源码和下位机单片机端的代码

下面是原理图:



单片机源码如下:

  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, 下载次数: 280)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏18 转播转播 分享分享2 分享淘帖 顶6 踩
回复

使用道具 举报

沙发
q378701085 发表于 2017-5-9 00:23 | 只看该作者
正需要~!  谢谢分享
回复

使用道具 举报

板凳
rich8086 发表于 2017-5-17 20:21 | 只看该作者
我正在做个测转速的,通过霍尔3144传感器获取数据在1602A上展示,同时传送给Android端APP
回复

使用道具 举报

地板
ABLgle 发表于 2017-9-29 22:29 | 只看该作者
谢谢楼主分享!!!!
回复

使用道具 举报

5#
e-xp 发表于 2017-10-10 23:21 | 只看该作者
好资料
回复

使用道具 举报

6#
ABLgle 发表于 2017-10-11 20:43 | 只看该作者
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

7#
糖豆森 发表于 2017-11-16 20:17 | 只看该作者
辛苦了辛苦了
回复

使用道具 举报

8#
changle11 发表于 2017-11-17 10:07 | 只看该作者
看下app码
回复

使用道具 举报

9#
18907733004 发表于 2017-11-28 22:37 | 只看该作者
请问打开app 与HC-06怎么连接呢      一直连不上的
回复

使用道具 举报

10#
练氏 发表于 2017-11-29 10:43 | 只看该作者
兄弟  谢谢分享,还带安卓源码?是用易安卓写的???
回复

使用道具 举报

11#
练氏 发表于 2017-11-29 10:46 | 只看该作者
问题是我不知道你的安卓代码怎么用啊  老铁

评分

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

查看全部评分

回复

使用道具 举报

12#
elementalmas 发表于 2018-1-2 16:18 | 只看该作者
没有黑币 可以发一份到986394529@qq.com

评分

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

查看全部评分

回复

使用道具 举报

13#
elementalmas 发表于 2018-1-2 16:50 | 只看该作者
非常感谢
回复

使用道具 举报

14#
happy. 发表于 2018-1-2 16:51 | 只看该作者
设计不错,很好 值得学习
回复

使用道具 举报

15#
elementalmas 发表于 2018-1-4 17:18 | 只看该作者
请问有pcb的库吗?
回复

使用道具 举报

16#
qsc518 发表于 2018-1-17 15:45 | 只看该作者
刚好需要这个   谢谢楼主
回复

使用道具 举报

17#
12354785 发表于 2018-3-19 15:20 | 只看该作者
qsc518 发表于 2018-1-17 15:45
刚好需要这个   谢谢楼主

多交流问题
回复

使用道具 举报

18#
12354785 发表于 2018-3-19 15:21 | 只看该作者
elementalmas 发表于 2018-1-4 17:18
请问有pcb的库吗?

百度有很多
回复

使用道具 举报

19#
junerver 发表于 2018-3-27 11:45 | 只看该作者
想看安卓源代码是怎么写的
回复

使用道具 举报

20#
152101102 发表于 2018-4-20 10:02 | 只看该作者
想看安卓源代码是怎么写的 发一份1216754090@qq.com
回复

使用道具 举报

21#
hq1119418168 发表于 2018-5-9 17:10 | 只看该作者
好厉害
回复

使用道具 举报

22#
wxc19960311 发表于 2018-5-10 16:44 | 只看该作者
楼主,无法下载,能分享一份吗谢谢1306501801@qq.com
回复

使用道具 举报

23#
zhousw08 发表于 2018-5-18 10:42 | 只看该作者
急需要这个资料
谢谢
回复

使用道具 举报

24#
zhousw08 发表于 2018-5-18 10:54 | 只看该作者
怎么下不了
回复

使用道具 举报

25#
wangjie19862 发表于 2018-7-3 20:21 | 只看该作者
感谢楼主分享
回复

使用道具 举报

26#
songyuan 发表于 2018-7-5 16:47 | 只看该作者
学习一下
回复

使用道具 举报

27#
胡建人 发表于 2018-10-10 16:00 | 只看该作者
刚好需要,黑币不够,可以发514699340@qq.com吗?谢谢
回复

使用道具 举报

28#
fzy12345 发表于 2018-11-12 20:33 | 只看该作者
真好,非常有用
回复

使用道具 举报

29#
WFX777888 发表于 2019-1-12 06:59 | 只看该作者
谢谢分享资料
回复

使用道具 举报

30#
kongle 发表于 2019-1-15 13:34 来自手机 | 只看该作者
谢谢分享,学习了
回复

使用道具 举报

31#
vaeay 发表于 2019-2-17 17:46 | 只看该作者
很好,正好要用
回复

使用道具 举报

32#
cbccbc 发表于 2019-4-6 22:42 | 只看该作者
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

33#
cbccbc 发表于 2019-4-6 22:43 | 只看该作者
谢谢楼主分享,学习勒~~~
回复

使用道具 举报

34#
clytze 发表于 2019-5-17 11:07 | 只看该作者
有实物图嘛
回复

使用道具 举报

35#
zqbx123 发表于 2019-5-17 16:10 | 只看该作者
感谢分享
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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