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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  全日制普通本科生畢業(yè)設計 </p><p>  基于單片機的車載自動飲水機控制系統(tǒng)的設計</p><p>  THE DESIGN OF OUTOMATIC DRINKING MACHINE CONTROL SYSTEM BASED ON SINGLE CHIP MICROMPUTER ON-BOARD</p><p><b>  目

2、 錄</b></p><p><b>  摘 要1</b></p><p><b>  關鍵詞1</b></p><p><b>  1 前言2</b></p><p>  1.1 研究的目的及意義2</p><p>  1.2

3、 車載飲水機的發(fā)展趨勢2</p><p>  1.3 主要研究的內容3</p><p>  2 系統(tǒng)總體的設計3</p><p>  2.1 硬件總體的設計3</p><p>  2.2 軟件總體的設計4</p><p>  3 硬件系統(tǒng)設計5</p><p>  3.1 硬件電路分

4、析和設計報告5</p><p>  3.1.1 單片機最小系統(tǒng)電路5</p><p>  3.1.2 水位檢測電路7</p><p>  3.1.3 鍵盤電路7</p><p>  3.1.4 數(shù)碼管及指示燈顯示電路8</p><p>  3.1.5 溫度采集電路9</p><p>

5、  3.1.6 電源電路14</p><p>  3.1.7 報警電路設計15</p><p>  3.1.8 加熱管控制電路設計16</p><p>  3.2 系統(tǒng)硬件總圖17</p><p>  4 系統(tǒng)總設計18</p><p>  4.1 主程序流程圖18</p><p>

6、  4.2 各個模塊的流程圖19</p><p>  4.2.1 讀取溫度DS18B20模塊的流程19</p><p>  4.2.2 鍵盤掃描處理流程22</p><p>  4.2.3 報警處理流程22</p><p>  4.3 系統(tǒng)源代碼23</p><p><b>  5 系統(tǒng)調試31&

7、lt;/b></p><p>  5.1 軟件調試31</p><p>  5.2 系統(tǒng)操作說明32</p><p>  5.3 數(shù)據(jù)測試32</p><p>  5.4 社會效益33</p><p><b>  6 結論33</b></p><p><

8、;b>  參考文獻34</b></p><p><b>  致謝34</b></p><p><b>  附錄35</b></p><p>  基于單片機的車載自動飲水機控制系統(tǒng)的設計</p><p>  摘 要:溫度控制系統(tǒng)可以說是無所不在,熱水器系統(tǒng)、空調系統(tǒng)、冰箱、電

9、飯煲、電風扇等家電產品以至手持式高速高效的計算機和電子設備,均需要提供溫度控制功能。本系統(tǒng)的設計可以用于熱水器溫度控制系統(tǒng)和飲水機等各種電器電路中。它以單片機AT80C51為核心,通過3個數(shù)碼管顯示溫度和4個按鍵實現(xiàn)人機對話,使用單總線溫度轉換芯片DS18B20實時采集溫度并通過數(shù)碼管顯示,并提供各種運行指示燈用來指示系統(tǒng)現(xiàn)在所處狀態(tài),如:溫度設置、加熱、停止加熱等,整個系統(tǒng)通過四個按鍵來設置加熱溫度和控制運行模式。</p>

10、<p>  關鍵詞: 單片機;數(shù)碼管顯示;單總線;DS18B20</p><p>  The Design of Automatic Drinking Machine Control System Based On Single Chip Microcomputer On-board</p><p>  Abstract:Temperature control system

11、can be said to be ubiquitous, water heaters system, air conditioning systems, refrigerators, rice cookers, electric fans and other home appliances as well as high-speed and efficient hand-held computers and electronic eq

12、uipment are required to provide temperature control. The system design can be used for drinking water heater temperature control systems and other electrical circuits. AT80C51 microcontroller as the core of it, through t

13、he three temperature dig</p><p>  Key words:Microcontroller;Digital Display;Single Bus;DS18B20</p><p><b>  1 前言</b></p><p>  1.1 研究的目的及意義</p><p>  本設計是基于單

14、片機的車載自動飲水機控制系統(tǒng)的設計,此設計主要是要求采用單片機為控制核心,設計車載自動飲水機電控系統(tǒng),并對飲水機的溫度控制,使其在工作中達到預期的目的效果。</p><p>  而車載飲水機的溫度控制,無論是在工業(yè)生產過程中,還是在日常生活中都起著非常重要的作用,過低的溫度或過高的溫度都會使水資源失去應有的作用,從而造成水資源的巨大浪費。特別是在當前全球水資源極度缺乏的情況下,我們更應該掌握好對水溫的控制,把身邊

15、的水資源好好地利用起來。</p><p>  本次設計為一個基于單片機的車載飲水機的溫度控制系統(tǒng),該系統(tǒng)可以實時檢測飲水機水箱的水溫,并且可以通過數(shù)碼管顯示飲水機水箱水溫度數(shù),可以通過鍵盤或開關選擇制冷或加熱,可以人為設置水的溫度的上下限,如加熱,當溫度在設定的范圍內時正常工作,當?shù)陀谒疁叵孪迺r控制加熱器加熱;如制冷,當溫度高于水溫上限時控制壓縮機制冷,溫度檢測范圍0~95℃,精度±1℃,當溫度超過設定

