基于單片機的多點溫度測量系統(tǒng)設計_第1頁
基于單片機的多點溫度測量系統(tǒng)設計_第2頁
基于單片機的多點溫度測量系統(tǒng)設計_第3頁
基于單片機的多點溫度測量系統(tǒng)設計_第4頁
基于單片機的多點溫度測量系統(tǒng)設計_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計(論文)題 目 名 稱 基于單片機的多點溫度測量系統(tǒng)設計 課 程 名 稱 單片機原理及應用 學 生 姓 名 劉道文 學 號 1241403034 系 、專 業(yè) 魏源國際學院,12電氣班 指 導 教 師 尹進田 2014年7月4日 摘 要通過運用DS18B20數字溫度傳感器的測溫原理和特性,利用它獨特的單線總線接口方式,與AT89C51單片機相結合實現多點測溫。并給出了測溫系統(tǒng)中對DS18B20操作的C51編程實例。實現了系統(tǒng)接口簡單、精度高、抗干擾能力強、工作穩(wěn)定等特點。本文介紹基于AT89C51單片機、C語言和DS18B20傳感器的多點溫度測量系統(tǒng)設計及其在Proteus平臺下的仿真

2、。利用51單片機的并行口,同步快速讀取8支DS18B20溫度,實現了在多點溫度測量系統(tǒng)中對多個傳感器的快速精確識別和處理,并給出了具體的編程實例和仿真結果。關鍵詞:單片機;DS18B20數字溫度傳感器;Proteus仿真;C51編程目 錄摘 要I第一章 緒論11.1溫度智能測控系統(tǒng)的研究背景與現狀分析11.2溫度智能測控系統(tǒng)的工作原理2第二章單片機簡介32.1單片機的定義32.2單片機的基本結構42.3單片機執(zhí)行指令的過程52.4單片機的特點6第三章 數字溫度傳感器DS18B20原理73.1概述73.2主要特征73.3引腳功能83.4工作原理及應用83.5單片機對DS18B20的操作流程83.

3、6 DS18B20與單片機的接口93.7 DS18B20芯片ROM指令表93.8 DS18B20芯片存儲器操作指令表103.9 DS18B20復位及應答關系及讀寫隙11第四章 系統(tǒng)硬件設計124.1系統(tǒng)結構設計思路124.2系統(tǒng)框圖134.3系統(tǒng)硬件設計13第五章 系統(tǒng)軟件設計165.1 系統(tǒng)軟件設計思路165.2系統(tǒng)軟件設計21第六章 系統(tǒng)運行結果27第七章 結束語31參考文獻32任務書33評閱表36III 第一章 緒論1.1溫度智能測控系統(tǒng)的研究背景與現狀分析溫度是一個和人們生活環(huán)境有著密切關系的物理量,也是一種在生產、科研、生活中需要測量和控制的重要物理量,是國際單位制七個基本量之一,同

4、時它也是一種最基本的環(huán)境參數。人民的生活與環(huán)境溫度息息相關,物理、化學、生物等學科都離不開溫度。在工業(yè)生產和實驗研究中,在電力、化工、石油、冶金、機械制造、大型倉儲室、實驗室、農場塑料大棚甚至人們的居室里經常需要對環(huán)境溫度進行檢測,并根據實際的要求對環(huán)境溫度進行控制。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內;許多化學反應的工藝過程必須在適當的溫度下才能正常進行。煉油過程中,原油必須在不同的溫度和壓力條件下進行分流才能得到汽油、柴油、煤油等產品;沒有合適的溫度環(huán)境,許多電子設備不能正常工作,糧倉的儲糧就會變質霉爛,酒類的品質就沒有保障??梢?,研究溫度的測量具有重要的理論意義和推廣價值。隨著

5、現代計算機和自動化技術的發(fā)展,作為各種信息的感知、采集、轉換、傳輸相處理的功能器件,溫度傳感器的作用日益突出,成為自動檢測、自動控制系統(tǒng)和計量測試中不可缺少的重要技術工具,其應用已遍及工農業(yè)生產和日常生活的各個領域。本設計就是為了滿足人們在生活生產中對溫度測量系統(tǒng)方面的需求。本設計要求系統(tǒng)測量的溫度的點數為4個,測量精度為0.5,測溫范圍為-20+80。采用液晶顯示溫度值和路數,顯示格式為:溫度的符號位,整數部分,小數部分,最后一位顯示。顯示數據每一秒刷新一次。21世紀科學技術的發(fā)展日新月異,科技的進步帶動了測量技術的發(fā)展,現代控制設備的性能和結構發(fā)生了巨大的變化,我們已經進入了高速發(fā)展的信息

