freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)保溫箱的溫控系統(tǒng)研究畢業(yè)論文-資料下載頁

2025-08-18 14:57本頁面

【導(dǎo)讀】動(dòng)相應(yīng)的加熱或制冷負(fù)載,上下限溫度可通過按鍵設(shè)定等功能。量范圍0到攝氏度,精度為攝氏度,可見測(cè)量溫度的范圍廣,精度高的特點(diǎn)。報(bào)警值可設(shè)置范圍:最低上限報(bào)警值等于當(dāng)前下限報(bào)警值,最高下限報(bào)。電器工作時(shí),有指示燈可以指示相應(yīng)的加熱和制冷。

  

【正文】 ======================================================================== //====================================DS18B20================================================= //============================================================================================ /*****延時(shí)子程序 *****/ void Delay_DS18B20(int num) { while(num) 。 } 畢業(yè)論文 22 void delay(uint xms)//延時(shí)函數(shù),有參函數(shù) { uint x,y。 for(x=xms。x0。x) for(y=110。y0。y)。 } /*****初始化 DS18B20*****/ void Init_DS18B20(void) { unsigned char x=0。 DQ = 0。 //單片機(jī)將 DQ 拉低 Delay_DS18B20(80)。 //精確延時(shí),大于 480us DQ = 1。 //拉高總線 Delay_DS18B20(14)。 x = DQ。 //稍做延時(shí)后,如果 x=0 則初始化成功, x=1 則初始化失敗 Delay_DS18B20(20)。 } /*****讀一個(gè)字節(jié) *****/ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i) { DQ = 0。 // 給脈沖信號(hào) dat=1。 DQ = 1。 // 給脈沖信號(hào) if(DQ) dat|=0x80。 Delay_DS18B20(4)。 } return(dat)。 } /*****寫一個(gè)字節(jié) *****/ void WriteOneChar(unsigned char dat) { 畢業(yè)論文 23 unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。0x01。 Delay_DS18B20(5)。 DQ = 1。 dat=1。 } } /*****讀取溫度 *****/ unsigned int ReadTemperature(void) { unsigned char a=0。 unsigned char b=0。 unsigned int t=0。 float tt=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 //啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器 a=ReadOneChar()。 //讀低 8 位 t=8。 t=t|a。 tt=t*。 // t= tt*10+。 //放大 10 倍輸出并四舍五入 t= tt*10+。 return(t)。 } /*****讀取溫度 *****/ void check_wendu(void) { c=ReadTemperature()5。 //獲取溫度值并減去 DS18B20 的溫漂誤差 畢業(yè)論文 24 if(c1200) c=1200。 } /********液晶寫入指令函數(shù)與寫入數(shù)據(jù)函數(shù),以后可調(diào)用 **************/ void write_1602(uchar )//****液晶寫入指令函數(shù) **** { RS=0。//數(shù)據(jù) /指令選擇置為指令 delay(1)。 EN=1。//拉高使能端,為制造有效的下降沿做準(zhǔn)備 delay(1)。 EN=0。//en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令 } void write_1602dat(uchar dat)//***液晶寫入數(shù)據(jù)函數(shù) **** { RS=1。//數(shù)據(jù) /指令選擇置為數(shù)據(jù) // rw=0。 //讀寫選擇置為寫 LCD1602=dat。//送入數(shù)據(jù) delay(1)。 EN=1。 //en 置高電平,為制造下降沿做準(zhǔn)備 delay(1)。 EN=0。 //en 由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令 } void lcd_init()//***液晶初始化函數(shù) **** { uchar a。 write_1602(0x38)。//設(shè)置液晶工作模式,意思: 16*2 行顯示, 5*7 點(diǎn)陣, 8 位數(shù)據(jù) write_1602(0x0c)。//開顯示不顯示光標(biāo) write_1602(0x06)。//整屏不移動(dòng),光標(biāo)自動(dòng)右移 write_1602(0x01)。//清顯示 畢業(yè)論文 25 write_1602(0x80)。//日歷顯示固定符號(hào)從第一行第 1 個(gè)位置之后開始顯示 for(a=0。a16。a++) { write_1602dat(tab1[a])。//向液晶屏寫日歷顯示的固定符號(hào)部分 delay(3)。 } write_1602(0x80+0x40)。//時(shí)間顯示固定符號(hào)寫入位置,從第 2 個(gè)位置后開始顯示 for(a=0。a16。a++) { write_1602dat(tab2[a])。//寫顯示時(shí)間固定符號(hào),兩個(gè)冒號(hào) delay(3)。 } } void display() { if(Mode==0) { write_1602(0x80+8)。 write_1602dat(c/1000+0x30)。 write_1602dat((c%1000)/100+0x30)。 write_1602dat(((c%1000)%100)%10+0x30)。 write_1602(0x80+13)。 write_1602dat(0xdf)。 write_1602(0x80+0x40+3)。 write_1602dat(TH/10+0x30)。 write_1602dat(TH%10+0x30)。 write_1602dat(0xdf)。 write_1602(0x80+0x40+12)。 write_1602dat(TL%10+0x30)。 write_1602dat(0xdf)。 } } //===================================================================================== 畢業(yè)論文 26 /*****初始化定時(shí)器 0*****/ void InitTimer(void) { TL0=0xb0。 //50ms(晶振 12M) EA=1。 //全局中斷開關(guān) TR0=1。 ET0=1。 //開啟定時(shí)器 0 } void KEY() { //功能鍵 if(SET==0) { BUZZ=0。 delay(10)。 if(SET==0) { Mode++。 if(Mode==3) Mode=0。 BUZZ=1。 } while(SET==0) { if(Mode==0) { // write_1602(0x80+0x40+6)。 write_1602(0x0c)。 } else if(Mode==1) { write_1602(0x80+0x40+4)。 write_1602(0x0f)。 } 畢業(yè)論文 27 else { write_1602(0x80+0x40+13)。 write_1602(0x0f)。 } } } //增加 if(ADD==0amp。amp。Mode==1) { BUZZ=0。 delay(10)。 if(ADD==0) { TH++。 if(TH=99) TH=99。 write_1602dat(TH%10+0x30)。 write_1602(0x80+0x40+4)。 BUZZ=1。 } while(ADD==0)。 } //減少 if(DEC==0amp。amp。Mode==1) { BUZZ=0。 delay(10)。 if(DEC==0) { TH。 if(TH==TL) TH=TL+1。 write_1602(0x80+0x40+3)。 write_1602dat(TH/10+0x30)。 畢業(yè)論文 28 BUZZ=1。 } while(DEC==0)。 } if(ADD==0amp。amp。Mode==2) { BUZZ=0。 delay(10)。 if(ADD==0) { TL++。 if(TL==TH) TL=TH1。 write_1602(0x80+0x40+12)。 write_1602dat(TL%10+0x30)。 write_1602(0x80+0x40+13)。 BUZZ=1。 } while(ADD==0)。 } //減少 if(DEC==0amp。amp。Mode==2) { BUZZ=0。 if(TL=0) TL=0。 write_1602(0x80+0x40+12)。 write_1602dat(TL/10+0x30)。 write_1602dat(TL%10+0x30)。 write_1602(0x80+0x40+13)。 BUZZ=1。 } while(DEC==0)。 } } 畢業(yè)論文 29 /*****報(bào)警子程序 *****/ void Alarm() { if(x=10){beep_st=~beep_st。x=0。} if(Mode==0) { if((c/10)=TH) { ALAM=0。 BUZZ=0。 else BUZZ=1。 } else if((c/10)TL) { ALAM1=0。 ALAM=1。 BUZZ=1。 } else { ALAM1=1。 } } else { BUZZ=1。 ALAM=1。 ALAM1=1。 } } /*****主函數(shù) *****/ void main(void) { 畢業(yè)論文 30 uint z。 delay(1)。 InitTimer()。 //初始化定時(shí)器 for(z=0。z100。z++) { check_wendu()。 delay(1)。 } while(1) { display()。 KEY()。 Alarm()。 check_wendu()。 } } /*****定時(shí)器 0 中斷服務(wù)程序 *****/ void timer0(void) interrupt 1 { TH0=0x3c。 TL0=0xb0。 x++。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1