畢業(yè)論文-基于proteus的數(shù)字溫度計(jì)設(shè)計(jì)與仿真【精校排版】_第1頁
已閱讀1頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ?。?0 屆)</b></p><p>  基于Proteus的數(shù)字溫度計(jì)設(shè)計(jì)與仿真</p><p><b>  目 錄</b></p><p><b>  摘要IV</b></p>&l

2、t;p>  AbstractV</p><p><b>  第一章 緒論1</b></p><p><b>  1.1 背景1</b></p><p><b>  1.2 引言1</b></p><p>  1.3 方案選擇1</p>&l

3、t;p>  1.4 本文結(jié)構(gòu)2</p><p>  第二章 主要器件和開發(fā)工具介紹3</p><p>  2.1 一線式數(shù)字溫度傳感器DS18B203</p><p>  2.1.1 DS18B20的概述3</p><p>  2.1.2 DS18B20的主要特性3</p><p>  2.1

4、.3 DS18B20典型應(yīng)用電路3</p><p>  2.1.4 DS18B20的操作步驟4</p><p>  2.2 SST89E516RD單片機(jī)5</p><p>  2.2.1 SST89E516RD單片機(jī)的特點(diǎn)5</p><p>  2.2.2 SST89E516RD單片機(jī)內(nèi)部資源簡(jiǎn)介5</p>

5、<p>  2.3 開發(fā)工具Keil C517</p><p>  2.3.1 Keil主要特點(diǎn)7</p><p>  2.3.2 Keil開發(fā)單片機(jī)的地位7</p><p>  2.3.3 Keil基本使用步驟8</p><p>  2.4 仿真軟件Proteus9</p><p>  

6、2.4.1 Proteus的特性9</p><p>  2.4.2 Proteus仿真過程9</p><p>  第三章 系統(tǒng)總體設(shè)計(jì)10</p><p>  3.1 總體設(shè)計(jì)流程10</p><p>  3.1.1 硬件設(shè)計(jì)10</p><p>  3.1.2 軟件設(shè)計(jì)10</p>

7、<p>  3.2 DS18B20與單片機(jī)的連接10</p><p>  3.3 溫度顯示12</p><p>  第四章 系統(tǒng)詳細(xì)設(shè)計(jì)13</p><p>  4.1 硬件電路詳細(xì)設(shè)計(jì)13</p><p>  4.2 系統(tǒng)軟件詳細(xì)設(shè)計(jì)14</p><p>  4.2.1 系統(tǒng)程序

8、14</p><p>  第五章 系統(tǒng)仿真與調(diào)試和實(shí)現(xiàn)18</p><p>  5.1 Keil與Proteus聯(lián)機(jī)18</p><p>  5.2 仿真18</p><p>  5.2.1 仿真調(diào)試18</p><p>  5.2.2 系統(tǒng)仿真20</p><p>  5.

9、3 實(shí)物調(diào)試與實(shí)現(xiàn)22</p><p>  5.3.1 實(shí)物調(diào)試22</p><p>  5.3.2 實(shí)物實(shí)現(xiàn)23</p><p>  第六章 總結(jié)25</p><p><b>  參考文獻(xiàn)26</b></p><p>  附錄一 源程序27</p><p

10、>  附錄二 電氣圖35</p><p><b>  致謝36</b></p><p><b>  誠(chéng)信承諾書37</b></p><p>  基于Proteus的數(shù)字溫度計(jì)設(shè)計(jì)與仿真</p><p><b>  摘要</b></p><p&g

11、t;  本設(shè)計(jì)是以DS18B20溫度傳感器為基礎(chǔ)的數(shù)字溫度計(jì),它具有接口簡(jiǎn)單、響應(yīng)速度快、抗干擾能力強(qiáng)、精度高、工作穩(wěn)定、溫度值顯示直接、使用方便等優(yōu)點(diǎn),可適應(yīng)對(duì)溫度值精度要求高的場(chǎng)合,可被廣泛地用于生產(chǎn)中的各個(gè)領(lǐng)域,如房間空調(diào)控制、倉(cāng)庫(kù)測(cè)溫、恒溫條件實(shí)驗(yàn)室等等。設(shè)計(jì)思路是溫度只要在-55℃到+125℃內(nèi),就會(huì)在顯示設(shè)備中精確的顯示出來,當(dāng)數(shù)字溫度計(jì)上電工作以后,系統(tǒng)復(fù)位刷新顯示,溫度傳感器采集溫度值傳送到微控制器進(jìn)行檢查和處理,再由微

12、控制器送出信號(hào)經(jīng)過驅(qū)動(dòng)電路送向顯示電路進(jìn)行顯示。</p><p>  設(shè)計(jì)中使用了能仿真51單片機(jī)的EDA軟件Proteus對(duì)整個(gè)電路進(jìn)行了仿真調(diào)試,該軟件的應(yīng)用大大提高了開發(fā)效率,縮短開發(fā)時(shí)間。而借助Keil集成開發(fā)環(huán)境IDE和Proteus的聯(lián)合仿真和調(diào)試,能發(fā)現(xiàn)并解決設(shè)計(jì)中出現(xiàn)的各種軟硬件問題。仿真表明設(shè)計(jì)完全達(dá)到預(yù)期。</p><p>  關(guān)鍵字:Proteus;Keil;DS18

13、B20;微控制器;仿真</p><p>  Design and Simulation of Digital Thermometer Based on Proteus</p><p><b>  Abstract</b></p><p>  The design is based on temperature sensor DS18B20 di

14、gital thermometer, it has a simple interface, fast response, anti-interference ability, high precision, stable, temperature values ??are displayed directly, easy to use, etc., can be adapted to the temperature accuracy h

15、igh places, can be widely used in the production of various fields, such as room air-conditioning control, storage temperature, constant temperature laboratory and so on. As long as the design concept is the temperature

16、-55 ℃ to</p><p>  Design can be simulated using the EDA software 51 MCU Proteus simulation of the entire circuit debugging, the software application development greatly enhanced the efficiency and reduce dev

