微控制器顯示介面實驗報告範文

來源:瑞文範文網 1.04W

一、實驗目的

微控制器顯示介面實驗報告範文

1.瞭解溫度感測器電路的工作原理

2. 瞭解溫度控制的基本原理

3. 掌握一線匯流排介面的使用

二、實驗說明

這是一個綜合硬體實驗,分兩大功能:溫度的測量和溫度的控制。 AS最新單線數字溫度感測器DS18B20簡介

Dallas 半導體公司的數字化溫度感測器DS1820是世界上第一片支援 “一線匯流排”介面的溫度感測器。現場溫度直接以“一線匯流排”的數字方式傳輸,大大提高了系統的抗干擾性。適合於惡劣環境的現場溫度測量,如:環境控制、裝置或過程控制、測溫類消費電子產品等。與前一代產品不同,新的產品支援3V~5.5V的電壓範圍,使系統設計更靈活、方便。

DS18B20測量溫度範圍為 -55°C~+125°C,在-10~+85°C範圍內,精度為±0.5°C。DS18B20可以程式設定9~12位的解析度,及使用者設定的報警溫度儲存在EEPROM中,掉電後依然儲存。

DS18B20內部結構

DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度感測器、非揮發的溫度報警觸發器TH和TL、配置暫存器。DS18B20的管腳排列如下:

DQ為數字訊號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。

光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品型別標號,接著的48位是該DS18B20自身的序列號,最後8位是前面56位的迴圈冗餘校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。

DS18B20中的溫度感測器可完成對溫度的測量,以12位轉化為例:用16位符號擴充套件的二進位制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號位。

這是12位轉化後得到的12位資料,儲存在18B20的兩個8位元的RAM中,二進位制中的前面5位是符號位,如果測得的溫度大於0,這5位為0,只要將測到的數值乘以0.0625

即可得到實際溫度;如果溫度小於0,這5位為1,測到的數值需要取反加1再乘以0.0625即可得到實際溫度。

例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625℃的數字輸出為

DS18B20溫度感測器的儲存器

DS18B20溫度感測器的內部儲存器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,後者存放高溫度和低溫度觸發器TH、TL和結構暫存器。

暫存儲存器包含了8個連續位元組,前兩個位元組是測得的溫度資訊,第一個位元組的內容是溫度的低八位,第二個位元組是溫度的高八位。第三個和第四個位元組是TH、TL的易失性拷貝,第五個位元組是結構暫存器的易失性拷貝,這三個位元組的內容在每一次上電覆位時被重新整理。第六、七、八個位元組用於內部計算。第九個位元組是冗餘檢驗位元組。

低五位一直都是1 ,TM是測試模式位,用於設定DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設定為0,使用者不要去改動。R1和R0用來設定解析度,如下表所示:(DS18B20出廠時被設定為12位)

根據DS18B20的通訊協議,主機控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功後傳送一條ROM指令,最後傳送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將資料線下拉500微秒,然後釋放,DS18B20收到訊號後等待16~60微秒左右,後發出60~240微秒的存在低脈衝,主CPU收到此訊號表示復位成功。

2.本實驗在讀取溫度的基礎上,完成類似空調恆溫控制的實驗。用加熱電阻代替加熱電機。溫度值通過LED靜態顯示電路以十進位制形式顯示出來,製冷採用自然冷卻。

三、實驗內容及步驟

本實驗需要用到微控制器最小應用系統(F1區)、序列靜態顯示(I3區)和溫度感測器模組(C3區)。

18B20的CONTROL接最小應用系統P1.4,OUT接最小應用系統P2.0,最小系統的P1.0,P1.1接序列靜態顯示的DIN,CLK端。

2.用序列資料通訊線連線計算機與模擬器,然後將模擬器插到模組的鎖緊插座中,請注意模擬器的方向:缺口朝上。

3.開啟Keil uVision2模擬軟體,首先建立本實驗的專案檔案,接著新增TH44_ 源程式,進行編譯,直到編譯無誤。

4.編譯無誤後,全速執行程式。程式正常執行後,按下自鎖開關‘控制’SIC。LED數顯為 “XX”為十進位制溫度測量值, “XX”為十進位制溫度設定值,按下自鎖開關“控制”SIC則加熱源開始加熱,溫度也隨著變化,當加熱到設定的控制溫度時如40度時,停止加熱。

5.也可以把源程式編譯成可執行檔案,用ISP燒錄器燒錄到89S52/89S51晶片中。(ISP燒錄器的使用檢視附錄二) 四、源程式

;微控制器記憶體分配申明!

TEMPER_L EQU 29H ;用於儲存讀出溫度的低8位TEMPER_H EQU 28H ;用於儲存讀出溫度的高8位FLAG1 EQU 38H ;是否檢測到DS18B20標誌位A_BIT EQU 20H ;數碼管個位數存放記憶體位置B_BIT EQU 21H ;數碼管十位數存放記憶體位置LEDBUF EQU 30HTEMPEQU 55HDIN BIT P1.0CLK BIT P1.1

ORG 0000HLJMP STARTORG 0100H START: SETBP1.4 MAIN:

LCALL GET_TEMPER;呼叫讀溫度子程式

;進行溫度顯示,這裡我們考慮用網站提供的兩位數碼管來顯示溫度 ;顯示範圍00到99度,顯示精度為1度

;因為12位轉化時每一位的精度為0.0625度,我們不要求顯示小數所以可以拋棄29H的低4位

;將28H中的低4位移入29H中的高4位,這樣獲得一個新位元組,這個位元組就是實際測量獲得的溫度

;這個轉化溫度的方法可是我想出來的哦~~非常簡潔無需乘於0.0625係數

MOV A,29H

MOV C,40H;將28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,A

LCALL DISPLAYRESULT

LCALL DISPLAYLED;呼叫數碼管顯示子程式LCALL DELAY1 AJMP MAIN

; 這是DS18B20復位初始化子程式 INIT_1820:SETB P2.0NOPCLR P2.0

;主機發出延時537微秒的復位低脈衝MOV R1,#3 TSR1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1

SETB P2.0;然後拉高資料線NOPNOPNOPMOV R0,#25H TSR2:

JNB P2.0,TSR3;等待DS18B20迴應DJNZ R0,TSR2

LJMP TSR4 ; 延時 TSR3:

SETB FLAG1; 置標誌位,表示DS1820存在LJMP TSR5 TSR4:

CLR FLAG1 ; 清標誌位,表示DS1820不存在

熱門標籤