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

正文內(nèi)容

單片機溫度控制及報警系統(tǒng)的設(shè)計-資料下載頁

2024-12-04 01:04本頁面

【導讀】種最常見的過程變量。其中,溫度是一個非常重要的過程變量。爐、熱處理爐、反應爐和鍋爐的溫度進行控制。然而,用常規(guī)的控制方法,潛力。是有限的,難以滿足較高的性能要求。采用單片機來對它們進行控制不僅具有控。而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。生產(chǎn)中經(jīng)常會遇到的控制問題。在人類的生活環(huán)境中,溫度扮演著極其重要的角。提高了產(chǎn)品的功能和質(zhì)量,又降低了成本,簡化了設(shè)計。部分只是由人為的寫入程序來完成。長期使用也不會擔心精度達不到了。所以,它的魔力不僅是在現(xiàn)在,在將來將會。據(jù)統(tǒng)計,我國的單片機年容量已達1—3億片,且每年以大約16%的速度增長,但相對于世界市場我國的占有率還不到1%。與溫度密切相關(guān),因此溫度控制是生產(chǎn)自動化的重要任務(wù)。用DS18B20、89C52單片機及LED的硬件電路完成對溫度的實時檢測及顯示,通常稱之為內(nèi)部程序存儲器或內(nèi)部ROM。出端,其頻率范圍上限為24MHz。在任何情況下,振蕩器始終驅(qū)動內(nèi)部時鐘發(fā)生器向主機提供時鐘信號。

  