17、elopment time. The integrated development environment IDE with Keil and Proteus joint simulation can identify and solve design problems arising in various hardware and software. Simulation results show that the design fu

18、lly meet expectations.</p><p><b>  朗讀</b></p><p>  顯示對(duì)應(yīng)的拉丁字符的拼音</p><p><b>  字典</b></p><p>  Key words: Proteus , Keil , DS18B20, MCU, Simulation

19、</p><p><b>  第一章 緒論</b></p><p><b>  1.1 背景</b></p><p>  溫度測(cè)量在生活的各個(gè)領(lǐng)域都始終占據(jù)著極其重要的地位,如在農(nóng)業(yè)生產(chǎn)、環(huán)境保護(hù)、工業(yè)自動(dòng)化、安全生產(chǎn)、大棚等等對(duì)溫度的測(cè)量非常重要。傳統(tǒng)的模擬式溫度傳感器在測(cè)量溫度時(shí)需要進(jìn)行復(fù)雜的校準(zhǔn)和標(biāo)定,且需要復(fù)雜

20、的信號(hào)采集電路和模數(shù)轉(zhuǎn)換電路,使用時(shí)也不太方便,不便應(yīng)用。隨著科技的不斷發(fā)展,對(duì)溫度的檢測(cè)要求越來越高 。需要利用現(xiàn)代的科技制作出抗干擾能力強(qiáng)、精度高、工作穩(wěn)定、使用方便并具有智能功能的新一代的溫度檢測(cè)儀器來適應(yīng)現(xiàn)代生活和生產(chǎn)對(duì)溫度的高要求。數(shù)字溫度計(jì)具有接口簡(jiǎn)單、響應(yīng)速度快、抗干擾能力強(qiáng)、精度高、工作穩(wěn)定、溫度值顯示直接、使用方便等優(yōu)點(diǎn),從而來滿足現(xiàn)代生活和生產(chǎn)對(duì)溫度的高要求。</p><p><b>

21、;  1.2 引言</b></p><p>  溫度是我們?nèi)粘Ia(chǎn)和生活中實(shí)時(shí)在接觸到的物理量,但它是看不到的摸不著的,僅憑感覺只能感覺到它大概的溫度值,傳統(tǒng)的指針式的刻度式的溫度計(jì)雖然能指示溫度,但是精度低,使用不夠方便,顯示不夠直觀,數(shù)字溫度計(jì)的出現(xiàn)可以讓人們直觀的了解自己想知道的溫度到底是多少度。特別是一些對(duì)溫度的精度要求極高的產(chǎn)業(yè),比如核工業(yè),如果用傳統(tǒng)的溫度計(jì)沒有高精度的溫度值,可能會(huì)造成

22、不可想象的后果。比如發(fā)酵產(chǎn)業(yè),如果用傳統(tǒng)的溫度計(jì),不但不方便,而且由于精度不高導(dǎo)致最后不能達(dá)到預(yù)期的效果。又比如糧倉(cāng),恒溫實(shí)驗(yàn)室等等。所以數(shù)字溫度計(jì)的設(shè)計(jì)是現(xiàn)代社會(huì)的要求也是替代傳統(tǒng)溫度計(jì)的要求。</p><p><b>  1.3 方案選擇</b></p><p>  現(xiàn)在數(shù)字溫度計(jì)設(shè)計(jì)方案有很多種,數(shù)字溫度計(jì)可采用熱電偶、熱電阻、熱敏電阻、PN結(jié)型溫度傳感器、集

23、成溫度傳感器等。方案一是采用熱電偶差電路測(cè)量,溫度檢測(cè)可以使用低溫?zé)犭娕迹瑹犭娕籍a(chǎn)生的熱電勢(shì)由兩種金屬的接觸點(diǎn)勢(shì)和單一導(dǎo)體的溫差電勢(shì)組成,通過將參考終點(diǎn)保持在抑制溫度并測(cè)量該電壓,便可知道終點(diǎn)的溫度,但它存在著輸出電壓小,容易受到來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點(diǎn),而且這種設(shè)計(jì)還需要A/D轉(zhuǎn)換電路。方案二是使用熱敏電阻,利用其感溫效應(yīng),再將被測(cè)溫度變化的電流或電壓采集來,進(jìn)行A/D轉(zhuǎn)換,用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示設(shè)備上將被測(cè)溫

24、度值顯示出來,但需要A/D轉(zhuǎn)換,感溫電路比較復(fù)雜。方案三是采用鉑電阻,雖然其溫度精度高測(cè)量范圍比較廣,但熱響應(yīng)慢,成本比較高。本設(shè)計(jì)選用以DS18B20溫度傳感器基于微控制器的方案,同時(shí)利用EDA中的Proteus軟件進(jìn)行仿真和調(diào)試。確定這個(gè)方案原因是,DS18B20具有體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域,同時(shí)基于微控制器不需要專門的A/D轉(zhuǎn)換器件就可以直接將模擬信號(hào)送至單片機(jī)輸入口,且其輸出信號(hào)與

25、溫度的關(guān)系不存在明顯的非</p><p><b>  1.4 本文結(jié)構(gòu)</b></p><p>  本文通過基于Proteus的數(shù)字溫度測(cè)量系統(tǒng)仿真與實(shí)現(xiàn)。</p><p>  第一章:緒論(本章闡述了課題的研究背景,課題研究現(xiàn)狀,課題的目標(biāo)和意義,本論文方案選擇原因及本文結(jié)構(gòu)。)</p><p>  第二章:主要器件

26、和開發(fā)工具介紹(本章主要介紹Proteus及Keil C51軟件,介紹溫度傳感DS18B20及SST89E516RD單片機(jī)。)</p><p>  第三章:系統(tǒng)總體設(shè)計(jì)(系統(tǒng)總體設(shè)計(jì)思路與過程。)</p><p>  第四章:系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)(章主要介紹系統(tǒng)詳細(xì)設(shè)計(jì)過程與仿真。)</p><p>  第五章:系統(tǒng)仿真與調(diào)試和實(shí)現(xiàn)(實(shí)物實(shí)現(xiàn)。)</p>

