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

正文內(nèi)容

畢業(yè)論文-基于單片機的溫度報警器設(shè)計與實現(xiàn)【完(編輯修改稿)

2025-07-09 03:29 本頁面
 

【文章內(nèi)容簡介】 拉,上拉開啟時間最大為 10us。采用寄生電源供電方式時 VDD 端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的??紤]到實際應(yīng)用中寄生電源供電方式適應(yīng)能力差且易損壞,此處采用電源供電方式, I/O 口接單片機的 口。 DS18B20 的測溫原理是這這樣的 ,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很 小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器 1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器 2的脈沖輸入。器件中還有一個計數(shù)門,當(dāng)計數(shù)門打開時, DS18B20 就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將- 55℃所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器 溫度寄存器中,計數(shù)器 1 和溫度寄存器被預(yù)置在- 55℃所對應(yīng)的一個基數(shù)值。 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 9 / 28 減法計數(shù)器 1 對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器 1 的預(yù)置值減到 0 時,溫 度寄存器的值將加 1,減法計數(shù)器 1 的預(yù)置將重新被裝入,減法計數(shù)器 1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到 0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。 AT89C51 的最小應(yīng)用系統(tǒng) AT89C51 是片內(nèi)有程序存儲器的單片機,要構(gòu)成最小應(yīng)用系統(tǒng)時只要將單片機接上外部的晶體或時鐘電路和復(fù)位電路即可,如圖 所示。這樣構(gòu)成的最小系統(tǒng)簡單可靠 ,其特點是沒有外部擴展,有可供用戶使用的大量的 I∕ O 線。 圖 AT89C51 單片機構(gòu)成的最小系 程序設(shè)計 主程序 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 10 / 28 發(fā) DS18B20 復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束 圖 讀溫度子程序 讀出溫度子程序的主要功能是讀出 RAM 中的 9 字節(jié),在讀出時 需進行 CRC 校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 8 示 圖 溫度轉(zhuǎn)換流程圖 初始化 調(diào)用顯示子程序 1S 到? 初次上電 讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新 發(fā)溫度轉(zhuǎn)換開始命令 N Y N Y Y 發(fā) DS18B20 復(fù)位命令 發(fā)跳過 ROM 命令 發(fā)讀取溫度命令 讀取操作, CRC 校驗 9 字節(jié)完? CRC 校驗正?確? 移入溫度 暫存器 結(jié)束 N N Y 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 11 / 28 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用 12 位分辨率時轉(zhuǎn)換時間約為 750ms,在本程序設(shè)計中采用 1s 顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖 所示 計算溫度子程序 計算溫度子程序?qū)?RAM中讀取值進行 BCD碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖 圖 314 計算溫度流程圖圖 315 顯示數(shù)據(jù)刷新流程圖 程序 include include include char count,mi,fe,shz。 sbit g1=P2^7。 sbit g2=P2^6。 開始 溫度零下 ? 溫度值 取補 碼置“ — ”標志 計算小數(shù)位溫度 BCD 值 計算整數(shù)位溫度 BCD 值 結(jié)束 置“ +”標志 N Y 溫度數(shù)據(jù)移入顯示寄存器 十位數(shù) 0? 百位數(shù) 0? 十位數(shù)顯示符號百位數(shù)不顯示 百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結(jié)束 N N Y Y 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 12 / 28 sbit g3=P2^5。 sbit g4=P2^4。 sbit lv=P2^2。 sbit jin=P3^3。 sbit jia=P3^4。 sbit jian=P3^5。 uint shiwen。 uint zuigao=350。 int zuidi=300。 uchar flag=0。 //記錄第一個按鍵次數(shù) flag=0 正常 1 最高 2 最低 uchar flag2=0。 //記錄第四個按鍵次數(shù) flag2=0 正常 1 調(diào)節(jié)小時 2 調(diào)節(jié)分鐘 uchar tableshu[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xe0,0xff ,0xf7 }。 // 0 1 2 3 4 5 6 7 8 9 滅 uchar tableshudi[]={0x08,0xcb,0x12,0x82,0xc1,0x84,0x04,0xca,0x00,0xc0,0xff }。 /*報警 */ void baojing() { if((shiwenzuigao)amp。amp。(shiwenzuidi)) lv=0。 else lv=1。 } void dis(uchar ba,uchar sh,uchar ge,uchar di) { g1=0。P0=tableshu[ba]。 delay1(5)。 g1=1。P0=tableshu[10]。 g2=0。P0=tableshu[sh]。 delay1(5)。 g2=1。P0=tableshu[10]。 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 13 / 28 g3=0。P0=tableshudi[ge]。 delay1(5)。 g3=1。P0=tableshudi[10]。 g4=0。P0=tableshu[di]。 delay1(5)。 g4=1。P0=tableshu[10]。 } void disdi(uchar ba,uchar sh,uchar ge,uchar di) { g1=0。P0=tableshudi[ba]。 delay1(5)。 g1=1。P0=tableshu[10]。 g2=0。P0=tableshudi[sh]。 delay1(5)。 g2=1。P0=tableshu[10]。 g3=0。P0=tableshudi[ge]。 delay1(5)。 g3=1。P0=tableshudi[10]。 g4=0。P0=tableshudi[di]。 delay1(5)。 g4=1。P0=tableshu[10]。 } void biaozhun() { if(jin==0) { delay1(5)。 if(jin==0) { while(!jin)。 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 14 / 28 flag++。 if(flag==3) flag=0。 } } } /*調(diào)幅值 */ void tfz() { uchar ba,sh,ge,di。 if(flag==1) { while(1) { ba=zuigao/1000。 sh=zuigao/100%10。 ge=zuigao/10%10。 di=zuigao%10。 dis(ba,sh,ge,di)。 if(jia==0) delay1(5)。 if(jia==0) { zuigao=zuigao+10。 while(!jia)。 dis(ba,sh,ge,di)。 } if(jian==0) { zuigao=zuigao10。 while(!jian)。 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 15 / 28 dis(ba,sh,ge,di)。 } biaozhun()。 if(flag!=1) break。 } } if(flag==2) { while(1) { ba=zuidi/1000。 sh=zuidi/100%10。 ge=zuidi/10%10。 di=zuidi%10。 dis(ba,sh,ge,di)。 if(jia==0) delay1(5)。 if(jia==0) { zuidi=zuidi+10。 while(!jia)。 } if(jian==0) { zuidi=zuidi10。 while(!jian)。 } biaozhun()。 if(flag!=2) 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 16 / 28 break。 } } } void main(void) { uchar TL。 //儲存暫存器的溫度低位 uchar TH。 //儲存暫存器的溫度高位 uint TN。 //儲存溫度的整數(shù)部分 uchar TD。 //儲存溫度的小數(shù)部分 uchar ba,sh,ge,di,ba1,sh1,ge1,di1。 bit flag1。 //判斷顯示正負 0 負 1 正 delay1(5)。 //延時 5ms 給硬件一點反應(yīng)時間 while(1) //不斷檢測并顯示溫度 { init()。//讀溫度準備 if(flag1==1) dis(ba,sh,ge,di)。 else dis(11,sh,ge,di)。 TL=ReadOneChar()。 //先讀的是溫度值低位 TH=ReadOneChar()。 //接著讀的是溫度值高位 if((THamp。0xf8)!=0x00)//判斷高五位 得到溫度是負 { flag1=0。 TL=~TL。 //取反 TH=~TH。 //取反 TL=TL+1。 //低位加 1 TN=(TH*256+TL)*。 //實際溫度值 10 倍 =(TH*256+TL)*, if(TN%160==0) TN=TN+ 中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 17 / 28 sh=TN/100%10。 ge=TN/10%10。 di=TN%10。 dis(11,sh,ge,di)。 //顯示溫度 } else//判斷高五位 得到溫度是正 { flag1=1。 TN=(TH*256+TL)*。 //實際溫度值 10 倍 =(TH*256+TL)*, //這樣前幾位是溫度的整數(shù)部分 ,最后一位是溫度的小數(shù)部分 ba=TN/1000。 sh=TN/100%10。 ge=TN/10%10。 di=TN%10。 dis(ba,sh,ge,di)。 //顯示溫度的整數(shù)部分 } shiwen=TN。 biaozhun()。 tfz()。 if(flag1==1) dis(ba,sh,ge,di)。 else dis(11,sh,ge,di)。 baojing()。 } } 四、 設(shè)計制作 與檢測 電路板的設(shè)計制作 電路板的設(shè)計與制作是整個電路制作過程中比較重要的一步,如果電路板做不好,再中原工學(xué)院信息商務(wù)學(xué)院信息工程系專業(yè)課程設(shè)計報告 18 / 28 好的電路設(shè)計也不行。下面 就對簡單電路板的設(shè)計及制作過程做一個簡單的介紹。 利用 Protel 99SE 畫原理圖。在畫原理圖的時候為了電路板比較好看,要注意布局,同時還得注意元件封裝,命名等。畫好原理圖后要對其進行電氣檢測,檢查原理圖是否有錯,同時還要創(chuàng)建網(wǎng)絡(luò)表為下一步的工作做好準備。 PCB版圖的設(shè)計。在對 PCB圖設(shè)計時首先要添加封裝庫,這樣原理圖中給予的封裝才能有效,然后調(diào)入網(wǎng)絡(luò)表看原理圖的封裝,命名等是否有錯,如果沒錯便可進行下一步操作。對其進行布線,首先先對布線規(guī)則作一些必要的設(shè)置,如焊盤的大小,導(dǎo)線的粗細等。做好這些 設(shè)置后便可進行自動布線,自動布線后如果布線不是很理想還可用手動布線進行手動修改,這樣 PCB 圖就畫好了。 電路板的制作。把設(shè)計布局好的 PCB 圖打印出來之后,然后進行壓板、腐
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1