單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)_第1頁(yè)
單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)_第2頁(yè)
單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)_第3頁(yè)
單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)_第4頁(yè)
單片機(jī)課程設(shè)計(jì)報(bào)告基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)報(bào)告 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì) 1 緒論2 方案設(shè)計(jì)3 系統(tǒng)的硬件設(shè)計(jì)3.1 主控制器3.2 顯示電路3.3 溫度傳感器工作原理3.4 溫度傳感器接口電路4 系統(tǒng)的軟件設(shè)計(jì)4.1 主程序4.2 溫度測(cè)量4.2.1 初始化ds18b204.2.2 等待應(yīng)答信號(hào)4.2.3 ds18b20讀字節(jié)4.2.4 ds18b20寫字節(jié)4.2.5 啟動(dòng)溫度測(cè)量4.2.6 讀取測(cè)量結(jié)果4.2.7各算法流程圖4.3 數(shù)碼管顯示5 系統(tǒng)的測(cè)試與總結(jié)參考文獻(xiàn)附錄1 原理圖附錄2 源程序清單1 緒 論隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)

2、字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來越高,要為現(xiàn)代人工作、科研、生活提供更好的更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。 現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級(jí)的增長(zhǎng),而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國(guó)各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會(huì)的每一個(gè)領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實(shí)時(shí)測(cè)量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測(cè)量

3、,因此研究溫度的測(cè)量方法和裝置具有重要的意義。測(cè)量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個(gè)發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀(jì)90年代中期問世的,它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測(cè)試技術(shù)(ate)的結(jié)晶,特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(mcu)。社會(huì)的發(fā)展使人們對(duì)傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機(jī)的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測(cè)溫

4、系統(tǒng)等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器ds18b20的結(jié)構(gòu)特征及控制方法,并對(duì)以此傳感器,89s51單片機(jī)為控制器構(gòu)成的數(shù)字溫度測(cè)量裝置的工作原理及程序設(shè)計(jì)作了詳細(xì)的介紹。與傳統(tǒng)的溫度計(jì)相比,其具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫要求比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用。該設(shè)計(jì)控制器使用atmel公司的at89s52單片機(jī),測(cè)溫傳感器使用dallas公司ds18b20,用數(shù)碼管來實(shí)現(xiàn)溫度顯示。2方案設(shè)計(jì)本設(shè)計(jì)主要是介紹了單片機(jī)控制下的溫度檢測(cè)系統(tǒng),詳細(xì)介紹了其硬件和軟件設(shè)計(jì),并對(duì)其各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下:利用溫度傳感器(d

5、s18b20)測(cè)量某一點(diǎn)環(huán)境溫度測(cè)量范圍為-55125,精度為0.5用數(shù)碼管進(jìn)行實(shí)際溫度值顯示采用at89s52單片機(jī)p3 .5口控制溫度傳感器ds18b20的溫度測(cè)量,以四位數(shù)碼感形式輸出測(cè)量溫度,原理圖如下圖1.1所示: 圖2.1 ds18b20與單片機(jī)接口原理 圖2.2總體設(shè)計(jì)方框圖 3 系統(tǒng)的硬件設(shè)計(jì) 3.1 主控制器 at89s52 是一種低功耗、高性能cmos8位微控制器,具有8k在系統(tǒng)可編程flash 存儲(chǔ)器。使用atmel 公司高密度非 易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和引腳完 全兼容。片上flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有

6、靈巧的8 位cpu 和在系統(tǒng) 可編程flash,使得at89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。at89s52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram, 32 位i/o 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8

7、位微控制器 8k 字節(jié)在系統(tǒng)可編程 flash at89s52 圖3.1 時(shí)鐘電路與復(fù)位電路3.2顯示電路 顯示采用4位數(shù)碼管,圖3.2.1為數(shù)碼管段驅(qū)動(dòng),圖3.2.2為數(shù)碼管位驅(qū)動(dòng),圖3.2.3為溫度顯示電路 圖3.2.1數(shù)碼管段驅(qū)動(dòng) 圖3.2.2數(shù)碼管位驅(qū)動(dòng) 圖3.2.3溫度顯示電路3.3 溫度傳感器工作原理ds18b20溫度傳感器是美國(guó)dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。ds18b20的性能特點(diǎn)如下: 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通訊 簡(jiǎn)單的多點(diǎn)分布應(yīng)

8、用 無需外部器件 可通過數(shù)據(jù)線供電 零待機(jī)功耗 測(cè)溫范圍-55+125,以0.5遞增。華氏器件-67+2570f,以0.90f 遞增 溫度以9 位數(shù)字量讀出 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms(典型值) 用戶可定義的非易失性溫度報(bào)警設(shè)置 報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl、配置寄存器。ds18b20的管腳排列、各種封裝形式如圖 3.3.1所示,dq 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;gnd為地信號(hào);vdd為可選擇的vdd引