27、<p><b>  第六章:總結(jié)</b></p><p>  第二章 主要器件和開發(fā)工具介紹</p><p>  該設(shè)計(jì)選用DS18B20作為溫度傳感器,SST89E516RD作為測(cè)量電路核心,開發(fā)工具主要選用了Proteus和Keil。 </p><p>  2.1 一線式數(shù)字溫度傳感器DS18B20</p>&

28、lt;p>  2.1.1 DS18B20的概述</p><p>  DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器DS18B20,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域;它具有獨(dú)特的一線接口,將地址線、數(shù)據(jù)線和控制線合并為一根雙向串行傳輸數(shù)據(jù)的信號(hào)線,允許在這根信號(hào)線上掛接多個(gè)DS18B20;因此,單片機(jī)只需要通過一根I/O線就可以與多個(gè)DS18B20通信[1

29、]。 </p><p>  2.1.2 DS18B20的主要特性</p><p>  DS18B20測(cè)溫范圍是-55—+125℃,在-10—+85℃時(shí)精度為±0.5℃;它的轉(zhuǎn)換精度是9—12位二進(jìn)制數(shù)(包括符號(hào)1位),可編程確定轉(zhuǎn)換精度的位數(shù);它的溫度分辨率是9位精度為0.5℃,10位精度為0.25℃,11位精度為0.125℃,12位精度為0.0625℃;它的轉(zhuǎn)換時(shí)間為9位精度

30、為93.75ms,10位精度為187.5ms,12位精度為750ms;它的適應(yīng)電壓范圍為3.0—5.5V,在寄生電源方式下可由數(shù)據(jù)線供電[2]。</p><p>  2.1.3 DS18B20典型應(yīng)用電路</p><p>  DS18B20的引腳定義如圖2.1所示,其中Vcc:電源正,寄生時(shí)直接接地;DQ:單線輸入/輸出;Vss:電源地[3]。</p><p> 

31、 圖2.1 DS18B20引腳圖</p><p>  2.1.4 DS18B20的操作步驟</p><p>  由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)80C51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)DS18B20芯片的訪問;DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫

32、的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求;DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性;該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備;而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收;數(shù)據(jù)和命令的傳輸都是低位在先[4]。1-Wire通信流程圖如圖2.2所示,其初始化時(shí)序圖[5]如圖2.3所示。&l

33、t;/p><p>  圖2.2 1-Wire通信流程圖</p><p>  DS18B20的讀時(shí)序,對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。 對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成,其讀時(shí)序圖[5]如圖2.4所示。 </p>

34、;<p>  DS18B20的寫時(shí)序,對(duì)于DS18B20的寫時(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)就得釋放單總線,其寫時(shí)序圖[5]如圖2.5所示。</p><p>  圖2.3

35、 初始化時(shí)序圖</p><p><b>  圖2.4 讀時(shí)序</b></p><p><b>  圖2.5 寫時(shí)序</b></p><p>  2.2 SST89E516RD單片機(jī)</p><p>  2.2.1 SST89E516RD單片機(jī)的特點(diǎn)</p><p>

36、  SST89E516RD單片機(jī)可靠性高,價(jià)格低廉,軟硬件全兼容8051/52系列單片機(jī),完全符合設(shè)計(jì)要求。SST89E516RD單片機(jī)最高工作頻率可達(dá)40MHz,內(nèi)部具有64K+8KB的FALSH ROM存儲(chǔ)器,可反復(fù)讀寫超過十萬次;在應(yīng)用中基本無需再擴(kuò)展程序儲(chǔ)存器;此外內(nèi)部數(shù)據(jù)RAM達(dá)1K字節(jié),能滿足大多數(shù)應(yīng)用,比標(biāo)準(zhǔn)51機(jī)的RAM大8倍;最重要的是該型單片機(jī),支持在應(yīng)用可編程(IAP),和在系統(tǒng)可編程(ISP),可實(shí)現(xiàn)遠(yuǎn)程升級(jí),而

37、不用編程器;另外該單片機(jī)有BSL(Boot-Strap Loader)引導(dǎo)下載程序,該程序可以替換SoftICE監(jiān)控程序,固化在ROM中,從而使該單片機(jī)具有引導(dǎo)下載功能;總之SST89E516RD單片機(jī)特點(diǎn)有源代碼調(diào)試支持匯編語言和C51高級(jí)語言,單步執(zhí)行 STEP和STEP OVER,斷點(diǎn)調(diào)試做多到10個(gè)固定和1個(gè)臨時(shí)斷點(diǎn),全速運(yùn)行,顯示修改變量,讀/寫數(shù)據(jù)存儲(chǔ)器,讀/寫代碼存儲(chǔ)器,讀/寫SFR特殊功能寄存器,讀/寫P0-P3端口,下

38、載INTEL HEX文件,對(duì)8051程序存儲(chǔ)區(qū)的反匯編,在線匯編等等[6]。</p><p>  2.2.2 SST89E516RD單片機(jī)內(nèi)部資源簡(jiǎn)介</p><p>  ST89E516RD的引腳與51/52完全兼容,電平兼容TTL/COMS標(biāo)準(zhǔn),這樣可以直接和大多數(shù)集成電路連接,不需要進(jìn)行電平轉(zhuǎn)換。</p><p><b>  單片機(jī)的I/O口<

39、;/b></p><p>  SST89E516RD的引腳與51/52完全兼容,有4個(gè)并行I/O端口,分別記作P0、P1、P2、P3。每個(gè)端口都包含一個(gè)同名的特殊功能寄存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。對(duì)并行I/O口的控制是通過對(duì)同名的特殊功能寄存器的控制實(shí)現(xiàn)的。</p><p>  單片機(jī)的定時(shí)/計(jì)數(shù)器</p><p>  SST89E516RD單片機(jī)內(nèi)部有