6、時代,測量技術也成為當今科技的主流之一,被廣泛地應用于生產的各個領域。對于本次設計,其目的在于:1. 掌握數字溫度傳感器DS18B20的原理、性能、使用特點和方法,利用C51對系統(tǒng)進行編程。2. 本課題綜合了現代測控、電子信息、計算機技術專業(yè)領域方方面面的知識,具有綜合性、科學性、代表性,可全面檢驗和促進學生的理論素養(yǎng)和工作能力。 3. 本課題的研究可以使學生更好地掌握基于單片機應用系統(tǒng)的分析與設計方法,培養(yǎng)創(chuàng)新意識、協(xié)作精神和理論聯(lián)系實際的學風,提高電子產品研發(fā)素質、增強針對實際應用進行控制系統(tǒng)設計制作的能力。至單片機AT89C51的8個通用I/O端口。單片機獲得溫度信息后,通過特定的算法,

7、將處理后的溫度信息通過LED顯示出來,同時通過串行口送上位機處理。每個端口只連接一個溫度傳感器件,也即一條一線制總線上僅有一個DS18B20。并在Keil環(huán)境下編輯應用軟件程序,通過Proteus和Keil的聯(lián)合實現該多點溫度測量系統(tǒng)的設計、調試和仿真。1.2溫度智能測控系統(tǒng)的工作原理課題采用由Dallas公司生產的智能數字溫度傳感器DS18B20和Atmel公司推出的單片機AT89C51以及相關外圍電路實現高精度、多點溫度測量系統(tǒng)。同時本設計在單片機系統(tǒng)設計主流EDA軟件Proteus環(huán)境下完成,能夠及時觀察效果和修改軟硬件。本系統(tǒng)采用8片DS18B20構成小型溫度傳感器網絡,通過并行連接方

8、式連接至單片機AT89C51的8個通用I/O端口。單片機獲得溫度信息后,通過特定的算法,將處理后的溫度信息通過LED顯示出來,同時通過串行口送上位機處理。每個端口只連接一個溫度傳感器件,也即一條一線制總線上僅有一個DS18B20。并在Keil環(huán)境下編輯應用軟件程序,通過Proteus和Keil的聯(lián)合實現該多點溫度測量系統(tǒng)的設計、調試和仿真。 第二章單片機簡介單片微型計算機自20世紀70年代問世以來,以對人類社會產生了巨大的影響。尤其是美國Intel公司生產的MCS-51系列單片機,由于其具有集成度高、處理功能強、可靠性高、系統(tǒng)結構簡單、價格低廉、易于使用等優(yōu)點,在世界范圍內已經得到廣泛的普及和

9、應用。而且隨著以MCS-51單片機基本內核為核心的各種擴展型、增強型的新型單片機不斷推出,MCS-51系列仍是我國單片機應用領域的主流機型。目前在工業(yè)控制、智能儀器儀表、辦公室自動化、家用電器等諸多領域,到處都可看見單片機的蹤影,單片機技術開發(fā)和應用高水平已成為一個國家工業(yè)化水平的標志之一。2.1單片機的定義單片機1是在一塊半導體上集成了微處理器(CPU),存儲器(RAM、ROM、EPROM)和各種輸入、輸出接口(定時計數器,并行IO口,串行口,A/D轉換器以及脈寬調制器PWM等),這樣一塊集成電路芯片具有一臺計算機的屬性,因此被稱為單片微型計算機,簡稱單片機。單片機以其卓越的性能,得到了廣泛

10、的應用,單片機以小巧靈活、成本低、易于產品化、可靠性好、應用溫度范圍寬等優(yōu)點。AT89C51是美國ATMEL公司生產的低電壓,高性能 CMOS 8位單片機,片內含4K bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes 的隨機存取數據存儲器(RAM),器件采用ATMEL高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器(CPU)和 Flash 存儲單元。功能強大AT89C51單片機可提供高性價比的應用場合,可靈活運用與各種控制領域。AT89C51方框圖2-1:圖2-1 AT89C51方框圖2.2單片機的基本結構1. 微處理器(CPU)MC

