資源描述:
《基于51的溫度控制系統(tǒng)設(shè)計(jì)C語言源程序.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、/*********************************************************//*程序名稱:溫度監(jiān)控系統(tǒng)*//*程序功能:利用89C52單片機(jī)和DS18B20溫度傳感器實(shí)現(xiàn)環(huán)境*//*溫度的實(shí)時測量和高、低溫報警*//*程序版本:v1.0*//*作者:*//*編寫時間:*//*********************************************************/#include#include//
2、含_nop_()延時函數(shù)//定義數(shù)據(jù)類型#defineucharunsignedchar#defineuintunsignedint//定義端口#defineLEDP0//段碼輸出口sbitDQ=P3^2;//傳感器數(shù)據(jù)口sbitSMG_q=P1^0;//定義數(shù)碼管陽級控制腳(千位)sbitSMG_b=P1^1;//定義數(shù)碼管陽級控制腳(百位)sbitSMG_s=P1^2;//定義數(shù)碼管陽級控制腳(十位)sbitSMG_g=P1^3;//定義數(shù)碼管陽級控制腳(個位)sbitbuzzer=P1^5;//蜂
3、鳴器sbitled_low=P2^6;//低溫指示燈sbitled_high=P2^7;//高溫指示燈sbitled_ok=P2^5;//溫度正常指示燈sbitled_work=P2^4;//工作指示燈sbitset=P3^7;//設(shè)置按鍵sbitadd=P3^4;//加一按鍵sbitdec=P3^5;//減一按鍵//定義變量和常量intcount=0;//按鍵次數(shù)寄存器inth;//主函數(shù)用循環(huán)計(jì)數(shù)器uinttemp;//溫度值ucharr;//溫度值整數(shù)形式ucharhigh=35,low=20;/
4、/上下限初值//共陽LED段碼表"0""1""2""3""4""5""6""7""8""9""不亮""-"ucharcodeLED_code[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcodeLED_code1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04
5、,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//小數(shù)部分轉(zhuǎn)換碼表uchardatatemp_data[2]={0x00,0x00};//存儲從傳感器讀出的溫度值uchardatadp[5]={0x00,0x00,0x00,0x00,0x00};//顯示單元數(shù)據(jù),共4個數(shù)據(jù)和一個運(yùn)算//子函數(shù)聲明voidds_reset();//DS18B20初始化函數(shù)voidds_write(uchards_wrdata);//DS18B20寫數(shù)據(jù)函數(shù)uchards_r
6、ead();//DS18B20讀數(shù)據(jù)函數(shù)read_temp();//讀取溫度函數(shù)voidchange_temp(uinttem);//溫度數(shù)據(jù)處理voidxianshi(inthorl);//溫度顯示轉(zhuǎn)換voiddisplay();//數(shù)碼管顯示函數(shù)voidkeyscan();//按鍵查詢函數(shù)voidwarn_led();//超限報警voiddelay(uintt);//延時函數(shù),單次25us/********************主函數(shù)*********************/voidmain()
7、{LED=0x00;//初始化顯示端口led1=0;led2=0;led3=0;led4=0;for(h=0;h<4;h++){dp[h]=8;}while(1)//循環(huán)執(zhí)行顯示和溫度讀取{uchari;for(i=0;i<200;i++){warn_led();//指示燈控制display();//顯示keyscan();//按鍵掃描}change_temp(read_temp());//溫度數(shù)據(jù)讀取和處理}}/*********************************************
8、**//*函數(shù)名稱:ds_reset()*//*函數(shù)功能:DS18B20初始化*//*入口參數(shù):無*//*輸出參數(shù):無*//*調(diào)用函數(shù):delay();_nop_();*//*全局變量:無*//*局部變量:presence*//***********************************************/voidds_reset(void){charpresence=1;while(presence){while(pres