數(shù)字式溫度計(jì)的設(shè)計(jì)課程設(shè)計(jì)_第1頁
數(shù)字式溫度計(jì)的設(shè)計(jì)課程設(shè)計(jì)_第2頁
數(shù)字式溫度計(jì)的設(shè)計(jì)課程設(shè)計(jì)_第3頁
數(shù)字式溫度計(jì)的設(shè)計(jì)課程設(shè)計(jì)_第4頁
數(shù)字式溫度計(jì)的設(shè)計(jì)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、裝訂線長(zhǎng) 春 大 學(xué) 課程設(shè)計(jì)紙數(shù)字式溫度計(jì)的設(shè)計(jì)摘要 隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)一,但人們對(duì)它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)所介紹的數(shù)字溫度測(cè)量系統(tǒng)測(cè)溫范圍從-10到85,測(cè)量精度為±0.5度,并且采用led顯示。該設(shè)計(jì)控制器使用單片at89c2051,測(cè)溫傳感器使用ds18b20,用4位共陽極led數(shù)碼管實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。 關(guān)鍵詞 數(shù)字式溫度計(jì) ds18b20 at89c2051 數(shù)碼管the design of the di

2、gital thermometerabstract with peoples living standard rises ceaselessly, undoubtedly scm control is one of the goals of the peoples to pursue, but people demand more and more of it for modern job, scientific research, life, providing more convenient facilities that needs microcontroller tech- nolog

3、y developing from several of all towards digital control system, intelligent control direction. the design of the digital temperature measuring system measuring ranges from minus 10 degrees celsius to 85 degrees celsius, the measurement accuracy is 0.5 degrees celsius, and useing of led direct readi

4、ng . this design uses at89c2051 as single-chip microcomputer controller,as temperature sensor ds18b20, and a total of 4 cathode tube to realize led digital temperature display.so it can exactly reach the requirements. keywords digital thermometer ds18b20 at89c2051 digital tubeii目錄引言1第1章 總體方案設(shè)計(jì)21.1 溫

5、度測(cè)量系統(tǒng)設(shè)計(jì)方案21.2 顯示部分設(shè)計(jì)方案21.3 總體設(shè)計(jì)框圖2第2章 系統(tǒng)硬件電路設(shè)計(jì)32.1 單片機(jī)模塊32.1.1 at89c2051功能及特性42.1.2 單片機(jī)模塊功能42.2 溫度采集部分硬件62.2.1 溫度傳感器ds18b2062.2.2 ds18b20溫度傳感器與單片機(jī)的接口電路82.3 顯示部分電路設(shè)計(jì)102.4 設(shè)計(jì)實(shí)物圖11第3章 系統(tǒng)軟件部分設(shè)計(jì)123.1 主程序123.2 讀出溫度子程序123.3 溫度轉(zhuǎn)換命令子程序133.4 計(jì)算溫度子程序143.5 顯示數(shù)據(jù)刷新子程序143.6 程序代碼15總結(jié)19致 謝20參考文獻(xiàn)21附錄 電路圖22i引言十七世紀(jì)是溫度計(jì)

6、誕生和發(fā)展的最初階段,這個(gè)物理儀器幾乎比任何其他儀器都得到更廣泛的應(yīng)用,現(xiàn)代的歷史研究認(rèn)為最早發(fā)明溫度計(jì)的科學(xué)家是伽利略,他于1592年發(fā)明了最早的氣體溫度計(jì),最早的液體溫度計(jì)是荷蘭科學(xué)家華倫海特制造出來。溫度是科學(xué)技術(shù)中最基本的物理量之一,物理、化學(xué)、生物等學(xué)科都離不開溫度。在工業(yè)生產(chǎn)和實(shí)驗(yàn)研究中,像電力、化工、石油、冶金、航空航天、機(jī)械制造、糧食存儲(chǔ)、酒類生產(chǎn)等領(lǐng)域內(nèi),溫度常常是表征對(duì)象和過程狀態(tài)的最重要的參數(shù)之一。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行;煉油過程中,原油必須在不同的溫度和壓力條件下進(jìn)行分餾才能得到汽油、柴油、煤

