|
|
/********************************************************************
* 程序名; 基于DS18B20的測溫系統
* 功 能: 實時測量溫度,超過上下限報警,報警溫度可手動調整。K1是用來
* 進入上下限調節模式的,當按一下K1進入上限調節模式,再按一下進入下限
* 調節模式。在正常模式下,按一下K2進入查看上限溫度模式,顯示1s左右自動
* 退出;按一下K3進入查看下限溫度模式,顯示1s左右自動退出;按一下K4消除
* 按鍵音,再按一下啟動按鍵音。在調節上下限溫度模式下,K2是實現加1功能,
* K1是實現減1功能,K3是用來設定上下限溫度正負的。
* 編程者: ZPZ
* 編程時間:2009/10/2
*********************************************************************/
#include<AT89X52.h> //將AT89X52.h頭文件包含到主程序
#include<intrins.h> //將intrins.h頭文件包含到主程序(調用其中的_nop_()空操作函數延時)
#define uint unsigned int //變量類型宏定義,用uint表示無符號整形(16位)
#define uchar unsigned char //變量類型宏定義,用uchar表示無符號字符型(8位)
uchar max=0x00,min=0x00; //max是上限報警溫度,min是下限報警溫度
bit s=0; //s是調整上下限溫度時溫度閃爍的標志位,s=0不顯示200ms,s=1顯示1s左右
bit s1=0; //s1標志位用于上下限查看時的顯示
void display1(uint z); //聲明display1()函數(display.h頭文件中的函數,ds18b20.h要用應先聲明)
#include"ds18b20.h" //將ds18b20.h頭文件包含到主程序
#include"keyscan.h" //將keyscan.h頭文件包含到主程序
#include"display.h" //將display.h頭文件包含到主程序
/***********************主函數************************/
void main()
{
beer=1; //關閉蜂鳴器
led=1; //關閉LED燈
timer1_init(0); //初始化定時器1(未啟動定時器1)
get_temperature(1); //首次啟動DS18B20獲取溫度(DS18B20上點后自動將EEPROM中的上下限溫度復制到TH和TL寄存器)
while(1) //主循環
{
keyscan(); //按鍵掃面函數
get_temperature(0); //獲取溫度函數
//keyscan(); //按鍵掃面函數
display(temp,temp_d*0.625);//顯示函數
alarm(); //報警函數
//keyscan(); //按鍵掃面函數
}
}
|
|