16、值時具有示警功能。</p><p>  1.2 車載飲水機的發(fā)展趨勢</p><p>  從1992年安吉爾生產出中國第一臺飲水機開始,飲水機加桶裝水的方便,快捷,健康的飲水方式便在中國興起,到了1999年,飲水機市場逐漸成熟,美的,沁園,浪木等企業(yè)也開始生產符合國家標準的飲水機。2006年以后,研究發(fā)現(xiàn),有內膽飲水機的水垢和節(jié)能問題漸漸暴露。所以安吉爾和美的推出了外置加熱的沸騰膽飲水機

17、產品,以獨特的熱膽外置方式加熱飲用水,現(xiàn)喝現(xiàn)燒更節(jié)能,更易清潔加熱內壁。沁園推出了無熱膽系列產品,由于宣傳角度和內部造型新穎,曾熱賣一時,但是火爆之后,大量的問題暴露,水垢,二次污染,節(jié)能,安全這些問題都沒有解決,導致顧客投訴增多,身敗名列。所以飲水機的發(fā)展趨勢近10年左右還會以外形優(yōu)美的外熱飲水機為主,傳統(tǒng)飲水機為輔。</p><p>  中國水家電行業(yè)發(fā)展十余年,2002年以前少數(shù)有規(guī)模的企業(yè)在做全國市場,并

18、進行了一些宣傳推廣工作,雖然是獨步難行,可也很好的推動了市場的發(fā)展。在2002年前后,更多企業(yè)認識到了中國水處理市場的巨大商機,進來的企業(yè)多了。據(jù)有關部門統(tǒng)計中國在國家有關部門登記在冊的水家電企業(yè)有2000余家,還有一些未在統(tǒng)計范圍之內,這些企業(yè)多半在從事水家電的OEM生產。規(guī)模不足給中國家電中小企業(yè)形成幾大風險:一是規(guī)模成本不經濟,產品在市場最終還是缺乏競爭力。二是規(guī)模不足導致企業(yè)在產業(yè)環(huán)境即上下游的博弈能力不強,一旦產業(yè)環(huán)境發(fā)生變化

19、,企業(yè)的應變力不足。三是規(guī)模不足導致企業(yè)抗風險能力差,尤其是難以抗拒大品牌大資本企業(yè)的進入。在未來中國飲水機結構就產生了二極分化:一極為末流品牌(或稱為弱勢品牌)的產品陣營。一極為主流品牌未來的市場份額也將由他們主宰。</p><p>  本設計是基于單片機車載自動飲水機系統(tǒng)的設計,單片機對對溫度的控制是工業(yè)生產中經常使用的控制方法。單片機主要用于控制,它的應用領域遍及各行各業(yè),大到航天飛機,小至日常生活中的冰箱

20、、彩電,單片機都可以大顯其能。采用單片機對整個測量電路進行管理和控制,使得整個系統(tǒng)智能化、功耗低、使用電子元件較少、內部配線少、成本低,制造、安裝、調試及維修方便。我相信此設計是非常有前景的。</p><p>  1.3 主要研究的內容</p><p>  (1)本系統(tǒng)上電后數(shù)碼管顯示當前測量溫度,此時加熱指示燈和保溫指示燈均不點亮;若此時按“自動加熱”鍵,則單片機自動將預加熱溫度設置

21、為80℃并開始加熱,送出一個加熱信號,并點亮加熱指示燈;若按“溫度設置”鍵,則進入預加熱溫度設置界面,此時數(shù)碼管閃爍顯示預設置溫度,此時通過按鍵“+”和“-”進行設置溫度,預設置溫度按“5”遞增或遞減,設置好溫度后再按一次“溫度設置”鍵確定,單片機保存預設置溫度,并開始加熱;</p><p>  (2)如果實測溫度大于或等于預設置溫度,則單片機發(fā)出停止加熱信號并熄滅加熱指示燈,點亮保溫指示燈,且當超過預設溫度時發(fā)

22、出報警;</p><p>  (3)當溫度下降到預設置溫度以下5度時,單片機再次發(fā)出加熱信號,同時熄滅保溫指示燈,點亮加熱指示燈,依次循環(huán)控制;</p><p>  (4)完成加熱管控制電路、報警電路設計,重點設計好臨界點問題;</p><p>  (5)必要時有防凍功能,當冬天氣溫太低,要有防止管內結冰裝置,有人工可以選擇語音是否播放的功能。</p>

23、<p>  2 系統(tǒng)整體的設計</p><p>  2.1 硬件整體的設計</p><p>  設計并制作一個基于單片機的熱水器溫度控制系統(tǒng)的電路,其結構框圖如圖1:</p><p>  圖1 系統(tǒng)機構框圖</p><p>  Fig1 The system block diagram</p><p&g

24、t;<b>  硬件系統(tǒng)子模塊:</b></p><p>  (1) 單片機最小系統(tǒng)電路部分;</p><p>  (2) 鍵盤掃描電路部分;</p><p>  (3) 數(shù)碼管溫度顯示和運行指示燈電路部分;</p><p>  (4) 溫度采集電路部分;</p><p>  (5) 繼電器控制部