40、兩個(gè)16位的定時(shí)器/計(jì)數(shù)器,即定時(shí)器T0和定時(shí)器T1,它們既可以用做定時(shí)器方式,也可以用做計(jì)數(shù)器方式;定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成;作定時(shí)方式時(shí),輸入由內(nèi)部機(jī)器周期脈沖產(chǎn)生,定時(shí)器可以看作是對(duì)計(jì)算機(jī)機(jī)器周期的計(jì)數(shù)器;作對(duì)外計(jì)數(shù)方式時(shí),外部輸入信號(hào)由引腳P3.4(T0)或P3.5(T1)輸入;定時(shí)器/計(jì)數(shù)器有四種工作方式,其工作方式選擇和控制由TMOD和 TCON寄存器的內(nèi)容決定[7]。<

41、/p><p> ?。?) 工作方式寄存器TMOD</p><p>  工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如圖2.6所示。</p><p>  圖2.6 TMOD定時(shí)/計(jì)數(shù)器工作方式</p><p>  GATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟

42、動(dòng)定時(shí)/計(jì)數(shù)器工作。 </p><p>  : 定時(shí)/計(jì)數(shù)模式選擇位。 =0為定時(shí)模式; =1為計(jì)數(shù)模式。</p><p>  M1、M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1、M0進(jìn)行設(shè)置如表2.1所示。</p><p>  表2.1 TMOD定時(shí)/計(jì)數(shù)器四種工作方式</p><p> ?。?) 控制寄存器TCON&

43、lt;/p><p>  TCON的低4位用于控制外部中斷,TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如圖2.7所示。</p><p>  圖2.7 TCON工作方式圖</p><p>  IT0(IT1):外部中斷0(或1)觸發(fā)方式控制位。</p><p>  TF1(TCON.7):T1溢出中斷請(qǐng)求標(biāo)志位。</p>

44、;<p>  TR1(TCON.6):T1運(yùn)行控制位。TR1置1時(shí),T1開始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。</p><p>  TF0(TCON.5):T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類同。</p><p>  TR0(TCON.4):T0運(yùn)行控制位,其功能與TR1類同。</p>&l

45、t;p>  2.3 開發(fā)工具Keil C51</p><p>  2.3.1 Keil主要特點(diǎn)</p><p>  Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì)。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。Keil C5

46、1生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。Keil 提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起[8]。</p><p>  2.3.2 Keil開發(fā)單片機(jī)的地位</p><p>  隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片

47、機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil 軟件是目前最流行開發(fā)MCS-51 系列單片機(jī)的軟件,而且近年來各仿真機(jī)廠商紛紛宣布全面支持Keil,如果使用C 語言編程,那么Keil 幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買到該軟件、而買的仿真機(jī)也很可能只支持該軟件),即使不使用C 語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。</p><p>  2.3.3 Keil基本使用步驟&

48、lt;/p><p>  Keil軟件可以完成程序的編輯、編譯、連接、調(diào)試,打開Keil主界面如圖2.8所示,進(jìn)入界面后建立項(xiàng)目文件,選中8051芯片寫入源程序在保存項(xiàng)目文件,進(jìn)行程序編譯和調(diào)試,其操作流程如圖2.9所示。</p><p>  圖2.8 啟動(dòng)Keil主界面 </p><p>  圖2.9 Keil操作流程圖</p><p>  

49、2.4 仿真軟件Proteus</p><p>  2.4.1 Proteus的特性</p><p>  Proteus具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS-232動(dòng)態(tài)仿真、1 C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;它有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等;它支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PI

50、C12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片,支持大量的存儲(chǔ)器和外圍芯片;它提供軟件調(diào)試功能,在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;它同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision3等軟件;Proteus還具有強(qiáng)大的原理圖繪制功能[9]。</p><p&g

51、t;  2.4.2 Proteus仿真過程</p><p>  Proteus有豐富的器件庫(kù),超過27000種元器件,可方便地創(chuàng)建新元件。開發(fā)人員可從器件庫(kù)中選出所需要的器件通過布線連接成需要的電氣原理圖,然后保存成*.DSN文件。雙擊畫好的電氣原理圖中需要錄入程序的芯片,將由Keil編寫好的程序錄入進(jìn)去。點(diǎn)擊運(yùn)行,并進(jìn)行不斷調(diào)試,直到達(dá)到系統(tǒng)預(yù)期效果。它的操作基本流程圖如圖2.10所示。</p>

52、<p>  圖2.10 Proteus操作流程圖</p><p>  第三章 系統(tǒng)總體設(shè)計(jì)</p><p>  3.1 總體設(shè)計(jì)流程</p><p>  3.1.1 硬件設(shè)計(jì)</p><p>  本設(shè)計(jì)采用的微控制器是以SST公司的89E516RD型單片機(jī)為主控芯片,利用美國(guó)DALLAS 公司生產(chǎn)的DS18B20 數(shù)字溫度

53、傳感器采集溫度,DS18B20新型單總線數(shù)字溫度傳感器集溫度測(cè)量和A/D 轉(zhuǎn)換于一體,直接輸出數(shù)字量并輸入到單片機(jī),經(jīng)過處理通過LED 顯示出溫度,結(jié)構(gòu)圖如圖3.1所示。</p><p>  圖3.1 硬件結(jié)構(gòu)圖</p><p>  3.1.2 軟件設(shè)計(jì)</p><p>  總體程序設(shè)計(jì)是把DS18B20 現(xiàn)場(chǎng)采集到的溫度數(shù)據(jù),存入AT89S52 的內(nèi)部數(shù)據(jù)存儲(chǔ)

54、器,經(jīng)處理后送液晶實(shí)時(shí)顯示,其結(jié)構(gòu)框圖如圖3.2所示。</p><p>  圖3.2 軟件總體流程圖</p><p>  3.2 DS18B20與單片機(jī)的連接</p><p>  DS18B20是數(shù)字溫度傳感器,所采集的溫度值不需要再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換就可以直接傳送到單片機(jī)中;DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1引腳