11、S-51單片機中有1個8位的CPU,包括運算器和控制器兩大部分,不僅可處理字節(jié)數據,還可以進行位變量的處理。例如:位處理、查表、狀態(tài)檢測、中斷處理等。2. 內部數據存儲器(RAM)單片機芯片共有256個RAM單元,其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數據。因此通常所說的內部數據存儲器就是指前128單元,簡稱內部RAM。地址范圍為00HFFH(256B)。片外最多可外擴64KB。RAM是一個多用多功能數據存儲器,有數據存儲、通用工作寄存器、堆棧、位地址等空間。3. 內部程序存儲器(ROM)單片機內部有4KB的ROM,用于存放程序、原始數據或

12、表格。因此稱之為程序存儲器,簡稱內部RAM。地址范圍為0000HFFFFH(64KB)。片外最多可外擴64KB。4. 定時器/計數器單片機共有2個16位的定時器/計數器,具有4種工作方式,以實現定時或計數功能,并以其定時或計數結果對計算機進行控制。定時時靠內部分頻時鐘頻率計數實現,做計數器時,對P3.4(T0)或P3.5(T1)端口的低電平脈沖計數。5. 并行I/O口MCS-51單片機共有4個8位的I/O口(P0、P1、P2、P3)以實現數據的輸入輸出。6. 串行口MCS-51單片機有一個全雙工的串行口,具有4種工作方式,以實現單片機和其它設備之間的串行數據傳送。該串行口功能較強,既可作為全雙

13、工異步通信收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。7. 中斷控制系統(tǒng)MCS-51單片機的中斷功能較強,以滿足不同控制應用的需要。共有5個中斷源,即外中斷2個,定時中斷2個,串行中斷1個,全部中斷分為高級和低級共二個優(yōu)先級別。8. 時鐘電路MCS-51單片機芯片的內部有時鐘電路,但石英晶體和微調電容需外接。時鐘電路為單片機產生時鐘脈沖序列。系統(tǒng)允許的晶振頻率為12MHZ等。9. 特殊功能寄存器(SFR)特殊功能寄存器共有21個,用于CPU對片內各功能部件進行管理、控制、監(jiān)視。實際上是片內各功能部件的控制寄存器和狀態(tài)寄存器,是一個具有特殊功

14、能的RAM區(qū)。2.3單片機執(zhí)行指令的過程 單片機執(zhí)行程序的過程,實際上就是執(zhí)行所編制程序的過程。即逐條指令的過程。計算機每執(zhí)行一條指令都可分為三個階段進行。即取指令-分析指令-執(zhí)行指令。取指令的任務是:根據程序計數器PC中的值從程序存儲器讀出現行指令,送到指令寄存器。分析指令階段的任務是:將指令寄存器中的指令操作碼取出后進行譯碼,分析其指令性質。如指令要求操作數,則尋找操作數地址。計算機執(zhí)行程序的過程實際上就是逐條指令地重復上述操作過程,直至遇到停機指令可循環(huán)等待指令。2.4單片機的特點單片機應用在檢測控制領域中,具有如下特點:1.小巧靈活、成本低、易于產品化。2.可靠性好,適應溫度范圍寬。3

15、.易擴展,很容易構成各種規(guī)模的應用系統(tǒng),控制功能強。4.可以很方便的實現多機和分布式控制系統(tǒng)。5.具有優(yōu)異的性能價格比。6.存儲器ROM和RAM是嚴格分工的。7.采用面向控制的指令系統(tǒng)。8.輸入/輸出(I/O)端口引腳通常設計有多種功能。9.品種規(guī)格的系列化。10.功率消耗低。所以從工業(yè)自動化、智能儀器儀表、消費類電子產品、通信方面、家用電器方面等,直到國防尖端技術領域,單片機都發(fā)揮著十分重要的作用。綜觀單片機幾十年的發(fā)展歷程,單片機今后將向多功能、高性能、高速度、低電壓、低功耗、低價格、外圍電路內裝化以及片內存儲器容量增加和Flash存儲器化方向發(fā)展。可以預言,今后的單片機將是功能更強、集成

