找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7096|回复: 21
收起左侧

带高低温报警的ds18b20温度计程序及proteus仿真

  [复制链接]
ID:137190 发表于 2016-9-25 13:19 | 显示全部楼层 |阅读模式
数码管显示18b20,设置高低温报警温度,用蜂鸣器和led灯进行提醒。附电路图和源程序
0.png
  1. #include "main.h"
  2. #include "alarm.h"
  3. #include "display.h"
  4. #include "18b20.h"

  5. extern unsigned char idata flag;       //定义外部变量,温度正负标志
  6. uint HNum = 50,LNum = 10;        //报警温度的高低值
  7. uint Tem;

  8. /***************
  9. * 函 数:显示温度函数
  10. * 参 数:无
  11. * 返 回: 无
  12. ****************/
  13. void ShowTem()
  14. {
  15.       Tem = gettemp();                                   /* 读取18b20温度*/
  16.       if(flag == 1)                               //显示负温度
  17.       display(16,(Tem%100)/10,Tem%10,(Tem*10)/10);
  18.       if(flag == 0)                                  //显示正温度
  19.       display(Tem/100,(Tem%100)/10,Tem%10,(Tem*10)/10);
  20. }

  21. /***************
  22. * 函 数:设置低温温度报警值函数
  23. * 参 数:无
  24. * 返 回: 无
  25. ****************/
  26. void SetLowTem()
  27. {   
  28.       while(1)
  29.       {
  30.           display(18,(LNum%100)/10,LNum%10,(LNum*10)/10);
  31.           if(k2 == 0)
  32.               delay_ms(50);          //按键消抖
  33.               if(k2 == 0)
  34.               {   while(!k2);   //等待按键释放
  35.                   LNum++;
  36.               }
  37.           if(k3 == 0)
  38.              delay_ms(50);          //按键消抖
  39.              if(k3 == 0)
  40.              {    while(!k3);           //等待按键释放
  41.                   LNum--;
  42.              }
  43.           if(k4 == 0)
  44.              delay_ms(50);          //按键消抖
  45.              if(k4 == 0)
  46.              {    while(!k4);          //等待按键释放
  47.                   break;
  48.                    }  
  49.        }
  50. }
  51. /***************
  52. * 函 数:设置高温温度报警值函数
  53. * 参 数:无
  54. * 返 回: 无
  55. ****************/
  56. void SetHighTem()
  57. {
  58.   HNum = 50;
  59.   if(k1 == 0)                    //按键消抖
  60.       delay_ms(10);
  61.       if(k1 == 0)
  62.       {
  63.              while(!k1);             //等待按键释放
  64.           while(1)
  65.           {
  66.                      display(17,(HNum%100)/10,HNum%10,(HNum*10)/10);
  67.               if(k1 == 0)
  68.                  delay_ms(50);          //按键消抖
  69.                  if(k1 == 0)
  70.                  {   while(!k1);   //等待按键释放                     
  71.                        SetLowTem();   //设置低温报警温度
  72.                        break;
  73.                  }
  74.               if(k2 == 0)
  75.                  delay_ms(50);          //按键消抖
  76.                  if(k2 == 0)
  77.                  {   while(!k2);   //等待按键释放
  78.                      HNum++;
  79.                  }
  80.               if(k3 == 0)
  81.                  delay_ms(50);          //按键消抖
  82.                  if(k3 == 0)
  83.                  {    while(!k3);           //等待按键释放
  84.                       HNum--;
  85.                  }
  86.               if(k4 == 0)
  87.                  delay_ms(50);          //按键消抖
  88.                  if(k4 == 0)
  89.                  {  while(!k4);          //等待按键释放
  90.                     break;
  91.                  }   
  92.           }
  93.       }          
  94.       ShowTem();
  95. }
  96. /***************
  97. * 函 数:led和蜂鸣器初始化
  98. * 参 数:无
  99. * 返 回: 无
  100. ****************/

  101. void initalarm()
  102. {
  103.       led1 = 0;
  104.       led2 = 0;
  105.       led3 = 0;
  106.       buzzer = 1;
  107. }

  108. /***************
  109. * 函 数:led和蜂鸣器控制
  110. * 参 数:无
  111. * 返 回: 无
  112. ****************/

  113. void alarm()
  114. {
  115.     Tem = gettemp();
  116.     if(Tem > HNum)
  117.     {
  118.             led2 = 1;
  119.         led1 = 0;
  120.         led3 = 0;
  121.         buzzer = 0;    //蜂鸣器工作
  122.     }
  123.     else if(Tem < LNum)
  124.     {
  125.             led3 = 1;
  126.         led1 = 0;
  127.         led2 = 0;
  128.         buzzer = 0;
  129.     }
  130.     else
  131.     {
  132.         led1 = 1;
  133.         led2 = 0;
  134.         led3 = 0;
  135.         buzzer = 1;
  136.     }
  137. }
  138.        