7、油等產(chǎn)品。沒有合適的溫度環(huán)境,許多電子設(shè)備就不能正常工作,糧倉(cāng)的儲(chǔ)糧就會(huì)變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障。因此,各行各業(yè)對(duì)溫度控制的要求都越來越高??梢姡瑴囟鹊臏y(cè)量和控制是非常重要的。單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛,在很多的電子產(chǎn)品中也用到了溫度檢測(cè)和溫度控制。隨著溫度控制器應(yīng)用范圍的日益廣泛和多樣,各種適用于不同場(chǎng)合的智能溫度控制器應(yīng)運(yùn)而生,因此研究溫度的測(cè)量方法和裝置具有重要意義。溫度測(cè)量在工業(yè)、農(nóng)業(yè)、國(guó)防等行業(yè)有著廣泛的應(yīng)用,而且隨著科學(xué)技術(shù)的發(fā)展對(duì)溫度測(cè)量的應(yīng)用范圍愈來愈廣。利用單片機(jī)技術(shù)的溫度測(cè)控系統(tǒng)以其體積小,可靠性高而被廣泛采用。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,

8、具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)at89c2051,測(cè)溫傳感器使用ds18b20,用4位共陽極led數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。第1章 總體方案設(shè)計(jì)通過本次課題設(shè)計(jì),應(yīng)用單片機(jī)原理及應(yīng)用等所學(xué)相關(guān)知識(shí)及查閱資料,完成數(shù)字溫度計(jì)的設(shè)計(jì),以達(dá)到理論與實(shí)踐更好的結(jié)合、進(jìn)一步提高綜合運(yùn)用所學(xué)知識(shí)和設(shè)計(jì)的能力的目的。通過本次設(shè)計(jì)的訓(xùn)練,可以使我們?cè)诨舅悸泛突痉椒ㄉ蠈?duì)基于mcs-51單片機(jī)的嵌入式系統(tǒng)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。1.1 溫度測(cè)量系統(tǒng)設(shè)計(jì)方

9、案在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以可以采用一只溫度傳感器ds18b20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。1.2 顯示部分設(shè)計(jì)方案 顯示部分采用數(shù)碼管直讀顯示,此方案的最大優(yōu)點(diǎn)就是成本較低,缺點(diǎn)是電路相對(duì)復(fù)雜,需要驅(qū)動(dòng)電路,在軟件上也需要做出處理。但是此方案完全可以滿足本報(bào)警系統(tǒng)的功能和要求,軟件處理上也不是特別的復(fù)雜,驅(qū)動(dòng)電路也相對(duì)簡(jiǎn)單。1.3 總體設(shè)計(jì)框圖整個(gè)系統(tǒng)由測(cè)溫電路、主控制器、驅(qū)動(dòng)電路和數(shù)碼管四個(gè)模塊組成。段選led數(shù)碼管顯示hc244at89c2051主控制器位選三極管ds18b2018b20圖1-1 總體設(shè)計(jì)框圖第2章 系統(tǒng)硬件電

10、路設(shè)計(jì)系統(tǒng)整體硬件電路包括單片機(jī)控制器、溫度采集部分硬件和顯示部分。本設(shè)計(jì)采用at89c2051為控制器、ds18b20為溫度傳感器與單片機(jī)的接口電路以及l(fā)ed數(shù)碼顯示管。2.1 單片機(jī)模塊at89c2051主要特點(diǎn)是采用flash存儲(chǔ)器技術(shù),降低了制造成本,其軟件、硬件與ds18b20完全兼容。at89c2051片內(nèi)含有2k字節(jié)的flash程序存儲(chǔ)器,128字節(jié)的片內(nèi)ram。允許工作的時(shí)鐘為024mhz。at89c2051不允許構(gòu)造外部總線來擴(kuò)充程序/數(shù)據(jù)存儲(chǔ)器,所以它不需要ale、psen、ra、wr一類的引腳。at89c2051共有20個(gè)引腳,體積小巧易于操作。引腳圖及內(nèi)部結(jié)構(gòu)圖如下:圖