25、分;</p><p><b>  (6) 報警部分。</b></p><p>  2.2 軟件整體的設計</p><p>  良好的設計方案可以減少軟件設計的工作量,提高軟件的通用性,擴展性和可讀性。本系統(tǒng)的設計方案和步驟如下:</p><p>  (1) 根據(jù)需求按照系統(tǒng)的功能要求,逐級劃分模塊;</p>

26、<p>  (2) 明確各模塊之間的數(shù)據(jù)流傳遞關系,力求數(shù)據(jù)傳遞少,以增強各模塊的獨立性,便于軟件編制和調試;</p><p>  (3) 確定軟件開發(fā)環(huán)境,選擇設計語言,完成模塊功能設計,并分別調試通過;</p><p>  (4) 按照開發(fā)式軟件設計結構,將各模塊有機的結合起來,即成一個較完善的系統(tǒng)。</p><p>  首先接通電源系統(tǒng)開始工作,

27、系統(tǒng)開始工作后,通過按鍵設定溫度值的上限值和下限值,確定按鍵將設定的溫度值存儲到指定的地址空間,溫度傳感器開始實時檢測,調用顯示子程序顯示檢測結果,調用比較當前顯示溫度值與開始設定的溫度值比較,如果當前顯示值低于設定值就通過繼電器起動加熱裝置,直到達到設定值停止加熱,之后進行保溫,如果溫度高于上限進行報警。</p><p><b>  3 硬件系統(tǒng)設計</b></p><

28、;p>  3.1 硬件電路分析及設計報告</p><p>  本次設計主要思路是通過對單片機編程將由溫度傳感器DS18B20采集的溫度外加驅動電路顯示出來,包括對繼電器的控制,進行升溫,當溫度達到上下限蜂鳴器進行報警。P1.7開關按鈕是用于確認設定溫度的,初始按下表示開始進入溫度設定狀態(tài),然后通過P1.5和P1.6設置溫度的升降,再次按下P1.7時,表示確認所設定的溫度,然后轉入升溫或降溫。P2.3所接的

29、發(fā)光二極管用于表示加熱狀態(tài),P2.5所接的發(fā)光二極管用于表示保溫狀態(tài)。P2.3接繼電器。P3.1是溫度信號線。整個電路都是通過軟件控制實現(xiàn)設計要求。</p><p>  3.1.1 單片機最小系統(tǒng)電路</p><p>  因為80C51單片機內部自帶8K的ROM和256字節(jié)的RAM,因此不必構建單片機系統(tǒng)的擴展電路。如圖2,單片機最小系統(tǒng)有復位電路和振蕩器電路。值得注意的一點是單片機的3

30、1腳必須接高電平,否則系統(tǒng)將不能運行。因為該腳不接時為低電平,單片機將直接讀取外部程序存儲器,而系統(tǒng)沒有外部程序存儲器,所以必須接VCC。在按鍵兩端并聯(lián)一個電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能力[1]。</p><p>  圖2 單片機最小系統(tǒng)圖</p><p>  Fig2 The system block diagram</p><p>  AT80C5

31、1的管腳說明: </p><p>  VCC:供電電壓。本設計供電電壓為+5V。</p><p><b>  GND:接地。</b></p><p>  P0口:P0口為一個8位漏極開路雙向I/O口,每個管腳可吸收8個TTL門電流。當P1口的管腳第一次寫“1”時,被定義為高阻輸入。P0口能夠作為外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的低八

32、位。在Flash編程時,P0口作為原碼輸入口,當Flash進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個TTL門電流。P1口管腳寫入“1”后,被內部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。 </p&g

33、t;<p>  P2口:P2口為一個帶內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被上拉電阻拉高,且作為輸入。P2口的管腳被外部下拉為低電平時,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉電阻,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄

34、存器的內容。P2口在Flash編程和校驗時接收高八位地址信號和控制信號。</p><p>  P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。</p><p>  RST:復位輸入端。當振蕩器復位器件時,要保持RST腳兩個機器周期

35、的高電平時。</p><p>  ALE:當訪問外部存儲器時,地址鎖存于鎖存地址的低位字節(jié)。在FLASH編程期間,該引腳用于輸入編程脈沖。在平時,ALE端口以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而,要注意的是:每當其用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出,可將SFR8EH地址置0。此時, ALE只有在執(zhí)行MOVX,MOV

36、C指令時ALE才起作用[1]。</p><p>  PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指令期間,每個機器周期PSEN兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。</p><p>  EA:EA功能為內外程序存儲器選擇控制端。當EA保持低電平時,單片機訪問外部程序存儲器。當EA端保持高電平時,單片機訪問內部程序存儲器。</p>&

37、lt;p>  XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入端。</p><p>  XTAL2:來自反向振蕩器的輸出端。</p><p>  3.1.2 水位監(jiān)測電路</p><p>  水位檢測傳感器采用兩根不銹鋼針,一根和地連接,另一根通過100K電阻接到+5V電源,控制芯片采用NE555,當水位低時,不足以使兩個電極導通時,NE555的2腳

