張玲_畢業(yè)設計_第1頁
張玲_畢業(yè)設計_第2頁
張玲_畢業(yè)設計_第3頁
張玲_畢業(yè)設計_第4頁
張玲_畢業(yè)設計_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、揚州工業(yè)職業(yè)技術學院2010 2011學年第 一 學期畢業(yè)設計課題名稱: 數(shù)字溫度計設計與仿真設計時間:2010年9月-2010年12月系 部:電子信息工程系班 級:0801應用電子姓 名:張 玲指導教師:王斌總目錄第一部分任務書第二部分開題報告第三部分畢業(yè)設計正文第一部分任務書揚州工業(yè)職業(yè)技術學院畢業(yè)設計任務書系 部電子信息工程系指導老師王斌職稱副教授學生姓名張玲班級0801應用電子學號0805160110設計題目數(shù)字溫度計設計與仿真設計內(nèi)容目標和要求設計內(nèi)容目標:本設計將介紹一種基于單片機控制的數(shù)字溫度計,可以進行報警,并把測量到的數(shù)據(jù)進行顯示和控制。設計要求:1、提出選題的初步設想和研究

2、目的2、基本范圍-55-1283、精度誤差小于0.54、LED數(shù)碼直讀顯示5、 畫出完整電路圖,寫出設計總結(jié)報告。教研室審核系部審核第二部分開題報告揚州工業(yè)職業(yè)技術學院電子信息工程 系11屆畢業(yè)設計(論文)開題報告書(表1)學生姓名張玲專業(yè)應用電子技術班級0801應用電子學號0805160110題 目數(shù)字溫度計設計與仿真指導教師王斌職稱副教授學 位碩士題目類別 工程設計 基礎研究 應用研究 其它【課題的內(nèi)容與要求】自從單片機誕生以來,它就步入我們?nèi)祟惖纳?,如洗衣機、電冰箱、電子玩具收錄機等。家用電器配上單片機后,提高了智能化程度,增加了功能,倍受人們喜愛。本設計將介紹一種基于單片機控制的數(shù)字

3、溫度計,可以進行報警,并把測量到的數(shù)據(jù)進行顯示和控制?!厩把浴孔詮膯纹瑱C誕生以來,它就步入我們?nèi)祟惖纳?,如洗衣機、電冰箱、電子玩具收錄機等。家用電器配上單片機后,提高了智能化程度,增加了功能,倍受人們喜愛。單片機使我們的生活更加方便、舒適、豐富多彩。單片機也成為計算機發(fā)展和應用的一個重要方面。單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件法實現(xiàn)了,這種軟件代替硬件的控制技術也稱為微控制技術,是傳統(tǒng)控制技術的一次革命?!痉桨傅谋容^與評價】方案一由于本設計是測溫電路,可以使用熱敏電阻之類的器件利

4、用其感溫效應,進行A/D轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,就可以滿足設計要求。根據(jù)單片機課程設計的要求與學習目的,溫度傳感器DS18B20,可以很容易直接讀取被測溫度值,進行轉(zhuǎn)換,因此,選擇方案二來實現(xiàn)數(shù)字溫度計的控制。【預期的效果及指標】通過兩種方案的對比得到最佳方案,運用單片機和溫度傳感器對某處進行溫度檢測并進行無

5、線控制,在數(shù)碼管上顯示,最終進行溫度的設定與控制?!具M度安排】2010年09月21日 - 2010年09月30日選題、調(diào)研、收集資料2010年10月08日 - 2010年10月15日論證、開題2010年10 月16日 - 2010年12 月15日設計(寫作初稿)2010年12月16日 - 2010年01月10日修改、定稿、打印【參考文獻】【1】 黃仁欣.單片機原理及應用技術.清華大學出版社,2005【2】 朱勇.單片機原理與應用技術.清華大學出版社,2006【3】 李全利.單片機原理及應用技術.高等教育出版社,2004【4】 李廣弟.單片機基礎.北京航空航天大學出版社,2001【5】 胡文金.