55、接地,2引腳作為信號(hào)線,3腳接電源;另一種是寄生電源方式,如圖3.3所示單片機(jī)端口接單總線,為保證有效的DS18B20時(shí)鐘周期提供足夠的電源,可用一個(gè)電阻完成對(duì)總線的上拉。</p><p>  圖3.3 DS18B20與單片機(jī)連接圖</p><p>  同時(shí)DS18B20最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線來完成。DS18B20處于寫存儲(chǔ)器讀操作和溫度A

56、/D操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)最大為10us。采用寄生電源方式時(shí)VDD段接地。由于單線制只有一根線,因此發(fā)送口必須是三態(tài)的。其工作流程圖如圖3.4所示。</p><p>  圖3.4 DS18B20工作流程圖</p><p><b>  3.3 溫度顯示</b></p><p>  顯示器是單片機(jī)常用功能,顯示器主要功能是為系

57、統(tǒng)使用者提供必要的工作信息或</p><p>  提供工作狀態(tài)提示信息,顯示器的工作是由單片機(jī)通過顯示接口驅(qū)動(dòng)的,其中顯示函數(shù)設(shè)計(jì)流程圖如圖3.5所示。</p><p>  圖3.5 顯示程序流程圖</p><p>  第四章 系統(tǒng)詳細(xì)設(shè)計(jì)</p><p>  4.1 硬件電路詳細(xì)設(shè)計(jì)</p><p>  首先,

58、啟動(dòng)Proteus的ISIS模塊,進(jìn)入該軟件的主界面,主界面如圖4.1所示。</p><p>  圖4.1 Proteus主界面</p><p>  其次,從元件庫(kù)中選擇有用的電氣元件,所用元器件如表4.1所示。</p><p>  表4.1 所需元器件表</p><p>  最后,根據(jù)本系統(tǒng)所需功能要求,畫出的電氣原理圖如下圖4.2所示

59、。</p><p>  圖4.2 硬件詳細(xì)電氣圖</p><p>  在電氣圖中DS18B20通過80C51的P1端口將溫度數(shù)據(jù)輸入到80C51中,數(shù)據(jù)經(jīng)過80C51處理后由P0端口輸出將要在LED數(shù)碼管上顯示的字符數(shù)據(jù),由P2端口輸出數(shù)碼位的使能數(shù)據(jù),復(fù)位數(shù)據(jù)是通過RST引腳輸入到50C51中。電氣圖中7個(gè)200歐的電阻起到限流的功能,74L04非門起到驅(qū)動(dòng)的功能。</p>

60、<p>  4.2 系統(tǒng)軟件詳細(xì)設(shè)計(jì)</p><p>  4.2.1 系統(tǒng)程序</p><p><b>  主程序</b></p><p>  主程序是整個(gè)控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,設(shè)計(jì)流程圖如圖4.3所示。</p><p>  圖4.3 主程序流程圖</p>

61、<p>  2. 溫度采集程序設(shè)計(jì)</p><p>  (1) 該溫度采集程序的主要功能是使用單片機(jī)和溫度傳感器DS18B20完成對(duì)溫度的檢測(cè)和補(bǔ)償,通過SST89E516RD完成對(duì)DS18B20芯片的控制和數(shù)據(jù)傳輸,程序的功能是當(dāng)前的DS18B20溫度采集和轉(zhuǎn)換是否完成,并且完成對(duì)轉(zhuǎn)換后數(shù)據(jù)讀取。 </p><p> ?。?) 溫度轉(zhuǎn)換程序的流程圖如圖4.4所示。

62、</p><p>  圖4.4 溫度轉(zhuǎn)換程序流程圖</p><p> ?。?) DS18B20溫度測(cè)量程序設(shè)計(jì)。DS18B20 采用的是1-Wire 總線協(xié)議方式,即用一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,單線通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)序概念,因此讀寫時(shí)序很重要;系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行;操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)—發(fā)ROM 操作命令—發(fā)存儲(chǔ)器操作命

63、令—處理數(shù)據(jù)[10]。</p><p>  初始化:初始化時(shí)序圖如圖2.3所示,DS18B20 檢測(cè)到該上升沿后,延時(shí)15~60 us 后,通過拉低總線60~240us 來產(chǎn)生應(yīng)答脈沖。主機(jī)接收到從機(jī)的應(yīng)答脈沖,則判斷有單線器件在線。</p><p>  ROM 操作命令:主要包括讀ROM、匹配ROM、跳過ROM、快速搜索ROM、告警搜索等五種。一旦總線主機(jī)檢測(cè)到應(yīng)答脈沖,便發(fā)起合適的RO

64、M 操作命令。</p><p>  存儲(chǔ)器操作命令:通過ROM 操作命令使得總線主機(jī)與從機(jī)設(shè)備確定了通信關(guān)系之后,主機(jī)發(fā)出的功能命令便可以驅(qū)動(dòng)從機(jī)設(shè)備進(jìn)行相應(yīng)的動(dòng)作,當(dāng)需要進(jìn)行數(shù)據(jù)的傳輸時(shí),從機(jī)設(shè)備會(huì)把主機(jī)要求的信息以串行傳輸?shù)姆绞剿偷絾慰偩€上。</p><p>  數(shù)據(jù)處理:DS18B20 有嚴(yán)格的時(shí)序來保證數(shù)據(jù)的完整性。在單總線DQ 上,存在復(fù)位、應(yīng)答脈沖、寫“0”、寫“l(fā)”、讀“0”

65、和讀“1”等幾種信號(hào)類型。DS18B20 的讀寫時(shí)序分別如圖2.4、圖2.5 所示。初始化函數(shù)設(shè)計(jì)和中斷函數(shù)設(shè)計(jì)流程圖分別如圖4.5圖4.6所示。</p><p>  圖4.5 初始化程序設(shè)計(jì)流程圖 圖4.6 中斷程序設(shè)計(jì)流程圖</p><p>  第五章 系統(tǒng)仿真與調(diào)試和實(shí)現(xiàn)</p><p>  5.1 Keil與Proteu