38、為高電平,第3腳輸出低電平,即P1.2=1.單片機通過檢測P1.2的電平,可以判斷熱水箱水位是否滿[2]。水位檢測電路原理圖如圖3所示:</p><p>  圖3 水位監(jiān)測電路原理圖</p><p>  Fig3 Level monitoring circuit principle diagram</p><p>  3.1.3 鍵盤電路</p>

39、<p>  鍵盤是單片機應用系統(tǒng)中的主要輸入設備,單片機使用的鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤采用硬件線路來實現(xiàn)鍵盤的編碼,每按下一個鍵,鍵盤能夠自動生成按鍵代碼,并有去抖功能。因此使用方便,但硬件較復雜。非編碼鍵盤僅僅提供鍵開關狀態(tài),由程序來識別閉合鍵,消除抖動,產生相應的代碼,轉入執(zhí)行該鍵的功能程序。非編碼鍵盤中鍵的數(shù)量較少,硬件簡單,在單片機中應用非常廣泛。</p><p>  圖為按鍵和

40、AT80C51的接線圖,檢測儀共設有4個按鍵,每個按鍵由軟件來決定其功能,4個按鍵功能分別為[3]:</p><p>  (1) SW1:設定按鍵(設定按鍵);</p><p>  (2) SW2:加法按鍵(當前位加5);</p><p>  (3) SW3:減法按鍵(當前位減5);</p><p>  (4) SW4:退出設置鍵(系統(tǒng)初始化

41、)。</p><p>  圖4 單片機按鍵和AT80C51的接線圖</p><p>  Fig 4 Keys of single chip microcomputer and AT80C51</p><p>  3.1.4 數(shù)碼管及指示燈顯示電路</p><p>  (1)數(shù)碼管顯示說明</p><p>  表1

42、 數(shù)碼管編碼表</p><p>  Table1 Digital code table</p><p>  各個數(shù)碼管的段碼都是單片機的數(shù)據(jù)口輸出,即各個數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動態(tài)顯示的方式,即先只讓最低位顯示0(含點),經過一段延時,再只讓次低位顯示1,如此類推。由視覺暫留,只要我們的延時時間足夠短,就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚,過

43、程如表1。</p><p>  本論文中使用了3個數(shù)碼管,其中前兩位使用動態(tài)掃描顯示實測溫度,在設置加熱溫度的時候,兩個數(shù)碼管是閃爍,以提示目前處在溫度設置狀態(tài)。第三位數(shù)碼管靜態(tài)顯示符號“℃”。</p><p>  (2)運行指示燈說明</p><p>  本熱水器溫度控制系統(tǒng)中共使用到3個LED指示燈和3個數(shù)碼管。</p><p>  右上

44、角的紅色LED是電源指示燈。</p><p>  數(shù)碼管右邊的紅色LED是加熱指示燈,當剛開機或溫度降到設定溫度5℃以下時,該燈會亮,表示目前處于加熱狀態(tài);當溫度上升到設定溫度時,該LED滅,同時數(shù)碼管右邊的綠色LED亮,表示目前處于保溫狀態(tài),用戶可以使用熱水器;當溫度再次下降到設定溫度5℃以下時,綠色LED滅,紅色加熱的LED燈亮,不斷循環(huán)[7]。</p><p>  圖5 LED數(shù)

45、碼管顯示電路圖</p><p>  Fig5 LED digital tube display circuit diagram</p><p>  3.1.5 溫度采集電路</p><p>  (1) DS18B20介紹</p><p>  Dallas最新單線數(shù)字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更寬、更經濟

46、。Dallas半導體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器[4]。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為測量系統(tǒng)的構建引入全新概念。DS18B20、DS1822“一線總線”數(shù)字化溫度傳感器同DS18B20一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55℃~+125℃,在-10℃~+85℃范圍內,精度為±0.5℃。DS1822的精度較差為±

47、;2℃?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其DS18B20的管腳配置和封裝結構如圖6所示。</p><p>  圖6 DS18B20封裝</p><p>  Fig6 DS18B20 package</p><p><b>  引腳定義: </b></p><p>  ① DQ為數(shù)字

48、信號輸入/輸出端; </p><p> ?、?GND為電源地; </p><p> ?、?VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。</p><p> ?。?)DS18B20的單線(1-wire bus)系統(tǒng)</p><p>  單線總線結構是DS18B20的突出特點,也是理解和編程的難點。從兩個角度來理解單線總線:第一,單線總

49、線只定義了一個信號線,而且DS18B20智能程度較低(這點可以與微控制器和SPI器件間的通信做一個比較),所以DS18B20和處理器之間的通信必然要通過嚴格的時序控制來完成。第二,DS18B20的輸出口是漏級開路輸出,這里給出一個微控制器和DS18B20連接原理圖[5]。這種設計使總線上的器件在合適的時間驅動它。顯然,總線上的器件與(wired AND)關系。這就決定:</p><p>  1. 微控制器不能單