16、的和可靠性更高而功耗更低,以及使用更方便。此外,專用化也是單片機的一個發(fā)展方向,針對單一用途的專用單片機將會越來越多。第三章 數字溫度傳感器DS18B20原理3.1概述溫度傳感器的種類眾多,在應用與高精度、高可靠性的場合時DALLAS(達拉斯)公司生產的DS18B20溫度傳感器2當仁不讓。超小的體積,超低的硬件開消,抗干擾能力強,精度高,附加功能強,使得DS18B20更受歡迎。對于我們普通的電子愛好者來說,DS18B20的優(yōu)勢更是我們學習單片機技術和開發(fā)溫度相關的小產品的不二選擇。了解其工作原理和應用可以拓寬您對單片機開發(fā)的思路。DS18B20器件具體的封裝形式如圖3-1所示:圖3-1 DS1

17、8B20器件具體的封裝形式圖3.2主要特征DS18B20的主要特征:l* 全數字溫度轉換及輸出。l* 先進的單總線數據通信。l* 最高12位分辨率,精度可達土0.5攝氏度。l* 12位分辨率時的最大工作周期為750毫秒。l* 可選擇寄生工作方式。l* 檢測溫度范圍為55C +125C (67F +257F)l* 內置EEPROM,限溫報警功能。l* 64位光刻ROM,內置產品序列號,方便多機掛接。* 多樣封裝形式,適應不同硬件系統(tǒng)3.3引腳功能GND 電壓地 DQ 單數據總線 VDD 電源電壓 NC 空引腳DQ一線制總線(輸入/輸出)3.4工作原理及應用DS18B20的溫度檢測與數字數據輸出全

18、集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數據處理。在講解其工作流程之前我們有必要了解18B20的內部存儲器資源。18B20共有三種形態(tài)的存儲器資源,它們分別是:ROM 只讀存儲器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗)。數據在出產時設置不由用戶更改。DS18B20共64位ROM。RAM 數據暫存器,用于內部計算和數據存取,數據在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。第1、2個字節(jié)是溫度轉換后的數據值信息,第3、

19、4個字節(jié)是用戶EEPROM(常用于溫度報警值儲存)的鏡像。在上電復位時其值將被刷新。第5個字節(jié)則是用戶第3個EEPROM的鏡像。第6、7、8個字節(jié)為計數寄存器,是為了讓用戶得到更高的溫度分辨率而設計的,同樣也是內部溫度轉換、計算的暫存單元。第9個字節(jié)為前8個字節(jié)的CRC碼。EEPROM 非易失性記憶體,用于存放長期需要保存的數據,上下限溫度報警值和校驗數據,DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。我們在每一次讀溫度之前都必須進行復雜的且精準時序的處理,因為DS18B20的硬件簡單結果就會導致軟件的巨大開消,也是盡力減少有形資產轉化為無形資產的投入,是一種較好的節(jié)

20、約之道。3.5單片機對DS18B20的操作流程31.復位:首先我們必須對DS18B20芯片進行復位,復位就是由控制器(單片機)給DS18B20單總線至少480uS的低電平信號。當18B20接到此復位信號后則會在1560uS后回發(fā)一個芯片的存在脈沖。2.存在脈沖:在復位電平結束之后,控制器應該將數據單總線拉高,以便于在1560uS后接收存在脈沖,存在脈沖為一個60240uS的低電平信號。至此,通信雙方已經達成了基本的協(xié)議,接下來將會是控制器與18B20間的數據通信。如果復位低電平的時間不足或是單總線的電路斷路都不會接到存在脈沖,在設計時要注意意外情況的處理。3.控制器發(fā)送ROM指令:雙方打完了招

21、呼之后最要將進行交流了,ROM指令共有條,每一個工作周期只能發(fā)一條,ROM指令分別是讀ROM數據、指定匹配芯片、跳躍ROM、芯片搜索、報警芯片搜索。ROM指令為8位長度,功能是對片內的64位光刻ROM進行操作。其主要目的是為了分辨一條總線上掛接的多個器件并作處理。誠然,單總線上可以同時掛接多個器件,并通過每個器件上所獨有的ID號來區(qū)別,一般只掛接單個18B20芯片時可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發(fā)送ROM指令,而是用特有的一條“跳過指令”)。4.控制器發(fā)送存儲器操作指令:在ROM指令發(fā)送給18B20之后,緊接著(不間斷)就是發(fā)送存儲器操作指令了。操作指令同樣為8位,共6

