DS18B20的性能特點:1、采用單總線專用技術,既可通過串行口線,也可通過其它I/O口線與微機接口,無須經過其它變換電路,直接輸出被測溫度值(9位二進制數,含符號位),2、測溫範圍為-55℃-+125℃,測量分辨率為0.0625℃,3、內含64位經過激光修正的只讀存儲器ROM,4、適配各種單片機或系統機,5、用戶可分別設定各路溫度的上、下限,6、內含寄生電源。溫度傳感器DS18B20連接方式:在寄生電源供電方式下,DS18B20從單線信號線上汲取能量,在信號線DQ處於高電平期間把能量儲存在內部電容裏,在信號線處於低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。如圖2.3所示。
2.4 復位電路的設計
本設計采用人工復位,將壹個按扭開關並聯於上電自動復位電路按壹下開關就在RST端出現壹段時間的高電平,即器件復位。
2.5 晶振電路的設計
2.6 DS18B20溫度傳感器與單片機的接口電路
DS18B20可以采用兩種方式供電,壹種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另壹種是寄生電源供電方式,如所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用壹個MOSFET管來完成對總線的上拉。
當DS18B20處於寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由於單線制只有壹根線,因此發送接口必須是三態的。
2.7 溫度測量系統整體硬件電路
Wei1 BIT P3.0 ;;數碼管第1位
Wei2 BIT P3.1 ;;數碼管第2位
Wei3 BIT P3.2 ;;數碼管第3位
Wei4 BIT P3.3 ;;數碼管第4位
Dian EQU 20H ;;小數點狀態狀態保存字節
DisData1 EQU 30H ;;第1位顯示數據
DisData2 EQU 31H ;;第2位顯示數據
DisData3 EQU 32H ;;第3位顯示數據
DisData4 EQU 33H ;;第4位顯示數據
DisTime EQU 34H ;;設置顯示幾次後讀取溫度值
;;溫度數據存儲單元標號定義
TempL EQU 35H ;;溫度高位
TempH EQU 36H ;;溫度低位
;;與DS18B20通迅部分存儲單元及標號定義
DS18B20 BIT P1.0 ;;與DS18B20通迅的位地址
RFail BIT 21H.0 ;;復位失敗標記
Var EQU 22H ;;變量字節,溫度數據處理時用到
Var2 EQU 3FH ;;變量字節
主程序部分:
ORG 00H
LJMP START
ORG 100H
START: ;;-----初始化
MOV SP,#60H ;;初始化堆棧指針
Set18B20:;;-----DS18B20初始化
;;DS18B20復位
ACALL Reset
JB RFail,LOOP ;;復位失敗則直接跳至顯示部分
;;對DS18B20發出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;對DS18B20發出溫度轉換命令
MOV A,#44H
ACALL Write
SetDisT:MOV DisTime,#3 ;;設置下壹個循環體的循環8次
LOOP:
ACALL Display ;;顯示
JB RFail,Set18B20 ;;DS18B20復位失敗時,在顯示完壹次後重新復位
DJNZ DisTime,LOOP
JNB DS18B20,$ ;;判斷DS18B20是否已完成溫度轉換
ACALL GetTemp ;;從DS18B20讀出溫度值
ACALL DealTemp ;;溫度值處理
ACALL SendDisDT ;;根據當前系統狀態設置顯示內容
SJMP SetDisT ;;;;;;;
;;根據當前狀態給顯示模塊設置顯示參數
SendDisDT:
MOV Dian,#7FH ;;最高位為0代表顯示小數點
;;傳送溫度值
MOV A,TempH ;;送高位數據
MOV VAR,TempL ;;送低位數據
ACALL TransData
RET
;;A中保存高位值,Var中保存低位值
TransData:
;;取個位值
MOV B,#10
DIV AB
MOV DisData2,B
;;取十位值
JZ HavNot1 ;;判斷商是否為0
MOV B,#10
DIV AB
MOV DisData3,B
JZ HavNot2 ;;判斷商是否為0
MOV DisData4,A
SJMP XiaoShu ;;跳至百位符號處理部分
HavNot1:MOV DisData3,#10 ;;十位開始沒有數字
HavNot2:MOV DisData4,#10 ;;百位開始沒有數字
SignJudge:;;符號處理部分
JNB VAR.7,XiaoShu ;;當為負數顯示符號
MOV A,#10
CJNE A,DisData3,BWSign
MOV DisData3,#11 ;;負號在十位
SJMP XiaoShu
BWSign:MOV DisData4,#11 ;;負號在百位
XiaoShu:;;小數處理部分,用查表法獲取小數值,精確到小數點後1位
MOV A,VAR
ANL A,#0FH
MOV DPTR,#XSTab
MOVC A,@A+DPTR
MOV DisData1,A
RTransTemp:
RET
XSTab: DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9
DS18B20通迅模塊組
-------復位模塊
Reset: ;;3微秒高電平
SETB DS18B20
MOV R7,#250
CLR RFail ;;清0復位失敗標記
CLR DS18B20
;;延遲501uS
DJNZ R7,$
SETB DS18B20 ;;釋放總線(拉高數據線)
;;等待DS18B20作出復位成功反應,最大等待時間為69uS
MOV R7,#17
Wait:
JNB DS18B20,RReset ;;若DS18B20在作出復位成功反應,不再等待
DJNZ R7,Wait
SETB RFail ;;70uS內DS18B20作出復位成功反應,置1復位失敗標記
RReset:
;;延遲350Us
MOV R7,#174
DJNZ R7,$
SETB DS18B20
RET
/
;;-------向DS18B20寫壹個字的模塊,要寫的內容提前裝入ACC中
Write:
MOV R6,#8 ;寫8位
WriteBit:
;;2微秒高電平
SETB DS18B20
MOV R7,#3
;;7微秒低電平
CLR DS18B20
DJNZ R7,$
;;ACC低位送至DS18B20
RRC A
MOV DS18B20,C
;;延遲60Us
MOV R7,#28
DJNZ R7,$
;;是否已寫完8位
DJNZ R6,WriteBit
RWrite:
SETB DS18B20
RET
; /
;;-------從DS18B20讀回壹個字節的內容,讀回的內容裝入ACC中
Read:
MOV R6,#8 ;;讀回8位
MOV A,#0 ;;讀回的內容裝入ACC中
ReadBit:
;;2微秒高電平
SETB DS18B20
MOV R7,#7
;;2微秒低電平
CLR DS18B20
NOP
;;16微秒高電平
SETB DS18B20
DJNZ R7,$
;;讀回壹位數據放入ACC中
MOV C,DS18B20
RRC A
;;延遲66Us
MOV R7,#33
DJNZ R7,$
;;是否已讀完8位
DJNZ R6,ReadBit
RRead:
SETB DS18B20
RET
/
;;-------與DS18B20通迅,讀回兩字節溫度值,並裝入ACC中TempL和TempH中
GetTemp:
ACALL Reset ;;復位
JB RFail,RGetTemp ;;判斷復位是否成功
;;復位成功
;;對DS18B20發出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;對DS18B20發出讀命令
MOV A,#0BEH
ACALL Write
;;從DS18B20讀回低8位溫度值
ACALL Read
MOV TempL,A
;;從DS18B20讀回高8位溫度值
ACALL Read
MOV TempH,A
ACALL Reset ;;復位
JB RFail,RGetTemp ;;判斷復位是否成功
;;對DS18B20發出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;對DS18B20發出溫度轉換命令
MOV A,#44H
ACALL Write
RGetTemp:
RET
溫度數據處理模塊
DealTemp:
;;將整數的二進制數部分移到壹個字節,符號位和小數部分移到壹個字節
MOV R1,#Var
MOV Var,TempH
MOV A,TempL
XCHD A,@R1 ;;符號位、小數部分至VAR(@R1),整數部分至ACC
SWAP A
;;整數部分處理
JNB Var.7,NotNeg ;;判斷是否為負數
CPL A ;;為負數,取反後加1得其絕對值
;;小數部分取反
XRL Var,#1FH ;;
INC Var
NotNeg:
MOV TempH,A
MOV TempL,Var
RET
顯示模塊
-------顯示DisData(30H)從開始的三個字節保存顯示信息
Display:
MOV DPTR,#Tab
;;**顯示小數部分
MOV A,DisData1
MOVC A,@A+DPTR
MOV P2,A
CLR Wei1
ACALL Delay
SETB Wei1
;;**顯示個位
MOV A,DisData2
MOVC A,@A+DPTR
;;小數點處理
ANL A,Dian
MOV P2,A
CLR Wei2
ACALL Delay
SETB Wei2
;;**顯示十位
MOV A,DisData3
MOVC A,@A+DPTR
MOV P2,A
CLR Wei3
ACALL Delay
SETB Wei3
;;**顯示百位
MOV A,DisData4
MOVC A,@A+DPTR
MOV P2,A
CLR Wei4
ACALL Delay
SETB Wei4
RET
Tab: ;;0~9、空白、負號的編碼
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH
;;延遲
Delay:
MOV R6,#6
DD1:MOV R5,#250
DJNZ R5,$
DJNZ R6,DD1
RET
END
這裏面插不了圖,我有這個的整套課程設計報告,想要找我,mingchaofu@126.com