50、方面控制總線狀態(tài)。之所以提出這點,是因為相當多的文獻資料上認為,微控制器在讀取總線上數(shù)據(jù)之前的I/O口的置1操作是為了給DS18B20一個發(fā)送數(shù)據(jù)的信號。這是一個錯誤的觀點。如果當前DS18b20發(fā)送0,即使微控制器I/O口置1,總線狀態(tài)還是0;置1操作是為了是I/O口截止(cut off),以確保微控制器正確讀取數(shù)據(jù)。</p><p>  2. 除了DS18B20發(fā)送0的時間段,其他時間其輸出口自動截止。自動截

51、止是為確保:1時,在總線操作的間隙總線處于空閑狀態(tài),即高態(tài);2時,確保微控制器在寫1的時候DS18B20可以正確讀入。</p><p>  由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。</p><p>  ①

52、DS18B20的復位時序,如圖7</p><p>  圖7 DS18B20的復位時序圖</p><p>  Fig7 DS18B20 reset timing diagram</p><p> ?、?DS18B20的讀時序</p><p>  對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。</p><p&g

53、t;  對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20的讀時序圖如圖8所示。</p><p>  圖8 DS18B20的讀時序</p><p>  Fig8 Read timing diagram DS18B20</p>&

54、lt;p> ?、?DS18B20的寫時序</p><p>  對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。</p><p>  對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總&l

55、t;/p><p><b>  線。如圖9所示。</b></p><p>  圖9 DS18B20的寫時序圖</p><p>  Fig9 Write timing diagram of DS18B20</p><p>  (3)DS18B20的供電方式</p><p>  在圖10中示出了DS18

56、B20的寄生電源電路。當DQ或VDD引腳為高電平時,這個電路便“取”的電源。寄生電路的優(yōu)點是雙重的,遠程溫度控制監(jiān)測無需本地電源,缺少正常電源條件下也可以讀ROM。為了使DS18B20能完成準確的溫度變換,當溫度變換發(fā)生時,DQ線上必須提供足夠的功率[6]。</p><p>  有兩種方法確保DS18B20在其有效變換期內得到足夠的電源電流。</p><p>  第一種方法是發(fā)生溫度變換時

57、,在DQ線上提供一強的上拉,這期間單總線上不能有其它的動作發(fā)生。如圖10所示,通過使用一個MOSFET把DQ線直接接到電源可實現(xiàn)這一點,這時DS18B20工作在寄生電源工作方式,在該方式下VDD引腳必須連接到地。</p><p>  圖10 DS18B20供電方式1</p><p>  Fig10 DS18B20 power supply mode 1</p><

58、p>  另一種方法是DS18B20工作在外部電源工作方式,如圖11所示。這種方法的優(yōu)點是在DQ線上不要求強的上拉,總線上主機不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送[6]。此外,在單總線上可以并聯(lián)多個DS18B20,而且如果它們全部采用外部電源工作方式,那么通過發(fā)出相應的命令便可以同時完成溫度變換。</p><p>  圖11 DS18B20供電

59、方式2</p><p>  Fig11 DS18B20 power supply mode 2</p><p>  (4) DS18B20設計中應注意的幾個問題</p><p>  DS18B20具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用接口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題:較小的硬件開銷需要相對復雜的軟件進行補償,由于DS18B20與微處理器

60、間采用串行數(shù)據(jù)傳送。因此,在對DS18B20進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在DS18B20有關資料中均未提及1Wire上所掛DS18B20數(shù)量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應用中并非如此。當1Wire上所掛DS18B20超過8個時,就需要考慮微處理器的總線驅動問題,這一點在進行多點測溫系統(tǒng)設計時要加以注意。連接DS18B20的總線電纜是有長度限制的。實際應用中,測溫電纜線建議采

61、用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地。</p><p>  本文以廣泛應用的數(shù)字溫度傳感器DS18B20為例,說明了1Wire總線的操作過程和基本原理。事實上,基于1Wire總線的產品還有很多種,如1Wire總線的E2PROM、實時時鐘、電子標簽等[7]。他們都具有節(jié)省I/O資源、結構簡單、開發(fā)快捷、成本低廉、便于總線擴展等優(yōu)點,因此有廣闊的應用空間,具有較大的推

62、廣價值。</p><p>  本設計將溫度傳感器DS18B20與單片機TXD引腳相連,讀取溫度傳感器的數(shù)值。DS18B20與單片機連接圖如圖12所示。</p><p>  圖12 DS18B20與單片機連接圖</p><p>  Fig12 DS18B20 and MCU connection diagram</p><p>  3.1.

63、6 電源電路</p><p>  采用L7805穩(wěn)壓塊,輸出為5V。電子組件要正常運作都需要電源電壓供電,一般常用的電源電壓為+5V或+12V,因為數(shù)字IC(Ingegrated Circuit:集成電路)所供給的電壓為+5V,而CMOS IC所供給的電壓為+12V,7805是一個穩(wěn)壓塊。7805穩(wěn)壓管把高電壓轉換到低電壓,7805穩(wěn)壓管具有保護單片機的作用。L7805輸出端要并聯(lián)上一個電解電容,濾除交流電干擾