66、s聯(lián)機(jī)</p><p>  下載keil c51 軟件和proteus軟件,分別進(jìn)行安裝。把proteus安裝目錄下MODELS/VDM51.dll文件復(fù)制到Keil 安裝目錄的 \C51\BIN 目錄中。編輯C51 里tools.ini 文件加入TDRV*=BIN\VDM51.DLL("PROTEUS VSM MONITOR 51 DRIVER"),其中星號(hào)為自己根據(jù)情況加,如果有“TDRV

67、1=…”則星號(hào)就改為2,依次類推。打開ISIS,選中DEBUG-->use remote debug monitor。進(jìn)入proteus安裝目錄下SAMPLES/VSM for 8051/C51 Calculator/,用ISIS打開calc.DSN,用keil c51打開CALC.UV2,在左側(cè)我們選中"Target 1",點(diǎn)右鍵彈出菜單中選第一個(gè)為目標(biāo)“Target 1”設(shè)置選項(xiàng),在輸出標(biāo)簽下,要選種產(chǎn)生H

68、EX文件,在調(diào)試標(biāo)簽下,要選種右側(cè)項(xiàng),并選擇下拉菜單里的Proteus VSM Monitor-51 Driver,在進(jìn)入設(shè)置,如果同一臺(tái)機(jī)IP名為127.0.0.1,如不是同一臺(tái)PC機(jī)則填寫另一臺(tái)PC機(jī)的IP 地址。</p><p><b>  5.2 仿真</b></p><p>  5.2.1 仿真調(diào)試</p><p>  首先,對(duì)顯

69、示函數(shù)進(jìn)行調(diào)試,在顯示函數(shù)前加入斷點(diǎn)如圖5.1所示,然后全程運(yùn)行函數(shù),看Proteus中顯示部分是否一位一位的顯示。全程運(yùn)行后Proteus是一位一位的顯示,其中一位顯示如圖5.2所示,可見顯示函數(shù)運(yùn)行正常,顯示部分調(diào)試完成。</p><p>  圖5.1 顯示函數(shù)加入斷點(diǎn)</p><p>  圖5.2 Proteus對(duì)應(yīng)位顯示</p><p>  其次,對(duì)DS

70、18B20溫度采集函數(shù)進(jìn)行調(diào)試,在函數(shù)前加入斷點(diǎn),然后全程運(yùn)行函數(shù),看是否正常,運(yùn)行后,其圖如圖5.3所示,溫度顯示0x0E,也就是溫度為140C,在Proteus中對(duì)應(yīng)也顯示溫度為140C,其圖如圖5.4所示,所以采集函數(shù)運(yùn)行正常,采集函數(shù)調(diào)試完成。</p><p>  圖5.3 溫度采集函數(shù)加入斷點(diǎn)</p><p>  最后,不設(shè)置斷點(diǎn),整體運(yùn)行程序后,系統(tǒng)運(yùn)行正常,調(diào)試完成。<

71、;/p><p>  圖5.4 Proteus對(duì)應(yīng)溫度顯示</p><p>  5.2.2 系統(tǒng)仿真</p><p>  首先,打開Proteus已畫好的電氣圖如圖5.5所示,這個(gè)電氣圖可分為三大模塊,第一大模塊是由溫度傳感器DS18B20和電阻等組成,主要負(fù)責(zé)溫度的采集和傳送。第二大模塊是微控制器,主要負(fù)責(zé)數(shù)據(jù)接收處理和傳輸。第三大模塊由LED四位數(shù)碼管和非門等組成

72、,主要負(fù)責(zé)溫度值顯示。</p><p>  圖5.5 系統(tǒng)電路圖</p><p>  其次,將Keil編譯好的程序?qū)氲诫姎鈭D中,雙擊微控制器,彈出一個(gè)對(duì)話框,點(diǎn)擊Program File框?qū)刖幾g好的程序,如圖5.6所示。</p><p>  圖5.6 程序?qū)雸D</p><p>  最后,點(diǎn)擊Proteus軟件左下角的開始按鈕,在DS

73、18B20上改變溫度值,則LED數(shù)碼管會(huì)顯示對(duì)應(yīng)的值,其顯示如圖5.7所示。</p><p>  圖5.7 系統(tǒng)運(yùn)行圖</p><p>  5.3 實(shí)物調(diào)試與實(shí)現(xiàn)</p><p>  5.3.1 實(shí)物調(diào)試</p><p>  在實(shí)物實(shí)現(xiàn)中,調(diào)試非常重要。要檢查焊接的順序是否出現(xiàn)錯(cuò)誤,檢查原理圖與器件上的引腳是否一致、用萬用表檢查是否有虛

74、焊,引腳是否出現(xiàn)短路現(xiàn)象。硬件電路檢查好后,將實(shí)物和軟件進(jìn)行聯(lián)合調(diào)試。</p><p>  首先,對(duì)顯示函數(shù)進(jìn)行調(diào)試,在顯示函數(shù)前加入斷點(diǎn)如圖5.8所示,然后全程運(yùn)行函數(shù),看實(shí)物中的顯示是否一位一位顯示。全程運(yùn)行程序后實(shí)物是一位一位顯示的,其中一位顯示如圖5.9所示,可見顯示部分運(yùn)行正常,顯示部分調(diào)試完成。</p><p>  圖5.8 顯示函數(shù)加入斷點(diǎn)</p><p

75、>  圖5.9 實(shí)物對(duì)位顯示</p><p>  其次,對(duì)DS18B20溫度采集函數(shù)進(jìn)行調(diào)試,在函數(shù)前加入斷點(diǎn),然后全程運(yùn)行函數(shù),看是否正常,運(yùn)行后,其圖如圖5.10所示,溫度顯示0x16,也就是溫度為220C,在實(shí)物中對(duì)應(yīng)也顯示溫度為220C,其如圖5.11所示,所以采集函數(shù)運(yùn)行正常,采集函數(shù)部分調(diào)試完成。</p><p>  圖5.10 溫度采集函數(shù)加入斷點(diǎn)</p>