22、條,存儲器操作指令分別是寫RAM數據、讀RAM數據、將RAM數據復制到EEPROM、溫度轉換、將EEPROM中的報警值復制到RAM、工作方式切換。存儲器操作指令的功能是命令18B20作什么樣的工作,是芯片控制的關鍵。5.執(zhí)行或數據讀寫:一個存儲器操作指令結束后則將進行指令執(zhí)行或數據的讀寫,這個操作要視存儲器操作指令而定。如執(zhí)行溫度轉換指令則控制器(單片機)必須等待18B20執(zhí)行其指令,一般轉換時間為500uS。如執(zhí)行數據讀寫指令則需要嚴格遵循18B20的讀寫時序來操作。單支DS18B20若要讀出當前的溫度數據我們需要執(zhí)行兩次工作周期,第一個周期為:復位、跳過ROM指令CCH、執(zhí)行溫度轉換存儲器

23、操作指令44H、等待500uS溫度轉換時間。緊接著執(zhí)行第二個周期為:復位、跳過ROM指令CCH、執(zhí)行讀RAM的存儲器操作指令BEH、讀數據(最多為9個字節(jié),中途可停止,只讀簡單溫度值則讀前2個字節(jié)即可)。3.6 DS18B20與單片機的接口DS18B20只需要接到控制器(單片機)的一個I/O口上,由于單總線為開漏所以需要外接一個4.7K的上拉電阻。如要采用寄生工作方式,只要將VDD電源引腳與單總線并聯(lián)即可。但在程序設計中,寄生工作方式將會對總線的狀態(tài)有一些特殊的要求。3.7 DS18B20芯片ROM指令表4Read ROM(讀ROM)33H (方括號中的為16進制的命令字)這個命令允許總線控制

24、器讀到DS18B20的64位ROM。只有當總線上只存在一個DS18B20的時候才可以使用此指令,如果掛接不止一個,當通信時將會發(fā)生數據沖突。Match ROM(指定匹配芯片)55H這個指令后面緊跟著由控制器發(fā)出了64位序列號,當總線上有多只DS18B20時,只有與控制發(fā)出的序列號相同的芯片才可以做出反應,其它芯片將等待下一次復位。這條指令適應單芯片和多芯片掛接。Skip ROM(跳躍ROM指令)CCH這條指令使芯片不對ROM編碼做出反應,在單芯片的情況之下,為了節(jié)省時間則可以選用此指令。如果在多芯片掛接時使用此指令將會出現數據沖突,導致錯誤出現。Search ROM(搜索芯片)F0H在芯片初始

25、化后,搜索指令允許總線上掛接多芯片時用排除法識別所有器件的64位ROM。Alarm Search(報警芯片搜索)ECH在多芯片掛接的情況下,報警芯片搜索指令只對符合溫度高于TH或小于TL報警條件的芯片做出反應。只要芯片不掉電,報警狀態(tài)將被保持,直到再一次測得溫度什達不到報警條件為止。3.8 DS18B20芯片存儲器操作指令表5Write Scratchpad (向RAM中寫數據)4EH這是向RAM中寫入數據的指令,隨后寫入的兩個字節(jié)的數據將會被存到地址2(報警RAM之TH)和地址3(報警RAM之TL)。寫入過程中可以用復位信號中止寫入。Read Scratchpad (從RAM中讀數據)BEH

26、此指令將從RAM中讀數據,讀地址從地址0開始,一直可以讀到地址9,完成整個RAM數據的讀出。芯片允許在讀過程中用復位信號中止讀取,即可以不讀后面不需要的字節(jié)以減少讀取時間。Copy Scratchpad (將RAM數據復制到EEPROM中)48H此指令將RAM中的數據存入EEPROM中,以使數據掉電不丟失。此后由于芯片忙于EEPROM儲存處理,當控制器發(fā)一個讀時間隙時,總線上輸出“0”,當儲存工作完成時,總線將輸出“1”。在寄生工作方式時必須在發(fā)出此指令后立刻超用強上拉并至少保持10MS,來維持芯片工作。Convert T(溫度轉換)44H收到此指令后芯片將進行一次溫度轉換,將轉換的溫度值放入