6、單片機應用技術實訓教程.重慶大學出版社,2004【6】 劉文濤.單片機應用開發(fā)實例.清華大學出版社,2005【7】 王治剛.單片機應用技術與實訓.清華大學出版社,2004【8】 姜志海.單片機原理與應用.電子工業(yè)出版社,2005【指導教師意見】(有針對性地說明選題意義及工作安排是否恰當?shù)龋?shù)字溫度計應用在實際中很廣泛,因此選題很有意義,并且工作進度安排合理,能保障按時完成畢業(yè)設計。同意提交開題論證 修改后提交 不同意提交(請說明理由)指導教師簽章: 年 月 日【系部意見】同意指導教師意見 不同意指導教師意見(請說明理由) 其它(請說明)系(部)主任簽章: 年 月 日第 三 部 分畢業(yè)設計正文數(shù)

7、字溫度計設計與仿真張玲0801應用電子摘要本設計是基于AT89S52單片機的溫度測量報警系統(tǒng)。通過對單片機技術基礎及溫度傳感器DS18B20使用方法的學習,本組利用Protel99SE設計電路,并用PROTUES進行仿真后,實現(xiàn)以下功能:實時顯示測得溫度值,通過設定溫度上下限,當測得溫度高于上限或者低于下限時,系統(tǒng)報警提示。測得溫度值精確到0.1。關鍵詞:AT89S52 單片機 溫度測量 溫度計 數(shù)字 DS18B20Design and simultion of digital thermometerZhang LingApplied Electronics 0801Abstract:The

8、design is based on temperature measurement microcontrollerAT89S52 alarm system. SCM technology base and through the temperature sensor DS18B20 use of learning, the team used Protel99SE circuit design and simulation with PROTUES, the welding circuit, the following functions: real-time display the mea

9、sured temperature value, by setting the temperature of upper and lower limits, When the measured temperature is higher than the upper limit or below the lower limit, the system alarm. Measured temperature is accurate to 0.1 . Keywords:AT89S52MicrocontrollerDigitalThermometerTemperature MeasurementDS

10、18B20目錄第一章引言1第二章設計方案及硬件電路設計22.1 設計總方案22.2 方框圖32.3 AT89S52端口的介紹32.3.1 單片機AT89S5242.3.2 時鐘電路設計52.3.3 復位電路62.3.4 顯示電路設計72.3.5 按鍵設計82.3.6 測溫方法設計102.3.7 報警及提示電路16第三章軟件設計173.1 軟件流程圖173.2 中斷0處理子程序流程圖173.3 中斷1處理子程序流程圖183.4 定義端口183.5 段碼顯示19第四章軟件仿真324.1 正常情況下324.2溫度高于上限溫度324.3 溫度低于下限溫度334.4 顯示報警上限溫度334.5 顯示報警

11、下限溫度344.6 設置上限溫度354.7 設置下限溫度354.8 測量的最低溫度值364.9 測量的最高溫度值36第五章硬件系統(tǒng)的調(diào)試385.1 硬件系統(tǒng)的調(diào)試385.2 軟件系統(tǒng)的調(diào)試39小結(jié)40致謝41參考文獻42第一章 引言自從單片機誕生以來,它就步入我們?nèi)祟惖纳?,如洗衣機、電冰箱、電子玩具收錄機等。家用電器配上單片機后,提高了智能化程度,增加了功能,倍受人們喜愛。單片機使我們的生活更加方便、舒適、豐富多彩。單片機也成為計算機發(fā)展和應用的一個重要方面。單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用

12、單片機通過軟件法實現(xiàn)了,這種軟件代替硬件的控制技術也稱為微控制技術,是傳統(tǒng)控制技術的一次革命。隨著人們生活水平的提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設施就需要從數(shù)單片機技術入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。溫度計是測量儀器的總稱,根據(jù)所用測溫物質(zhì)的不同和測量范圍不同,有煤油溫度計、酒精溫度計、水銀溫度計、氣體溫度計、電阻溫度計、濕差電偶溫度計、輻射溫度計和光側(cè)溫度計等。每一種溫度計都有它的特點和用途。數(shù)計溫度計采用進口高精度、低溫漂、超低