76、;<p>  圖5.11 實(shí)物對(duì)應(yīng)溫度顯示</p><p>  最后,不設(shè)置斷點(diǎn),整體運(yùn)行程序后,實(shí)物運(yùn)行正常,調(diào)試完成。</p><p>  5.3.2 實(shí)物實(shí)現(xiàn)</p><p>  將程序燒考到SST89E516RD單片機(jī)中,運(yùn)行系統(tǒng),實(shí)物成功,實(shí)物圖如圖5.12所示。</p><p>  圖5.12 電子溫度計(jì)實(shí)物&

77、lt;/p><p><b>  第六章 總結(jié)</b></p><p>  本系統(tǒng)既可以在現(xiàn)場(chǎng)通過LED顯示器讀取溫度值,非常方便。在系統(tǒng)中所使用的SST89E516RD單片機(jī)最高工作頻率可達(dá)40MHz,可反復(fù)讀寫超過十萬次,為實(shí)現(xiàn)電路功能提供了非常有利的條件。本系統(tǒng)設(shè)計(jì)中使用的是傳感器的插座電路,因此,該系統(tǒng)的可擴(kuò)展性很強(qiáng),整個(gè)系統(tǒng)硬件簡(jiǎn)單、可靠,成本低。</p&

78、gt;<p>  該系統(tǒng)主要是溫度的檢測(cè)沒有溫度控制設(shè)計(jì),沒有考慮到傳感器輸出信號(hào)與溫度在不同環(huán)境下有不同的線性關(guān)系,可能顯示的溫度值與實(shí)際溫度有一點(diǎn)的誤差。同時(shí),本系統(tǒng)通過仿真和做出來的實(shí)物來看都比較穩(wěn)定,但由于各種因素,沒有通過實(shí)物在多個(gè)地方測(cè)試,不能確定本系統(tǒng)的設(shè)計(jì)在任何環(huán)境下是否穩(wěn)定或存在問題。</p><p>  由于本人水平有限,在設(shè)計(jì)過程中,可能在設(shè)計(jì)上存在一定的缺陷,請(qǐng)各位老師多多指

79、正。</p><p><b>  參考文獻(xiàn)</b></p><p>  張友良,馬玉凡. 基于熱電偶的多點(diǎn)溫度測(cè)量?jī)x的設(shè)計(jì)[J].傳感器世界,2010,16(6);15~17.</p><p>  美國(guó) Dallas 半導(dǎo)體公司.DS1820 datasheet [DB/OL].</p><p>  彭陽,許海賓,趙雪.

80、基于單片機(jī)溫度測(cè)量系統(tǒng)的設(shè)計(jì)[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2010,5(2);54~55.</p><p>  郭天祥.51單片機(jī)C語言教程 [M] . 北京:電子工業(yè)學(xué)出版社,2009:348~349.</p><p>  胡媛媛. 基于DS18B20 的多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[D]. 徐州:中國(guó)礦業(yè)大學(xué)信電學(xué)院,2009.</p><p>  SST89E516

81、RD-百度文庫(kù)[DB/OL].</p><p>  SST89E516RD 中文資料[CP/DK]. </p><p>  劉同法,陳忠平,眭仁武.單片機(jī)基礎(chǔ)與最小系統(tǒng)實(shí)踐[M]. 北京:北京航空航天大學(xué)出版社,2007:12~13.</p><p>  Proteus資料-百度文庫(kù)[DB/OL]. </p><p>  樓然苗,李光飛.單片

82、機(jī)課程設(shè)計(jì)指導(dǎo)[M]. 北京:北京航空航天大學(xué)出版社,2007:55~64.</p><p><b>  附錄一 源程序</b></p><p>  //******************************</p><p>  //數(shù)字溫度計(jì).C *</p><p>  //************

83、******************</p><p>  #include <REG51.H></p><p>  #include <Temperature.c></p><p>  #defineLEDOut P0//定義LED數(shù)碼管字符顯示碼輸出口</p><p>  #define LEDSegP2

84、//定義數(shù)碼位的使能輸出口</p><p>  sbit StateLED=P1^0;//定義溫度轉(zhuǎn)換指示輸出</p><p>  bit TimeOK=0;//溫度采集定時(shí)標(biāo)志</p><p>  //共陰型7段字符顯示碼表</p><p>  const char LEDCode[10]={0x3f,0x06,0x5

85、b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  unsigned char DispBuff[4]={0x40,0x40,0x40,0x40};//顯示緩沖區(qū)</p><p><b>  //函數(shù)原型聲明</b></p><p>  void INIT_TMR(void);</p>

86、;<p>  void Display(void);</p><p>  void Print(char T);</p><p>  //*******************</p><p>  // 定時(shí)器初始化函數(shù) *</p><p>  //*******************</p><p>

87、  void InitMCU(void)</p><p>  {TMOD=0x02; //設(shè)定定時(shí)器0,工作方8位自動(dòng)重裝</p><p>  TH0=0; //裝載計(jì)數(shù)值0(256)到定時(shí)器0</p><p><b>  TL0=0;</b></p><p>  ET0=1; //開定時(shí)器0中斷

88、</p><p>  EA=1; //開總中斷</p><p>  TR0=1; //啟動(dòng)定時(shí)器0</p><p><b>  }</b></p><p>  //*******************</p><p>  // 定時(shí)器0中斷函數(shù) *</p><

89、;p>  //*******************</p><p>  void TM0_INT(void) interrupt 1</p><p>  {static unsigned int Timer0Counter=0;//T0中斷計(jì)數(shù)變量</p><p>  Timer0Counter++;</p><p>  if

90、(Timer0Counter%15==0) //是否間隔1/240s(刷新頻率60Hz),是則顯示輸出1位數(shù)據(jù)</p><p>  Display(); </p><p>  if (Timer0Counter>=3600)//是否到1s</p><p>  { TimeOK=1; //溫度采集標(biāo)志置1</p>

91、<p>  Timer0Counter=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //**********************************</p><p>  //動(dòng)態(tài)顯示函數(shù) *</

92、p><p>  //每執(zhí)行一次輸出緩沖區(qū)中的1位數(shù)據(jù) *</p><p>  //**********************************</p><p>  void Display(void)</p><p>  {static unsigned char CurrentSeg=0x01; </p><p

93、>  LEDSeg=0xff; //消隱</p><p>  if (CurrentSeg==0x01) LEDOut=DispBuff[0]; //輸出第1位</p><p>  else if (CurrentSeg==0x02) LEDOut=DispBuff[1]; //輸出第2位</p><p>  else if (Curre

94、ntSeg==0x04) LEDOut=DispBuff[2]; //輸出第3位</p><p>  else if (CurrentSeg==0x08) LEDOut=DispBuff[3]; //輸出第4位</p><p>  LEDSeg=~CurrentSeg; //使能對(duì)應(yīng)數(shù)碼位</p><p>  CurrentSeg<<=

95、1; </p><p>  if (CurrentSeg==0x10) CurrentSeg=0x01;</p><p><b>  }</b></p><p>  //*******************************************</p><p>  //溫度數(shù)據(jù)送顯示緩沖

