本设计是基于单片机的数码管显示的温度(使用的为DS18B20传感器)和报警装置,仅供单片机初学者借鉴学习!
单片机源程序如下:
- #include "main.h"
- #include "alarm.h"
- #include "display.h"
- #include "18b20.h"
- extern unsigned char idata flag; //定义外部变量,温度正负标志
- uint HNum = 50,LNum = 10; //报警温度的高低值
- uint Tem;
- /***************
- * 函 数:显示温度函数
- * 参 数:无
- * 返 回: 无
- ****************/
- void ShowTem()
- {
- Tem = gettemp(); /* 读取18b20温度*/
- if(flag == 1) //显示负温度
- display(16,(Tem%100)/10,Tem%10,(Tem*10)/10);
- if(flag == 0) //显示正温度
- display(Tem/100,(Tem%100)/10,Tem%10,(Tem*10)/10);
- }
- /***************
- * 函 数:设置低温温度报警值函数
- * 参 数:无
- * 返 回: 无
- ****************/
- void SetLowTem()
- {
- while(1)
- {
- display(18,(LNum%100)/10,LNum%10,(LNum*10)/10);
- if(k2 == 0)
- delay_ms(50); //按键消抖
- if(k2 == 0)
- { while(!k2); //等待按键释放
- LNum++;
- }
- if(k3 == 0)
- delay_ms(50); //按键消抖
- if(k3 == 0)
- { while(!k3); //等待按键释放
- LNum--;
- }
- if(k4 == 0)
- delay_ms(50); //按键消抖
- if(k4 == 0)
- { while(!k4); //等待按键释放
- break;
- }
- }
- }
- /***************
- * 函 数:设置高温温度报警值函数
- * 参 数:无
- * 返 回: 无
- ****************/
- void SetHighTem()
- {
- if(k1 == 0) //按键消抖
- delay_ms(10);
- if(k1 == 0)
- {
- while(!k1); //等待按键释放
- while(1)
- {
- display(17,(HNum%100)/10,HNum%10,(HNum*10)/10);
- if(k1 == 0)
- delay_ms(50); //按键消抖
- if(k1 == 0)
- { while(!k1); //等待按键释放
- SetLowTem(); //设置低温报警温度
- break;
- }
- if(k2 == 0)
- delay_ms(50); //按键消抖
- if(k2 == 0)
- { while(!k2); //等待按键释放
- HNum++;
- }
- if(k3 == 0)
- delay_ms(50); //按键消抖
- if(k3 == 0)
- { while(!k3); //等待按键释放
- HNum--;
- }
- if(k4 == 0)
- delay_ms(50); //按键消抖
- if(k4 == 0)
- { while(!k4); //等待按键释放
- break;
- }
- }
- }
- ShowTem();
- }
- /***************
- * 函 数:led和蜂鸣器初始化
- * 参 数:无
- * 返 回: 无
- ****************/
- void initalarm()
- {
- led1 = 0;
- led2 = 0;
- led3 = 0;
- buzzer = 1;
- }
- /***************
- * 函 数:led和蜂鸣器控制
- * 参 数:无
- * 返 回: 无
- ****************/
- void alarm()
- {
- Tem = gettemp();
- if(Tem > HNum)
- {
- led2 = 1;
- led1 = 0;
- led3 = 0;
- buzzer = 0; //蜂鸣器工作
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数码管显示温度及报警(最新).zip
(151.87 KB, 下载次数: 76)
|