9、腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。其電路圖 3.3.2所示.。 圖 3.3.1外部封裝形式 圖3.3.2傳感器電路圖ds18b20的測(cè)溫原理如圖3.3.3所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量.計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將-55 所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在

10、-55 所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器 1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫圖2中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是ds18b20的測(cè)溫原理。另外,由于ds18b20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)

11、對(duì)ds18b20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。圖3.3.3 ds18b20測(cè)溫原理圖在正常測(cè)溫情況下,ds1820的測(cè)溫分辨力為0.5,可采用下述方法獲得高分辨率的溫度測(cè)量結(jié)果:首先用ds1820提供的讀暫存器指令(beh)讀出以0.5為分辨率的溫度測(cè)量結(jié)果,然后切去測(cè)量結(jié)果中的最低有效位(lsb),得到所測(cè)實(shí)際溫度的整數(shù)部分tz,然后再用beh指令取計(jì)數(shù)器1的計(jì)數(shù)剩余值cs和每度計(jì)數(shù)值cd??紤]到ds1820測(cè)量溫度的整數(shù)部分以0.25、0.75為進(jìn)位界限的關(guān)系,實(shí)際溫度ts可用下式計(jì)算: 3.4 溫度傳感器

12、接口電路 圖3.4.1溫度傳感器接口電路4 系統(tǒng)的軟件設(shè)計(jì)4.1 主程序/*- 主函數(shù) -*/void main()while(1)convert(); /調(diào)用啟動(dòng)溫度轉(zhuǎn)換函數(shù)rdtemp(); /調(diào)用讀取溫度值函數(shù) 4.2 溫度測(cè)量4.2.1 初始化ds18b20/*- 初始化ds18b20 -*/void txreset() uint i;dq=0;/發(fā)送復(fù)位脈沖i=100;while(i0) i-; /拉低900us dq=1; /釋放總線i=4;while(i0) i-;4.2.2 等待應(yīng)答信號(hào)/*- 等待ds18b20應(yīng)答 -*/void rxwait() uint i;while(

13、dq); /等待15-60uswhile(dq); /ds18b20發(fā)出存在脈沖60-240usi=4;while(i0) i-;4.2.3 ds18b20讀字節(jié)/*- 讀取一位數(shù)據(jù) -*/bit rdbit()uchar i;bit b;dq = 0; /讀開始1usi+;dq = 1; /產(chǎn)生讀時(shí)間隙15usi+;i+;b = dq; /讀位i = 8;while(i0) i-; /等待60usdq = 1; /釋放總線return b;/*- 讀取字節(jié)數(shù)據(jù) -*/uchar rdbyte()uchar i,j,d;d=0;for(i=0;i8;i+) /各位由低向高讀出ds18b20j=

