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

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

  一、實驗目的

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

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

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

  二、實驗說明

  這是一個綜合硬體實驗,分兩大功能:溫度的測量和溫度的控制。 1.DALLAS最新單線數字溫度感測器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區)。

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

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

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

  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不存在

最近訪問