2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科畢業(yè)設(shè)計(論文)</p><p><b> ?。?0 屆)</b></p><p>  基于Proteus的數(shù)字溫度計設(shè)計與仿真</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單片機5</p><p>  2.2.1 SST89E516RD單片機的特點5</p><p>  2.2.2 SST89E516RD單片機內(nèi)部資源簡介5</p>

5、<p>  2.3 開發(fā)工具Keil C517</p><p>  2.3.1 Keil主要特點7</p><p>  2.3.2 Keil開發(fā)單片機的地位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è)計10</p><p>  3.1 總體設(shè)計流程10</p><p>  3.1.1 硬件設(shè)計10</p><p>  3.1.2 軟件設(shè)計10</p>

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

8、14</p><p>  第五章 系統(tǒng)仿真與調(diào)試和實現(xiàn)18</p><p>  5.1 Keil與Proteus聯(lián)機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 實物調(diào)試與實現(xiàn)22</p><p>  5.3.1 實物調(diào)試22</p><p>  5.3.2 實物實現(xiàn)23</p><p>  第六章 總結(jié)25</p><p><b>  參考文獻26</b></p><p>  附錄一 源程序27</p><p

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

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

12、控制器送出信號經(jīng)過驅(qū)動電路送向顯示電路進行顯示。</p><p>  設(shè)計中使用了能仿真51單片機的EDA軟件Proteus對整個電路進行了仿真調(diào)試,該軟件的應(yīng)用大大提高了開發(fā)效率,縮短開發(fā)時間。而借助Keil集成開發(fā)環(huán)境IDE和Proteus的聯(lián)合仿真和調(diào)試,能發(fā)現(xiàn)并解決設(shè)計中出現(xiàn)的各種軟硬件問題。仿真表明設(shè)計完全達到預(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>  顯示對應(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>  溫度測量在生活的各個領(lǐng)域都始終占據(jù)著極其重要的地位,如在農(nóng)業(yè)生產(chǎn)、環(huán)境保護、工業(yè)自動化、安全生產(chǎn)、大棚等等對溫度的測量非常重要。傳統(tǒng)的模擬式溫度傳感器在測量溫度時需要進行復(fù)雜的校準和標定,且需要復(fù)雜

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

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

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

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

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

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

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

27、<p><b>  第六章:總結(jié)</b></p><p>  第二章 主要器件和開發(fā)工具介紹</p><p>  該設(shè)計選用DS18B20作為溫度傳感器,SST89E516RD作為測量電路核心,開發(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ù)字測溫和控制領(lǐng)域;它具有獨特的一線接口,將地址線、數(shù)據(jù)線和控制線合并為一根雙向串行傳輸數(shù)據(jù)的信號線,允許在這根信號線上掛接多個DS18B20;因此,單片機只需要通過一根I/O線就可以與多個DS18B20通信[1

29、]。 </p><p>  2.1.2 DS18B20的主要特性</p><p>  DS18B20測溫范圍是-55—+125℃,在-10—+85℃時精度為±0.5℃;它的轉(zhuǎn)換精度是9—12位二進制數(shù)(包括符號1位),可編程確定轉(zhuǎn)換精度的位數(shù);它的溫度分辨率是9位精度為0.5℃,10位精度為0.25℃,11位精度為0.125℃,12位精度為0.0625℃;它的轉(zhuǎn)換時間為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:電源正,寄生時直接接地;DQ:單線輸入/輸出;Vss:電源地[3]。</p><p> 

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

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

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

34、;<p>  DS18B20的寫時序,對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線,其寫時序圖[5]如圖2.5所示。</p><p>  圖2.3

35、 初始化時序圖</p><p><b>  圖2.4 讀時序</b></p><p><b>  圖2.5 寫時序</b></p><p>  2.2 SST89E516RD單片機</p><p>  2.2.1 SST89E516RD單片機的特點</p><p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

59、。</p><p>  圖4.2 硬件詳細電氣圖</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個200歐的電阻起到限流的功能,74L04非門起到驅(qū)動的功能。</p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

82、機課程設(shè)計指導(dǎo)[M]. 北京:北京航空航天大學(xué)出版社,2007:55~64.</p><p><b>  附錄一 源程序</b></p><p>  //******************************</p><p>  //數(shù)字溫度計.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;//溫度采集定時標志</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ù) *</p><p>  //*******************</p><p>

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

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

89、;p>  //*******************</p><p>  void TM0_INT(void) interrupt 1</p><p>  {static unsigned int Timer0Counter=0;//T0中斷計數(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; //溫度采集標志置1</p>

91、<p>  Timer0Counter=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //**********************************</p><p>  //動態(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; //使能對應(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ù)個位</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ù) *</p><p>  //當(dāng)n=1時,在11.0592MHz時鐘下延時約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); //延時約690us</p><p>  OneWireBus=1;//釋放數(shù)據(jù)線</p>&

108、lt;p>  Delay(3);//延時約35us</p><p>  Ready=OneWireBus;//采樣數(shù)據(jù)線</p><p>  Delay(70);//延時約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_(); //延時1μs</p><p>  OneWireBus=0; //拉低數(shù)據(jù)線</p><p>  _nop_(); //延時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); //延時約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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論