版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(論文)題 目 名 稱 基于單片機(jī)的多點溫度測量系統(tǒng)設(shè)計 課 程 名 稱 單片機(jī)原理及應(yīng)用 學(xué) 生 姓 名 劉道文 學(xué) 號 1241403034 系 、專 業(yè) 魏源國際學(xué)院,12電氣班 指 導(dǎo) 教 師 尹進(jìn)田 2014年7月4日摘 要通過運(yùn)用DS18B20數(shù)字溫度傳感器的測溫原理和特性,利用它獨特的單線總線接口方式,與AT89C51單片機(jī)相結(jié)合實現(xiàn)多點測溫。并給出了測溫系統(tǒng)中對DS18B20操作的C51編程實例。實現(xiàn)了系統(tǒng)接口簡單、精度高、抗干擾能力強(qiáng)、工作穩(wěn)定等特點。本文介紹基于AT89C51單片機(jī)、C語言和DS18B20傳感器的多點溫度測量系統(tǒng)設(shè)計及其在Proteus平臺下的仿真。
2、利用51單片機(jī)的并行口,同步快速讀取8支DS18B20溫度,實現(xiàn)了在多點溫度測量系統(tǒng)中對多個傳感器的快速精確識別和處理,并給出了具體的編程實例和仿真結(jié)果。關(guān)鍵詞:單片機(jī);DS18B20數(shù)字溫度傳感器;Proteus仿真;C51編程目 錄摘 要I第一章 緒論11.1溫度智能測控系統(tǒng)的研究背景與現(xiàn)狀分析11.2溫度智能測控系統(tǒng)的工作原理2第二章單片機(jī)簡介32.1單片機(jī)的定義32.2單片機(jī)的基本結(jié)構(gòu)42.3單片機(jī)執(zhí)行指令的過程52.4單片機(jī)的特點6第三章 數(shù)字溫度傳感器DS18B20原理73.1概述73.2主要特征73.3引腳功能83.4工作原理及應(yīng)用83.5單片機(jī)對DS18B20的操作流程83.6
3、 DS18B20與單片機(jī)的接口93.7 DS18B20芯片ROM指令表93.8 DS18B20芯片存儲器操作指令表103.9 DS18B20復(fù)位及應(yīng)答關(guān)系及讀寫隙11第四章 系統(tǒng)硬件設(shè)計124.1系統(tǒng)結(jié)構(gòu)設(shè)計思路124.2系統(tǒng)框圖134.3系統(tǒng)硬件設(shè)計13第五章 系統(tǒng)軟件設(shè)計165.1 系統(tǒng)軟件設(shè)計思路165.2系統(tǒng)軟件設(shè)計21第六章 系統(tǒng)運(yùn)行結(jié)果27第七章 結(jié)束語31參考文獻(xiàn)32任務(wù)書33評閱表36第一章 緒論1.1溫度智能測控系統(tǒng)的研究背景與現(xiàn)狀分析溫度是一個和人們生活環(huán)境有著密切關(guān)系的物理量,也是一種在生產(chǎn)、科研、生活中需要測量和控制的重要物理量,是國際單位制七個基本量之一,同時它也是一
4、種最基本的環(huán)境參數(shù)。人民的生活與環(huán)境溫度息息相關(guān),物理、化學(xué)、生物等學(xué)科都離不開溫度。在工業(yè)生產(chǎn)和實驗研究中,在電力、化工、石油、冶金、機(jī)械制造、大型倉儲室、實驗室、農(nóng)場塑料大棚甚至人們的居室里經(jīng)常需要對環(huán)境溫度進(jìn)行檢測,并根據(jù)實際的要求對環(huán)境溫度進(jìn)行控制。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行。煉油過程中,原油必須在不同的溫度和壓力條件下進(jìn)行分流才能得到汽油、柴油、煤油等產(chǎn)品;沒有合適的溫度環(huán)境,許多電子設(shè)備不能正常工作,糧倉的儲糧就會變質(zhì)霉?fàn)€,酒類的品質(zhì)就沒有保障??梢姡芯繙囟鹊臏y量具有重要的理論意義和推廣價值。隨著現(xiàn)代計算機(jī)
5、和自動化技術(shù)的發(fā)展,作為各種信息的感知、采集、轉(zhuǎn)換、傳輸相處理的功能器件,溫度傳感器的作用日益突出,成為自動檢測、自動控制系統(tǒng)和計量測試中不可缺少的重要技術(shù)工具,其應(yīng)用已遍及工農(nóng)業(yè)生產(chǎn)和日常生活的各個領(lǐng)域。本設(shè)計就是為了滿足人們在生活生產(chǎn)中對溫度測量系統(tǒng)方面的需求。本設(shè)計要求系統(tǒng)測量的溫度的點數(shù)為4個,測量精度為0.5,測溫范圍為-20+80。采用液晶顯示溫度值和路數(shù),顯示格式為:溫度的符號位,整數(shù)部分,小數(shù)部分,最后一位顯示。顯示數(shù)據(jù)每一秒刷新一次。21世紀(jì)科學(xué)技術(shù)的發(fā)展日新月異,科技的進(jìn)步帶動了測量技術(shù)的發(fā)展,現(xiàn)代控制設(shè)備的性能和結(jié)構(gòu)發(fā)生了巨大的變化,我們已經(jīng)進(jìn)入了高速發(fā)展的信息時代,測量
6、技術(shù)也成為當(dāng)今科技的主流之一,被廣泛地應(yīng)用于生產(chǎn)的各個領(lǐng)域。對于本次設(shè)計,其目的在于:1. 掌握數(shù)字溫度傳感器DS18B20的原理、性能、使用特點和方法,利用C51對系統(tǒng)進(jìn)行編程。2. 本課題綜合了現(xiàn)代測控、電子信息、計算機(jī)技術(shù)專業(yè)領(lǐng)域方方面面的知識,具有綜合性、科學(xué)性、代表性,可全面檢驗和促進(jìn)學(xué)生的理論素養(yǎng)和工作能力。 3. 本課題的研究可以使學(xué)生更好地掌握基于單片機(jī)應(yīng)用系統(tǒng)的分析與設(shè)計方法,培養(yǎng)創(chuàng)新意識、協(xié)作精神和理論聯(lián)系實際的學(xué)風(fēng),提高電子產(chǎn)品研發(fā)素質(zhì)、增強(qiáng)針對實際應(yīng)用進(jìn)行控制系統(tǒng)設(shè)計制作的能力。至單片機(jī)AT89C51的8個通用I/O端口。單片機(jī)獲得溫度信息后,通過特定的算法,將處理后的
7、溫度信息通過LED顯示出來,同時通過串行口送上位機(jī)處理。每個端口只連接一個溫度傳感器件,也即一條一線制總線上僅有一個DS18B20。并在Keil環(huán)境下編輯應(yīng)用軟件程序,通過Proteus和Keil的聯(lián)合實現(xiàn)該多點溫度測量系統(tǒng)的設(shè)計、調(diào)試和仿真。1.2溫度智能測控系統(tǒng)的工作原理課題采用由Dallas公司生產(chǎn)的智能數(shù)字溫度傳感器DS18B20和Atmel公司推出的單片機(jī)AT89C51以及相關(guān)外圍電路實現(xiàn)高精度、多點溫度測量系統(tǒng)。同時本設(shè)計在單片機(jī)系統(tǒng)設(shè)計主流EDA軟件Proteus環(huán)境下完成,能夠及時觀察效果和修改軟硬件。本系統(tǒng)采用8片DS18B20構(gòu)成小型溫度傳感器網(wǎng)絡(luò),通過并行連接方式連接至單
8、片機(jī)AT89C51的8個通用I/O端口。單片機(jī)獲得溫度信息后,通過特定的算法,將處理后的溫度信息通過LED顯示出來,同時通過串行口送上位機(jī)處理。每個端口只連接一個溫度傳感器件,也即一條一線制總線上僅有一個DS18B20。并在Keil環(huán)境下編輯應(yīng)用軟件程序,通過Proteus和Keil的聯(lián)合實現(xiàn)該多點溫度測量系統(tǒng)的設(shè)計、調(diào)試和仿真。 第二章單片機(jī)簡介單片微型計算機(jī)自20世紀(jì)70年代問世以來,以對人類社會產(chǎn)生了巨大的影響。尤其是美國Intel公司生產(chǎn)的MCS-51系列單片機(jī),由于其具有集成度高、處理功能強(qiáng)、可靠性高、系統(tǒng)結(jié)構(gòu)簡單、價格低廉、易于使用等優(yōu)點,在世界范圍內(nèi)已經(jīng)得到廣泛的普及和應(yīng)用。而且
9、隨著以MCS-51單片機(jī)基本內(nèi)核為核心的各種擴(kuò)展型、增強(qiáng)型的新型單片機(jī)不斷推出,MCS-51系列仍是我國單片機(jī)應(yīng)用領(lǐng)域的主流機(jī)型。目前在工業(yè)控制、智能儀器儀表、辦公室自動化、家用電器等諸多領(lǐng)域,到處都可看見單片機(jī)的蹤影,單片機(jī)技術(shù)開發(fā)和應(yīng)用高水平已成為一個國家工業(yè)化水平的標(biāo)志之一。2.1單片機(jī)的定義單片機(jī)1是在一塊半導(dǎo)體上集成了微處理器(CPU),存儲器(RAM、ROM、EPROM)和各種輸入、輸出接口(定時計數(shù)器,并行IO口,串行口,A/D轉(zhuǎn)換器以及脈寬調(diào)制器PWM等),這樣一塊集成電路芯片具有一臺計算機(jī)的屬性,因此被稱為單片微型計算機(jī),簡稱單片機(jī)。單片機(jī)以其卓越的性能,得到了廣泛的應(yīng)用,單
10、片機(jī)以小巧靈活、成本低、易于產(chǎn)品化、可靠性好、應(yīng)用溫度范圍寬等優(yōu)點。AT89C51是美國ATMEL公司生產(chǎn)的低電壓,高性能 CMOS 8位單片機(jī),片內(nèi)含4K bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128 bytes 的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和 Flash 存儲單元。功能強(qiáng)大AT89C51單片機(jī)可提供高性價比的應(yīng)用場合,可靈活運(yùn)用與各種控制領(lǐng)域。AT89C51方框圖2-1:圖2-1 AT89C51方框圖2.2單片機(jī)的基本結(jié)構(gòu)1. 微處理器(CPU)MCS-51單
11、片機(jī)中有1個8位的CPU,包括運(yùn)算器和控制器兩大部分,不僅可處理字節(jié)數(shù)據(jù),還可以進(jìn)行位變量的處理。例如:位處理、查表、狀態(tài)檢測、中斷處理等。2. 內(nèi)部數(shù)據(jù)存儲器(RAM)單片機(jī)芯片共有256個RAM單元,其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲器就是指前128單元,簡稱內(nèi)部RAM。地址范圍為00HFFH(256B)。片外最多可外擴(kuò)64KB。RAM是一個多用多功能數(shù)據(jù)存儲器,有數(shù)據(jù)存儲、通用工作寄存器、堆棧、位地址等空間。3. 內(nèi)部程序存儲器(ROM)單片機(jī)內(nèi)部有4KB的ROM,用于存放程序、原始數(shù)據(jù)或表格。因此
12、稱之為程序存儲器,簡稱內(nèi)部RAM。地址范圍為0000HFFFFH(64KB)。片外最多可外擴(kuò)64KB。4. 定時器/計數(shù)器單片機(jī)共有2個16位的定時器/計數(shù)器,具有4種工作方式,以實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機(jī)進(jìn)行控制。定時時靠內(nèi)部分頻時鐘頻率計數(shù)實現(xiàn),做計數(shù)器時,對P3.4(T0)或P3.5(T1)端口的低電平脈沖計數(shù)。5. 并行I/O口MCS-51單片機(jī)共有4個8位的I/O口(P0、P1、P2、P3)以實現(xiàn)數(shù)據(jù)的輸入輸出。6. 串行口MCS-51單片機(jī)有一個全雙工的串行口,具有4種工作方式,以實現(xiàn)單片機(jī)和其它設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信
13、收發(fā)器使用,也可作為移位器使用。RXD( P3.0)腳為接收端口,TXD(P3.1)腳為發(fā)送端口。7. 中斷控制系統(tǒng)MCS-51單片機(jī)的中斷功能較強(qiáng),以滿足不同控制應(yīng)用的需要。共有5個中斷源,即外中斷2個,定時中斷2個,串行中斷1個,全部中斷分為高級和低級共二個優(yōu)先級別。8. 時鐘電路MCS-51單片機(jī)芯片的內(nèi)部有時鐘電路,但石英晶體和微調(diào)電容需外接。時鐘電路為單片機(jī)產(chǎn)生時鐘脈沖序列。系統(tǒng)允許的晶振頻率為12MHZ等。9. 特殊功能寄存器(SFR)特殊功能寄存器共有21個,用于CPU對片內(nèi)各功能部件進(jìn)行管理、控制、監(jiān)視。實際上是片內(nèi)各功能部件的控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM
14、區(qū)。2.3單片機(jī)執(zhí)行指令的過程 單片機(jī)執(zhí)行程序的過程,實際上就是執(zhí)行所編制程序的過程。即逐條指令的過程。計算機(jī)每執(zhí)行一條指令都可分為三個階段進(jìn)行。即取指令-分析指令-執(zhí)行指令。取指令的任務(wù)是:根據(jù)程序計數(shù)器PC中的值從程序存儲器讀出現(xiàn)行指令,送到指令寄存器。分析指令階段的任務(wù)是:將指令寄存器中的指令操作碼取出后進(jìn)行譯碼,分析其指令性質(zhì)。如指令要求操作數(shù),則尋找操作數(shù)地址。計算機(jī)執(zhí)行程序的過程實際上就是逐條指令地重復(fù)上述操作過程,直至遇到停機(jī)指令可循環(huán)等待指令。2.4單片機(jī)的特點單片機(jī)應(yīng)用在檢測控制領(lǐng)域中,具有如下特點:1.小巧靈活、成本低、易于產(chǎn)品化。2.可靠性好,適應(yīng)溫度范圍寬。3.易擴(kuò)展,
15、很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),控制功能強(qiáng)。4.可以很方便的實現(xiàn)多機(jī)和分布式控制系統(tǒng)。5.具有優(yōu)異的性能價格比。6.存儲器ROM和RAM是嚴(yán)格分工的。7.采用面向控制的指令系統(tǒng)。8.輸入/輸出(I/O)端口引腳通常設(shè)計有多種功能。9.品種規(guī)格的系列化。10.功率消耗低。所以從工業(yè)自動化、智能儀器儀表、消費(fèi)類電子產(chǎn)品、通信方面、家用電器方面等,直到國防尖端技術(shù)領(lǐng)域,單片機(jī)都發(fā)揮著十分重要的作用。綜觀單片機(jī)幾十年的發(fā)展歷程,單片機(jī)今后將向多功能、高性能、高速度、低電壓、低功耗、低價格、外圍電路內(nèi)裝化以及片內(nèi)存儲器容量增加和Flash存儲器化方向發(fā)展??梢灶A(yù)言,今后的單片機(jī)將是功能更強(qiáng)、集成的和可靠性
16、更高而功耗更低,以及使用更方便。此外,專用化也是單片機(jī)的一個發(fā)展方向,針對單一用途的專用單片機(jī)將會越來越多。第三章 數(shù)字溫度傳感器DS18B20原理3.1概述溫度傳感器的種類眾多,在應(yīng)用與高精度、高可靠性的場合時DALLAS(達(dá)拉斯)公司生產(chǎn)的DS18B20溫度傳感器2當(dāng)仁不讓。超小的體積,超低的硬件開消,抗干擾能力強(qiáng),精度高,附加功能強(qiáng),使得DS18B20更受歡迎。對于我們普通的電子愛好者來說,DS18B20的優(yōu)勢更是我們學(xué)習(xí)單片機(jī)技術(shù)和開發(fā)溫度相關(guān)的小產(chǎn)品的不二選擇。了解其工作原理和應(yīng)用可以拓寬您對單片機(jī)開發(fā)的思路。DS18B20器件具體的封裝形式如圖3-1所示:圖3-1 DS18B20器
17、件具體的封裝形式圖3.2主要特征DS18B20的主要特征:l* 全數(shù)字溫度轉(zhuǎn)換及輸出。l* 先進(jìn)的單總線數(shù)據(jù)通信。l* 最高12位分辨率,精度可達(dá)土0.5攝氏度。l* 12位分辨率時的最大工作周期為750毫秒。l* 可選擇寄生工作方式。l* 檢測溫度范圍為55°C +125°C (67°F +257°F)l* 內(nèi)置EEPROM,限溫報警功能。l* 64位光刻ROM,內(nèi)置產(chǎn)品序列號,方便多機(jī)掛接。* 多樣封裝形式,適應(yīng)不同硬件系統(tǒng)3.3引腳功能GND 電壓地 DQ 單數(shù)據(jù)總線 VDD 電源電壓 NC 空引腳DQ一線制總線(輸入/輸出)3.4工作原理及應(yīng)用D
18、S18B20的溫度檢測與數(shù)字?jǐn)?shù)據(jù)輸出全集成于一個芯片之上,從而抗干擾力更強(qiáng)。其一個工作周期可分為兩個部分,即溫度檢測和數(shù)據(jù)處理。在講解其工作流程之前我們有必要了解18B20的內(nèi)部存儲器資源。18B20共有三種形態(tài)的存儲器資源,它們分別是:ROM 只讀存儲器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗)。數(shù)據(jù)在出產(chǎn)時設(shè)置不由用戶更改。DS18B20共64位ROM。RAM 數(shù)據(jù)暫存器,用于內(nèi)部計算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。第1、2
19、個字節(jié)是溫度轉(zhuǎn)換后的數(shù)據(jù)值信息,第3、4個字節(jié)是用戶EEPROM(常用于溫度報警值儲存)的鏡像。在上電復(fù)位時其值將被刷新。第5個字節(jié)則是用戶第3個EEPROM的鏡像。第6、7、8個字節(jié)為計數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計的,同樣也是內(nèi)部溫度轉(zhuǎn)換、計算的暫存單元。第9個字節(jié)為前8個字節(jié)的CRC碼。EEPROM 非易失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報警值和校驗數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。我們在每一次讀溫度之前都必須進(jìn)行復(fù)雜的且精準(zhǔn)時序的處理,因為DS18B20的硬件簡單結(jié)果就會導(dǎo)致軟件的巨大開消,也是盡力減少有形資
20、產(chǎn)轉(zhuǎn)化為無形資產(chǎn)的投入,是一種較好的節(jié)約之道。3.5單片機(jī)對DS18B20的操作流程31.復(fù)位:首先我們必須對DS18B20芯片進(jìn)行復(fù)位,復(fù)位就是由控制器(單片機(jī))給DS18B20單總線至少480uS的低電平信號。當(dāng)18B20接到此復(fù)位信號后則會在1560uS后回發(fā)一個芯片的存在脈沖。2.存在脈沖:在復(fù)位電平結(jié)束之后,控制器應(yīng)該將數(shù)據(jù)單總線拉高,以便于在1560uS后接收存在脈沖,存在脈沖為一個60240uS的低電平信號。至此,通信雙方已經(jīng)達(dá)成了基本的協(xié)議,接下來將會是控制器與18B20間的數(shù)據(jù)通信。如果復(fù)位低電平的時間不足或是單總線的電路斷路都不會接到存在脈沖,在設(shè)計時要注意意外情況的處理。
21、3.控制器發(fā)送ROM指令:雙方打完了招呼之后最要將進(jìn)行交流了,ROM指令共有條,每一個工作周期只能發(fā)一條,ROM指令分別是讀ROM數(shù)據(jù)、指定匹配芯片、跳躍ROM、芯片搜索、報警芯片搜索。ROM指令為8位長度,功能是對片內(nèi)的64位光刻ROM進(jìn)行操作。其主要目的是為了分辨一條總線上掛接的多個器件并作處理。誠然,單總線上可以同時掛接多個器件,并通過每個器件上所獨有的ID號來區(qū)別,一般只掛接單個18B20芯片時可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發(fā)送ROM指令,而是用特有的一條“跳過指令”)。4.控制器發(fā)送存儲器操作指令:在ROM指令發(fā)送給18B20之后,緊接著(不間斷)就是發(fā)送存儲
22、器操作指令了。操作指令同樣為8位,共6條,存儲器操作指令分別是寫RAM數(shù)據(jù)、讀RAM數(shù)據(jù)、將RAM數(shù)據(jù)復(fù)制到EEPROM、溫度轉(zhuǎn)換、將EEPROM中的報警值復(fù)制到RAM、工作方式切換。存儲器操作指令的功能是命令18B20作什么樣的工作,是芯片控制的關(guān)鍵。5.執(zhí)行或數(shù)據(jù)讀寫:一個存儲器操作指令結(jié)束后則將進(jìn)行指令執(zhí)行或數(shù)據(jù)的讀寫,這個操作要視存儲器操作指令而定。如執(zhí)行溫度轉(zhuǎn)換指令則控制器(單片機(jī))必須等待18B20執(zhí)行其指令,一般轉(zhuǎn)換時間為500uS。如執(zhí)行數(shù)據(jù)讀寫指令則需要嚴(yán)格遵循18B20的讀寫時序來操作。單支DS18B20若要讀出當(dāng)前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個周期為:復(fù)位、跳
23、過ROM指令CCH、執(zhí)行溫度轉(zhuǎn)換存儲器操作指令44H、等待500uS溫度轉(zhuǎn)換時間。緊接著執(zhí)行第二個周期為:復(fù)位、跳過ROM指令CCH、執(zhí)行讀RAM的存儲器操作指令BEH、讀數(shù)據(jù)(最多為9個字節(jié),中途可停止,只讀簡單溫度值則讀前2個字節(jié)即可)。3.6 DS18B20與單片機(jī)的接口DS18B20只需要接到控制器(單片機(jī))的一個I/O口上,由于單總線為開漏所以需要外接一個4.7K的上拉電阻。如要采用寄生工作方式,只要將VDD電源引腳與單總線并聯(lián)即可。但在程序設(shè)計中,寄生工作方式將會對總線的狀態(tài)有一些特殊的要求。3.7 DS18B20芯片ROM指令表4Read ROM(讀ROM)33H (方括號中的為
24、16進(jìn)制的命令字)這個命令允許總線控制器讀到DS18B20的64位ROM。只有當(dāng)總線上只存在一個DS18B20的時候才可以使用此指令,如果掛接不止一個,當(dāng)通信時將會發(fā)生數(shù)據(jù)沖突。Match ROM(指定匹配芯片)55H這個指令后面緊跟著由控制器發(fā)出了64位序列號,當(dāng)總線上有多只DS18B20時,只有與控制發(fā)出的序列號相同的芯片才可以做出反應(yīng),其它芯片將等待下一次復(fù)位。這條指令適應(yīng)單芯片和多芯片掛接。Skip ROM(跳躍ROM指令)CCH這條指令使芯片不對ROM編碼做出反應(yīng),在單芯片的情況之下,為了節(jié)省時間則可以選用此指令。如果在多芯片掛接時使用此指令將會出現(xiàn)數(shù)據(jù)沖突,導(dǎo)致錯誤出現(xiàn)。Searc
25、h ROM(搜索芯片)F0H在芯片初始化后,搜索指令允許總線上掛接多芯片時用排除法識別所有器件的64位ROM。Alarm Search(報警芯片搜索)ECH在多芯片掛接的情況下,報警芯片搜索指令只對符合溫度高于TH或小于TL報警條件的芯片做出反應(yīng)。只要芯片不掉電,報警狀態(tài)將被保持,直到再一次測得溫度什達(dá)不到報警條件為止。3.8 DS18B20芯片存儲器操作指令表5Write Scratchpad (向RAM中寫數(shù)據(jù))4EH這是向RAM中寫入數(shù)據(jù)的指令,隨后寫入的兩個字節(jié)的數(shù)據(jù)將會被存到地址2(報警RAM之TH)和地址3(報警RAM之TL)。寫入過程中可以用復(fù)位信號中止寫入。Read Scrat
26、chpad (從RAM中讀數(shù)據(jù))BEH此指令將從RAM中讀數(shù)據(jù),讀地址從地址0開始,一直可以讀到地址9,完成整個RAM數(shù)據(jù)的讀出。芯片允許在讀過程中用復(fù)位信號中止讀取,即可以不讀后面不需要的字節(jié)以減少讀取時間。Copy Scratchpad (將RAM數(shù)據(jù)復(fù)制到EEPROM中)48H此指令將RAM中的數(shù)據(jù)存入EEPROM中,以使數(shù)據(jù)掉電不丟失。此后由于芯片忙于EEPROM儲存處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“0”,當(dāng)儲存工作完成時,總線將輸出“1”。在寄生工作方式時必須在發(fā)出此指令后立刻超用強(qiáng)上拉并至少保持10MS,來維持芯片工作。Convert T(溫度轉(zhuǎn)換)44H收到此指令后芯片
27、將進(jìn)行一次溫度轉(zhuǎn)換,將轉(zhuǎn)換的溫度值放入RAM的第1、2地址。此后由于芯片忙于溫度轉(zhuǎn)換處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“0”,當(dāng)儲存工作完成時,總線將輸出“1”。在寄生工作方式時必須在發(fā)出此指令后立刻超用強(qiáng)上拉并至少保持500MS,來維持芯片工作。Recall EEPROM(將EEPROM中的報警值復(fù)制到RAM)B8H此指令將EEPROM中的報警值復(fù)制到RAM中的第3、4個字節(jié)里。由于芯片忙于復(fù)制處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“0”,當(dāng)儲存工作完成時,總線將輸出“1”。另外,此指令將在芯片上電復(fù)位時將被自動執(zhí)行。這樣RAM中的兩個報警字節(jié)位將始終為EEPROM中數(shù)據(jù)的鏡像。
28、Read Power Supply(工作方式切換)B4H此指令發(fā)出后發(fā)出讀時間隙,芯片會返回它的電源狀態(tài)字,“0”為寄生電源狀態(tài),“1”為外部電源狀態(tài)。3.9 DS18B20復(fù)位及應(yīng)答關(guān)系及讀寫隙每一次通信之前必須進(jìn)行復(fù)位,復(fù)位的時間、等待時間、回應(yīng)時間應(yīng)嚴(yán)格按時序編程。DS18B20的數(shù)據(jù)讀寫是通過時間隙處理位和命令字來確認(rèn)信息交換的。寫時間隙:寫時間隙分為寫“0”和寫“1”,時序如圖7。在寫數(shù)據(jù)時間隙的前15uS總線需要是被控制器拉置低電平,而后則將是芯片對總線數(shù)據(jù)的采樣時間,采樣時間在1560uS,采樣時間內(nèi)如果控制器將總線拉高則表示寫“1”,如果控制器將總線拉低則表示寫“0”。每一位的
29、發(fā)送都應(yīng)該有一個至少15uS的低電平起始位,隨后的數(shù)據(jù)“0”或“1”應(yīng)該在45uS內(nèi)完成。整個位的發(fā)送時間應(yīng)該保持在60120uS,否則不能保證通信的正常。讀時間隙:讀時間隙時控制時的采樣時間應(yīng)該更加的精確才行,讀時間隙時也是必須先由主機(jī)產(chǎn)生至少1uS的低電平,表示讀時間的起始。隨后在總線被釋放后的15uS中DS18B20會發(fā)送內(nèi)部數(shù)據(jù)位,這時控制如果發(fā)現(xiàn)總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數(shù)據(jù)“0”。每一位的讀取之前都由控制器加一個起始信號。注意:必須在讀間隙開始的15uS內(nèi)讀取數(shù)據(jù)位才可以保證通信的正確。在通信時是以8位“0”或“1”為一個字節(jié),字節(jié)的讀或?qū)懯菑母呶婚_始的
30、,即A7到A0.字節(jié)的讀寫順序也是如圖2自上而下的。第四章 系統(tǒng)硬件設(shè)計4.1系統(tǒng)結(jié)構(gòu)設(shè)計思路當(dāng)一線制總線6上僅有一個DS18B20器件時,可以用skip ROM操作(即跳過ROM匹配)命令來代替64位序列號的匹配過程,這點也是使用單個DS18B20器件的系統(tǒng)常用的方法。所以,要想節(jié)省掉64位序列號匹配的時間開銷,就必需設(shè)計成一個一線制總線上僅有一個DS18B20器件的系統(tǒng)。 DS18B20的一線制總線在時序上的嚴(yán)格要求,也從另一方面意味著在一定的彈性范圍內(nèi),不同DS18B20器件的時序細(xì)節(jié)上的一致性應(yīng)該是非常好,所以可以將系統(tǒng)設(shè)計成利用MCU的并行端口同時
31、對多個DS18B20進(jìn)行統(tǒng)一的操作,不過這時候并行端口上的每一個端口連接著一個DS18B20器件而已。 本文所述的解決方案正是以端口的消耗為代價,換取對多點DS18B20溫度查詢的速度,并在程序結(jié)構(gòu)的設(shè)計上采用一些巧妙的處理方法,使得系統(tǒng)對DS18B20的操作上花更少的時間。此外,采用本設(shè)計實現(xiàn)的快速多點溫度查詢系統(tǒng),可以省掉煩瑣的總線上器件序列號的查詢操作,并可節(jié)省大量的存儲空間(原用于存儲總線上器件的序列號所用的空間)。 從理論上分析,本設(shè)計方案的采用,查詢多個DS18B20器件操作所消耗的時間與查詢一個D
32、S18B20器件操作所消耗的時間是等量的。本系統(tǒng)方案8個DS18B20器件連接在MCU的一組端口的8個I/O口上,連線示意圖4-1所示:圖4-1 系統(tǒng)連線示意圖當(dāng)然,上圖中的示意圖并沒有考慮諸如端口驅(qū)動能力、抗干擾處理等,僅表明一個邏輯的連接示意,具體在產(chǎn)品級的設(shè)計時會根據(jù)產(chǎn)品的應(yīng)用做必要的處理,比如增加一些必要的電路等,此處不作為討論的重點。 從上圖可見,每個端口連接有一個DS18B20器件,也即一條一線制總線上僅有一個DS18B20器件,符合了前面所述的解決方法。實際在對DS18B20器件進(jìn)行操作時,只需統(tǒng)一地對這一組并行端口進(jìn)行操作(每個端口在同一時間輸出相同的電平狀態(tài))即可。 一個端口
33、對應(yīng)一個DS18B20器件,也就表示每組端口的某一個位的讀回數(shù)據(jù)狀態(tài)也就是該端口所對應(yīng)的器件的輸出狀態(tài),所以,這樣的系統(tǒng)里面是不需要進(jìn)行每個器件的序列號搜索、匹配的操作的??芍?,在對DS18B20器件進(jìn)行操作時,可以使用skip ROM命令來跳過ROM序列號匹配的操作,也即在所有的DS18B20器件的ROM操作時可以使用相同的端口輸出時序。4.2系統(tǒng)框圖DS18B20數(shù)碼管顯示AT89C51圖4-2 系統(tǒng)框圖系統(tǒng)框圖15簡介: 系統(tǒng)的核心是AT89C51單片機(jī),系統(tǒng)通過控制選擇某一個DS18B20,并把其檢測到的溫度數(shù)據(jù)送到單片機(jī)進(jìn)行處理,在把處理后的溫度送到數(shù)碼管顯示,并顯示是那個點的溫度,
34、系統(tǒng)也可以多點溫度循環(huán)掃描顯示。4.3系統(tǒng)硬件設(shè)計模塊介紹圖4-3 為單片機(jī)AT89C51仿真模塊圖 4-3 AT89C51仿真模塊圖 圖4-4 為四位數(shù)碼管的仿真模塊圖 4-4 數(shù)碼管仿真模塊圖圖4-5 為數(shù)字溫度傳感器DS18B20的仿真模塊圖 4-5 DS18B20仿真模塊圖在 Keil12,Proteus13環(huán)境下設(shè)計多點測溫系統(tǒng)硬軟件,進(jìn)行驗證,硬件電路圖4-6如下圖4-6 系統(tǒng)硬件電路圖第五章 系統(tǒng)軟件設(shè)計5.1 系統(tǒng)軟件設(shè)計思路7在接下來的軟件介紹中,會以C語言的例子介紹具體的編程思路,但這些代碼并非就是實際中所使用的代碼,僅作為邏輯性的參考,以便大家理解。 軟件設(shè)計從最底層的與
35、DS18B20時序相關(guān)的驅(qū)動,到與一線制總線器件處理過程控制/協(xié)議的接口函數(shù),再上升到應(yīng)用API接口函數(shù)的關(guān)系如下圖5-1所示:圖5-1 接口函數(shù)關(guān)系圖在對連在一組8位端口上的8個DS18B20操作時,是同時對該組端口進(jìn)行操作,也即同時對8個DS18B20器件進(jìn)行同步的操作。 下面詳細(xì)介紹一下以MCS51系列單片機(jī)的應(yīng)用為例的范例程序,其中約定與8個DS18B20器件進(jìn)行連接的是P1端口。底層時序驅(qū)動8程序與DS18B20的一線制總線的協(xié)議保持一致,根據(jù)一線制總線時序的特點,設(shè)計了四個基本的函數(shù):總線寫1時序控制函數(shù):void DS18B20_Write_1(void) P1 = 0
36、x00; /8個DQ 線全部設(shè)置為低電平 Delay_1us(10); /延時10us左右 P1 = 0xff; /8個DQ線全部輸出高電平 Delay_1us(30); /延時30us左右總線寫0時序控制函數(shù):void DS18B20_Write_0(void) P1 = 0x00;
37、60; /8個DQ 線全部設(shè)置為低電平 Delay_1us(40); /延時 P1 = 0xff; /端口恢復(fù)高電平 Delay_1us(1);總線讀取一個數(shù)據(jù)位時序控制函數(shù):unsigned char DS18B20_ReadDQ(void) unsigned char DQ_S=0; P1 = 0x00;
38、60; /8個DQ 線全部設(shè)置為低電平 Delay_1us(10); P1 = 0xff; /端口置1,準(zhǔn)備讀取 Delay_1us(1); /延時待總線準(zhǔn)備好數(shù)據(jù) DQ_S = P1; /一次性讀取8條DQ線的數(shù)據(jù)狀態(tài) P1 = 0xff;
39、160;/恢復(fù)端口電平 Delay_1us(30); /延時 return DQ_S; /返回讀取的值 在讀取一個總線狀態(tài)數(shù)據(jù)位的函數(shù)中,將會返回一個byte的數(shù)據(jù),該數(shù)據(jù)的8個位正好與連接在P2端口上的8個I/O口對應(yīng),如下圖5-2所示: 圖5-2總線復(fù)位時序控制函數(shù):void DS18B20_Reset(void) unsigned char Error_Counter=0; P1 = 0x00;
40、60; /8個DQ 線全部設(shè)置為低電平 Delay_1us(500); /保持總線低電平500us P1 = 0xff; Delay_1us(100); if(P1!=0x00) B20_Error = P1;/如檢測到DS18B20總線響應(yīng)了回復(fù)信號,則讀取當(dāng)前8條/總線的狀態(tài) Delay_1us(50); P1 = 0xff; for(Error_Counter=0;Error_Counter&
41、lt;200;Error_Counter+) if(P1&(B20_Error)=(B20_Error) break; /如檢測到總線的回復(fù)信號結(jié)束,則退出循環(huán) Delay_1us(1); P1 = 0xff; /恢復(fù)端口電平 Delay_1us(200); /延時 200us 在復(fù)位時序控制的函數(shù)中,使用了B20_Error全局變量,它將會傳遞給上一層的數(shù)據(jù)處理函數(shù)作為判斷
42、當(dāng)前8個I/O口所接的DS18B20是否正常工作,或者是否在各自的總線上。分析DS18B20的一線制總線控制命令,可以提煉出兩個最基本的操作函數(shù),一個是寫一個byte數(shù)據(jù)至DS18B20器件,另一為讀取DS18B20器件的數(shù)據(jù)。而在本文的范例程序當(dāng)中,僅僅為了提取DS18B20器件的轉(zhuǎn)換完后的溫度值,所以在讀取DS18B20的數(shù)據(jù)時,僅讀取存放在數(shù)據(jù)地址前兩個字節(jié)的溫度數(shù)據(jù),而不讀取其它字節(jié)的數(shù)據(jù),包括CRC校驗值也沒有進(jìn)行讀取。寫字節(jié)操作函數(shù)9:void DS18B20_WriteByte(unsigned char Com) unsigned char i; for(i
43、=0;i<8;i+) if(Com&0x01) DS18B20_Write_1(); else DS18B20_Write_0(); Com = Com>>1; 調(diào)用DS18B20_WriteByte函數(shù),連在8個I/O口上的一線制總線上的8個DS18B20器件,將都會接收到同樣的一個字節(jié)的數(shù)據(jù):Com。讀數(shù)據(jù)操作函數(shù):unsigned char Read_buf_8ch16; &
44、#160;/buffer of Read DS18B20void DS18B20_Read2Byte(void) unsigned int i; for(i=0;i<16;i+) Read_buf_8chi = DS18B20_ReadDQ(); 在本范例10中,只讀取位到DS18B20內(nèi)部數(shù)據(jù)區(qū)域的前兩節(jié)字的溫度值數(shù)據(jù),所以數(shù)據(jù)讀取函數(shù)設(shè)計成讀取兩個字節(jié)的函數(shù),即需要連續(xù)讀取16個位(對應(yīng)于每一個DS18B20器件來說是連續(xù)的16個位)。而將讀回的數(shù)據(jù)保存于一個Read_buf_8ch(簡寫:Rb)的數(shù)組中,可以根據(jù)系統(tǒng)
45、的接線圖對讀回的16個字節(jié)的數(shù)據(jù)進(jìn)行分析,如下圖5-4所示:圖5-4讀取DS18B20的數(shù)據(jù)時,先讀高位再讀低位;所以可以從上圖看到,以TM2的DS18B20的數(shù)據(jù)為例,TM2的兩個字節(jié)的數(shù)據(jù)由Read_buf_8ch數(shù)組的16個字節(jié)數(shù)據(jù)中的每個字節(jié)的bit2位組成??芍瓿梢淮螖?shù)據(jù)讀取的操作后,可以同時讀回8個DS18B20器件的數(shù)據(jù),在數(shù)據(jù)處理時,只需針對上圖的數(shù)據(jù)結(jié)構(gòu)對Read_buf_8ch數(shù)組的數(shù)據(jù)進(jìn)行處理即可得到每個DS18B20器件的測溫值。 啟動溫度轉(zhuǎn)換控制函數(shù)11:void DS18B20_Conver(void)&
46、#160;DS18B20_Reset(); DS18B20_WriteByte(0xcc); /Skip ROM DS18B20_WriteByte(0x44); /啟動測溫讀取溫度值函數(shù)14:void DS18B20_ReadTemp(void) DS18B20_Reset(); DS18B20_WriteByte(0xcc); /Skip ROM DS18B20_WriteByte(0xbe); /送入讀取數(shù)據(jù)命令 DS
47、18B20_Read2Byte();調(diào)用讀取溫度值函數(shù)后,8個DS18B20器件的測溫數(shù)據(jù)將保存在數(shù)組Read_buf_8ch的16個字節(jié)單元當(dāng)中,還有待進(jìn)行下一步的處理,方可得到對應(yīng)每個DS18B20器件的測溫值。下面介紹簡單的處理代碼片斷:char i,j;unsigned int uiData8;unsigned char Mask;/OS the resoult of Temperaturefor(i=15;i>=0;i-) Mask = 0x01; for(j=0;j<8;j+) uiDataj = uiDataj&l
48、t;<1; if(Read_buf_8chi&Mask) uiDataj+; Mask = Mask<<1; 經(jīng)過上述簡單的處理,8個DS18B20器件的測溫數(shù)據(jù)將保存在數(shù)組uiData當(dāng)中的8個單元里,就可以根據(jù)自身程序設(shè)計的需求來對這些數(shù)據(jù)進(jìn)行具體的處理了。5.2系統(tǒng)軟件設(shè)計/-/函數(shù)聲明,變量定義/DS18B20程序 條件:11.0592晶振 DQ上拉4.7K電阻/-#include <reg51.h>#include <intrins.h>#define u
49、char unsigned char#define uint unsigned int#define NOP_1uS _nop_();_nop_();_nop_();_nop_();_nop_();_nop_()#define DQ P3 /P3口用8個DS18B20/*/-/函數(shù)名稱:Delay10us/入口參數(shù):n/函數(shù)功能:延時子程序/-void Delay10us(uchar n) while(n-) NOP_1uS;NOP_1uS;NOP_1uS; NOP_1uS;NOP_1uS;NOP_1uS; NOP_1uS; */-/函數(shù)名稱:Delay1ms/入口參數(shù):count/函數(shù)功能:
50、延時子程序/-void Delay1ms(uint count) uint i; while(count-) for(i=0;i<125;i+) /-/函數(shù)名稱:Init_18B20/入口參數(shù):無/函數(shù)功能:初始化/-void Init_18B20(void) uint i; DQ=0x00; i=103;while(i>0) i-; /大約900us DQ=0xff; i=4;while(i>0) i-; /while(DQ); while(DQ); i=4;while(i>0) i-;/-/函數(shù)名稱:Write_Byte/入口參數(shù):dat/函數(shù)功能:寫命令/-voi
51、d Write_Byte(uchar dat) uint i; uchar j; bit testb; for(j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if(testb) DQ=0x00; /寫1 i+;i+; DQ=0xff; i=8;while(i>0) i-; else DQ=0x00; /寫0 i=8;while(i>0) i-; DQ=0xff; i+;i+; /-/函數(shù)名稱:Start_convert/入口參數(shù):無/函數(shù)功能:開始轉(zhuǎn)換/-void Start_convert(void) Init_18B
52、20(); Delay1ms(1); Write_Byte(0xcc); Write_Byte(0x44);/-/函數(shù)名稱:Start_Read_Byte/入口參數(shù):無/函數(shù)功能:開始讀取/-void Start_Read_Byte(void) Init_18B20(); Delay1ms(1); Write_Byte(0xcc); Write_Byte(0xbe);/-/函數(shù)名稱:display/入口參數(shù):dir_temp/返回值: 無/函數(shù)功能:送數(shù)碼管顯示子程序/-void display(uchar dir_temp) uchar code led_tab14=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 春季運(yùn)動會加油稿(30篇)
- 羅甸從里水庫導(dǎo)流圍堰施工方案
- 市場調(diào)研策劃書
- 致養(yǎng)老院慰問信模板2024(3篇)
- 生態(tài)框在河道工程中的應(yīng)用
- 90項癥狀清單(SCL-90)即:癥狀自評量表
- 車間職工安全培訓(xùn)試題加下載答案可打印
- 中學(xué)生心理健康教育
- 項目部治理人員安全培訓(xùn)試題及答案(典優(yōu))
- 廠級安全培訓(xùn)試題及答案【歷年真題】
- 音樂考級(基本樂科二級)考試備考題庫(匯總版)
- 酒依賴患者護(hù)理
- 醫(yī)學(xué)生文獻(xiàn)閱讀報告
- phc管樁施工工藝
- 旅行社員工培訓(xùn)指南
- 全息體育教案:采用小猴尋寶故事進(jìn)行綜合課程設(shè)計
- 社會主義現(xiàn)代化建設(shè)的教育科技人才戰(zhàn)略
- 小、初、高數(shù)學(xué)教學(xué)銜接
- 客戶關(guān)系管理案例分析小米公司課件
- 兒童尿潴留的護(hù)理要點與導(dǎo)尿技巧
- 2024年氫溴酸行業(yè)分析報告及未來發(fā)展趨勢
評論
0/150
提交評論