11、2-1 2051單片機(jī)引腳圖及內(nèi)部結(jié)構(gòu)框圖2.1.1 at89c2051功能及特性1.串口p1口共8腳,準(zhǔn)雙向端口。p3.0p3.6共7腳,準(zhǔn)雙向端口,并且保留了全部的p3的第二功能,如p3.0、p3.1的串行通訊功能,p3.2、p3.3的中斷輸入功能,p3.4、p3.5的定時(shí)器輸入功能。在引腳的驅(qū)動(dòng)能力上面,89c2051具有很強(qiáng)的下拉能力,p1,p3口的下拉能力均可達(dá)到20ma。89c2051驅(qū)動(dòng)能力的增強(qiáng),使得它可以直接驅(qū)動(dòng)led數(shù)碼管。為了增加對(duì)模擬量的輸入功能,at89c2051在內(nèi)部構(gòu)造了一個(gè)模擬信號(hào)比較器,其輸入端連到p1.0和p1.1口,比較結(jié)果存入p3.6對(duì)應(yīng)寄存器,對(duì)于一些

12、不大復(fù)雜的控制電路我們就可以增加少量元件來實(shí)現(xiàn)。2.電源at89c2051有很寬的工作電源電壓,可為2.76v,當(dāng)工作在3v時(shí),電流相當(dāng)于6v工作時(shí)的1/4。工作于12hz時(shí),動(dòng)態(tài)電流為5.5ma,空閑態(tài)為1ma,掉電態(tài)僅為20na。這樣小的功耗很適合于電池供電的小型控制系統(tǒng)。3.存儲(chǔ)器at89c2051片內(nèi)含有2k字節(jié)的flash程序存儲(chǔ)器,128字節(jié)的片內(nèi)ram。由于2051內(nèi)部設(shè)計(jì)全靜態(tài)工作,所以允許工作的時(shí)鐘為020mhz,也就是說,允許在低速工作時(shí),不破壞ram內(nèi)容。相比之下,一般8031對(duì)最低工作時(shí)鐘限制為3.5mhz,因?yàn)槠鋬?nèi)部的ram是動(dòng)態(tài)刷新的。4.內(nèi)部i/o控制89c205

13、1在內(nèi)部i/o口為5路2級(jí)優(yōu)待中斷,2路定時(shí)器/計(jì)數(shù)器。2.1.2 單片機(jī)模塊功能該模塊由以下幾個(gè)部分組成:1.復(fù)位電路:為確保微機(jī)系統(tǒng)中電路穩(wěn)定可靠工作,復(fù)位電路是必不可少的一部分,復(fù)位電路的第一功能是上電復(fù)位。一般微機(jī)電路正常工作需要供電電源為5v±5%,即 4.755.25v。由于微機(jī)電路是時(shí)序數(shù)字電路,它需要穩(wěn)定的時(shí)鐘信號(hào),因此在電源上電時(shí),只有當(dāng)vcc超過4.75v低于5.25v以及晶體振蕩器 穩(wěn)定工作時(shí),復(fù)位信號(hào)才被撤除,微機(jī)電路開始正常工作。 圖2-1 復(fù)位電路目前為止,單片機(jī)復(fù)位電路主要有四種類型:(1) 微分型復(fù)位電路;(2) 積分型復(fù)位電路;(3) 比較器型復(fù)位電

14、路;(4) 看門狗型復(fù)位電路。2.振蕩電路:晶振是晶體振蕩器的簡(jiǎn)稱,在電氣上它可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率是串聯(lián)諧振,較高的頻率是并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏?,在這個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。這個(gè)并聯(lián)諧振電路加到一個(gè)負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍很窄, 所以即使其他元件的參數(shù)變化很大,這個(gè)振蕩器的頻率也不會(huì)有很大的變化,震蕩電路的電路圖如圖2-2所示.圖2-2 晶振電路晶振

15、有一個(gè)重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。 一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般ic的引腳都有等效輸入電容,這個(gè)不能忽略。2.2 溫度采集部分硬件2.2.1 溫度傳感器ds18b20ds18b20溫度傳感器是美國(guó)dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9-12位的數(shù)字值讀數(shù)方式。