27、RAM的第1、2地址。此后由于芯片忙于溫度轉換處理,當控制器發(fā)一個讀時間隙時,總線上輸出“0”,當儲存工作完成時,總線將輸出“1”。在寄生工作方式時必須在發(fā)出此指令后立刻超用強上拉并至少保持500MS,來維持芯片工作。Recall EEPROM(將EEPROM中的報警值復制到RAM)B8H此指令將EEPROM中的報警值復制到RAM中的第3、4個字節(jié)里。由于芯片忙于復制處理,當控制器發(fā)一個讀時間隙時,總線上輸出“0”,當儲存工作完成時,總線將輸出“1”。另外,此指令將在芯片上電復位時將被自動執(zhí)行。這樣RAM中的兩個報警字節(jié)位將始終為EEPROM中數據的鏡像。Read Power Supply(工

28、作方式切換)B4H此指令發(fā)出后發(fā)出讀時間隙,芯片會返回它的電源狀態(tài)字,“0”為寄生電源狀態(tài),“1”為外部電源狀態(tài)。3.9 DS18B20復位及應答關系及讀寫隙每一次通信之前必須進行復位,復位的時間、等待時間、回應時間應嚴格按時序編程。DS18B20的數據讀寫是通過時間隙處理位和命令字來確認信息交換的。寫時間隙:寫時間隙分為寫“0”和寫“1”,時序如圖7。在寫數據時間隙的前15uS總線需要是被控制器拉置低電平,而后則將是芯片對總線數據的采樣時間,采樣時間在1560uS,采樣時間內如果控制器將總線拉高則表示寫“1”,如果控制器將總線拉低則表示寫“0”。每一位的發(fā)送都應該有一個至少15uS的低電平起

29、始位,隨后的數據“0”或“1”應該在45uS內完成。整個位的發(fā)送時間應該保持在60120uS,否則不能保證通信的正常。讀時間隙:讀時間隙時控制時的采樣時間應該更加的精確才行,讀時間隙時也是必須先由主機產生至少1uS的低電平,表示讀時間的起始。隨后在總線被釋放后的15uS中DS18B20會發(fā)送內部數據位,這時控制如果發(fā)現總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數據“0”。每一位的讀取之前都由控制器加一個起始信號。注意:必須在讀間隙開始的15uS內讀取數據位才可以保證通信的正確。在通信時是以8位“0”或“1”為一個字節(jié),字節(jié)的讀或寫是從高位開始的,即A7到A0.字節(jié)的讀寫順序也是如圖

30、2自上而下的。第四章 系統(tǒng)硬件設計4.1系統(tǒng)結構設計思路當一線制總線6上僅有一個DS18B20器件時,可以用skip ROM操作(即跳過ROM匹配)命令來代替64位序列號的匹配過程,這點也是使用單個DS18B20器件的系統(tǒng)常用的方法。所以,要想節(jié)省掉64位序列號匹配的時間開銷,就必需設計成一個一線制總線上僅有一個DS18B20器件的系統(tǒng)。 DS18B20的一線制總線在時序上的嚴格要求,也從另一方面意味著在一定的彈性范圍內,不同DS18B20器件的時序細節(jié)上的一致性應該是非常好,所以可以將系統(tǒng)設計成利用MCU的并行端口同時對多個DS18B20進行統(tǒng)一的操作,不過這時候并行端口上的每一個端口連接著

31、一個DS18B20器件而已。 本文所述的解決方案正是以端口的消耗為代價,換取對多點DS18B20溫度查詢的速度,并在程序結構的設計上采用一些巧妙的處理方法,使得系統(tǒng)對DS18B20的操作上花更少的時間。此外,采用本設計實現的快速多點溫度查詢系統(tǒng),可以省掉煩瑣的總線上器件序列號的查詢操作,并可節(jié)省大量的存儲空間(原用于存儲總線上器件的序列號所用的空間)。 從理論上分析,本設計方案的采用,查詢多個DS18B20器件操作所消耗的時間與查詢一個DS18B20器件操作所消耗的時間是等量的。本系統(tǒng)方案8個DS18B20器件連接在MCU的一組端口的8個I/O口上,連線示意圖4-1所示:圖4-1 系統(tǒng)連線示意