13、功耗集成電路和寬溫型液晶顯示器,內(nèi)置高能電池連續(xù)工作5,無需敷設供電電纜,是一種精度高、穩(wěn)定性好、適用性極強的新型溫度顯示儀。數(shù)字溫度儀是傳統(tǒng)現(xiàn)場指針雙金屬溫度計的理想替代產(chǎn)品、數(shù)字溫度計廣泛用于各類工礦企業(yè)、大專院校、科研院所。第二章設計方案及硬件電路設計2.1 設計總方案本設計是基于單片機的一種溫度采集處理系統(tǒng),并可以實現(xiàn)報警功能。大致分為以下幾個模塊:單片機最小應用系統(tǒng),顯示模塊,溫度測量模塊,報警及提示模塊,上下限設置模塊。通過這些模塊的連接,并通過一定語言,我們可以基本實現(xiàn)我們的設計要求。如下是本設計的原理圖。圖2-1 數(shù)字溫度計原理圖2.2 方框圖通過分析可知,系統(tǒng)由多個模塊連接而

14、成,系統(tǒng)方框圖如圖2-1所示。圖2-2系統(tǒng)設計方框圖2.3 AT89S52端口的介紹P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流,這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:管腳備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0中斷請求輸入端)P3.3 /INT1(外部中斷1)P3.4 T0(定時器/計數(shù)器0外部輸入)P3.5 T1(定時器/計數(shù)器1外部輸入)P3.6 /

15、WR(外部數(shù)據(jù)存儲器寫選通信號)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通信號)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MO

16、VC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:

17、來自反向振蕩器的輸出。XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度單片機AT89S52AT89S52是一種低功耗、高性能CMOS、8位微控制器,具有 8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU

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

19、lash。52系列單片機是51系列單片機的增強型,與AT89C51相比AT89S52定時器多一個T2,RAM多128B,ROM多4K,中斷多2個,多一個看門狗,在掉電、數(shù)據(jù)指針等方面還有一些改進。S52的最高外接晶振可以達到33MHz,C51大概只有24MHz。更重要的是AT89S52支持在線編程,可以方便的給其下載程序,在調(diào)試過程中方便的多,并且成本不高?,F(xiàn)在市面上,C51差不多淘汰了,兩者價格也相近。故此次課程設計選擇AT89S52單片機(如圖2-3)。圖2-3AT89S52 單片機外形時鐘電路設計AT89S52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,此放大器的輸入和輸出端分別是引腳X

20、TAL1和XTAL2,XTAL1和XTAL2上接時鐘源即可構(gòu)成時鐘電路。本設計采用內(nèi)部時鐘產(chǎn)生方式。在XTAL1和XTAL2兩端跨接晶體或陶瓷諧振器,與內(nèi)部反相器構(gòu)成穩(wěn)定的自激振蕩器。參數(shù)選取:C1、C2對頻率有微調(diào)作用,這里都選用30pF。晶振頻率為12MHz。電路如圖2-4圖2-4時鐘電路復位電路復位使CPU和系統(tǒng)中其他部件都處于一個確定的初時狀態(tài),并從這個狀態(tài)開始工作。本設計采用上電按鈕電平的硬件復位電路,如圖2-5所示。參數(shù)選取:與地相聯(lián)電阻R2阻值為10K歐姆、電容C3選用10uF。圖2-5復位電路顯示電路設計根據(jù)設計任務,首先選擇顯示為LED。一般LED顯示有兩種方式:靜態(tài)顯示和動

21、態(tài)掃描顯示。動態(tài)掃描顯示工作原理:從一個口送段代碼,一個口送位選信號。段碼雖同時到達幾個LED,但一次僅一個LED被選中。利用“視覺暫留”,每送一個字符并選中相應位線,延時一會兒,再送/選下一個循環(huán)掃描即可。靜態(tài)顯示工作原理:每個LED需要一個8位并行口,高電平。保持每個顯器位上的字型碼不變,即加在對應的段選線上段碼電平不變。當選用共陰極的LED顯示器時,所有發(fā)光二極管的陰極連在一起接地,當某個發(fā)光二極管的陽極加入高電平時,對應的二極管點亮。為了減少硬件電路的復雜性,同時充分發(fā)揮單片機的強大功能,本設計采用共陰極LED動態(tài)顯示。共陰極的LED顯示器,所有發(fā)光二級管的陰極連在一起接地,當某個發(fā)光