96、區(qū)函數(shù) *</p><p>  //*******************************************</p><p>  void Print(char T)</p><p>  {if (T<0) { DispBuff[0]=0x40;T=-T;} //溫度小于0顯示“-”,否則不顯示</p>

97、<p>  else DispBuff[0]=0x00;</p><p>  DispBuff[1]=LEDCode[T/100]; //溫度數(shù)據(jù)百位</p><p>  DispBuff[2]=LEDCode[T%100/10]; //溫度數(shù)據(jù)十位</p><p>  DispBuff[3]=LEDCode[T%100%10];

98、 //溫度數(shù)據(jù)個(gè)位</p><p><b>  }</b></p><p>  //******************************</p><p>  //Temperature.c *</p><p>  //******************************</p>

99、;<p>  #include <intrins.h></p><p>  #define CmSkipRom 0xcc //定義跳過ROM命令</p><p>  #define CmConvertTempr 0x44 //定義轉(zhuǎn)換溫度命令</p><p>  #define CmReadTempr 0xbe //定義讀暫存器命令

100、</p><p>  sbit OneWireBus=P1^7;//定義數(shù)據(jù)線</p><p><b>  //函數(shù)原型聲明</b></p><p>  void Delay(unsigned char n);</p><p>  bit ResetDS18B20(void);</p><p&

101、gt;  bit ReadBit(void);</p><p>  char ReadByte(void);</p><p>  void WriteBit(bit tBi);</p><p>  void WriteByte(unsigned char tByte);</p><p>  void StartConv(void);</

102、p><p>  char ReadConvResult(void);</p><p>  //*******************************************</p><p>  //延時(shí)函數(shù) *</p><p>  //當(dāng)n=1時(shí),在11.0592MHz時(shí)鐘下延時(shí)約15μs

103、*</p><p>  //*******************************************</p><p>  void Delay(unsigned char n) </p><p><b>  {do</b></p><p>  {_nop_();</p><p

104、><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_

105、();</b></p><p><b>  _nop_();</b></p><p>  }while(--n); </p><p><b>  }</b></p><p>  //*******************************************</p&

106、gt;<p>  //復(fù)位DS18B20函數(shù) *</p><p>  //函數(shù)返回0表示成功,1表示失敗 *</p><p>  //*******************************************</p><p>  bit ResetDS18B20(void)<

107、;/p><p>  {bit Ready;</p><p>  EA=0; //關(guān)中斷</p><p>  OneWireBus=0;//拉低數(shù)據(jù)線</p><p>  Delay(70); //延時(shí)約690us</p><p>  OneWireBus=1;//釋放數(shù)據(jù)線</p>&

108、lt;p>  Delay(3);//延時(shí)約35us</p><p>  Ready=OneWireBus;//采樣數(shù)據(jù)線</p><p>  Delay(70);//延時(shí)約690us</p><p>  EA=1; //開中斷</p><p>  return(Ready); //返回采樣結(jié)果</p>

109、;<p><b>  }</b></p><p>  //*******************************************</p><p>  //讀位函數(shù) *</p><p>  //函數(shù)返回從數(shù)據(jù)線上讀到的數(shù)據(jù)位 *</p>&

110、lt;p>  //*******************************************</p><p>  bit ReadBit(void)</p><p>  {bit tBit;</p><p><b>  EA=0;</b></p><p>  OneWireBus=1; //先釋放

111、數(shù)據(jù)線</p><p>  _nop_(); //延時(shí)1μs</p><p>  OneWireBus=0; //拉低數(shù)據(jù)線</p><p>  _nop_(); //延時(shí)1μs</p><p>  OneWireBus=1; //釋放數(shù)據(jù)線</p><p><b>  _nop_()

112、;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p>

113、;<p>  tBit=OneWireBus; //采樣數(shù)據(jù)線</p><p>  Delay(8); //延時(shí)約83us</p><p><b>  EA=1;</b></p><p>  return(tBit);</p><p><b>  }</b></p&g

114、t;<p>  //*******************************************</p><p>  //讀字節(jié)函數(shù) *</p><p>  //函數(shù)返回從數(shù)據(jù)線上讀到的數(shù)據(jù)字節(jié) *</p><p>  //***********************************

115、********</p><p>  char ReadByte(void)</p><p>  {unsigned char i,t,tByte;</p><p><b>  tByte=0;</b></p><p>  for(i=0;i<8;i++){</p><p>  t=Rea

116、dBit();</p><p>  tByte|=(t<<i);</p><p><b>  }</b></p><p>  return(tByte);</p><p><b>  }</b></p><p>  //**********************

117、*********************</p><p>  //寫位函數(shù) *</p><p>  //函數(shù)向數(shù)據(jù)線上寫數(shù)據(jù)位 *</p><p>  //*******************************************</p><p>  void

溫馨提示

  • 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. 眾賞文庫(kù)僅提供信息存儲(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)論