版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1數(shù)字溫度計(jì)功能要求說(shuō)明及總體方案介紹11.1數(shù)字溫度計(jì)設(shè)計(jì)課題任務(wù)11.2數(shù)字溫度計(jì)功能要求說(shuō)明21.3數(shù)字溫度計(jì)設(shè)計(jì)方案介紹21.4方案選擇32硬件電路設(shè)計(jì)32.1硬件系統(tǒng)總體設(shè)計(jì)42.2各單元模塊設(shè)計(jì)42.3核心器件介紹82.4數(shù)字溫度計(jì)的電路原理圖、PCB圖和元器件分布圖102.5數(shù)字溫度計(jì)電路的元器件清單103軟件設(shè)計(jì)113.1主程序流程圖設(shè)計(jì)113.2溫度采集模塊123.3報(bào)警模塊153.4溫度設(shè)定模塊163.5設(shè)計(jì)數(shù)字溫度計(jì)軟件系統(tǒng)程序清單164系統(tǒng)仿真結(jié)果、誤差分析及設(shè)計(jì)體會(huì)174.1 系統(tǒng)功能174.2系統(tǒng)指標(biāo)參數(shù)仿真測(cè)試174.3實(shí)物指標(biāo)參數(shù)測(cè)定184.4系統(tǒng)功能及誤差分析
2、184.5設(shè)計(jì)總結(jié)與體會(huì)194.6教學(xué)建議205 參考文獻(xiàn)21附錄一:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)原理圖22附錄二:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)PCB圖23附錄三:基于DS18B20數(shù)字溫度計(jì)的元器件布局圖24附錄四:基于DS18B20數(shù)字溫度計(jì)的元器件清單25附錄五:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)C語(yǔ)言程序26數(shù)字溫度計(jì)功能要求說(shuō)明及總體方案介紹數(shù)字溫度計(jì)設(shè)計(jì)課題任務(wù)設(shè)計(jì)一個(gè)具有特定功能的數(shù)字溫度計(jì)。該數(shù)字溫度計(jì)上電或按鍵復(fù)位后能自動(dòng)顯示系統(tǒng)提示符“P.”,進(jìn)入準(zhǔn)備工作狀態(tài)。測(cè)量溫度范圍099,測(cè)量精度小數(shù)點(diǎn)后兩位,可以通過(guò)開(kāi)始和結(jié)束鍵控制數(shù)字溫度計(jì)的工作狀態(tài)。數(shù)字溫度計(jì)功能
3、要求說(shuō)明數(shù)字溫度計(jì)在系統(tǒng)上電或按鍵復(fù)位后自動(dòng)顯示提示符“P.” 。定義了四個(gè)功能按鍵分別為S1、S2、S3和S4控制系統(tǒng)。四個(gè)功能按鍵定義:S1按鍵:復(fù)位S2按鍵:?jiǎn)?dòng),設(shè)置/確定;S3按鍵:加1;S4按鍵:減1;本設(shè)計(jì)實(shí)現(xiàn)的主要功能是通過(guò)DS18B20溫度傳感器采集溫度并通過(guò)8位七段數(shù)碼管顯示所測(cè)溫度,溫度測(cè)量范圍為0-99,后兩位顯示小數(shù)位??梢跃_到小數(shù)點(diǎn)后2位,測(cè)量精度為0.06, 并可以產(chǎn)生報(bào)警燈閃。通過(guò)三個(gè)按鍵的配合使用可以設(shè)定溫度報(bào)警的上限值,當(dāng)所測(cè)的溫度超過(guò)所設(shè)定的上限溫度時(shí)產(chǎn)生報(bào)警信號(hào),在報(bào)警的同時(shí),系統(tǒng)處于正常的測(cè)溫模式,當(dāng)溫度回到所設(shè)定的范圍時(shí),報(bào)警停止。數(shù)字溫度計(jì)設(shè)計(jì)方
4、案介紹首先查閱相關(guān)資料確定其方向?qū)φ麄€(gè)設(shè)計(jì)有整體的規(guī)劃、構(gòu)思。然后確定一種方案。緊接著對(duì)選定方案進(jìn)行單元模塊設(shè)計(jì)、軟件設(shè)計(jì)、系統(tǒng)總體調(diào)試、系統(tǒng)功能指標(biāo)分析驗(yàn)證。最后得出結(jié)論,完成報(bào)告。通過(guò)查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實(shí)際知識(shí),我們主要提出了二種技術(shù)方案來(lái)實(shí)現(xiàn)系統(tǒng)功能。下面我首先對(duì)這二種方案的實(shí)現(xiàn)原理分別進(jìn)行說(shuō)明,并分析比較它們的特點(diǎn),然后再選擇方案并闡述我選擇方案的原因。我設(shè)計(jì)了二種方案:方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì);方案二是基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)。方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì)方案一主要由溫度傳感器、A/D轉(zhuǎn)換電路、單片機(jī)控制電路、數(shù)碼顯示電路組成。采集的模擬溫度值輸入A
5、/D轉(zhuǎn)換電路,A/D轉(zhuǎn)換采用LM331型U/f變換器來(lái)實(shí)現(xiàn)。U/f變換器把電壓信號(hào)轉(zhuǎn)換為頻率信號(hào)。由熱敏電阻的電阻溫度特性表可以求出每個(gè)溫度點(diǎn)所對(duì)應(yīng)的UIN,再由公式FOUT=256*UIN計(jì)算出每個(gè)溫度點(diǎn)所對(duì)應(yīng)的輸出頻率,進(jìn)而由單片機(jī)處理顯示被測(cè)量的溫度值。溫度信號(hào)處理由于熱敏電阻是非線性的器件,所以溫度與頻率輸出成非線性,需要補(bǔ)償溫度。單片機(jī)利用查表法實(shí)現(xiàn)溫度補(bǔ)償。只要測(cè)量出LM331的頻率值,就可以通過(guò)查表法準(zhǔn)確的得出環(huán)境的溫度值。再交由單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示溫度。這樣就實(shí)現(xiàn)了溫度的采集與顯示。方案二基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)方案二主要也由數(shù)字溫度傳感器、單片機(jī)控制電路、數(shù)碼顯示電
6、路組成。DS18B20 測(cè)量溫度采用了特有的溫度測(cè)量技術(shù)。它是通過(guò)計(jì)數(shù)時(shí)鐘周期來(lái)實(shí)現(xiàn)的。低溫度系數(shù)振蕩器輸出的時(shí)鐘信號(hào)通過(guò)由高溫度系數(shù)振蕩器產(chǎn)生的門(mén)周期而被計(jì)數(shù)。計(jì)數(shù)器被預(yù)置在與- 55 相對(duì)應(yīng)的一個(gè)基權(quán)值。如果計(jì)數(shù)器在高溫度系數(shù)振蕩周期結(jié)束前計(jì)數(shù)到零,表示測(cè)量的溫度值高于- 55,被預(yù)置在- 55 的溫度寄存器的值就增加1,然后重復(fù)這個(gè)過(guò)程,直到高溫度系數(shù)振蕩周期結(jié)為止這時(shí)溫度寄存器中的值就是被測(cè)溫度值,這個(gè)值以16 位形式存放在便箋式存貯器中,此溫度值可由主機(jī)通過(guò)發(fā)存貯器讀命令而讀出,讀取時(shí)低位在前,高位在后。斜率累加器用于補(bǔ)償溫度振蕩器的拋物線特性。讀出的二進(jìn)制數(shù)可以直接轉(zhuǎn)換為十進(jìn)制由單
7、片機(jī)驅(qū)動(dòng)數(shù)碼管顯示輸出。方案選擇作為單片機(jī)控制系統(tǒng)的前向通道的關(guān)鍵部件,在選擇傳感器時(shí)應(yīng)考慮以下幾個(gè)方面的:根據(jù)測(cè)控對(duì)象與測(cè)控環(huán)境確定傳感器的類型;靈敏度的選擇,通常情況下,在傳感器的線性范圍內(nèi),希望傳感器的靈敏度越高越好;頻率響應(yīng)特性,頻率響應(yīng)特性決定了被測(cè)量的頻率范圍,頻率響應(yīng)好,可測(cè)信號(hào)的頻率范圍就越寬;穩(wěn)定性,穩(wěn)定性是指其性能保持不變化的能力; 方案的選擇即是傳感器的選擇。對(duì)比二種方案可以得知,方案一是采用模擬式溫度傳感器,方案二采用數(shù)字式溫度傳感器。熱敏電阻精度低,靈敏度高,價(jià)格最低。數(shù)字式溫度傳感器輸出的是隨溫度變化的數(shù)字量,更直觀,與模擬輸出相比,它輸出速度響應(yīng)較慢,但容易與MP
8、U接口。能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量;能以最簡(jiǎn)方式構(gòu)成高性價(jià)比、多功能的智能化溫度控制系統(tǒng);DS18B20相對(duì)而言價(jià)格較低在十塊左右。考慮到我們?cè)O(shè)計(jì)的目的和要求不是很精密嚴(yán)格。所以我們選擇方案二以DS18B20數(shù)字溫度傳感器進(jìn)行后續(xù)設(shè)計(jì)。硬件電路設(shè)計(jì)本節(jié)主要介紹系統(tǒng)中單片機(jī)AT89S52外圍電路重要模塊的功能和電路原理圖分析。并對(duì)電路中的核心器件進(jìn)行必要的說(shuō)明。硬件系統(tǒng)總體設(shè)計(jì)USB接口電源 數(shù)碼管顯示電路 復(fù)位電路 A T 8 9 S 5 2數(shù)碼管驅(qū)動(dòng)電路DS18B20電路圖2.1 硬件系統(tǒng)總體設(shè)計(jì) 時(shí)鐘電路 獨(dú)立鍵盤(pán)報(bào)警電路各單元模塊設(shè)計(jì)時(shí)鐘和復(fù)位電路 圖2.2晶振電路 圖2.3 復(fù)位
9、電路 單片機(jī)AT89S52使用的時(shí)鐘電路比較簡(jiǎn)單,我們采用的是晶體振蕩器產(chǎn)生時(shí)鐘源。XTAL1(X1)為反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2(X2)是來(lái)自反向振蕩器的輸出,分別接到單片機(jī)的19腳和18腳。其電路原理圖如圖2.2所示。單片機(jī)復(fù)位電路的設(shè)計(jì)如圖2.3所示。該復(fù)位電路采用手動(dòng)復(fù)位與上電復(fù)位相結(jié)合的方式。當(dāng)按下按鍵S1時(shí),VCC通過(guò)R1電阻給復(fù)位輸入端口一個(gè)高電平,實(shí)現(xiàn)復(fù)位功能,即手動(dòng)復(fù)位這樣就不用在重起單片機(jī)電源。上電復(fù)位就是VCC通過(guò)電阻R2和電容C構(gòu)成回路,該回路是一個(gè)對(duì)電容C充電和放電的電路,所以復(fù)位端口得到一個(gè)周期性變化的電壓值,并且有一定時(shí)間的電壓值高于
10、CPU復(fù)位電壓,實(shí)現(xiàn)上電復(fù)位功能。電源電路 圖2.4 5V電源電路電源電路主要是為系統(tǒng)提供電源,因?yàn)閱纹瑱C(jī)AT89S52需要供電5V,而外圍電路可以用5V電源。電路可以由電源變壓器T、電橋U、電容C以及芯片7805組成。電源是由電源變壓器T降壓后送入電橋U整流再經(jīng)C濾波,然后由CW7805穩(wěn)定后提供給電路工作。由于我們需要在通過(guò)計(jì)算機(jī)下載程序,而USB輸出電壓也剛好是5V,所以為了方便采用USB供電。原理圖如圖2.4所示。按鍵電路圖2.5 按鍵電路按鍵電路具體電路如圖2.5所示。在本次設(shè)計(jì)中,我們只用到三個(gè)按鍵,分別為S2:設(shè)置/確認(rèn),S3:加1鍵,S4:減1鍵。系統(tǒng)復(fù)位后顯示P. 按下S2按
11、鍵進(jìn)入溫度轉(zhuǎn)換。同時(shí)S2鍵也為調(diào)整鍵,按下此鍵進(jìn)入報(bào)警溫度設(shè)置狀態(tài)。S3為遞增按鍵,當(dāng)按下此鍵時(shí),上限值增加1,S4為遞減鍵,按下此鍵,上限值減少1 。再按下S2鍵則將設(shè)定的報(bào)警溫度確定,并恢復(fù)到正常測(cè)溫模式。蜂鳴電路圖2.6蜂鳴電路蜂鳴電路是用一個(gè)三極管驅(qū)動(dòng)一只蜂鳴器組成,驅(qū)動(dòng)信號(hào)由芯片的管腳P3.1控制。當(dāng)顯示的溫度不在設(shè)定的溫度范圍內(nèi),則驅(qū)動(dòng)蜂鳴器發(fā)聲報(bào)警,其電路如圖2.6所示。發(fā)光二極管LED顯示電路圖2.7發(fā)光二級(jí)管顯示電路8個(gè)發(fā)光二極管通過(guò)限流電阻接到單片機(jī)P3口線上,此時(shí)單片機(jī)的P3口當(dāng)作普通的I/O口,當(dāng)DS18B20測(cè)量的溫度超過(guò)所設(shè)的報(bào)警溫度時(shí),8個(gè)LED發(fā)光二極管一起閃爍
12、與蜂鳴電路一起構(gòu)成報(bào)警電路。數(shù)碼管顯示電路圖2.8 數(shù)碼管顯示電路數(shù)碼顯示電路主要作用是用來(lái)顯示實(shí)際的環(huán)境溫度值。通過(guò)單片機(jī)控制實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)顯示,即溫度值實(shí)時(shí)刷新。實(shí)際的電路中我們采用動(dòng)態(tài)驅(qū)動(dòng)。動(dòng)態(tài)驅(qū)動(dòng)需要增加譯碼驅(qū)動(dòng),增加了硬件的復(fù)雜性。P2口驅(qū)動(dòng)連接數(shù)碼管的位碼,即選通8個(gè)數(shù)碼管;P0口驅(qū)動(dòng)連接數(shù)碼管的段碼,即輸出要顯示的溫度值。選通數(shù)碼管是通過(guò)P2口接上拉電阻再接三極管9012。由于9012是PNP型三極管,所以單片機(jī)選通某個(gè)片選時(shí)就給對(duì)應(yīng)的三極管一個(gè)低電平,此時(shí)三極管處于飽和區(qū),飽和導(dǎo)通就相當(dāng)于開(kāi)關(guān)開(kāi)路;反之高電平處于截止區(qū),截止可以當(dāng)作開(kāi)關(guān)斷開(kāi)。在數(shù)碼管動(dòng)態(tài)顯示中,只要掃描的時(shí)間足
13、夠快,雖然在一個(gè)時(shí)刻只有一位數(shù)碼管發(fā)光,但卻可以看到8 位數(shù)碼管“同時(shí)”顯示的效果。電路原理圖如圖2.8所示。18B20溫度傳感器電路圖2.9 18B20溫度傳感器電路 DS18B20有寄生電源供電方式和外部電源供電方式兩種,在此我們選擇外部電源供電,這樣就不存在電源供電不足的問(wèn)題,可以保證轉(zhuǎn)換精度,但應(yīng)注意DS18B20的GND引腳要接地,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85。DS18B20的數(shù)據(jù)線接單片機(jī)的P3.0口線。電路原理圖如圖2.9所示。核心器件介紹單片機(jī)AT89S52介紹單片機(jī)AT89S52是8位高性能MCU,超低功耗:掉電模式下典型功耗01 LLA,空閑模式下典型功耗2 mA正
14、常工作模式下典型功耗4 7 mA 具有8kF1ash存儲(chǔ)器、512 kB RAM、2k E2pROM、降低EMI功能、ISP(在系統(tǒng)可編程)功能 單片機(jī)AT89S52和各個(gè)模塊的接口主要是對(duì)AT89S52的I/O口進(jìn)行約束,規(guī)定其為輸出還是輸入,輸入主要是按鍵電路部分和時(shí)鐘,輸出則為報(bào)警和顯示部分,其I/O分配如下圖2.10所示。圖2.10單片機(jī)AT89S52 I/O接口電路DS18B20介紹DS18B20是DALLAS公司生產(chǎn)的一線式傳感器,具有3引腳TO-92小體積封裝形式;可編程為9到12位A/D轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625攝氏度,被側(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其
15、工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用問(wèn)處理器的端口較少,可節(jié)省大量的引線和邏輯電路。DS18B20采用一線通信接口。主要首先提供以下功能命令之一:讀ROM指令0X33, ROM匹配指令0X55,搜索ROM指令0XF0, 跳過(guò)ROM指令0XCC, 報(bào)警檢查指令0XEC。這些指令操作作用在沒(méi)有一個(gè)器件的64位光刻ROM序列號(hào)。圖2.11 DS18B20的兩種封裝形式 圖 2.12 DS18B20內(nèi)部結(jié)構(gòu)圖數(shù)字溫度計(jì)的電路原理圖、PCB圖和元器件分布圖電路原理圖見(jiàn)附錄一PCB圖見(jiàn)附錄二元器件分布圖見(jiàn)附錄三數(shù)字溫度計(jì)電路的元器件清單元
16、器件清單見(jiàn)附錄四軟件設(shè)計(jì)主程序流程圖設(shè)計(jì)軟件設(shè)計(jì)關(guān)鍵在于DS18B20的使用。DS18B20屬于單線式器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議,來(lái)對(duì)讀寫(xiě)數(shù)據(jù)提出嚴(yán)格的時(shí)序要求,而STC89C52單片機(jī)并不支持單線傳輸,因此必須采用軟件的方法來(lái)模擬單線的協(xié)議時(shí)序。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各為數(shù)據(jù)傳輸?shù)恼_性和完整性。主機(jī)操作單線器件DS18B20必須遵循一定的順序。系統(tǒng)的主程序主要通過(guò)初始化,鍵盤(pán)掃描,獲取溫度,顯示溫度,報(bào)警等子程序?qū)崿F(xiàn)。通過(guò)一個(gè)循環(huán)設(shè)置,使系統(tǒng)不斷地進(jìn)行對(duì)溫度的檢測(cè)。下圖為本系統(tǒng)主程序的設(shè)計(jì)流程,各個(gè)模塊的設(shè)計(jì)見(jiàn)下文。軟件設(shè)計(jì)具體程序見(jiàn)附錄五。
17、開(kāi)始系統(tǒng)初始化顯示P.按下啟動(dòng)鍵 ?溫度采集按下設(shè)置鍵 ?設(shè)定上限溫度溫度大于上限值?報(bào)警顯示溫度結(jié)束圖3.1主程序設(shè)計(jì)流程圖溫度采集模塊溫度采集包括初始化DS18B20子程序;讀DS18B20子程序;寫(xiě)DS18B20子程序;獲得溫度子程序。DS18B20初始化需要這幾個(gè)過(guò)程先將數(shù)據(jù)線置高電平“1”,延時(shí)10 us;再將數(shù)據(jù)線拉到低電平“0” 延時(shí)500 us;然后再數(shù)據(jù)線拉到高電平“1”,高電平保持60us,判斷DS18B20是否發(fā)出低電平信號(hào),跟據(jù)該狀態(tài)可以來(lái)確定它的存在,但是應(yīng)注意不能無(wú)限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制;若CPU讀到了數(shù)據(jù)線上的低電平“0”后,根據(jù)
18、時(shí)序要求還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起最少要480 us時(shí)間;最后將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。需要注意的是每次采集溫度的時(shí)候都需要初始化。DS18B20發(fā)出高電平初始化成功,返回flag=1表示DS18B20初始化成功。以下是各子函數(shù)的時(shí)序圖:圖3.2 復(fù)位時(shí)序圖圖3.3 寫(xiě)0和寫(xiě)1時(shí)序圖圖3.4 讀時(shí)序圖讀DS18B20也需要幾個(gè)流程:先將數(shù)據(jù)線拉高“1” 延時(shí)2us時(shí)間;再將數(shù)據(jù)線拉低“0” 延時(shí)10 us;然后將數(shù)據(jù)線拉高“1” 延時(shí)8us讀取1位數(shù)據(jù),讀取1位數(shù)據(jù)后延時(shí)50us時(shí)間;最后通過(guò)讀取1位右移1位循環(huán)進(jìn)行分別讀出8位即一個(gè)字節(jié)的數(shù)據(jù)。程序中我們把讀取的第
19、一字節(jié)存templ中,讀取的第二字節(jié)存temph中。如果需要讀出設(shè)定的TH和TL值用于報(bào)警,這時(shí)也需將數(shù)據(jù)讀出。我們把讀取的第3字節(jié)存tempth 即TH的值;把讀取的第4個(gè)字節(jié)存temptl即TL的值。由于讀出的數(shù)據(jù)時(shí)二進(jìn)制數(shù)顯示的時(shí)候是十進(jìn)制。所以必須將讀出的數(shù)據(jù)進(jìn)行處理。先判斷符號(hào)位將temph的高5位與0xf8相與就可以知道正負(fù)。若為負(fù)值f=1,將templ和temph取反。轉(zhuǎn)換的時(shí)候我們將小數(shù)部分和整數(shù)部分分別轉(zhuǎn)換,小數(shù)部分templ與0x0f相與后的值乘以625就是小數(shù)部分的值,需要注意的是小數(shù)部分的值是用整數(shù)形式表示的;整數(shù)部分temph左移四位和 templ右移四位合并為一個(gè)字
20、節(jié)就是整數(shù)部分的值。獲得溫度就是在前面操作的基礎(chǔ)上調(diào)用。先初始化DS18B20,發(fā)出跳過(guò)ROM匹配命令;再向DS18B20發(fā)溫度轉(zhuǎn)換命令顯示溫度,等待AD轉(zhuǎn)換,發(fā)跳過(guò)ROM匹配命令;最后發(fā)出讀溫度命令將讀出的溫度數(shù)據(jù)保存到tempint和tempdf處為顯示做準(zhǔn)備。下面框圖為溫度采集流程圖和讀溫度主要的流程圖圖3.5 溫度采集流程圖溫度顯示模塊主要包括顯示溫度子程序和延遲子程序。顯示溫度即把讀出的溫度傳遞過(guò)來(lái)分別顯示。我們是將數(shù)碼分為各個(gè)位動(dòng)態(tài)掃描顯示。C語(yǔ)言提供了整除和求余數(shù)運(yùn)算,兩者相結(jié)合就可以取出各個(gè)位的模。由于我們是用數(shù)碼管顯示。第三個(gè)數(shù)碼管需要顯示小數(shù)位。顯示的時(shí)候采用循環(huán)的方式進(jìn)行
21、,分別為百位、十位、個(gè)位、個(gè)分位、十分位、百分位和千分位。先送位碼再送段碼,每一位顯示完后延遲1ms時(shí)間。在數(shù)碼管動(dòng)態(tài)顯示中,由于掃描的時(shí)間足夠快,雖然在一個(gè)時(shí)刻只有一位數(shù)碼管發(fā)光,卻可以看到8 位數(shù)碼管“同時(shí)”顯示的效果。下圖為溫度顯示流程框圖。溫度數(shù)據(jù)移入寄存器數(shù)據(jù)處理整數(shù)部分顯示小數(shù)部分顯示結(jié)束圖3.6 溫度顯示流程圖報(bào)警模塊讀取轉(zhuǎn)換溫度值溫度大于設(shè)定值?P3口賦低電平返回圖3.7 報(bào)警流程圖報(bào)警模塊主要由由單片機(jī)輸出電平來(lái)驅(qū)動(dòng)蜂鳴器構(gòu)成。當(dāng)所測(cè)溫度超過(guò)設(shè)定的上限(TH值)時(shí)置beepflag=1,表示溫度值越界。在調(diào)用報(bào)警子程序時(shí)先判斷beepflag的值,若為1則在蜂鳴器端口輸出低電
22、平信號(hào)beep=0,蜂鳴器報(bào)警,延時(shí)1000us,蜂鳴器報(bào)警持續(xù),再產(chǎn)生一個(gè)高電平信號(hào)beep=1,蜂鳴器停止報(bào)警,循環(huán)此過(guò)程,則蜂鳴器間隙性報(bào)警。在蜂鳴器報(bào)警的同時(shí),8個(gè)發(fā)光二極管同時(shí)閃爍,DS18B20處于正常測(cè)溫狀態(tài),并用數(shù)碼管顯示出來(lái)。溫度設(shè)定模塊系統(tǒng)初始化顯示P.按下設(shè)置鍵?進(jìn)入設(shè)置狀態(tài)加1鍵or 減1鍵?給定溫度加1給定溫度減1按下確認(rèn)鍵?進(jìn)入測(cè)溫模式圖3.7 溫度設(shè)定流程圖按下,檢測(cè)到按鍵按下時(shí),延時(shí)20ms,再次檢測(cè)按鍵是否按下,若檢測(cè)到按下,才確定此按鍵,本設(shè)計(jì)中每個(gè)按鍵設(shè)計(jì)都運(yùn)用了防抖動(dòng)功能,避免抖動(dòng)產(chǎn)生的誤差。當(dāng)檢測(cè)到按鍵S2按下一次時(shí),顯示為設(shè)定的上限值,此時(shí)S3和S4
23、分別遞增鍵和遞減鍵,在上限或下限沒(méi)超過(guò)15時(shí),當(dāng)S2被再次按下時(shí),此時(shí)恢復(fù)到正常的測(cè)溫模式,并將設(shè)定的上限值和下限值寫(xiě)入到傳感器中。顯示程序顯示設(shè)定值的變化顯示上限值,并隨S3,S4按鍵按下的時(shí)上限值的變化而變化,設(shè)計(jì)數(shù)字溫度計(jì)軟件系統(tǒng)程序清單見(jiàn)附錄五4系統(tǒng)仿真結(jié)果、誤差分析及設(shè)計(jì)體會(huì)4.1 系統(tǒng)功能本設(shè)計(jì)實(shí)現(xiàn)的主要功能是通過(guò)DS18B20溫度傳感器采集溫度并通過(guò)8位七段數(shù)碼管顯示所測(cè)溫度,溫度測(cè)量范圍為0-99,后兩位顯示小數(shù)位??梢跃_到小數(shù)點(diǎn)后2位,測(cè)量精度為0.0625, 并可以產(chǎn)生報(bào)警燈閃。通過(guò)四個(gè)按鍵的配合使用可以設(shè)定溫度報(bào)警的上限值,當(dāng)所測(cè)的溫度超過(guò)所設(shè)定的上限溫度時(shí)產(chǎn)生報(bào)警信號(hào)
24、,在報(bào)警的同時(shí),系統(tǒng)處于正常的測(cè)溫模式,當(dāng)溫度回到所設(shè)定的范圍時(shí),報(bào)警停止。 4.2系統(tǒng)指標(biāo)參數(shù)仿真測(cè)試 下圖是采用Proteus軟件對(duì)本系統(tǒng)溫度測(cè)量范圍的仿真,仿真模擬溫度輸入為13,系統(tǒng)8位七段顯示數(shù)碼管顯示的也為13.00,15為設(shè)置的上限報(bào)警溫度值。 圖4. 1 對(duì)系統(tǒng)測(cè)量溫度仿真1 下圖是采用Proteus軟件對(duì)本系統(tǒng)溫度測(cè)量范圍的仿真,仿真模擬溫度輸入為99,系統(tǒng)8位七段顯示數(shù)碼管顯示的為99.00,本系統(tǒng)的測(cè)量溫度上限為33,若測(cè)量的溫度高于33,系統(tǒng)就會(huì)自動(dòng)報(bào)警燈閃。 圖4.2 對(duì)系統(tǒng)測(cè)量溫度仿真2通過(guò)以上兩個(gè)仿真驗(yàn)證了本系統(tǒng)的溫度測(cè)量范圍,由于軟件仿真對(duì)報(bào)警的仿真不容易觀察,
25、也不太容易記錄,所以我們對(duì)報(bào)警沒(méi)有通過(guò)軟件仿真,而是通過(guò)對(duì)事物的調(diào)試來(lái)實(shí)現(xiàn)。由于對(duì)溫度上下限的設(shè)定是一個(gè)動(dòng)態(tài)的實(shí)現(xiàn),所以我們也是通過(guò)實(shí)物演示來(lái)實(shí)現(xiàn)。4.3實(shí)物指標(biāo)參數(shù)測(cè)定表6.1 DS18B20測(cè)試溫度結(jié)果組號(hào)實(shí)際溫度18B20測(cè)量溫度誤差相對(duì)誤差111.2311.260.030.26%212.5012.620.120.96%315.5915.720.130.83%433.3333.570.240.72%545.5345.750.220.48%698.0099.891.451.47%4.4系統(tǒng)功能及誤差分析本設(shè)計(jì)滿足實(shí)驗(yàn)要求,可以測(cè)量的溫度范圍是0-99,并通過(guò)8位七段數(shù)碼管顯示,前兩位為整數(shù)
26、,后兩位為小數(shù)位,由于DS18B20的分辨率很高,其固有分辨率為0.5,最高可達(dá)0.0625,但由于本系統(tǒng)設(shè)計(jì)是顯示兩位小數(shù),所以本系統(tǒng)的分辨率為0.06。由圖6.1和圖6.2可知仿真軟件不考慮測(cè)量誤差,所以測(cè)量的溫度沒(méi)有誤差。由表6.1測(cè)試結(jié)果得出,測(cè)量誤差在+(0.22)%,當(dāng)溫度很高時(shí)測(cè)量誤差越大,誤差范圍在允許范圍之內(nèi),誤差可能來(lái)源于DS18B20的供電由于板子老化、線路腐蝕不夠好,供電不穩(wěn)定所致!改進(jìn)這種誤差就是在DS18B20的VDD端接上一個(gè)標(biāo)準(zhǔn)的+5V電源在本設(shè)計(jì)中,我們通過(guò)按鍵設(shè)定溫度上限值,可以實(shí)現(xiàn)設(shè)定溫度范圍,這樣可以使本系統(tǒng)不僅具有測(cè)溫的功能,還具備超過(guò)溫度范圍報(bào)警的功
27、能,這樣的設(shè)計(jì)在實(shí)際工程中運(yùn)用更加廣泛。在設(shè)計(jì)中,我們通過(guò)鍵盤(pán)可以設(shè)定溫度的上下限報(bào)警范圍,并將設(shè)定的上限值與測(cè)量值相比較,便于隨時(shí)調(diào)節(jié)的報(bào)警上限范圍。 4.5設(shè)計(jì)總結(jié)與體會(huì)經(jīng)過(guò)本學(xué)期最后一個(gè)月的課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì)。不僅完全達(dá)到設(shè)計(jì)要求溫度的采集和顯示,還在此基礎(chǔ)上增加了擴(kuò)展功能超溫報(bào)警,就是采集的溫度不在我們自己設(shè)定的范圍內(nèi)時(shí)驅(qū)動(dòng)蜂鳴器輸出報(bào)警信號(hào)。不僅利用Proteus完成了硬件仿真,還把實(shí)物都做了出來(lái),并下載程序驗(yàn)證成功,自己感到很興奮!在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題。 時(shí)序問(wèn)題,DS18B20對(duì)時(shí)序的要求是相當(dāng)嚴(yán)格的,開(kāi)始自己寫(xiě)完程序后仿真都顯示不出溫度,后
28、來(lái)經(jīng)調(diào)試發(fā)現(xiàn)復(fù)位函數(shù)當(dāng)中有一處延時(shí)不夠,導(dǎo)致CPU檢測(cè)不到存在脈沖,稍加延時(shí)后就可以了,再仿真果真就能顯示出溫度。 鍵掃描問(wèn)題,由于在鍵掃子函數(shù)中沒(méi)有調(diào)用顯示函數(shù)去抖動(dòng)導(dǎo)致按鍵輸入不靈敏,調(diào)用顯示函數(shù)去抖動(dòng)后就可以了。 數(shù)據(jù)轉(zhuǎn)換問(wèn)題,由于從DS18B20采集到的溫度是16位二進(jìn)制,按理論上應(yīng)該乘以分辨率0.0625,但是由于單片機(jī)不能處理小數(shù),結(jié)果就只能顯示整數(shù)部分,按課程設(shè)計(jì)要求顯示小數(shù)點(diǎn)后兩位小數(shù),所以應(yīng)把分辨率擴(kuò)大100倍,這樣就可顯示兩位小數(shù)了。 顯示小數(shù)點(diǎn)問(wèn)題,如果將處理后的數(shù)據(jù)直接送數(shù)碼管上顯示那將會(huì)是一個(gè)擴(kuò)大了100倍的值,比如12.33就會(huì)顯示1233,因此應(yīng)該在數(shù)碼管的第三位
29、顯示一個(gè)小數(shù)點(diǎn),解決此問(wèn)題就是在顯示函數(shù)中第三位送段控碼時(shí)與上0x7f(共陽(yáng))就顯示出小數(shù)點(diǎn)了。 這些在數(shù)字溫度計(jì)設(shè)計(jì)中遇到的問(wèn)題都是本設(shè)計(jì)的重點(diǎn)和難點(diǎn),設(shè)計(jì)得巧妙可以大大簡(jiǎn)化程序的代碼。尤其是數(shù)據(jù)處理部分,要顯示2位小數(shù)則分辨率就要擴(kuò)大100倍,然后就是時(shí)序,寫(xiě)復(fù)位,讀一字節(jié)和寫(xiě)一字節(jié)函數(shù)一定要按照時(shí)序圖來(lái)寫(xiě),不然溫度就轉(zhuǎn)換不了!在這次的課程設(shè)計(jì)中。感謝吳樂(lè)老師的悉心指導(dǎo),她要求我們用C寫(xiě)程序也要養(yǎng)成良好的風(fēng)格,即運(yùn)用宏定義,先聲明各函數(shù),接著寫(xiě)主函數(shù),后面才是各功能函數(shù)的定義。這樣不僅方便他人閱讀,而且也易于檢錯(cuò),自己看著也舒服。這次設(shè)計(jì)讓我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際
30、,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。4.6教學(xué)建議這一學(xué)期我感覺(jué)老師上課時(shí)講述過(guò)快,有時(shí)學(xué)生還沒(méi)反應(yīng)過(guò)來(lái),在黑板上書(shū)寫(xiě)不夠規(guī)范,希望以后上課能夠講慢點(diǎn),字跡寫(xiě)工整一些;我們開(kāi)設(shè)的實(shí)驗(yàn)太過(guò)單調(diào),大多都是圍繞定時(shí)與中斷而且都是產(chǎn)生波形,我覺(jué)得可以適當(dāng)?shù)脑黾哟型ㄐ诺葘?shí)驗(yàn),這樣我們可以學(xué)到更多的知識(shí);應(yīng)當(dāng)增加課時(shí)給我們多講講C51的編程,C51比匯編語(yǔ)言簡(jiǎn)潔易懂。期末考試的試題老師不應(yīng)出得偏、怪,我覺(jué)得這學(xué)期的試題王老師有點(diǎn)故意刁難學(xué)生,這樣打擊學(xué)生的信心!應(yīng)考比較實(shí)用性的知識(shí)。 5 參考文獻(xiàn)1 于永.
31、51單片機(jī)C語(yǔ)言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講M.北京:電子工業(yè)出版社,20082張?jiān)降?基于DS18B20溫度傳感器的數(shù)字溫度計(jì)J.微電子學(xué),2007 3李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,20074 張毅剛等.單片機(jī)原理及運(yùn)用.高等教育出版社,2003 6 附錄一:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)原理圖 7 附錄二:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)PCB圖8 附錄三:基于DS18B20數(shù)字溫度計(jì)的元器件布局圖9 附錄四:基于DS18B20數(shù)字溫度計(jì)的元器件清單元器件名稱規(guī)格數(shù)量AT89C52 1底座 3晶振12MHz 1發(fā)光二極管 9單排插40腳1三極管 90129蜂鳴器
32、1小按鍵9下載口座子十芯1六腳開(kāi)關(guān)1USB電源線加接口1電阻 2001電阻4.7K1電阻10K3電阻 47024電容22F1電容33pF排阻10K2短路帽2PCB板子10cm*15cm1共陽(yáng)數(shù)碼管四位一體2DS18B201 第 34 頁(yè)10 附錄五:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)C語(yǔ)言程序/*課題:DS18B20數(shù)字溫度計(jì)*作者:徐云波*完成時(shí)間:2011年12月31日*版本:u Vision4*/#include #include #include #define uchar unsigned char#define uint unsigned int/*共陽(yáng)數(shù)碼管字型碼*/*0,1,2
33、,3,4,5,6,7,8,9,P.,“滅”*/char code dis_code=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xf3,0x00,0x80;/*P.顯示位代碼*/char data find_code8=11,11,11,11,11,11,11,10;#definenops()_nop_();_nop_();_nop_();_nop_(); /*延時(shí)4us*/sbit DS18B20_DQ=P30;sbit BUZZER=P31;sbit LED=P37;/*函數(shù)聲明*主函數(shù)將要調(diào)用的功能函數(shù)*/bitRESET_DS1
34、8B20(void); /*復(fù)位DS18B20函數(shù)*/void Write_DS18B20_Data (uchar value);/*向DS18B20寫(xiě)一字節(jié)函數(shù)*/uchar Read_DS18B20_Data (); /*讀DS18B20一字節(jié)函數(shù)*/uint Read_tempreture(); /*讀DS18B20轉(zhuǎn)換后的溫度*/void disp(); /*顯示函數(shù)*/uchar keychuli(); /*鍵處理函數(shù)*/uchar keyscan(); /*鍵掃描函數(shù)*/void DelayX1ms(uchar m); /*延時(shí)1ms函數(shù)*/void delay_us(uchar
35、u);/*函數(shù)原型:main()*主函數(shù)*/void main()uchar i,k,T=15;uint temp;if(keyscan()=0x01)while(1)k=keyscan();if(k=0x01) /*如果第一個(gè)鍵按下進(jìn)入設(shè)定給定溫度狀態(tài)*/do k=keyscan(); if(k=0x02) T+; /*第二個(gè)鍵按下給定溫度自加1*/ else if(k=0x04) T-; /*第三個(gè)鍵按下給定溫度自減1*/ find_code5=T%10; find_code6=T/10; disp(); while (k!=0x01); /*第一個(gè)鍵按下設(shè)定溫度完畢*/RESET_DS1
36、8B20(); /*復(fù)位DS18B20*/temp=Read_tempreture(); /*讀出DS18B20轉(zhuǎn)換后的溫度*/find_code0=temp%10; /*讀出溫度送數(shù)碼管顯示*/find_code1=temp%100/10;find_code2=temp%1000/100;find_code3=temp/1000;find_code5=T%10;find_code6=T/10;find_code7=11;disp();if(temp/100=T) /*判斷溫度是否超過(guò)報(bào)警溫度*/P3=0X00; /*超過(guò)報(bào)警溫度則燈閃報(bào)警*/for(i=0;i125;i+)disp();P3
37、=0xff;for(i=0;i125;i+)disp();disp();/*函數(shù)原型:RESET_DS18B20(void)*函數(shù)功能:初始化DS18B20,讀取應(yīng)答信號(hào)*函數(shù)返回:返回0,則復(fù)位成功,返回1復(fù)位失敗*/bitRESET_DS18B20(void)DS18B20_DQ=1;DS18B20_DQ=0;delay_us(255); /*略微延時(shí)515微秒*/DS18B20_DQ=1;delay_us(13); /*延時(shí)約30us*/if(DS18B20_DQ = 0)while(DS18B20_DQ = 0);return 0; /*若返回0則說(shuō)明復(fù)位成功*/elsereturn
38、1; /*若返回1則說(shuō)明復(fù)位失敗*/*函數(shù)原型:Write_DS18B20_Data (uchar value)*函數(shù)功能:向DS18B20寫(xiě)入一個(gè)字節(jié)*入口參數(shù):value*/void Write_DS18B20_Data (uchar value)uchar i;for(i=0;i=1;/*函數(shù)原型:Read_DS18B20_Data ()*函數(shù)功能:讀出DS18B20一個(gè)字節(jié)*出口參數(shù):value*/uchar Read_DS18B20_Data ()uchar i,value=0;for(i=0;i8;i+)DS18B20_DQ=1;DS18B20_DQ=0;delay_us(1); /*略微延時(shí)約7微秒*/DS18B20_DQ=1;nops(); /*略微延時(shí)約4微秒*/if(DS18B20_DQ)value|=0x01i;/*將讀出的每一位存放到value中*/delay_us(17); /*略微延
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)清障車行業(yè)發(fā)展前景預(yù)測(cè)及投資商機(jī)分析報(bào)告
- 2024-2030年中國(guó)潤(rùn)滑涂料項(xiàng)目可行性研究報(bào)告
- 2024年電磁學(xué)計(jì)量標(biāo)準(zhǔn)器具項(xiàng)目提案報(bào)告
- 2024-2030年中國(guó)洋參珍珠補(bǔ)膏產(chǎn)業(yè)未來(lái)發(fā)展趨勢(shì)及投資策略分析報(bào)告
- 2024-2030年中國(guó)法蘭加熱器行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 藝術(shù)教育在中國(guó)夢(mèng)中的角色方案
- 2024-2030年中國(guó)汽車頭枕行業(yè)市場(chǎng)運(yùn)營(yíng)模式及未來(lái)發(fā)展?jié)摿Ψ治鰣?bào)告
- 2024-2030年中國(guó)水鉆套鏈行業(yè)市場(chǎng)運(yùn)營(yíng)模式及未來(lái)發(fā)展動(dòng)向預(yù)測(cè)報(bào)告
- 2024-2030年中國(guó)水處理活性碳行業(yè)發(fā)展?fàn)顩r規(guī)劃分析報(bào)告
- 政府部門(mén)信息透明化方案
- 重力壩開(kāi)題報(bào)告
- 建筑工程--XZ公司16年內(nèi)部資料:安裝公司施工工藝標(biāo)準(zhǔn)合集參考范本
- 校園及周邊高危人員排查情況表(共2頁(yè))
- 建筑風(fēng)水學(xué)PPT
- 化學(xué)除磷加藥量及污泥量計(jì)算書(shū)
- 有關(guān)消防復(fù)查的申請(qǐng)書(shū)
- 蘇州市存量房買賣合同
- 文藝清新PPT模板 (148)
- 安徽省建設(shè)工程造價(jià)咨詢服務(wù)項(xiàng)目及收費(fèi)標(biāo)準(zhǔn)
- 建筑工程關(guān)鍵施工技術(shù)工藝及工程項(xiàng)目實(shí)施的重點(diǎn)難點(diǎn)和解決方案
- 泌尿系統(tǒng)梗阻病人的護(hù)理.ppt
評(píng)論
0/150
提交評(píng)論