

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、封面作者:PanHongliang僅供個人學(xué)習(xí)摘要隨著社會的進(jìn)步和工業(yè)技術(shù)的發(fā)展,溫度因素在社會生活各個方面已不容 忽視。由于許多產(chǎn)品對溫度范圍要求嚴(yán)格,而目前市場上普遍存在的溫度檢測 儀器大都是單點(diǎn)測量,同時有溫度信息傳遞不及時、精度不夠的缺點(diǎn),不利于工業(yè)控制者根據(jù)溫度變化及時做出決定。在這樣的形式下,開發(fā)一種能夠同時 測量多點(diǎn),并且實(shí)時性高、精度高,能夠綜合處理多點(diǎn)溫度信息的測量系統(tǒng)就 很有必要。在 單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng) 成為一種比較成熟的技術(shù)條件下,我們可以基于 89S51 單片機(jī),利用液晶顯示 器件以及 DS18B20 溫度傳感器等器件,通過溫度傳感
2、器在單片機(jī)下的硬件連 接,軟件編程即可設(shè)計 DS18B20 溫度傳感器系統(tǒng)。該系統(tǒng)可以方便的實(shí)現(xiàn)實(shí)現(xiàn) 溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報警溫度,它使用起來相當(dāng)方 便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)?常生活和工、農(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng) 中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20 與 AT89C51 結(jié)合實(shí)現(xiàn)最簡溫度檢測 系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場溫度測 量,有廣泛的應(yīng)用前景。關(guān)鍵詞: 單片機(jī) AT89C51 DS18B20 溫度傳感器、液晶顯示 LCD1602二、內(nèi)容課程設(shè)計題目基于
3、 DS18B20 的溫度傳感器課題的背景 在人類的生活環(huán)境中, 溫度扮演著極其重要的角色, 都無時無刻不在與溫 度打交道。自 18 世紀(jì)工業(yè)革命以來,工業(yè)發(fā)展與是否掌握溫度有著緊密的聯(lián) 系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎 %80 的工 業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進(jìn)了溫度 傳感器的發(fā)展。1.1傳感器三個發(fā)展階段: 一是模擬集成溫度傳感器。該傳感器是采用硅半導(dǎo)體集成工藝制成,因此 亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一( 僅測量溫度) 、測溫誤差小、價格低、響應(yīng)速度快、傳輸距離遠(yuǎn)、體積小、微功耗等特 點(diǎn),適合遠(yuǎn)距離測溫、
4、控溫,不需要進(jìn)行非線性校準(zhǔn),且外圍電路簡單。它是 目前在國內(nèi)外應(yīng)用最為普遍的一種集成傳感器,典型產(chǎn)品有AD590、 AD592、TMP17 LM135 等。二是模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關(guān)、可編 程溫度控制器,典型產(chǎn)品有 LM56 AD22105 和 MAX6509 某些增強(qiáng)型集成溫度 控制器(例如TC652/653)中還包含了 A/D 轉(zhuǎn)換器以及固化好的程序,這與智能 溫度傳感器有某些相似之處。但它自成系統(tǒng),工作時并不受微處理器的控制, 這是二者的主要區(qū)別。三是智能溫度傳感器。智能溫度傳感器內(nèi)部都包含溫度傳感器、 A/D 轉(zhuǎn)換 器、信號處理器、存儲器 ( 或寄存器
5、) 和接口電路。有的產(chǎn)品還帶多路選擇器、 中央控制器(CPU)、隨機(jī)存取存儲器(RAM)和只讀存儲器(ROM。智能溫度傳感器 的特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎(chǔ)上通過軟件來實(shí)現(xiàn)測試功能的,當(dāng)然,其智能化程度也取決 于軟件的開發(fā)水平。1.2 溫度傳感器的發(fā)展趨勢進(jìn)入 21 世紀(jì)后,溫度傳感器正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠 性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方 向迅速發(fā)展。1.3 傳感器在溫控系統(tǒng)中的應(yīng)用目前市場主要存在單點(diǎn)和多點(diǎn)兩種溫度測量儀表。對于單點(diǎn)溫測儀表,主 要采用傳統(tǒng)的模擬集成溫度傳感器,
6、其中又以熱電阻、熱電偶等傳感器的測量 精度高,測量范圍大,而得到了普遍的應(yīng)用。此種產(chǎn)品測溫范圍大都在-200C800C之間,分辨率 12 位,最小分辨溫度在 0.0010.01 之間。自帶 LED 顯示 模塊,顯示 4 位到 1 6 位不等。有的儀表還具有存儲功能,可存儲幾百到幾千組 數(shù)據(jù)。該類儀表可很好的滿足單個用戶單點(diǎn)測量的需要。多點(diǎn)溫度測量儀表, 相對與單點(diǎn)的測量精度有一定的差距,雖然實(shí)現(xiàn)了多路溫度的測控,但價格昂 貴。針對目前市場的現(xiàn)狀,本設(shè)計提出了一種可滿足要求、可擴(kuò)展的并且性價比高 的單片機(jī)多路測溫系統(tǒng)。2、課程設(shè)計目的通過基于 MCS-51 系列單片機(jī) AT89C51 和 DS1
7、8B20 溫度傳感器檢測溫度,熟悉芯片的使用,溫度傳感器的功能,數(shù)碼顯示管的使用,匯編語言的設(shè) 計;并且把我們這一年所學(xué)的數(shù)字和模擬電子技術(shù)、檢測技術(shù)、單片機(jī)應(yīng) 用等知識,通過理論聯(lián)系實(shí)際,從題目分析、電路設(shè)計調(diào)試、程序編制調(diào) 試到傳感器的選定等這一完整的實(shí)驗(yàn)過程,培養(yǎng)了學(xué)生正確的設(shè)計思想, 使學(xué)生充分發(fā)揮主觀能動性,去獨(dú)立解決實(shí)際問題,以達(dá)到提升學(xué)生的綜 合能力、動手能力、文獻(xiàn)資料查閱能力的作用,為畢業(yè)設(shè)計和以后工作打 下一個良好的基礎(chǔ)。3、 設(shè)計任務(wù)和要求以 MCS-51 系列單片機(jī)為核心器件,組成一個數(shù)字溫度計,采用數(shù)字溫度傳感器DS18B20 為檢測器件,進(jìn)行單點(diǎn)溫度檢測,檢測精度為土
8、0.5 攝氏度。溫度顯示采用 LCD1602 顯示,兩位整數(shù),一位小數(shù)。4、 正文(一)、方案選擇與論證 根據(jù)設(shè)計任務(wù)的總體要求,本系統(tǒng)可以劃分為以下幾個基本模塊,針對各個 模塊的功能要求,分別有以下一些不同的設(shè)計方案:( 1 )、溫度傳感模塊方案一 :采用熱敏電阻,熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測 1 攝氏度的信號是不適用的,也不能滿足測量范圍。在溫度測量系統(tǒng)中,也常采 用單片溫度傳感器,比如 AD59Q LM35 等。但這些芯片輸出的都是模擬信號, 必須經(jīng)過 A/D 轉(zhuǎn)換后才能送給計算機(jī),這樣就使測溫系統(tǒng)的硬件結(jié)構(gòu)較復(fù)雜。另外,這種測溫系統(tǒng)難以實(shí)現(xiàn)多點(diǎn)測溫,也要用到復(fù)雜的算法,一
9、定程度上也 增加了軟件實(shí)現(xiàn)的難度。方案二:采用單總線數(shù)字溫度傳感器 DS18B20 測量溫度,直接輸出數(shù)字信號。 便于單片機(jī)處理及控制,節(jié)省硬件電路。且該芯片的物理化學(xué)性很穩(wěn)定,此元 件線形性能好,在 0100 攝氏度時,最大線形偏差小于 1 攝氏度。DS18B20 的 最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20 和微控制器AT89C51 構(gòu)成的溫度裝置,它直接輸出溫度的數(shù)字信號到微控制器。每只 DS18B20具有一個獨(dú)有的不可修改的 64 位序列號,根據(jù)序列號可訪問不同的器 件。這樣一條總線上可掛接多個DS18B2 0 傳感器,實(shí)現(xiàn)多點(diǎn)溫度測量,輕松的組建傳感網(wǎng)絡(luò)。綜上分
10、析,我們選用第二種方案。溫度傳感模塊仿真圖(2)、顯示模塊方案一: 采用 8 位段數(shù)碼管,將單片機(jī)得到的數(shù)據(jù)通過數(shù)碼管顯示出來。該方 案簡單易行,但所需的元件較多,且不容易進(jìn)行操作,可讀性差,一旦設(shè)定后 很難再加入其他的功能,顯示格式受限制,且大耗電量大,不宜用電池給系統(tǒng) 供電。方案二: 采用液晶顯示器件,液晶顯示平穩(wěn)、省電、美觀,更容易實(shí)現(xiàn)題目要 求,對后續(xù)的園藝通兼容性高, 只需將軟件作修改即可, 可操作性強(qiáng), 也易于 讀數(shù), 采用RT1602兩行十六個字符的顯示,能同時顯示其它的信息如日期、時 間、星期、溫度。綜上分析,我們采用了第二個方案 顯示模塊仿真圖三、系統(tǒng)的具體設(shè)計與實(shí)現(xiàn)(1)、
11、系統(tǒng)的總體設(shè)計方案采用 AT89S52 單片機(jī)作為控制核心對溫度傳感器 DS18B20 控制,讀取溫度信號 并進(jìn)行計算處理,并送到液晶顯示器LCD1602 顯示。按照系統(tǒng)設(shè)計功能的要求,確定系統(tǒng)由 3 個模塊組成:主控制器、測溫電路和顯示電路。數(shù)字溫度計 總體電路結(jié)構(gòu)框圖如圖下所示。( 2)、硬件電路設(shè)計a、單片機(jī)控制模塊該模塊由 AT89C51 單片機(jī)組成在設(shè)計方面,AT89C51 的 EA 接高電平,其外圍 電路提供能使之工作的晶振脈沖、復(fù)位按鍵,四個 I/O 分別接 8 路的單列 IP 座 方便與外圍設(shè)備連接。當(dāng) AT89C51 芯片接到來自溫度傳感器的信號時,其內(nèi)部 程序?qū)⒏鶕?jù)信號的類
12、型進(jìn)行處理,并且將處理的結(jié)果送到顯示模塊,發(fā)送控制 信號控制各模塊。b、溫度傳感器模塊DS18B2C 相目關(guān)資料1、DS18B20 原理與分析DS18B2Q 是美國 DALLAS 半導(dǎo)體公司繼 DS1820 之后最新推出的一種改進(jìn)型智能 溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可根據(jù)實(shí) 際要求通過簡單的編程實(shí)現(xiàn) 912 位的數(shù)字值讀數(shù)方式??梢苑謩e在 93.75 ms 和 750 ms 內(nèi)完成 9 位和 12 位的數(shù)字量,并且從 DS18B20 讀出的信息或?qū)?入 DS18B20 的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù) 據(jù)總線,總線本身也可以向所掛接的
13、DS18B20 供電,而無需額外電源。因而使 用 DS18B20 可使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。他在測溫精度、轉(zhuǎn)換時間、 傳輸距離、分辨率等方面較 DS1820 有了很大的改進(jìn),給用戶帶來了更方便的 使用和更令人滿意的效果。 以下是 DS18B20勺特點(diǎn):(1)獨(dú)特的單線接口方式:DS18B20 與微處理器連接時僅需要一條口線即可 實(shí)現(xiàn)微處理 器與 DS18B20 勺雙向通訊。( 2)在使用中不需要任何外圍元件。(3) 可用數(shù)據(jù)線供電,電壓范圍: +3.0 +5.5 V 。(4) 測溫范圍:-55 - +125C。固有測溫分辨率為 0.5C。(5) 通過編程可實(shí)現(xiàn) 9-12 位的數(shù)字讀數(shù)方
14、式。(6) 用戶可自設(shè)定非易失性的報警上下限值。(7) 支持多點(diǎn)組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn) 測溫。( 8)負(fù)壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工 作。2、DS18B20 勺測溫原理 DS18B20 勺測溫原理上圖所示,圖中低溫度系數(shù)晶振的 振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1 ,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法 計數(shù)器2 的脈沖輸入,圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20 就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進(jìn)行計數(shù),進(jìn)而完成溫度測量。計數(shù)門的 開啟時間由高
15、溫度系數(shù)振蕩器來決定,每次測量前,首先將-55C所對應(yīng)的基數(shù)分別置入減法計數(shù)器 1 和溫度寄存器中,減法計數(shù)器 1 和溫度寄存器被預(yù)置 在-55C所對應(yīng)的一個基數(shù)值。減法計數(shù)器 1 對低溫度系數(shù)晶振產(chǎn)生的脈沖 信號進(jìn)行減法計數(shù),當(dāng)減法計數(shù)器 1 的預(yù)置值減到 0 時溫度寄存器的值將加 1 ,減法計數(shù)器 1 的預(yù)置將重新被裝入, 減法計數(shù)器 1 重新開始對低溫度系數(shù) 晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到減法計數(shù)器 2 計數(shù)到 0 時,停止 溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖中的斜率累 加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預(yù)置 值,只要計數(shù)門
16、仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度 值,這就是 DS18B20 勺測溫原理。另外,由于 DS18B2C單線通信功能是分時完 成的,他有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20 勺各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)一發(fā) ROM 功能命令一發(fā)存儲器操作命令一處理數(shù)據(jù)。DS18B20 工作過程一般遵循以下協(xié)議:初始化一一 ROMft作命令一一存儲器操作命令一一處理數(shù)據(jù)1初始化 單總線上的所有處理均從初始化序列開始。初始化序列包括總線主機(jī)發(fā)出一復(fù) 位脈沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制器知道DS1820在總線上且已準(zhǔn)
17、備好操作。2ROM 操作命令一旦總線主機(jī)檢測到從屬器件的存在,它便可以發(fā)出器件ROM 操作命令之一。所有 ROM 操作命令均為 8 位長。這些命令如下:Read ROM 讀 ROM)33h此命令允許總線主機(jī)讀 DS18B20 的 8 位產(chǎn)品系列編碼,唯一的 48 位序列 號,以及 8 位的 CRC 此命令只能在總線上僅有一個 DS18B20 的情況下可以使 用。如果總線上存在多于一個的從屬器件,那么當(dāng)所有從片企圖同時發(fā)送時將 發(fā)生數(shù)據(jù)沖突的現(xiàn)象(漏極開路會產(chǎn)生線與的結(jié)果)。Match ROM( 符合 ROM)55h此命令后繼以 64 位的 ROh 數(shù)據(jù)序列,允許總線主機(jī)對多點(diǎn)總線上特定的DS1
18、 尋址。只有與 64 位 ROM 序列嚴(yán)格相符的 DS18B20 才能對后繼的存貯器操作命令作 出響應(yīng)。所有與 64 位 ROM 序列不符的從片將等待復(fù)位脈沖。此命令在總線上有 單個或多個器件的情況下均可使用。Skip ROM( 跳過 ROM )CCh在單點(diǎn)總線系統(tǒng)中,此命令通過允許總線主機(jī)不提供64 位 ROMS碼而訪問存儲器操作來節(jié)省時間。如果在總線上存在多于一個的從屬器件而且在 Skip ROM命令之后發(fā)出讀命令, 那么由于多個從片同時發(fā)送數(shù)據(jù), 會在總線 上發(fā)生數(shù)據(jù)沖突 (漏極開路下拉會產(chǎn)生線與的效果)。Search ROM( 搜索 ROM)F0h當(dāng)系統(tǒng)開始工作時,總線主機(jī)可能不知道單
19、線總線上的器件個數(shù)或者不知道其 64 位ROMS碼。搜索 ROM 命令允許總線控制器用排除法識別總線上的所有從機(jī)的64位編碼。Alarm Search( 告警搜索 )ECh此命令的流程與搜索 ROM 命令相同。但是,僅在最近一次溫度測量出現(xiàn)告警的情況下,DS18B20 才對此命令作出響應(yīng)。告警的條件定義為溫度高于TH 或低于 TL。只要 DS18B20-上電,告警條件就保持在設(shè)置狀態(tài),直到另一次溫度測 量顯示出非告警值或者改變 TH 或 TL 的設(shè)置,使得測量值再一次位于允許的范 圍之內(nèi)。貯存在 EEPROI 內(nèi)的觸發(fā)器值用于告警。3存儲器操作命令Write Scratchpad (寫暫存存儲
20、器) 4Eh這個命令向 DS18B20 的暫存器中寫入數(shù)據(jù),開始位置在地址 2。接下來寫入 的兩個字節(jié)將被存到暫存器中的地址位置 2 和 3??梢栽谌魏螘r刻發(fā)出復(fù)位命 令來中止寫入。Read Scratchpad (讀暫存存儲器) BEh這個命令讀取暫存器的內(nèi)容。讀取將從字節(jié) 0 開始,一直進(jìn)行下去,直到第 9 (字節(jié) 8,CRC 字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間 發(fā)出復(fù)位命令來中止讀取。Copy Scratchpad (復(fù)制暫存存儲器) 48h這條命令把暫存器的內(nèi)容拷貝到 DS18B20 的 E2 存儲器里,即把溫度報警觸 發(fā)字節(jié)存入非易失性存儲器里。如果總線控制器在這條
21、命令之后跟著發(fā)出讀時 間隙,而DS18B20 又正在忙于把暫存器拷貝到 E2 存儲器,DS18B20 就會輸出一 個“ 0 ”,如果拷貝結(jié)束的話,DS18B20 則輸出“ 1 ”。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動強(qiáng)上拉并最少保持 10msCon vert T (溫度變換)44h這條命令啟動一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后 DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙, 而 DS18B20 又忙于做時間轉(zhuǎn)換的話, DS18B20 將在總線上輸出“ 0”, 若溫度轉(zhuǎn) 換完成, 則輸出“ 1”。如果使用寄生電源, 總線控制器必須
22、在發(fā)出這條命令后 立即起動強(qiáng)上拉, 并保持 500msRecall E2 (重新調(diào)整 E2) B8h這條命令把貯存在 E2 中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯ζ?。這種重新調(diào) 出的操作在對 DS18B20 上電時也自動發(fā)生,因此只要器件一上電,暫存存儲器 內(nèi)就有了有效的數(shù)據(jù)。在這條命令發(fā)出之后,對于所發(fā)出的第一個讀數(shù)據(jù)時間 片,器件會輸出溫度轉(zhuǎn)換忙的標(biāo)識:“ 0” =忙,“1”=準(zhǔn)備就緒。Read Power Supply (讀電源)B4h對于在此命令發(fā)送至 DS18B20 之后所發(fā)出的第一讀數(shù)據(jù)的時間片,器件都會 給出其電源方式的信號:“ 0” =寄生電源供電,“ 1” =外部電源供電。4處理數(shù)
23、據(jù)DS18B20 的高速暫存存儲器由 9 個字節(jié)組成,其分配如圖 3 所示。當(dāng)溫度轉(zhuǎn)換 命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的 第 0 和第 1 個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高 位在后。DS18B2C 溫度數(shù)據(jù)表上表是 DS18B20 溫度采集轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲在 DS18B20 的兩個 8 比 特的 RAM 中,二進(jìn)制中的前面 5 位是符號位,如果測得的溫度大于或等于0,這 5 位為 0,只要將測到的數(shù)值乘于 0.0625 即可得到實(shí)際溫度;如果溫度小于 0,這 5位為 1,測到的數(shù)值需要取反加 1 再乘于 0.0625
24、 即可得到實(shí)際溫度。溫度轉(zhuǎn)換計算方法舉例:例如當(dāng) DS18B20 采集到+125C的實(shí)際溫度后,輸出為 07D0H 貝U:實(shí)際溫度=07D0HK0.0625=2000X0.0625=1250C。例如當(dāng) DS18B20 采集到-55C的實(shí)際溫 度后,輸出為 FC90H 則應(yīng)先將 11 位數(shù)據(jù)位取反加 1 得 370H (符號位不變,也 不作為計算),貝U:實(shí)際溫度=370HX0.0625=880X0.0625=550C。2、顯示模塊 LCD1602 資料(這里主要介紹下指令說明及時序)1602 液晶模塊內(nèi)部的控制器共有 11 條控制指令,如表 10-14 所示:序號指令RSR/W D7D6D5D
25、4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/C R/L *6置功能00001DLNF*7置字符發(fā)生存貯器地 址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到 CGRAM 或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM 讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表 10-14 :控制命令表1602 液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的(說明:1 為高電平、0 為低電平)指令 1:
26、清顯示,指令碼 01H,光標(biāo)復(fù)位到地址 00H 位置。指令 2 :光標(biāo)復(fù)位,光標(biāo)返回到地址 00H。指令 3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令 4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低 電平表示關(guān)顯示 C :控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光 標(biāo) B :控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令 5 :光標(biāo)或顯示移位 S/C :高電平時移動顯示的文字,低電平時移動光 標(biāo)。指令 6:功能設(shè)置命令 DL :高電平時為 4 位總線,低電平時為 8 位總
27、線 N:低 電平時為單行顯示,高電平時雙行顯示 F:低電平時顯示 5x7 的點(diǎn)陣字符,高電 平時顯示 5x10的點(diǎn)陣字符。指令 7 :字符發(fā)生器 RAM 地址設(shè)置。指令 8: DDRAM 地址設(shè)置 指令 9 :讀忙信號和光標(biāo)地址 BF :為忙標(biāo)志位,高電平表示忙,此時模塊不能 接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令 10 :寫數(shù)據(jù)。指令 11 :讀數(shù)據(jù)。與 HD44780 相兼容的芯片時序表如下:讀狀態(tài)輸入RS=L, R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入R
28、S=H,R/W=L,D0D7=數(shù)據(jù),E= 高脈沖輸出無表 10-15 :基本操作時序表讀寫操作時序如圖 10-55 和 10-56 所示:圖 10-55 讀操作時序圖 10-56 寫操作時序四、軟件設(shè)計系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換子程序、計算溫度子 程序、顯示等等。1、主程序主要功能是完成 DS18B20 的初始化工作, 并進(jìn)行讀溫度, 將溫度轉(zhuǎn)化成為壓 縮 BCD碼 并在顯示器上顯示傳感器所測得的實(shí)際溫度。2、讀出溫度子程序讀出溫度子程序的主要功能是讀出 RAM 中的 9 字節(jié),在讀出時需要進(jìn)行 CRC 校驗(yàn),校驗(yàn)有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如下圖所示。3、溫
29、度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12 位分辯率時轉(zhuǎn)換時間約為 750ms 在本程序設(shè)計中采用 1s 顯示程序延時法等待轉(zhuǎn)換的完成。流 程圖圖如下4、計算溫度子程序計算溫度子程序?qū)?RAM 中讀取值進(jìn)行 BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定。流程圖如下:五、完整程序如下:#include #include typedef unsigned char uint8。#define uint unsigned int#define uchar unsigned charsbit DQ = P3A3o/ 定義 DQ 引腳為 P3.3uchar code Bw10
30、= 0 x30,0 x31,0 x32,0 x33,0 x34,0 x35,0 x36,0 x37,0 x38,0 x39 。/ 百位編碼uchar codeXsw16=0 x30,0 x31,0 x31,0 x32,0 x33,0 x33,0 x34,0 x34,0 x35,0 x36,0 x36,0 x37,0 x38,0 x38,0 x39,0 x39o/小數(shù)位編碼sbit RS = P2A0osbit RW = P2A1osbit EN = P2A2osbit BUSY = P0A7ouchar wenduouchar temp_g,temp_dounsigned char code
31、word1=Temperature:ovoid delay(uint xms)uint i,jofor(i=xmsoi0o-i)for(j=110oj0o-j)ovoid Delayus(int t) /在 11.059MHz 的晶振條件下調(diào)用本函數(shù)需要 24 卩 s,然后 每次計數(shù)需 16 卩 sint sofor (s=0ostos+)o等待繁忙標(biāo)志void wait(void)P0 = 0 xFFodoRS = 0oRW = 1oEN = 0oEN = 1owhile (BUSY = 1)oEN = 0寫數(shù)據(jù)void w_dat(uint8 dat)wait()。EN = 0。P0 =
32、dat。RS = 1。RW = 0。EN = 1。EN = 0。寫命令void w_cmd(uint8 cmd)wait()。EN = 0。P0 = cmd。RS = 0。RW = 0。EN = 1。EN = 0。發(fā)送字符串到 LCDvoid w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start)。while (*p != 0)w_dat(*p+) 。初始化 1602void Init_LCD1602(void)w_cmd(0 x38)。 / 16*2 顯示, 5*7 點(diǎn)陣, 8 位數(shù)據(jù)接口 w_cmd(0 x0c)。 / 顯示器開、光標(biāo)開、
33、光標(biāo)允許閃爍 w_cmd(0 x06)。 / 文字不動,光標(biāo)自動右移w_cmd(0 x01)。 / 清屏uchar Reset()/完成單總線的復(fù)位操作。uchar d。DQ = 0。/ 將 DQ 線拉低Delayus(29)。/保持 480 卩 s .復(fù)位時間為 480 卩 s,因此延時時間為(480-24)/16 = 28.5,取 29 卩 s。DQ = 1。/ DQ 返回高電平Delayus(3)。/等待存在脈沖.經(jīng)過 70 卩 s 之后檢測存在脈沖,因此延時時間為(70-24)/16 = 2.875,取 3 卩 s。d = DQ。/ 獲得存在信號Delayus(25)。/ 等待時間隙結(jié)
34、束return(d)。/ 返回存在信號, 0 = 器件存在 , 1 = 無器件void write_bit(uchar bitval)/ 向單總線寫入 1 位值: bitvalDQ = 0。 / 將 DQ 拉低開始寫時間隙if(bitval=1)DQ =1。/ 如果寫 1, DQ 返回高電平Delayus(5)。 / 在時間隙內(nèi)保持電平值,DQ = 1。 / Delayus 函數(shù)每次循環(huán)延時 16 卩 s , 因此Delayus(5)=5*16+24=104 卩 svoid ds18write_byte(char val) 向單總線寫入一個字節(jié)值:valuchar i。uchar temp。f
35、or (i=0。 ii。temp &= 0 x01 。write_bit(temp)。Delayus(5)。uchar read_bit()/從單總線上讀取一位信號,所需延時時間為15 卩 s,因此無法調(diào)用前面定義/的 Delayus()函數(shù),而米用一個 for()循環(huán)來實(shí)現(xiàn)延時。uchar i。DQ = 0。/將 DQ 拉低開始讀時間隙DQ = 1。/ 然后返回高電平for (i=0。 i3。 i+)。/延時 15 卩 sreturn(DQ)。/ 返回 DQ 線上的電平值uchar ds18read_byte()從單總線讀取一個字節(jié)的值uchar i。uchar value = 0。for
36、(i=0oi8。i+)if(read_bit()value|=0 x01i。Delayus(6)。return(value)。int Readtemperature()如果單總線節(jié)點(diǎn)上只有一個器件則可以直接掉用本函 數(shù)。如果節(jié)點(diǎn)上有多個器/ 件,為了避免數(shù)據(jù)沖突,應(yīng)使用 MatchROM 函數(shù)來選中特定器件。uchar temp_d,temp_g,k,get2,temp。Reset()。ds18write_byte(0 xcc)。 ds18write_byte(0 x44)。Delayus(5)。Reset()。 ds18write_byte(0 xcc)。ds18write_byte(0 x
37、be)。 for (k=0。 k4)|(temp_g&0 x0f)4)|(temp_g&0 x0f)4) 。w_cmd(0 xc1)。 w_dat(Bwtemp/100)。return temp。main()Init_LCD1602() 。w_string(0 x80,word1) 。while (1)wendu=Readtemperature(。) temp_g=wendu%100/10+0。 /這里要特別注意啊少了 %10 0 就差很多 temp_d=wendu%10+0。w_cmd(0 xc2)。delay(2)。w_dat(temp_g)。delay(2)。w_dat(temp_d)。
38、delay(2)。w_cmd(0 xc4)。delay(2)。w_dat(0 x2e)。 /小數(shù)點(diǎn)delay(2)。w_cmd(0 xc6)。delay(2)。 w_dat(0 xdf)。 /溫度符號delay(2)。 w_dat(0 x43)。六、設(shè)計體會通過這次基于 DS18B20 傳感器測量溫度的設(shè)計,我學(xué)到了不少新的知識。首 先,這次設(shè)計讓我把書本上學(xué)到的理論知識轉(zhuǎn)化成為現(xiàn)實(shí)生活中有價值的實(shí) 物。如果沒有這次設(shè)計為我 搭建的平臺,我就不能對書本上的知識進(jìn)行很好的 理解,也不能熟練的把它們應(yīng)用到現(xiàn)實(shí)生活中。還有,我們學(xué)會不能手高眼 低,要踏踏實(shí)實(shí),從基礎(chǔ)學(xué)起、做起。但是,具體到設(shè)計時,我
39、遇到了很多麻 煩,比如如何將傳感器得到的溫度轉(zhuǎn)換成為對應(yīng)的電信號,如何將電信號輸送 到單片機(jī)進(jìn)行控制,如何把測得的溫度用數(shù)字顯示出來等等。這就要求我們學(xué) 習(xí)要一步一個腳印,掌握扎實(shí)的理論基礎(chǔ)了。最重要的一點(diǎn)是,我在這次設(shè)計 中培養(yǎng)了自己的學(xué)習(xí)能力。由于好多知識超出了我們的課本范圍,這就要求我 們自己通過資料來增加我們的知識,解決遇到的一些問題。在短時間內(nèi)從書本 資料中篩選出我們所需要的知識,對我們的自主學(xué)習(xí)能力有很大的幫助。就拿 DS18B20 來說,我們書本上沒有介紹到這種溫度傳感器,所以我們就通過學(xué)習(xí)DS18B20 的說明書,了解它工作的原理以及特性,清楚在實(shí)際應(yīng)用時要注意的 事項(xiàng),對 DS18B20 進(jìn)行初始化、編程的要求和規(guī)定等。培養(yǎng)了自主學(xué)習(xí)的能 力,無論以后我要做什么樣的設(shè)計,我都能夠通過查閱資料來實(shí)現(xiàn)。最后,本 次設(shè)計能夠順利完成。七、參考文獻(xiàn)【1】 梁森,歐陽三泰,王侃夫.自動檢測技術(shù)及應(yīng)用【M .北京:機(jī)械工業(yè) 出版社.【2】 萬隆.單片機(jī)原理及應(yīng)用技術(shù)教程 清華大學(xué)出版社
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車知識報告范文
- 二零二五年度碎石場安全生產(chǎn)監(jiān)管服務(wù)合同
- 二零二五年度屋頂光伏電站委托租賃管理合同
- 宜昌水電工程安全風(fēng)險評估與應(yīng)急預(yù)案編制合同(2025年度)
- 二零二五年度遺產(chǎn)繼承遺產(chǎn)分割協(xié)議
- 二零二五年度智能化沙石運(yùn)輸管理服務(wù)協(xié)議
- 2025年度離婚后子女學(xué)業(yè)支持協(xié)議
- 二零二五年度家教兼職合同與家長溝通規(guī)范
- 二零二五年度高校畢業(yè)生就業(yè)實(shí)習(xí)補(bǔ)貼結(jié)算跟蹤三方協(xié)議書
- 二零二五年度高端定制服裝品牌區(qū)域代理合作協(xié)議
- 高壓電動機(jī)試驗(yàn)報告模板
- 醫(yī)學(xué)課件-主動脈夾層ppt
- 施工總平面圖布置圖及說明
- 氫氧化鈣化學(xué)品安全技術(shù)說明書
- 大眾Polo 2014款說明書
- 船舶加油作業(yè)安全操作規(guī)程
- 員工排班表(標(biāo)準(zhǔn)模版)
- 大學(xué)英語精讀1-6冊課文
- TFCC損傷的診斷及治療
- 《西藏度亡經(jīng)》及中陰解脫竅決(收藏)
- RFJ05-2009-DQ人民防空工程電氣大樣圖集
評論
0/150
提交評論