設計背景
能夠獨立工作的溫度檢測和
傳統的溫度檢測以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,
AT89C51單片機作為主控制器件,DS18B20作為測溫傳感器,通過LM016L
DS18B20直接讀取被測溫度值,進行數據轉換,該器件的物理化學性
0℃~100℃最大線性偏差小于0.01℃。該器件可直接向單片機傳
設計方案
總體設計思路方案與系統框圖
DS18B20測量溫度,輸出信號全數字化。采用了單總線的數據傳輸,
DS18B20和AT89C51單片機構成的溫度測量裝置,DS18B20的DQ與AT89C51
P3.7口相連,與它直接輸出溫度的數字信號,采用AT89C51單片機控制,溫度顯示由四位
LED顯示屏完成,LED的D0~D7為8位雙向數據端,與AT89C51的P1口相連,
芯片介紹
引腳定義:
DQ為數字信號輸入輸出端
GND為電源地
VDD為外接供電電源輸入端
0和1字節)
AT89C51 時鐘電路 復位電路 DS18B20數字溫度傳感器 測溫物體 圖1 顯示電路
中的溫度傳感器可完成對溫度的測量,以12位轉化為例:
位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號
12位轉化后得到的12位數據,存儲在18B20的兩個8比特的RAM中,二進制中
5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數值乘于0.0625
0,這5位為1,測到的數值需要取反加1再乘于0.0625
DS18B20 的溫度操作是使用16 位,也就是說分辨率是0.0625。BIT15~BIT11 是符號位,
顯示屏(共陰)介紹
管腳是段選引腳,1,2,3,4是位選引腳(低電平有效),字形碼如下:
3.4.AT89C51芯片
:供電電壓。
:接地。
口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第
1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/
FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出
P0外部必須被拉高。
口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門
P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,
這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接
口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL
P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入
P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程
16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”
P2口輸出其特殊功
P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當
口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低
P3口將輸出電流(ILL)這是由于上拉的緣故。
口也可作為AT89C51的一些特殊功能口,如下表所示:
備選功能
(串行輸入口)
(串行輸出口)
(外部中斷0)
(外部中斷1)
(記時器0外部輸入)
(記時器1外部輸入)
(外部數據存儲器寫選通)
(外部數據存儲器讀選通)
口同時為閃爍編程和編程校驗接收一些控制信號。
:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。
:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在
編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈
1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然
ALE脈沖。如想禁止ALE的輸出
SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。
ALE禁止,置位無效。
:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次
有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。
:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否
注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,
FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
:來自反向振蕩器的輸出。
硬件電路圖
DS18B20的數據線DQ與主控芯片51單片機的P3.7相連接,
將采集到的數據送給單片機,經過單片機出來后,顯示在8位數據線與單片機P1
LED上。位選由P2控制。
程序設計
仿真與調試
AT89C51 復位電路 晶振電路 測溫部分 顯示部分
EQU 29H
EQU 28H
BIT P3.7
0000H
顯示清零(空格)
GET_TEMPER;調用初始化,寫指令,讀指令子程序
十六進制轉換為BCD碼
DISP1;LED顯示溫度子程序
MAIN
初始化DS18B20
DATAIN;拉低DQ發送復位脈沖
R1,#3;延時
R0,#107
拉高DQ
等待應答脈沖
延時
初始化完畢
調用初始化,寫指令,讀指令子程序
調用初始化子程序
寫命令,0CCH送入DS18B20,跳過ROM檢測
WRITE_1820;寫命令,把44H送入DS18B20,在DS18B20內部進行溫度轉
調用初始化子程序
A,#0CCH
寫命令,把0CCH送入DS18B20,跳過ROM檢測
讀命令,把0BEH送入DS18B20,準備讀DS18B20的溫度數據
讀命令,把溫度數據讀入單片機(以十六進制保存)
調用初始化,寫指令,讀指令子程序完畢
調用寫指令子程序開始
|