22、二極管陽極加入高電平時,對應的二極管點亮。因此要顯示某字形就應使此字形的相應段的二極管點亮,實際上就是送一個用不同電平組合代表的數(shù)據(jù)字(顯示碼)來控制LED的顯示,此數(shù)據(jù)稱為字符的段碼或稱為字形碼。共陰極時,字符與它所對應的字形碼關系如表1-1:表1-1 共陰極數(shù)碼管段碼字符0123456789段碼3FH06H5BH4FH66H6DH7DH07H7FH6FH用上表建立一個數(shù)組,不同字符(數(shù)字)對應不同的字形碼,送到P0口就可以顯示對應的數(shù)據(jù)。根據(jù)經(jīng)驗可知,單片機的輸出口可以不加任何驅(qū)動直接點亮LED,故本著布線簡單,節(jié)省器件的理念,電路盡可能的簡單。如圖2-6P0.0P0.7以次接顯示管的字形

23、碼輸入端A、B、C、D、E、F、G、DP。值得注意的是P0口要接上拉電阻,本設計加的是470。如圖2-7P2.0P2.3以次接顯示數(shù)碼管的位選輸入端。圖2-6顯示電路圖2-7上拉電按鍵設計按鍵分為兩類。一類是編碼鍵盤,即鍵盤上閉合鍵的識別由專用硬件來實現(xiàn);另一類是非編碼鍵盤,即鍵盤上鍵入及閉合鍵的識別由軟件來完成。其中非編碼鍵盤可分為獨立連接鍵盤,矩陣連接鍵盤。鍵盤的作用是(1)鍵掃描功能。即檢測是否有鍵按下。(2)鍵識別功能。確定被按下鍵所在的行列位置。(3)產(chǎn)生相應鍵的代碼(鍵值)。(4)消除按鍵彈跳以及能夠識別多鍵及串鍵(復合按鍵)。各種鍵盤的優(yōu)缺點:(1)獨立連接鍵盤: 每鍵相互獨立,

24、各自與一條I/O線相連,CPU可直接讀取該I/O線的高/低電平狀態(tài)。特點:占I/O口線多,判鍵速度快,多用于設置控制鍵、功能鍵。適用于鍵數(shù)少的場合。(2)矩陣連接鍵盤: 鍵按矩陣排列,各鍵處于矩陣行/列的結(jié)點處,CPU通過對連在行(列)的I/O線送已知電平的信號,然后讀取列(行)線的狀態(tài)信息。逐線掃描,得出鍵碼。特點:鍵多時占用I/O口線少,但判鍵速度慢,多用于設置數(shù)字鍵。適用于鍵數(shù)多的場合。本設計功能簡單,兩個按鍵加上兩個中斷就可以基本完成溫度上下限設置功能,故采取獨立按鍵。P3口低四位接鍵盤輸入端。如圖2-8圖2-8按鍵電路由于機械按鍵會產(chǎn)生抖動脈沖所以必須去機械抖動。去機械抖動的方法是:

25、判別到鍵盤上有鍵閉合后,經(jīng)一段時間延時后再次判別鍵盤的狀態(tài),若仍有鍵閉合,則認為鍵盤上有一個鍵處于穩(wěn)定的閉合期,否則認為是鍵的抖動。各按鍵功能如表2-2表2-2 按鍵功能設置按鍵名功能S1查看最高限度,并為設置它做好準備S2查看最低限度,并為設置它做好準備S3每按一下,所需設置溫度加一S4每按一下,所需設置溫度減一測溫方法設計一般的測溫元件有熱電偶和熱電阻兩類,輸出的一般都是電壓信號,需要通過傳感器壓溫關系式轉(zhuǎn)換成對應的溫度,外部硬件較多,電路復雜,制作成本高。我們選用一種智能傳感器DS18B20作為檢測元件,測溫范圍-55128,分辨率可達0.0625,采用3線制與單片機相連,減少了外圍器件

26、,具有簡單和易用的特點。TO92封裝的DS18B20的引腳排列見圖2-9,其引腳功能描述見表3-3。表3-3 引腳功能序號名稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。圖2-9 DS18B20 電路連接圖2-10 DS18B20的引腳圖DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20的性能特

