單片機顯示接口實驗報告範文

一、實驗目的

單片機顯示接口實驗報告範文

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