32、圖當然,上圖中的示意圖并沒有考慮諸如端口驅動能力、抗干擾處理等,僅表明一個邏輯的連接示意,具體在產品級的設計時會根據產品的應用做必要的處理,比如增加一些必要的電路等,此處不作為討論的重點。 從上圖可見,每個端口連接有一個DS18B20器件,也即一條一線制總線上僅有一個DS18B20器件,符合了前面所述的解決方法。實際在對DS18B20器件進行操作時,只需統(tǒng)一地對這一組并行端口進行操作(每個端口在同一時間輸出相同的電平狀態(tài))即可。 一個端口對應一個DS18B20器件,也就表示每組端口的某一個位的讀回數據狀態(tài)也就是該端口所對應的器件的輸出狀態(tài),所以,這樣的系統(tǒng)里面是不需要進行每個器件的序列號搜索、

33、匹配的操作的??芍趯S18B20器件進行操作時,可以使用skip ROM命令來跳過ROM序列號匹配的操作,也即在所有的DS18B20器件的ROM操作時可以使用相同的端口輸出時序。4.2系統(tǒng)框圖DS18B20數碼管顯示AT89C51圖4-2 系統(tǒng)框圖系統(tǒng)框圖15簡介: 系統(tǒng)的核心是AT89C51單片機,系統(tǒng)通過控制選擇某一個DS18B20,并把其檢測到的溫度數據送到單片機進行處理,在把處理后的溫度送到數碼管顯示,并顯示是那個點的溫度,系統(tǒng)也可以多點溫度循環(huán)掃描顯示。4.3系統(tǒng)硬件設計模塊介紹圖4-3 為單片機AT89C51仿真模塊圖 4-3 AT89C51仿真模塊圖 圖4-4 為四位數碼管

34、的仿真模塊圖 4-4 數碼管仿真模塊圖圖4-5 為數字溫度傳感器DS18B20的仿真模塊圖 4-5 DS18B20仿真模塊圖在 Keil12,Proteus13環(huán)境下設計多點測溫系統(tǒng)硬軟件,進行驗證,硬件電路圖4-6如下圖4-6 系統(tǒng)硬件電路圖第五章 系統(tǒng)軟件設計5.1 系統(tǒng)軟件設計思路7在接下來的軟件介紹中,會以C語言的例子介紹具體的編程思路,但這些代碼并非就是實際中所使用的代碼,僅作為邏輯性的參考,以便大家理解。 軟件設計從最底層的與DS18B20時序相關的驅動,到與一線制總線器件處理過程控制/協(xié)議的接口函數,再上升到應用API接口函數的關系如下圖5-1所示:圖5-1 接口函數關系圖在對連

35、在一組8位端口上的8個DS18B20操作時,是同時對該組端口進行操作,也即同時對8個DS18B20器件進行同步的操作。 下面詳細介紹一下以MCS51系列單片機的應用為例的范例程序,其中約定與8個DS18B20器件進行連接的是P1端口。底層時序驅動8程序與DS18B20的一線制總線的協(xié)議保持一致,根據一線制總線時序的特點,設計了四個基本的函數:總線寫1時序控制函數:void DS18B20_Write_1(void)P1 = 0x00;/8個DQ 線全部設置為低電平Delay_1us(10);/延時10us左右P1 = 0xff;/8個DQ線全部輸出高電平Delay_1us(30);/延時30u

36、s左右總線寫0時序控制函數:void DS18B20_Write_0(void)P1 = 0x00;/8個DQ 線全部設置為低電平Delay_1us(40);/延時P1 = 0xff;/端口恢復高電平Delay_1us(1);總線讀取一個數據位時序控制函數:unsigned char DS18B20_ReadDQ(void)unsigned char DQ_S=0;P1 = 0x00;/8個DQ 線全部設置為低電平Delay_1us(10);P1 = 0xff;/端口置1,準備讀取Delay_1us(1);/延時待總線準備好數據DQ_S = P1;/一次性讀取8條DQ線的數據狀態(tài)P1 = 0x