16、ds18b20的性能特點(diǎn)如下:1.獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;2.多個(gè)ds18b20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;3.無須外部器件;4.可通過數(shù)據(jù)線供電,電壓范圍為3.05.5;5.零待機(jī)功耗;6.溫度以9或12位數(shù)字;7.用戶可定義報(bào)警設(shè)置;8.報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;9.負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。 ds18b20采用3腳pr35封裝或8腳soic封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2-3所示:i/oc64位rom和單線接口高速緩存存儲(chǔ)器與控制邏輯溫度傳感器高溫觸發(fā)器th低溫觸發(fā)器tl配置寄存器8位

17、crc發(fā)生器vdd 圖2-3 ds18b20內(nèi)部結(jié)構(gòu)64位rom的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的crc檢驗(yàn)碼,這也是多個(gè)ds18b20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器和,可通過軟件寫入戶報(bào)警上下限。ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存ram和一個(gè)非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)和的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為

18、相應(yīng)精度的溫度數(shù)值。低5位一直為1,tm是工作模式位,用于設(shè)置ds18b20在工作模式還是在測(cè)試模式,ds18b20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),r1和r0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。另外,由于ds18b20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。2.2.2 ds18b20溫度傳感器與單片機(jī)的接口電路ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)ds18b20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是

19、寄生電源供電方式,為保證在有效的ds18b20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)mosfet管來完成對(duì)總線的上拉。ds18b20與單片機(jī)的接口電路如圖2-4圖2-4 ds18b20與單片機(jī)的接口電路當(dāng)ds18b20處于寫存儲(chǔ)器操作和溫度a/d轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)vdd端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。由于ds18b20是在一根i/o線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。ds18b20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有

20、時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。ds18b20的復(fù)位時(shí)序 圖2-5 ds18b20復(fù)位時(shí)序ds18b20的讀時(shí)序?qū)τ赿s18b20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。對(duì)于ds18b20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成。圖2-6 ds18b20讀時(shí)序ds18b20的寫時(shí)序?qū)τ赿s18b20的寫

21、時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程。對(duì)于ds18b20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。圖2-7 ds18b20寫時(shí)序2.3 顯示部分電路設(shè)計(jì)led數(shù)碼管是一種常見的顯示數(shù)字量的元器件,其有兩種連接方式,即共陰極連接、共陽極連接。此次數(shù)字溫度計(jì)系統(tǒng)的顯示部分采用的是共陽極7段led數(shù)碼管,其主要原因是不用上拉電阻,從而節(jié)省了電的使用。另外在焊接的過程中比較簡(jiǎn)單,出現(xiàn)的誤差幾率較小。 圖2-8數(shù)碼管的原理圖

22、以及電路連接圖74hc244內(nèi)部集成8路非門,由兩路使能信號(hào)控制。主要用于數(shù)碼管功率驅(qū)動(dòng)。圖2-9 74hc244管腳圖74hc244芯片內(nèi)部共有兩個(gè)四位三態(tài)緩沖器,使用時(shí)可分別以1c和2g作為它們的選通工作信號(hào)。當(dāng)1/oe和2/oe都為低電平時(shí),輸出端y和輸入端a狀態(tài)相同;當(dāng)1/oe和2/oe都為高電平時(shí),輸出呈高阻態(tài),所以在使用芯片時(shí)一定要注意。2.4 設(shè)計(jì)實(shí)物圖圖2-10 設(shè)計(jì)實(shí)物圖第3章 系統(tǒng)軟件部分設(shè)計(jì)系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。開始3.1 主程序ds18b20初始化讀取溫度子程序溫度轉(zhuǎn)換子程序計(jì)算溫度子程序顯示子

23、程序圖3-1 主程序流程圖3.2 讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時(shí)需進(jìn)行crc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3-2所示:y發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)讀取溫度命令讀取操作,crc校驗(yàn)9字節(jié)完?crc校驗(yàn)正?確?移入溫度暫存器結(jié)束nny圖3-2 讀溫度流程圖3.3 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖3-3所示: 發(fā)ds18b20復(fù)位命令發(fā)跳過rom命令發(fā)溫度轉(zhuǎn)換開