64、,防止損壞單片機系統(tǒng)。本設計采用兩種供電方式,一種為DC7~18V直流穩(wěn)壓電源變換成5V的直流電;另一種為四節(jié)干電池共6V經二極管加壓后得到將近5V的直流電源,電源配以開關和指示燈,以方便使用。黃色發(fā)光二極管表示保溫,紅色的表示加熱狀態(tài)[8]。</p><p>  圖13 系統(tǒng)電源設計圖</p><p>  Fig13 The system power supply design<

65、;/p><p>  3.1.7 報警電路設計</p><p>  同時可以在系統(tǒng)里設定溫度上限值,由于加熱停止后,加熱管還有余熱當采集到的外界溫度高于當前所設定溫度上限值時,程序就會進入報警子程序,觸發(fā)蜂鳴器進行報警。報警電路原理圖如圖14所示。</p><p>  圖14 報警電路圖</p><p>  Fig14 Alarm circu

66、it diagram</p><p>  圖中的三極管8550的作用是增加驅動能力,比9012的驅動電流還大些,因此選用8550[9]。當程序進入報警子程序時,把P2.7置0,就會觸發(fā)蜂鳴器,為了使報警聲音效果更好,對P2.7取反,發(fā)出報警嘟嚕聲音。</p><p>  3.1.8 加熱管控制電路設計</p><p>  繼電器是常用的輸出控制接口,可以做交直流信

67、號的輸出切換。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關”。故在電路中起著自動調節(jié)、安全保護、轉換電路等作用。繼電器控制接點操作說明如下:</p><p>  COM: Common,共同點。輸出控制接點的共同接點。</p><p>  NC: Normal Close常閉點。以Com為共同點,

68、NC與COM在平時是呈導通狀態(tài)的。</p><p>  Normal Open常開點。NO與COM在平時是呈開路狀態(tài)的,當繼電器動作時,NO與COM導通,NC與COM則呈開路狀態(tài)。</p><p>  當89S52的P2.5輸出高電平時,繼電器不導通,反之當輸出低電平時,繼電器導通,這樣就激活了連接回路[10]。</p><p>  圖14 單片機控制繼電器電&l

69、t;/p><p>  Fig.14 MCU control relay</p><p>  3.2 系統(tǒng)硬件總圖</p><p><b>  4 系統(tǒng)總設計</b></p><p>  本系統(tǒng)采用的是循環(huán)查詢方式,來顯示和控制溫度的。主要包括四段程序的設計:DS18B20讀溫度程序,數(shù)碼管的驅動程序,鍵盤掃描程序,以及

70、抱經處理程序。</p><p>  4.1 主程序流程圖</p><p>  圖15 主程序流程圖1</p><p>  Fig15 The flow chart of main program</p><p>  圖16 主程序流程圖2</p><p>  Fig16 The flow chart of m

71、ain program2</p><p>  4.2 各模塊的流程圖</p><p>  4.2.1 讀取溫度DS18B20模塊的流程</p><p>  由于DS18B20采用的是一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。</p

72、><p>  DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念。因此系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點。 </p><p>  DS18B20必須首先調用啟動溫度轉換函數(shù),根據(jù)數(shù)據(jù)手冊上對應轉換時間來超作,如

73、為12位轉換,則應該是最大750mS,另外在對DS18B20超作時,時序要求非常嚴格,因此最好禁止系統(tǒng)中斷。</p><p>  由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序[11]。所有時序都是將主機作為主設備,而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟

74、動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p>  DS18B20的讀時序:</p><p>  (1)對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程; </p><p>  (2)對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS

75、18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。</p><p>  DS18B20的寫時序:</p><p>  (1)對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程; </p><p>  (2)對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B2

76、0能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線[12]。</p><p>  系統(tǒng)程序設計主要包括三部分:讀出溫度子程序、溫度轉換命令子程序、顯示溫度子程序。流程圖如圖17所示:</p><p>  圖17 讀取溫度DS18B20模塊的流程圖</p><p>  Fig.17 R

77、ead the temperature DS18B20 module flow chart</p><p><b>  程序代碼為:</b></p><p>  GET_TEMPER:SETBDQ; 讀出轉換后的溫度值</p><p>  LCALLINIT_1820; 先復位DS18B20</p><

78、;p>  JBFLAG1,TSS2;</p><p>  RET; 判斷DS1820是否存在若DS18B20不存在則返回</p><p>  TSS2:MOVA,#0CCH; DS18B20已經被檢測到!跳過ROM匹配</p><p>  LCALLWRITE_1820;</p><p>  

79、MOVA,#44H; 發(fā)出溫度轉換命令</p><p>  LCALLWRITE_1820;</p><p>  LCALL DISPLAY; 這里通過調用顯示子程序實現(xiàn)延時一段時間,等</p><p>  待AD轉換結束,12位的話750微秒</p><p>  LCALLINIT_1820;

80、 準備讀溫度前先復位</p><p>  MOVA,#0CCH; 跳過ROM匹配</p><p>  LCALLWRITE_1820; </p><p>  MOVA,#0BEH; 發(fā)出讀溫度命令</p><p>  LCALLWRITE_1820;</p>