复制代码
0.png

数码管显示温度及报警.rar

126.17 KB, 下载次数: 233, 下载积分: 黑币 -5

评分

参与人数 2黑币 +10 收起 理由
dingqinhong + 5 共享资料的黑币奖励!
q187418187 + 5 绝世好帖!

查看全部评分

回复

使用道具 举报

ID:108622 发表于 2016-10-12 18:21 来自手机 | 显示全部楼层
下载玩
回复

使用道具 举报

ID:151386 发表于 2016-12-1 12:27 | 显示全部楼层
太好了终于找到程序了,谢谢楼主
回复

使用道具 举报

ID:163941 发表于 2017-2-9 15:31 | 显示全部楼层
正好需要 ,谢谢楼主
回复

使用道具 举报

ID:163832 发表于 2017-2-9 17:03 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:184584 发表于 2017-4-19 20:17 | 显示全部楼层
首先,很感谢楼主的分享,我有一个问题就是这个仿真设置不了温度上下限,麻烦楼主给解释一下,谢谢!
回复

使用道具 举报

ID:47933 发表于 2017-4-19 23:08 | 显示全部楼层
本帖最后由 lyf898 于 2017-4-19 23:13 编辑
七个小矮人 发表于 2017-4-19 20:17
首先,很感谢楼主的分享,我有一个问题就是这个仿真设置不了温度上下限,麻烦楼主给解释一下,谢谢!

按第一个按键,当第一个字符为H时,按2或3键可调上限温度值,当第一个字符为L时,按2或3键增减下限值。按第四键显示当前温度
回复

使用道具 举报

ID:47933 发表于 2017-4-19 23:15 | 显示全部楼层
本帖最后由 lyf898 于 2017-4-19 23:16 编辑
七个小矮人 发表于 2017-4-19 20:17
首先,很感谢楼主的分享,我有一个问题就是这个仿真设置不了温度上下限,麻烦楼主给解释一下,谢谢!

仿真图片:
20170419231255.png
回复

使用道具 举报

ID:184584 发表于 2017-4-20 08:04 | 显示全部楼层
我知道,请问那个设置完高温和低温后,真正的HNUM和LNUM的值并没有发生实质性的改变呢!HNUM还是50,LNUM还是10
回复

使用道具 举报

ID:47933 发表于 2017-4-22 11:55 | 显示全部楼层
七个小矮人 发表于 2017-4-20 08:04
我知道,请问那个设置完高温和低温后,真正的HNUM和LNUM的值并没有发生实质性的改变呢!HNUM还是50,LNUM还 ...

你按设置键就相当于重新设置,初始值当然永远都不变了。
回复

使用道具 举报

ID:185661 发表于 2017-4-22 20:51 | 显示全部楼层
感谢分享,
回复

使用道具 举报

ID:192615 发表于 2017-5-1 07:03 | 显示全部楼层

正好需要 ,谢谢楼主
回复

使用道具 举报

ID:194844 发表于 2017-5-4 19:54 | 显示全部楼层
太好了终于找到程序了
回复

使用道具 举报

ID:214608 发表于 2017-6-28 16:55 | 显示全部楼层
这个没有确定的吗,那改完报警值后就不能返回显示温度了,那怎么改?
回复

使用道具 举报

ID:239333 发表于 2017-10-14 13:35 | 显示全部楼层
非常需要,非常感谢
回复

使用道具 举报

ID:255326 发表于 2017-11-29 18:53 | 显示全部楼层
怎么下载不了啊
回复

使用道具 举报

ID:257097 发表于 2017-12-5 23:13 | 显示全部楼层
非常需要,非常感谢好东西要学习
回复

使用道具 举报

ID:274121 发表于 2018-1-31 18:31 来自手机 | 显示全部楼层
这只是显示程序,主程序呢?
回复

使用道具 举报

ID:326198 发表于 2018-5-11 22:19 来自手机 | 显示全部楼层
很需要 谢谢
回复

使用道具 举报

ID:351214 发表于 2018-6-13 17:18 | 显示全部楼层
看看,学习一下
回复

使用道具 举报

ID:495323 发表于 2019-10-15 20:51 来自手机 | 显示全部楼层
仔细看了你的程序,上下限并没有保存到18自带的eeprom中。只是提取出温度
回复

使用道具 举报

ID:1109275 发表于 2024-1-16 10:51 | 显示全部楼层
为何第四个数码管显示不全
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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