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

正文內(nèi)容

基于單片機的數(shù)字溫度計及其報警系統(tǒng)畢業(yè)論文-閱讀頁

2025-03-18 10:23本頁面
  

【正文】 進行測量, 然后進行顯示,下一步對溫度進行處理,對超出溫度范圍的情況進行控制及報警處理,然后掃描鍵盤,如果掃描到按鍵 1按下將進入溫度設(shè)置模式,通過按鍵 1, 2, 3對上下限溫度進行調(diào)節(jié),設(shè)置完成后把上限值和下限值儲存到 EEPROM的相應(yīng)地址中。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 15 如下為系統(tǒng)主程序: void main() { uint j。 delayms(10)。 //讀出保存的上限數(shù)據(jù) TMOD=0x01。 EA=1。 TL0=(65536250)%256。 //先關(guān)閉定時器 while(1) { tempchange()。 //顯示溫度 dis_temp(temp)。 //獲取溫度 dis_temp(temp)。 deal()。 while(j) { dis_temp(temp)。 //鍵盤掃描 } } } 湖南科技大學(xué)本科生畢業(yè)設(shè)計 16 測溫程序設(shè)計 DS18B20與單片機通信采用的是單總線技術(shù),它采用單條信號線,既可傳輸時鐘,又可傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而這種單總線技術(shù)具有線路簡單,硬件開銷少,成本低廉,便于總線擴展和維護等優(yōu)點。C,故將測得的數(shù)據(jù)乘以 報警溫度設(shè)置及儲存設(shè)計 溫度設(shè)置采用三按鍵設(shè)置,利用按鍵 1轉(zhuǎn)換模式,按鍵 2和按鍵 3分別進行加和減。將上下限值儲存在 EEPROM中然后退出設(shè)置模式。流程圖如圖 43: 圖 43 按鍵設(shè)置流程圖 溫度儲存程序 EEPROM采用 I2C總線與單片機進行通信 I2C 總線是由飛利浦公司推出,是近年來微電子通信控制領(lǐng)域廣泛采用的一種新 型總線標準,具有接口線少、控制簡單、器件封裝形式小、通信速率較高等優(yōu)點。 在 CPU 與 IC 之間, IC 與 IC 之間都可以進行雙向通信,最高傳送速率為 400kbps,各種被控器件均并聯(lián)在總線上,每個器件都有唯一的地址。如圖 44所示, SDA 信號發(fā)生由高到低的轉(zhuǎn)換,同時 SCL 信號保持高,表示起始條件。如下圖所 示, SDA 信號發(fā)生由低到高的轉(zhuǎn)換,同時 SCL 信號保持高,表示終止條件。 圖 44 起始和停止條件 典型的 I2C 字節(jié)寫入周期的操作過程是:主執(zhí)行設(shè)備用一個起始條件啟動傳輸,接著發(fā)送設(shè)備地址,該地址是要寫入數(shù)據(jù)字節(jié)的設(shè)備的地址,以高位在前、低位在后的方式發(fā)送。在發(fā)送接收設(shè)備的地址后,主執(zhí)行設(shè)備發(fā)送一個 0,接收設(shè)備在第一個 ACK 時鐘周期使SDA 信號線保持低,確認收到該地址。接收設(shè)備在第二個 ACK 時鐘周期使 SDA 信號線保持低,確認收到數(shù)據(jù)。 1和 0的發(fā)送同上。 圖 45 I2C總線的數(shù)據(jù)傳輸 EEPROM指定地址中寫入一字節(jié)數(shù)據(jù)的程序: void write_add(uchar address,uchar date) 湖南科技大學(xué)本科生畢業(yè)設(shè)計 19 { start()。 //寫入 0xa0 respons()。 //寫入地址 respons()。 //寫入數(shù)據(jù) respons()。 //停止信號 } EEPROM指定地址中讀出一字節(jié)數(shù)據(jù)的程序: uchar read_add(uchar address) { uchar date。 //開始信號 write_byte(0xa0)。 //應(yīng)答 write_byte(address)。 start()。 //寫入 0x01 respons()。 //將讀出的一字節(jié)數(shù)據(jù)賦予 date stop()。 //將 date作為返回值 } 溫度報警及控制設(shè)計設(shè)計 本系統(tǒng)除了報警功能還設(shè)計了相應(yīng)的溫度控制功能,溫度超過一定范圍后先進行溫度控制,若控制后溫度繼續(xù)惡化將 啟動報警功能。如果溫度低于下限溫度將點亮 LED以及低頻報警,溫度高于下限溫度而低于下限溫度加 3176。C 時只開風扇,其他情況關(guān)閉風扇和LED,并關(guān)閉定時器不予報警。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 21 第五章 系統(tǒng)測試 模塊測試 溫度采集模塊的測試:調(diào)節(jié)溫度變化,當溫度變化時,數(shù)碼管同步顯示當前溫度。 按鍵測試:按鍵分長按和短按兩種,短按時數(shù)據(jù)變動一次,長按時數(shù)據(jù)不停變動,并且不會因抖動而發(fā)生誤判。 溫度報警及控制模塊的測試:通過按鍵將溫度上下限設(shè)置完成,調(diào)節(jié)溫度變化,當溫度超出設(shè)置范圍時觀察蜂鳴器及風扇和 LED 的工作情況,結(jié)果說明該模塊工作正常。 在測溫過程中數(shù)碼管實時顯示當前的溫度。C 就達到設(shè)定上下限值時進行相應(yīng)溫度控制處理,達到上下限值后,會發(fā)出相應(yīng)的報警聲。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 22 第六章 結(jié)論 本設(shè)計是基于 51 單片機控制的溫度 報警及 控制系統(tǒng), 系統(tǒng)采 用 DS18SSTC89C52 單片機 、數(shù)碼管顯示及 AT24C02 存儲 的硬件電路完成對溫度的實時顯示,利用 DS18S20 與單片機連接由軟件與硬件電路配合來實現(xiàn)對 LED 和小風扇的實時控制及超出設(shè)定的上下限溫度的報警系統(tǒng)。在今后要通過不斷的強化自身的實踐動手能力,才能用理論來指導(dǎo)實踐,通過實 踐來進一步深入理解理論。此外該系統(tǒng)所用器件均為常規(guī)元件,有 較高的利用 價值。在此,特別感謝我的指導(dǎo)導(dǎo)師聶老師,幾個月來他對我的畢業(yè)設(shè)計的指導(dǎo)、要求和鼓勵,為我的論文的順利完成指出了很好的方向。 sbit scl=P2^6。 //溫度傳感器信號線 sbit buzzer=P2^4。 sbit warm=P2^2。 sbit KEY2=P3^1。 /**********定義全局變量 ***********/ uint temp。 //浮點型溫度數(shù)據(jù) uchar shang。 //下限報警溫度乘 10 后的數(shù)據(jù) uint buz。 //定時器計數(shù)值 uint key1=0。 uint key3=0。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 28 /**********帶小數(shù)點的數(shù)碼管碼 ***********/ uchar code tabler[]= { 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef }。 for(x=z。x) for(y=110。y)。} /***********定時器工作函數(shù) ***********/ void timer() interrupt 1 { TH0=(65536250)/256。 tent++。 buzzer=~buzzer。 delay()。 delay()。 delay()。 delay()。 delay()。 delay()。 scl=1。 while((sda==1)amp。(i250))i++。 delay()。 delay()。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 30 delay()。 temp=date。i8。 scl=0。 sda=CY。 scl=1。 } scl=0。 sda=1。 } /***********從 EEPROM 讀一個字節(jié) ***********/ uchar read_byte() { uchar i,k。 delay()。 delay()。i8。 delay()。 scl=0。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 31 } return k。 write_byte(0xa0)。 write_byte(address)。 write_byte(date)。 stop()。 start()。 respons()。 respons()。 write_byte(0xa1)。 date=read_byte()。 return date。 i=t/100。 P1=0x04。 i=(t%100)/10。 P1=0x02。 i=t%10。 P1=0x01。 } /***********18B20 復(fù)位,初始化函數(shù) ***********/ void dsreset(void) { uint i。 i=103。 ds=1。 while(i0)i。 湖南科技大學(xué)本科生畢業(yè)設(shè)計 33 bit dat。i++。i++。 dat=ds。while(i0)i。 } /***********讀 1 個字節(jié) ***********/ uchar tempread(void) { uchar c,d,dat。 for(c=1。c++) { d=tempreadbit()。 //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在 DAT 里 } return(dat)。 uchar j。 for(j=1。j++) { testb=datamp。 dat=dat1。 i++。 ds=1。while(i0)i。 //寫 0 i=8。 ds=1。i++。 dsreset()。 tempwritebyte(0xcc)。 // 寫溫度轉(zhuǎn)換指令 } /***********讀取寄存器中存儲的溫度數(shù)據(jù) ***********/ uint get_temp() { uchar a,b。 // tempchange()。 delayms(1)。 tempwritebyte(0xbe)。 //讀低 8 位 b=tempread()。 temp=8。 f_temp=temp*。 f_temp=f_temp+。 //乘以 10 表示小數(shù)點后面只取 1 位 return temp。 //把擴大了 10 倍的溫度值縮小 10 倍從而與上下限溫度對比 if(ixia) //溫度低于下限將報警并加熱 { TR0=1。 //蜂鳴器低頻 feng=1。 //點亮 LED } else if((i(xia+1))amp。(i(xia+3))) { TR0=0。 //關(guān)閉定時器 0 feng=1。 //點亮 LED } else if(i(shang3)amp。(i(shang1))) { TR0=0。 //關(guān)閉定時器 0 feng=0。 //關(guān) LED } else if(ishang) { TR0=1。 //蜂鳴器高頻 feng=0。 //關(guān) LED } else if((i(xia+3))amp。(i(shang3))) { 湖南科技大學(xué)本科生畢業(yè)設(shè)計 36 TR0=0。 //關(guān)閉定時器 0 feng=1。 //關(guān) LED } } /***********上下線溫度設(shè)置 ***********/ void set() { uint i=10。 while(i)dis_temp(xia*10)。 //顯示下限溫度 if(KEY1==0) //同時掃描 KEY1, KEY2, KEY3 鍵 { key1++。 while(i)dis_temp(xia*10)。 i=10。//用顯示下限溫度延時去抖 } if(KEY3==0) //如果按 KEY3 則下限溫度減 1 { xia。 while(i)dis_temp(xia*10)。 if(KEY1==0) { key1++。 while(i)dis_temp(shang*10)。 i=10。 } if(KEY3==0) { shang。 while(i)dis_temp(shang*10)。 if(key12)key1=0。 //將上下線溫
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1