81、<p>  LCALLREAD_18200 將讀出的溫度數(shù)據(jù)保存到35H/36H</p><p><b>  RET[13]</b></p><p>  4.2.2 鍵盤掃描處理流程</p><p>  此流程為鍵盤掃描處理,CPU通過檢測各數(shù)據(jù)線的狀態(tài)(0或1)就能知道是否有按鍵閉合以及哪個按鍵閉合[14]。鍵盤管

82、理程序的功能是檢測是否有按鍵閉合,如果有按鍵閉合,消除抖動,根據(jù)鍵號轉到相應的鍵處理程序,按鍵流程圖如圖18所示。</p><p>  圖18 鍵盤掃描子程序流程圖</p><p>  Fig18 Keyboard scanning subroutine flow chart</p><p>  4.2.3 報警處流程圖</p><p>

83、;  運行程序后,溫度傳感器DS18B20即可對環(huán)境進行溫度采集,并送LED數(shù)碼管顯示。我們可以在程序里設定溫度上限值,當采集到的外界溫度高于當前所設定溫度上限值時,程序就會進入報警子程序,觸發(fā)蜂鳴器進行報警。其程序流程圖如圖4.4所示[14]。</p><p>  圖19 報警子程序流程圖</p><p>  Fig 19 Alarm subroutine flow chart<

84、;/p><p>  4.3 系統(tǒng)源代碼</p><p>  EMPER_LEQU 29H; 用于保存讀出溫度的低8位</p><p>  TEMPER_HEQU 28H; 用于保存讀出溫度的高8位</p><p>  FLAG1EQU 38H; 是否檢測到DS18B20標志位</p>&

85、lt;p>  A_BITEQU 20H; 數(shù)碼管個位數(shù)存放內存位置</p><p>  B_BITEQU 21H; 數(shù)碼管十位數(shù)存放內存位置</p><p>  B1EQU 70H; 溫度小數(shù)點位</p><p>  A1EQU 71H; 設定溫度值<

86、/p><p>  DQEQU P3.1; DQ為DS18B20數(shù)據(jù)位</p><p>  BELL EQU P2.7; 蜂鳴報警</p><p>  ORG 0000H; 單片機內存分配申明</p><p>  AJMP MAIN0; 前面的都是

87、定義</p><p>  MAIN:MOV R0,#10;</p><p>  M1:CPL P2.3;</p><p>  ACALLDELAY125;</p><p>  DJNZ R0,M1; 此段為燈閃5次,無實際意義</p><p>  MAIN0:MOV A1,#

88、80; 默認加熱為80度</p><p>  MAIN1:LCALLD1820; 調用讀溫度子程序</p><p>  LCALLDISPLAY; 調用數(shù)碼管顯示子程序</p><p><b>  MOVA,29H;</b></p><p

89、><b>  CLRC</b></p><p>  CJNEA,A1,MAIN1_1</p><p>  SETBBELL; 溫度相等,關閉蜂鳴器</p><p>  AJMPMAIN1_1_A; 下等不用叫蜂鳴器</p><p>  MAIN1_1:

90、JCMAIN1_2; 為1轉移,表示小于設定溫度</p><p>  CPLBELL; 蜂鳴器斷續(xù)鳴叫</p><p>  MAIN1_1_A:CLRP2.3; 下面是表示沒達到溫度</p><p><b>  SETBP2.5</b></p>

91、;<p>  AJMPMAIN2; 主要是檢測溫度是否小于設定的溫度,則 開發(fā)熱管</p><p><b>  CLR P2.3</b></p><p>  MAIN1_2:SETBBELL; 關閉蜂鳴器</p><p>  CLRP2.5;

92、 開發(fā)熱管</p><p>  SETBP2.3; 上面的是大于,關發(fā)熱管</p><p>  MAIN2:JBP1.0,MAIN1; 看P1.0有否按下</p><p>  ACALLDELAY125; 延時防抖動,常用的手法,網上很多介紹的&

93、lt;/p><p>  JBP1.0,MAIN1; 再次查看</p><p><b>  CLRP2.3</b></p><p>  JNBP1.0,$; 等按鍵完全松手才進入!</p><p><b>  SETBP2.3<

94、;/b></p><p>  SETBP2.5; 檢測到P1.0按鍵后后進入設定溫度</p><p>  MAIN2_1:ACALLDISPLAY1</p><p>  JBP1.2,MAIN2_2</p><p>  ACALLDELAY125</p><p>

95、  JBP1.2,MAIN2_2</p><p>  JNBP1.2,$</p><p><b>  MOVA,#5</b></p><p><b>  ADDA,A1</b></p><p><b>  CLRC</b></p><p>  

96、CJNEA,#100,MAIN2_1_1</p><p><b>  MOVA,#99</b></p><p>  AJMPMAIN2_1_3; 上面這一段是+5度按鍵,按下+5度</p><p>  MAIN2_1_1:JCMAIN2_1_3</p><p>  MAIN2_1_2:CL

97、RC</p><p><b>  MOVA,#99</b></p><p>  MAIN2_1_3:MOVA1,A</p><p>  MAIN2_2:JBP1.4,MAIN2_3</p><p>  ACALLDELAY125</p><p>  JBP1.4,MAIN2_3&l