【正文】 。 static char line1[]= . ^C 。 /* 延時 t 毫秒 */ void delay(uint t){ uint i。 while(t) {/* 對于 時鐘,約延時 1ms */ for (i=0。i125。i++) {} } } /* 產(chǎn)生復位脈沖初始化 DS18B20 */ /*主程序,讀取的溫度值最終存放在tplsb 和 tpmsb 變量中。 tplsb其中低 4位為二進制的“小數(shù)”部分; tpmsb 其中高 5 位為符號位。 真正通過數(shù)碼管輸出時,需要進行到十進 制有符號實數(shù)(包括小數(shù)部分)的轉(zhuǎn)換。 */ void main(void) { char code str1[]= zhong guo ! 。 char code str2[]= 20211115 。 unsigned char i。 DelayL ()。 InitLcd ()。 DelayL ()。 ShowString (0,str1)。 ShowString (1,str2)。 for (i=0。i15。i++) Delay100ms()。 InitInterupt()。 do { line1[0]=0x20。 delay(1)。 // 延時 1ms convert()。 // 啟動溫度轉(zhuǎn)換,需要 750ms delay(1000)。 // 延時 1s RdTemp()。 line1[0]=0x20。 i=tpmsb。 if(i99) { line1[0]=0x31。 i=100。 } line1[1]=i/10+0x30。 line1[2]=i%10+0x30。 line1[4]=tplsb+0x30。 line1[8]=alarm1/10+0x30。 line1[9]=alarm1%10+0x30。 line1[10]=39。^39。 line1[11]=39。C39。 line1[12]=alarm2/10+0x30。 line1[13]=alarm2%10+0x30。 line1[14]=39。^39。 line1[15]=39。C39。 ShowString (0,line1)。 Delay100ms()。 check()。 if(!MODEamp。amp。!UPamp。amp。DOWN) alarm1=alarm10x01。 else if(!MODEamp。amp。UPamp。amp。!DOWN) alarm1=alarm1+0x01。 else if(MODEamp。amp。!UPamp。amp。DOWN) alarm2=alarm2+0x01。 else if(MODEamp。amp。UPamp。amp。!DOWN) alarm2=alarm20x01。 else { alarm1=alarm1。 alarm2=alarm2。 } } // 讀取溫度 } while(1)。 單片機溫度控制及報警系統(tǒng)的設(shè)計:軟件設(shè)計 33 } void TxReset(void) {uint i。 DQ = 0。 /* 拉低約 900us */ i = 100。 while (i0) i。 DQ = 1。 // 產(chǎn)生上升沿 i = 4。 while (i0) i。} /* 等待應答脈沖 */ void RxWait(void) {uint i。 while(DQ)。 while(~DQ)。 // 檢測到應答脈沖 i = 4。 while (i0) i。} /* 讀取數(shù)據(jù)的一位,滿足讀時隙要求 */ bit RdBit(void) {uint i。 bit b。 DQ = 0。 i++。 DQ = 1。 i++。i++。 // 延時 15us 以上,讀時隙下降沿后 15us, DS18B20 輸出數(shù)據(jù)才有效 b = DQ。 i = 8。 while(i0) i。 return (b)。} /* 讀取數(shù)據(jù)的一個字節(jié) */ uchar RdByte(void) {uchar i,j,b。 b = 0。 for (i=1。i=8。i++) {j = RdBit()。 b = (j7)|(b1)。} return(b)。} /* 寫數(shù)據(jù)的一個字節(jié),滿足寫 1和寫0的時隙要求 */ void WrByte(uchar b) { uint i。 uchar j。 bit btmp。 for(j=1。j=8。j++) { btmp = bamp。0x01。 b = b1。 // 取下一位(由低位向高位) if (btmp) {/* 寫 1 */ DQ = 0。 i++。i++。 // 延時,使得15us 以內(nèi)拉高 DQ = 1。 i = 8。 while(i0) i。 // 整個寫 1 時隙不低于 60us } else { DQ = 0。 i = 8。 while(i0) i。 // 保持低在 60us 到 120us 之間 DQ = 1。 i++。 i++。 } } } //溫度轉(zhuǎn)化模塊 void convert(void) { TxReset()。 // 產(chǎn)生復位脈沖,初始化 DS18B20 RxWait()。 // 等待DS18B20 給出應答脈沖 福州大學工程技術(shù)學院畢業(yè)實踐報告 34 delay(1)。 // 延時 WrByte(0xcc)。 // skip rom 命令 WrByte(0x44)。 // convert T 命令 } //讀取溫度值模塊 void RdTemp(void) {TxReset()。 // 產(chǎn)生復位脈沖,初始化 DS18B20 RxWait()。 // 等待DS18B20 給出應答脈沖 delay(1)。 // 延時 WrByte(0xcc)。 // skip rom 命令 WrByte(0xbe)。 // read scratchpad 命令 tplsb = RdByte()。 // 溫度值低位字節(jié)(其中低 4 位為二進制的 小數(shù) 部分) tpmsb = RdByte()。 // 高位值高位字節(jié)(其中高 5 位為符號位) tpmsb=tpmsb4。 tpmsb+=(tplsbamp。0xF0)4。tplsb=(tplsbamp。0x08)?5:0。} //LCD 驅(qū)動子程序模塊 void DelayL () {unsigned char i,j。 i=0xF0。 j=0xFF。 while (i) while (j)。 } void DelayS () { unsigned char i。 i=0x1F。 while (i)。} void WriteCommand (unsigned char c) { DelayS()。 P0=c。 EN=0。 RS=0。 RW=0。 _nop_ ()。 EN=1。 EN=0。} void WriteData (unsigned char c) { DelayS()。 P0=c。 EN=0。 RS=1。 RW=0。 _nop_ ()。 EN=1。 EN=0。 RS=0。 } void ShowChar (unsigned char pos,unsigned char c) { unsigned char p。 if (pos=0x10) p=pos+0xB0。 else p=pos+0x80。 WriteCommand (p)。 WriteData(c)。 } void ShowString (unsigned char line,char *ptr) { unsigned char l,i。 l=line4。 for (i=0。i16。i++) ShowChar (l++,* (ptr+i))。 } void InitLcd() { DelayL ()。 P0 = 0。 WriteCommand(0x38)。 DelayS ()。 單片機溫度控制及報警系統(tǒng)的設(shè)計:軟件設(shè)計 35 WriteCommand(0x38)。 DelayS ()。 WriteCommand(0x38)。 DelayS ()。 WriteCommand(0x06)。 WriteCommand(0x0C)。 WriteCommand(0x01)。 WriteCommand(0x80)。 } void InitInterupt() { TMOD=0x21。 TL1=0xFD。 TH1=0xFD。 PX0=1。 EA=1。 ES=1。 PCON=0。 TR1=1。 SCON=0x50。 TL0=0x00。 TH0=0x4C。 ET0=1。 EX0=1。 IT0=1。 } void Delay100ms() { unsigned char i,j,k。 for (i=0。i8。i++) for (j=0。j25。j++) for (k=0。kk++)。 } void check(void) { if(tpmsb=alarm1) LED1=0。 else if((tpmsb=alarm2)amp。amp。(tpmsb=alarm1)) { LED1=1。 LED2=0。} else {LED1=1。 LED2=1。 }}
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1