24、始命令結(jié)束 圖3-3 溫度轉(zhuǎn)換流程圖3.4 計(jì)算溫度子程序計(jì)算溫度子程序?qū)am中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖3-4所示:開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny圖3-4 計(jì)算溫度流程圖3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖3-5:數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù) 結(jié)束nnyy圖3-5 顯示數(shù)據(jù)刷新流程圖3.6 程序代碼#include &

25、lt;reg52.h> #include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar k;sbit ds =p37; /定義ds18b20通訊端口 sbit d1=p30;sbit d2=p31; /數(shù)碼管 位選 sbit d3=p32;sbit d4=p33;uchar code led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x

26、03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/查小數(shù)表 uchar data temp_data4 = 0x00,0x00,0x00,0x00;/高低位臨時(shí)數(shù)據(jù) uchar data display5 = 0x00,0x00,0x00,0x00,0x00;/數(shù)據(jù)轉(zhuǎn)換 void delay_ms(uint ms) uint x,y; for(x=ms;x>0;x-) for(y=110;y>0;y-);void delay_us(uchar us)while(-us); readchar(void)/讀一個(gè)字節(jié) uchar

27、 i;uchar dat = 0;for (i=8;i>0;i-)ds=1;delay_us(1);dat>>=1;ds = 0; delay_us(1); /4us ds = 1;delay_us(1); /4us if(ds)dat|=0x80;delay_us(30); /66us ds=1;return(dat);writechar(uchar dat) /寫一個(gè)字節(jié) uchar i;for (i=8; i>0; i-) ds=1;delay_us(1); ds = 0;delay_us(1); ds = dat&0x01; delay_us(30);

28、dat=dat/2; ds = 1;delay_us(3); init_18b20(void)/初始化18b20 ds=1; delay_us(1);ds=0; delay_us(250); /單片機(jī)將dq拉低545us ds=1; delay_us(30); delay_us(250); /延時(shí)500us ds = 1; read_18b20()/ 讀取溫度 init_18b20(); /初始化 writechar(0xcc); /跳過讀序號(hào)列號(hào)的操作 writechar(0xbe); /讀取溫度寄存器 temp_data0 = readchar(); /溫度低8位temp_data1 =

29、readchar(); /溫度高8位 init_18b20(); /初始化 writechar(0xcc); /跳過讀序號(hào)列號(hào)的操作 writechar(0x44); /開始溫度轉(zhuǎn)換display4=temp_data0&0x0f;/低8位 display0=ditabdisplay4; /查表得小數(shù)位的值 display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4); /高8位 display3=display4/100;display1=display4%100;display2=display1/

30、10;display1=display1%10;void disp()/顯示 d1=0;p1=leddisplay0; /小數(shù)位delay_ms(3);d1=1;delay_ms(1); d2=0;p1=leddisplay1; /各位delay_ms(3);d2=1;delay_ms(1);d2=0; /小數(shù)點(diǎn) p1=0x7f; delay_ms(3); d2=1;delay_ms(1); d3=0;p1=leddisplay2; /十位delay_ms(3);d3=1; delay_ms(1);if(display3!=0x00) /百位 d4=0;p1=leddisplay3;delay

31、_ms(3);d4=1;delay_ms(1);void main(void)while(1) ds=1; init_18b20();read_18b20();for(k=30;k>0;k-)disp(); /顯示函數(shù) 總結(jié)此次課程設(shè)計(jì)是利用數(shù)字溫度傳感器ds18b20作為溫度傳感器件,采用價(jià)格低廉性能穩(wěn)定的mcs-51系列的單片機(jī)作為主控芯片,用四位一體共陽極的數(shù)碼管作為顯示器件構(gòu)成了整個(gè)系統(tǒng)整體。本設(shè)計(jì)的優(yōu)點(diǎn)是價(jià)格低廉,性能穩(wěn)定,如果把單片機(jī)換成貼片的封裝器件利于大規(guī)模的工業(yè)商業(yè)生產(chǎn)。在此次課程設(shè)計(jì)過程中,鞏固了在大學(xué)期間學(xué)過的知識(shí),尤其是單片機(jī)和模擬電子方面的知識(shí),同時(shí)通過這次設(shè)計(jì)提高了單片機(jī)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論