27、點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5V;零待機功耗;溫度以9或12位數(shù)字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2-11所示C64 位ROM和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器TH低溫觸發(fā)器TL配置寄存器8位CRC發(fā)生器VddI/O圖2-11 DS18B20內(nèi)部結(jié)構(gòu)64

28、位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)和的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應精度的溫度數(shù)值。該字節(jié)各位的定

29、義如圖2-12所示。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設置分辨率。溫度 LSB溫度 MSBTH用戶字節(jié)1TL用戶字節(jié)2配置寄存器保留保留保留CRC圖2-12DS18B20字節(jié)定義由表4-4可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當D

30、S18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625LSB形式表示。當符號位S0時,表示測得的溫度值為正值,可以直接將二進制位轉(zhuǎn)換為十進制;當符號位S1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表5-5是一部分溫度值對應的二進制溫度數(shù)據(jù)。表4-4 DS18B20溫度轉(zhuǎn)換時間表R1R0分辨率/位溫度最大轉(zhuǎn)向時間/ms00993.750110187.510113751112750DS18B20完成溫度轉(zhuǎn)換后

31、,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器

32、件中還有一個計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預置在55所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的

33、預置值,只要計數(shù)器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。表5-5一部分溫度對應值表溫度/二進制表示十六進制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.0

34、6251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。5、DS18B20溫度傳感器與單片機的接口電路DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖4 所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的

35、電流,可用一個MOSFET管來完成對總線的上拉。當DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖2-13 DS18B20與單片機的接口電路報警及提示電路報警電路選用一個直流的揚聲器,額定電壓為5V左右,陰極接到P3.5,通過軟件控制其工作與斷開,電路如圖2-14。相應的,設計報警提示電路,提示相關報警信號。電路如圖2-15圖2-14報警電路圖2-15提示電路第三章軟件設計軟件設計是本設計的一個重要部分,根據(jù)硬件將軟件設計分為以下幾個部分:溫度測量、鍵盤

36、處理程序設計、顯示處理程序設計、延時程序、主程序、報警及指示控制程序。由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時

37、序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。3.1 軟件流程圖根據(jù)軟件設計的要求,我們做出軟件流程圖(如圖3-1),以方便我們寫程序。3.2 中斷0處理子程序流程圖開 始開中斷系統(tǒng)初始化寫命令鍵按下處理按鍵顯 示結(jié) 束圖3-1 軟件流程圖3.3 中斷1處理子程序流程圖3.4 定義端口為了在書寫程序時,更明了的再現(xiàn)端口的意義,我們直接用一些可以看出來什么意思的名字定義端口,這樣就可以增加程序的可讀性。例如:#define uchar unsigned char#define uint unsigned intsbit DQ=P3

38、7; /溫度輸入口sbit DIN=P07; /LED小數(shù)點控制sbit alarm=P35;/報警口sbit high_set=P30;/高溫度限查看設置sbit low_set=P31;/低溫度限查看設置sbit low_led=P14;/過低溫度報警燈sbit high_led=P12;/過高溫度報警燈sbit alarm_led=P10; /溫度過限報警燈3.5 段碼顯示/顯示部分通過查表得到其段碼,送P0口顯示相應的數(shù)據(jù)vision() char k; for(k=0;k<4;k+) /4位LED掃描控制 discan=scan_conk; /位選 Disdata=tableD

39、is_playk; /數(shù)據(jù)顯示 if (k=1)DIN=1; /小數(shù)點顯示 delay(100);源程序#include <reg52.h>#include <intrins.h>#define Disdata P0 /段碼輸出口#define discan P2 /掃描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /溫度輸入口sbit DIN=P07; /LED小數(shù)點控制sbit alarm=P35;sbit high_set=P30;sbit low_set=P31;sbit lo

40、w_led=P14;sbit high_led=P12;sbit alarm_led=P10;uint h;uint temp;char r;char high=30,low=20;uchar sign;uchar q=0;uchar tt=0;uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小數(shù)部分對應十進制 "0" "1" "2" "3" "4&quo

41、t; "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F"Uchar code table12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x00,0x40;/共陰LED段碼表 "0" "1" "2" "3"