98、t;/p><p>  JNBP1.4,$</p><p><b>  MOVA,A1</b></p><p>  CJNEA,#99,ZY1</p><p><b>  MOVB,#4</b></p><p><b>  AJMPZY2</b>&l

99、t;/p><p>  ZY1:MOV B,#5</p><p>  ZY2:CLRC</p><p><b>  MOVA,A1</b></p><p><b>  SUBBA,B</b></p><p>  MAIN2_2_1:JNCMAIN2_2_2</p

100、><p><b>  MOVA1,#0</b></p><p>  AJMPMAIN2_3; 上面這一段是-5度按鍵,按下-5度</p><p>  MAIN2_2_2:MOVA1,A</p><p>  MAIN2_3:JBP1.6,MAIN2_1</p><p>  A

101、CALLDELAY125</p><p>  JBP1.6,MAIN2_1</p><p><b>  CLRP2.3</b></p><p>  JNBP1.6,$</p><p><b>  SETBP2.3</b></p><p>  AJMPMAIN1;

102、 上面這一段是退出的意思的</p><p>  D1820:LCALLGET_TEMPER; 調用讀溫度子程序</p><p>  MOVB1,29H</p><p><b>  MOVA,29H</b></p><p>  MOVC,40H; 將28H中的最

103、低位移入C</p><p><b>  RRCA</b></p><p><b>  MOVC,41H</b></p><p><b>  RRCA</b></p><p><b>  MOVC,42H</b></p><p&g

104、t;<b>  RRCA</b></p><p><b>  MOVC,43H</b></p><p><b>  RRCA</b></p><p><b>  MOV29H,A</b></p><p><b>  MOVA,B1<

105、;/b></p><p>  MOVB,#10H</p><p><b>  MULAB</b></p><p>  MOVB,#10H</p><p><b>  DIVAB</b></p><p><b>  MOVB,#10</b>

106、</p><p><b>  MULAB</b></p><p>  MOVB,#10H</p><p><b>  DIVAB</b></p><p><b>  MOVB1,A</b></p><p>  RET;

107、 上面這一段是讀取溫度后進行轉換的意思</p><p>  INIT_1820:SETBDQ; 這是DS18B20復位初始化子程序</p><p><b>  NOP</b></p><p>  CLRDQ; 主機發(fā)出延時537微秒的復位低脈沖</p>&

108、lt;p><b>  MOVR1,#3</b></p><p>  TSR1:MOVR0,#107</p><p><b>  DJNZR0,$</b></p><p>  DJNZR1,TSR1</p><p>  SETBDQ; 然后拉高數(shù)據(jù)線&

109、lt;/p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  MOVR0,#25H</p&

110、gt;<p>  TSR2:JNBDQ,TSR3; 等待DS18B20回應</p><p>  DJNZR0,TSR2</p><p>  LJMPTSR4; 延時</p><p>  TSR3:SETBFLAG1; 置標志位,表示DS1820存在</p>

111、;<p><b>  LJMPTSR5</b></p><p>  TSR4:CLRFLAG1; 清標志位,表示DS1820不存在</p><p><b>  LJMPTSR7</b></p><p>  TSR5:MOVR0,#117</p><

112、;p>  TSR6:DJNZR0,TSR6; 時序要求延時一段時間</p><p>  TSR7:SETBDQ</p><p><b>  RET</b></p><p>  GET_TEMPER:SETBDQ; 讀出轉換后的溫度值</p><p>  LCALL

113、INIT_1820; 先復位DS18B20</p><p>  JBFLAG1,TSS2</p><p>  RET; 判斷DS1820是否存在?若DS18B20不存在則返回</p><p>  TSS2:MOVA,#0CCH;DS18B20 ; 已經被檢測到!!跳過ROM匹配</p><p> 

114、 LCALLWRITE_1820</p><p>  MOVA,#44H; 發(fā)出溫度轉換命令</p><p>  LCALLWRITE_1820</p><p>  LCALLDISPLAY; 這里通過調用顯示子程序實現(xiàn)延時一段時間,等待</p><p>  AD轉換結束,12位的話750微

115、秒</p><p>  LCALLINIT_1820; 準備讀溫度前先復位</p><p>  MOVA,#0CCH; 跳過ROM匹配</p><p>  LCALLWRITE_1820</p><p>  MOVA,#0BEH; 發(fā)出讀溫度命令</p>

116、<p>  LCALLWRITE_1820</p><p>  LCALLREAD_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36H</p><p><b>  RET</b></p><p>  WRITE_1820:MOVR2,#8; 一共8位數(shù)據(jù)</p><p>  CL

117、RC; 寫DS18B20的子程序(有具體的時序要求)</p><p>  WR1:CLRDQ</p><p><b>  MOVR3,#6</b></p><p><b>  DJNZR3,$</b></p><p><b>  RRCA</b>&

118、lt;/p><p><b>  MOVDQ,C</b></p><p>  MOVR3,#23</p><p><b>  DJNZR3,$</b></p><p><b>  SETBDQ</b></p><p><b>  NOP<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論