登录|立即注册|使用QQ帐号登录
论坛 > 51单片机
发帖|
看4811|回4|收藏
楼主 ID:184584 只看他
2017-10-4 09:38
本设计是基于单片机的数码管显示的温度(使用的为DS18B20传感器)和报警装置,仅供单片机初学者借鉴学习!

单片机源程序如下:

代码:

  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.   if(k1 == 0)                    //按键消抖
  59.       delay_ms(10);
  60.       if(k1 == 0)
  61.       {
  62.              while(!k1);             //等待按键释放
  63.           while(1)
  64.           {
  65.                      display(17,(HNum%100)/10,HNum%10,(HNum*10)/10);
  66.               if(k1 == 0)
  67.                  delay_ms(50);          //按键消抖
  68.                  if(k1 == 0)
  69.                  {   while(!k1);   //等待按键释放                     
  70.                        SetLowTem();   //设置低温报警温度
  71.                        break;
  72.                  }
  73.               if(k2 == 0)
  74.                  delay_ms(50);          //按键消抖
  75.                  if(k2 == 0)
  76.                  {   while(!k2);   //等待按键释放
  77.                      HNum++;
  78.                  }
  79.               if(k3 == 0)
  80.                  delay_ms(50);          //按键消抖
  81.                  if(k3 == 0)
  82.                  {    while(!k3);           //等待按键释放
  83.                       HNum--;
  84.                  }
  85.               if(k4 == 0)
  86.                  delay_ms(50);          //按键消抖
  87.                  if(k4 == 0)
  88.                  {  while(!k4);          //等待按键释放
  89.                     break;
  90.                  }   
  91.           }
  92.       }          
  93.       ShowTem();
  94. }
  95. /***************
  96. * 函 数:led和蜂鸣器初始化
  97. * 参 数:无
  98. * 返 回: 无
  99. ****************/

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

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

  112. void alarm()
  113. {
  114.     Tem = gettemp();
  115.     if(Tem > HNum)
  116.     {
  117.             led2 = 1;
  118.         led1 = 0;
  119.         led3 = 0;
  120.         buzzer = 0;    //蜂鸣器工作
  121. ……………………

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

所有资料51hei提供下载:
数码管显示温度及报警(最新).zip (151.87 KB)
(下载次数: 76, 2017-10-4 09:38 上传)

下载积分: 黑币 -5




沙发 ID:362073 只看他
2018-6-30 00:23
令人豁然开朗
板凳 ID:413948 只看他
2018-10-23 21:20
不错,懂了,懂了
地板 ID:417167 只看他
2018-10-29 14:07
参考一下
5# ID:341833 只看他
2019-12-8 15:25
好东东!顶!

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版