37、ff;/恢復端口電平Delay_1us(30);/延時return DQ_S;/返回讀取的值 在讀取一個總線狀態(tài)數據位的函數中,將會返回一個byte的數據,該數據的8個位正好與連接在P2端口上的8個I/O口對應,如下圖5-2所示:圖5-2總線復位時序控制函數:void DS18B20_Reset(void)unsigned char Error_Counter=0;P1 = 0x00;/8個DQ 線全部設置為低電平Delay_1us(500);/保持總線低電平500usP1 = 0xff;Delay_1us(100);if(P1!=0x00) B20_Error = P1;/如檢測到DS18B

38、20總線響應了回復信號,則讀取當前8條/總線的狀態(tài)Delay_1us(50);P1 = 0xff;for(Error_Counter=0;Error_Counter200;Error_Counter+)if(P1&(B20_Error)=(B20_Error) break;/如檢測到總線的回復信號結束,則退出循環(huán)Delay_1us(1);P1 = 0xff;/恢復端口電平Delay_1us(200);/延時 200us 在復位時序控制的函數中,使用了B20_Error全局變量,它將會傳遞給上一層的數據處理函數作為判斷當前8個I/O口所接的DS18B20是否正常工作,或者是否在各自的總線上。分析

39、DS18B20的一線制總線控制命令,可以提煉出兩個最基本的操作函數,一個是寫一個byte數據至DS18B20器件,另一為讀取DS18B20器件的數據。而在本文的范例程序當中,僅僅為了提取DS18B20器件的轉換完后的溫度值,所以在讀取DS18B20的數據時,僅讀取存放在數據地址前兩個字節(jié)的溫度數據,而不讀取其它字節(jié)的數據,包括CRC校驗值也沒有進行讀取。寫字節(jié)操作函數9:void DS18B20_WriteByte(unsigned char Com)unsigned char i;for(i=0;i1;調用DS18B20_WriteByte函數,連在8個I/O口上的一線制總線上的8個DS18

40、B20器件,將都會接收到同樣的一個字節(jié)的數據:Com。讀數據操作函數:unsigned char Read_buf_8ch16;/buffer of Read DS18B20void DS18B20_Read2Byte(void)unsigned int i;for(i=0;i=0;i-)Mask = 0x01;for(j=0;j8;j+)uiDataj = uiDataj1;if(Read_buf_8chi&Mask) uiDataj+;Mask = Mask1; 經過上述簡單的處理,8個DS18B20器件的測溫數據將保存在數組uiData當中的8個單元里,就可以根據自身程序設計的需求來對這

41、些數據進行具體的處理了。5.2系統(tǒng)軟件設計/-/函數聲明,變量定義/DS18B20程序 條件:11.0592晶振 DQ上拉4.7K電阻/-#include #include #define uchar unsigned char#define uint unsigned int#define NOP_1uS _nop_();_nop_();_nop_();_nop_();_nop_();_nop_()#define DQ P3 /P3口用8個DS18B20/*/-/函數名稱:Delay10us/入口參數:n/函數功能:延時子程序/-void Delay10us(uchar n) while(n

42、-) NOP_1uS;NOP_1uS;NOP_1uS; NOP_1uS;NOP_1uS;NOP_1uS; NOP_1uS; */-/函數名稱:Delay1ms/入口參數:count/函數功能:延時子程序/-void Delay1ms(uint count) uint i; while(count-) for(i=0;i0) i-; /大約900us DQ=0xff; i=4;while(i0) i-; /while(DQ); while(DQ); i=4;while(i0) i-;/-/函數名稱:Write_Byte/入口參數:dat/函數功能:寫命令/-void Write_Byte(uch

43、ar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) DQ=0x00; /寫1 i+;i+; DQ=0xff; i=8;while(i0) i-; else DQ=0x00; /寫0 i=8;while(i0) i-; DQ=0xff; i+;i+; /-/函數名稱:Start_convert/入口參數:無/函數功能:開始轉換/-void Start_convert(void) Init_18B20(); Delay1ms(1); Write_Byte(0xcc); Write_Byte(0x44);/-/函數名稱:Start_Read_Byte/入口參數:無/函數功能:開始讀取/-void Start_Rea

溫馨提示

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

評論

0/150

提交評論