14、rdbit();d=(j1);return d;4.2.4 ds18b20寫字節(jié)/*- 寫入字節(jié)數(shù)據(jù) -*/void wrbyte(uchar d)uint i;uchar j;bit btmp;for(j=0;j1;if(btmp) /寫1dq=0; /延時(shí)15usi+;i+;dq=1; /寫1時(shí)隙不低于60ui=8;while(i0) i-;else /寫0dq=0;i=8;while(i0) i-; /保持低電平60us到120usdq=1; /釋放總線i+;i+;4.2.5 啟動(dòng)溫度測(cè)量/*- 啟動(dòng)溫度測(cè)量-*/void convert()uint i;delay(125); /延時(shí)1

15、mstxreset(); /初始化ds18b20rxwait(); /等待ds18b20答應(yīng)delay(125); /延時(shí)wrbyte(0xcc); /跳過rom命令wrbyte(0x44); /溫度轉(zhuǎn)換命令for(i=0;i250;i+) /延時(shí)1sdisplay();4.2.6 讀取測(cè)量結(jié)果/*- 讀取溫度值 -*/void rdtemp(void)short int temp;uint x;bit flag = 1;txreset(); /初始化ds18b20rxwait(); /等待ds18b20應(yīng)答delay(125); /延時(shí)wrbyte(0xcc); /跳過rom命令wrbyte

16、(0xbe); /讀暫存存儲(chǔ)器命令templow = rdbyte(); /溫度值低字節(jié),低4位為小數(shù)temphigh = rdbyte(); /溫度值高字節(jié)temp = (temphigh 8) | templow; /溫度為16位補(bǔ)碼if(temp 4; /溫度值整數(shù) x = temp & 0x000f; tempxiao = (x*10)/16; /溫度值小數(shù)if(flag) /正溫度disp0 = tempzheng/100; /百位else /負(fù)溫度disp0 = 16; /負(fù)號(hào)disp1 = (tempzheng%100)/10; /十位disp2 = tempzheng%10;

17、/個(gè)位disp3 = tempxiao; /小數(shù) 4.2.7各算法流程圖圖 4.2.7.1ds18b20初始化流程圖 圖4.2.7.2主程序流程圖 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny 發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖4.2.7.3 溫度轉(zhuǎn)換流程圖 圖4.2.7.4計(jì)算溫度流程圖 開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny圖4.2.7.5顯示數(shù)據(jù)刷新流程圖4.3 數(shù)碼管顯示/*- 數(shù)碼管顯示 -*/void display() uc

18、har i,j; j=0x08;for(i=0;i1; /調(diào)整位碼 delay(125);p0=0x00; 5 系統(tǒng)的測(cè)試與總結(jié)5.1 測(cè)試時(shí)的圖片 圖5.1.1溫度傳感器 圖5.1.2測(cè)試時(shí)室內(nèi)溫度顯示 圖5.1.3測(cè)試時(shí)手握住傳感器時(shí)的溫度顯示5.2總結(jié) 通過近兩個(gè)星期的單片機(jī)課程設(shè)計(jì),我終于完成了“基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)”,心中不免有些高興,但高興之余也有我值得深思的。 雖然以前做過類似的實(shí)驗(yàn),但這次的課程設(shè)計(jì)還是讓我學(xué)到了很多東西,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法。有好多的東西,只有我們?nèi)ピ囍隽耍拍苷嬲恼莆?,只學(xué)習(xí)理論有些東西是很難理解的,更談不

19、上掌握。通過這次的單片機(jī)課程設(shè)計(jì)我認(rèn)識(shí)到了,學(xué)習(xí)要理論聯(lián)系實(shí)際,把學(xué)到的理論知識(shí)同實(shí)際運(yùn)用相結(jié)合,才能是我們的知識(shí)融匯貫通,才能真正的學(xué)到知識(shí),真正的做到學(xué)以致用。附錄1 原理圖附錄2 源程序清單#include #define ulong unsigned long#define uint unsigned int#define uchar unsigned charuchar code led= 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0, 0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02,0x00 ; /數(shù)碼管碼

20、表uchar disp4=1,2,3,4; /數(shù)碼管顯示緩沖區(qū)/數(shù)碼管位選p1低四位,段選p0sbit lock=p14; /74573鎖存端sbit dq=p35; /ds18b20數(shù)據(jù)端uchar templow; /溫度值低字節(jié)uchar temphigh; /溫度值高字節(jié)char tempzheng; /溫度值整數(shù)char tempxiao; /溫度值小數(shù)void delay(uint x);void display();void txreset();void rxwait();bit rdbit();uchar rdbyte();void wrbit(bit b);void wrby

21、te(uchar d);void convert();void rdtemp();sbit acc0 = acc0;sbit acc7 = acc7;/*- 主函數(shù) -*/void main()while(1)convert(); /調(diào)用啟動(dòng)溫度轉(zhuǎn)換函數(shù)rdtemp(); /調(diào)用讀取溫度值函數(shù)/*- 初始化ds18b20 -*/void txreset() uint i;dq=0;/發(fā)送復(fù)位脈沖i=100;while(i0) i-; /拉低900us dq=1; /釋放總線i=4;while(i0) i-;/*- 等待ds18b20應(yīng)答 -*/void rxwait() uint i;whil

22、e(dq); /等待15-60uswhile(dq); /ds18b20發(fā)出存在脈沖60-240usi=4;while(i0) i-;/*- 讀取一位數(shù)據(jù) -*/bit rdbit()uchar i;bit b;dq = 0; /讀開始1usi+;dq = 1; /產(chǎn)生讀時(shí)間隙15usi+;i+;b = dq; /讀位i = 8;while(i0) i-; /等待60usdq = 1; /釋放總線return b;/*- 讀取字節(jié)數(shù)據(jù) -*/uchar rdbyte()uchar i,j,d;d=0;for(i=0;i8;i+) /各位由低向高讀出ds18b20j=rdbit();d=(j1);return d;/*- 寫入字節(jié)數(shù)據(jù) -*/void wrbyte(uchar d)uint i;uchar j;bit btmp;for(j=0;j1;if(btmp) /寫1dq=0; /延時(shí)15usi+;i+;dq=1; /寫1時(shí)隙不低于60ui=8;while(i0) i-;else /寫0dq=0;i=8;while(i0) i-; /保持低電平60us到120usdq=1; /釋放總線i+;i+;/*- 啟動(dòng)溫度轉(zhuǎn)換 -*/void convert()uint i;del

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論