42、 "4" "5" "6" "7" "8" "9" "不亮" "-"uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; /列掃描控制字uchar data temp_data2=0x00,0x00; /讀出溫度暫放uchar data Dis_play5=0x00,0x00,0x00,0x00,0x00; /顯示數(shù)據(jù),共4個數(shù)據(jù)和一個運算暫用/延時函數(shù)void delay(uint t)for (;t>

43、;0;t-);/顯示掃描函數(shù)vision()char k;for(k=0;k<4;k+) /4位LED掃描控制discan=scan_conk; /位選Disdata=tableDis_playk; /數(shù)據(jù)顯示if (k=1)DIN=1; /小數(shù)點顯示delay(100);/DS18B20復位函數(shù)Init_DS18B20(void)char presence=1;while(presence)while(presence)DQ=1;_nop_();_nop_(); /從高拉倒低DQ=0;delay(50); /550 usDQ=1;delay(6); /66 uspresence=DQ;

44、 /presence=0 復位成功,繼續(xù)下一步delay(45); /延時500 uspresence=DQ;DQ=1; /拉高電平/DS18B20寫命令函數(shù)void WriteOneChar(uchar val)uchar i;for(i=8;i>0;i-)DQ=1;_nop_();_nop_(); /從高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0x01; /最低位移出delay(6); /66 usval=val/2; /右移1位DQ=1;delay(1);/DS18B20讀字節(jié)函數(shù)uchar ReadOneC

45、har(void)uchar i;uchar value=0;for(i=8;i>0;i-)DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0x80;delay(6); /66 usDQ=1;return(value);/讀出溫度函數(shù)read_temp()Init_DS18B20(); /總線復位delay(200);WriteOneChar(0xcc); /發(fā)命令W

46、riteOneChar(0x44); /發(fā)轉(zhuǎn)換命令Init_DS18B20();delay(1);WriteOneChar(0xcc); /發(fā)命令WriteOneChar(0xbe);temp_data0=ReadOneChar(); /讀溫度值的低字節(jié)temp_data1=ReadOneChar(); /讀溫度值的高字節(jié)temp=temp_data1;temp<<=8;temp=temp|temp_data0; / 兩字節(jié)合成一個整型變量。return temp; /返回溫度值/溫度處理函數(shù)work_temp(uint tem)uchar flag=0;if(tem>634

47、8) / 溫度值正負判斷tem=65536-tem;flag=1; / 負溫度求補碼,標志位置1Dis_play4=tem&0x0f; / 取小數(shù)部分的值Dis_play0=ditabDis_play4; / 存入小數(shù)部分顯示值Dis_play4=tem>>4; / 取中間八位,即整數(shù)部分的值Dis_play3=Dis_play4/100; / 取百位數(shù)據(jù)暫存Dis_play1=Dis_play4%100; / 取后兩位數(shù)據(jù)暫存Dis_play2=Dis_play1/10; / 取十位數(shù)據(jù)暫存Dis_play1=Dis_play1%10;r=Dis_play1+Dis_pl

48、ay2*10;/符號位顯示判斷if(!Dis_play3)Dis_play3=0x0a; /最高位為0時不顯示if(!Dis_play2)Dis_play2=0x0a; /次高位為0時不顯示if(flag)Dis_play3=0x0b; /負溫度時最高位顯示"-"/過限報警子程序void ALARM()/溫度過高if(r>=high)alarm=0; /蜂鳴器報警high_led=1; /相應指示燈亮low_led=0;if(q=1)alarm_led=0;q=!q; /報警指示燈閃亮elsealarm_led=1;q=!q;/溫度過低else if(r<=low)alarm=0;low_led=1;high_led=0;if(q=1)alarm_led=0;q=!q;elsealarm_led=1;q=!q;/正常情況elsealarm=1;alarm_led=0;high_led=0;low_led=0;/ 應用到中斷void init()IT0=1;IT1=1;EA=1;EX0=1;EX1=1;alarm=1;high_led=0;low_led=0;/第一個按鍵處理子函數(shù)void keyhigh_disp()uchar flag1=0;while(high_set=0)sign=1;

溫馨提示

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

最新文檔

評論

0/150

提交評論