|
本設(shè)計(jì)是基于單片機(jī)的數(shù)碼管顯示的溫度(使用的為DS18B20傳感器)和報(bào)警裝置,僅供單片機(jī)初學(xué)者借鑒學(xué)習(xí)!
單片機(jī)源程序如下:
- #include "main.h"
- #include "alarm.h"
- #include "display.h"
- #include "18b20.h"
- extern unsigned char idata flag; //定義外部變量,溫度正負(fù)標(biāo)志
- uint HNum = 50,LNum = 10; //報(bào)警溫度的高低值
- uint Tem;
- /***************
- * 函 數(shù):顯示溫度函數(shù)
- * 參 數(shù):無
- * 返 回: 無
- ****************/
- void ShowTem()
- {
- Tem = gettemp(); /* 讀取18b20溫度*/
- if(flag == 1) //顯示負(fù)溫度
- display(16,(Tem%100)/10,Tem%10,(Tem*10)/10);
- if(flag == 0) //顯示正溫度
- display(Tem/100,(Tem%100)/10,Tem%10,(Tem*10)/10);
- }
- /***************
- * 函 數(shù):設(shè)置低溫溫度報(bào)警值函數(shù)
- * 參 數(shù):無
- * 返 回: 無
- ****************/
- 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;
- }
- }
- }
- /***************
- * 函 數(shù):設(shè)置高溫溫度報(bào)警值函數(shù)
- * 參 數(shù):無
- * 返 回: 無
- ****************/
- 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(); //設(shè)置低溫報(bào)警溫度
- 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();
- }
- /***************
- * 函 數(shù):led和蜂鳴器初始化
- * 參 數(shù):無
- * 返 回: 無
- ****************/
- void initalarm()
- {
- led1 = 0;
- led2 = 0;
- led3 = 0;
- buzzer = 1;
- }
- /***************
- * 函 數(shù):led和蜂鳴器控制
- * 參 數(shù):無
- * 返 回: 無
- ****************/
- void alarm()
- {
- Tem = gettemp();
- if(Tem > HNum)
- {
- led2 = 1;
- led1 = 0;
- led3 = 0;
- buzzer = 0; //蜂鳴器工作
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
數(shù)碼管顯示溫度及報(bào)警(最新).zip
(151.87 KB, 下載次數(shù): 76)
2017-10-4 09:38 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|