久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 用DS18B20制作數(shù)字溫度計詳解 匯編 有實物圖 [打印本頁]

作者: lianlian    時間: 2015-7-9 23:22
標題: 用DS18B20制作數(shù)字溫度計詳解 匯編 有實物圖
DALLAS最新單線數(shù)字溫度傳感器DS18B20簡介
新的“一線器件”體積更小、適用電壓更寬、更經(jīng)濟 Dallas 半導體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20 DS1822 “一線總線”數(shù)字化溫度傳感器 DS1820一樣,DS18B20 支持“一線總線”接口,測量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°CDS1822的精度較差為± 2°C 。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20 DS1822 的特性 DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5°C。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色! DS1822 DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為±2°C,適用于對性能要求不高,成本控制嚴格的應用,是經(jīng)濟型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20DS1822使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟的測溫系統(tǒng)。
DS18B20的內(nèi)部結(jié)構(gòu)
      DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器THTL、配置寄存器。DS18B20的管腳排列如下:
      DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。
       光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。
      DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/LSB形式表達,其中S為符號位。
      這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。
       例如+125℃的數(shù)字輸出為07D0H+25.0625℃的數(shù)字輸出為0191H-25.0625℃的數(shù)字輸出為FF6FH-55℃的數(shù)字輸出為FC90H
DS18B20溫度傳感器的存儲器
       DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器THTL和結(jié)構(gòu)寄存器。
       暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是THTL的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個字節(jié)的內(nèi)容在每一次上電復位時被刷新。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié)。
該字節(jié)各位的意義如下:
TM R1 R0 1 1 1 1 1
低五位一直都是1 TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1R0用來設(shè)置分辨率,如下表所示:(DS18B20出廠時被設(shè)置為12位)
分辨率設(shè)置表:
R1 R0 分辨率 溫度最大轉(zhuǎn)換時間
0 0 9 93.75ms
0 1 10 187.5ms
1 0 11 375ms
1 1 12 750ms
       根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主CPU收到此信號表示復位成功。
DS1820使用中注意事項
  DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題:
  (1)較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用PL/MC等高級語言進行系統(tǒng)程序設(shè)計時,對DS1820操作部分最好采用匯編語言實現(xiàn)。
  (2)DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認為可以掛任意多個DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。
  (3)連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用DS1820進行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。
  (4)DS1820測溫程序設(shè)計中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設(shè)計時也要給予一定的重視。
測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地。
匯編源程序如下:
ORG 0000H
TEMPER_L EQU 41H ;用于保存讀出溫度的低8      
TEMPER_H EQU 40H ;用于保存讀出溫度的高8
FLAG1 EQU 38H ;是否檢測到DS18B20標志位
A_BIT1 EQU 31H ;數(shù)碼管個位數(shù)存放內(nèi)存位置
B_BIT1 EQU 32H ;數(shù)碼管十位數(shù)存放內(nèi)存位置
D_BIT1 EQU 35H      ;數(shù)碼管百位數(shù)存放內(nèi)存位置
DQ EQU P3.7 ;30H,31H,32H,33H: X 個位 十位 X
MOD7: MOV SP,#60H
LCALL GET_TEMPER ;調(diào)用讀溫度子程序
LCALL TEMPCOV
LCALL DISPLAY ;調(diào)用數(shù)碼管顯示子程序
AJMP MOD7
TEMP0: INC A
AJMP TEMP1
TEMPCOV: MOV A,TEMPER_L ;數(shù)據(jù)處理子程序TEMPCOV
MOV B,#16
DIV AB
JB B.3,TEMP0
TEMP1: MOV 34H,A ;TEMPER_L的高四位右移四位,存入34H中(溫度值)
MOV A,B ;TEMPER_L的低四位X10/16得小數(shù)后一位數(shù).
MOV B,#10
MUL AB
MOV B,#16
DIV AB
MOV 30H,A ;將小數(shù)后一位數(shù).存入30H
MOV A,TEMPER_H ;TEMPER_H中存放高8位數(shù),權(quán)重16
MOV B,#16
MUL AB
ADD A,34H ;34H中存入溫度值的整數(shù)部分
MOV B,#10
DIV AB
MOV 31H,B ;個位存入31H
MOV B,#10 ;
DIV AB ;
MOV 32H,B ;十位存入32H
MOV B,#10 ;
DIV AB ;
MOV 35H,B ;百位存入33H
MOV A,TEMPER_H
MOV 33H,#10H ;
JB ACC.7,EXIT7
MOV 33H,#00H
EXIT7: RET
INIT_1820: ;這是DS18B20復位初始化子程序
SETB DQ
NOP
CLR DQ ;主機發(fā)出延時537微秒的復位低脈沖
MOV R1,#3
TSR1: MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB DQ ;然后拉高數(shù)據(jù)線
NOP
NOP
NOP
MOV R0,#25H
TSR2: JNB DQ,TSR3 ;等待DS18B20回應
DJNZ R0,TSR2
LJMP TSR4 ;延時
TSR3: SETB FLAG1 ;置標志位,表示DS1820存在
LJMP TSR5
TSR4: CLR FLAG1 ;清標志位,表示DS1820不存在
LJMP TSR7
TSR5: MOV R0,#117
TSR6: DJNZ R0,TSR6 ;時序要求延時一段時間
TSR7: SETB DQ
RET
GET_TEMPER: ;讀出轉(zhuǎn)換后的溫度值
SETB DQ
LCALL INIT_1820 ;先復位DS18B20
JB FLAG1,TSS2
RET ;判斷DS1820是否存在?DS18B20不存在則返回
TSS2: MOV A,#0CCH ;跳過ROM匹配
LCALL WRITE_1820
MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令
LCALL WRITE_1820
LCALL DISPLAY ;等待AD轉(zhuǎn)換結(jié)束,12位的話750微秒
LCALL INIT_1820 ;準備讀溫度前先復位
MOV A,#0CCH ;跳過ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ;發(fā)出讀溫度命令
LCALL WRITE_1820
LCALL READ_18200 ;將讀出的溫度數(shù)據(jù)保存到35H/36H
RET

;DS18B20的子程序(有具體的時序要求)
WRITE_1820: MOV R2,#8 ;一共8位數(shù)據(jù)
CLR C
WR1: CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
;DS18B20的程序,DS18B20中讀出兩個字節(jié)的溫度數(shù)據(jù)
READ_18200: MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出
MOV R1,#TEMPER_L ;低位存入TEMPER_L(TEMPER_L),高位存入(TEMPER_H)
RE00: MOV R2,#8 ;數(shù)據(jù)一共有8
RE01: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#9
RE10: DJNZ R3,RE10
MOV C,DQ
MOV R3,#23
RE20: DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
;顯示子程序
DISPLAY: MOV DPTR,#TABLE ;指定查表啟始地址
MOV R0,#4
DPL1: MOV R1,#250 ;顯示1000
DPLOP: MOV A,A_BIT1 ;取個位數(shù)
MOVC A,@A+DPTR ;查個位數(shù)的7段代碼
MOV P0,A ;送出個位的7段代碼
CLR P2.0 ;開個位顯示
ACALL D1MS ;顯示1MS
SETB P2.0
MOV A,B_BIT1 ;取十位數(shù)
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.1 ;開十位顯示
ACALL D1MS ;顯示1MS
SETB P2.1
MOV A,D_BIT1 ;取百位數(shù)
MOVC A,@A+DPTR ;查百位數(shù)的7段代碼
MOV P0,A ;送出百位的7段代碼
CLR P2.2;開百位顯示
ACALL D1MS ;顯示1MS
SETB P2.2
MOV P0,#00H
DJNZ R1,DPLOP ;100次沒完循環(huán)
DJNZ R0,DPL1 ;4100次沒完循環(huán)
RET
;1MS延時(12MHZ)
D1MS: MOV R7,#0FFH
DJNZ R7,$
RET
;7段數(shù)碼管09數(shù)字的共陽顯示代碼
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H
      DB 92H,82H,0F8H,80H,90H
     END
注:晶振12MHZ
本程序已通過實踐驗證!!!













作者: amchina    時間: 2015-7-14 16:17
點個贊,加不了分
作者: 七彩繽紛    時間: 2015-7-14 23:56
匯編的。不容易懂呀
作者: 1qaz2wsx77    時間: 2015-7-21 23:07
點個贊
作者: xuzhiqiang    時間: 2015-7-24 19:08
如果有C語言版本的就更好了。
作者: lydjd    時間: 2015-7-29 09:57
點贊,不錯。
作者: lshhjx    時間: 2015-8-15 11:26
這個匯編語言的,值得學習啊!
作者: skywalker74520    時間: 2015-9-1 15:00
贊  期待C語言版本的 還有多路版本
作者: rayin    時間: 2020-11-15 07:54

這個匯編語言的牛,18B20的資料很詳細值得學習啊!
作者: xiaoyuxinke    時間: 2022-4-3 14:28
無圖無真相,只有個黑圖,點亮的圖呢?
作者: 新鄉(xiāng)家電維修    時間: 2022-4-5 12:31
這匯編咋和我的一樣呢,定義符號也一樣,難道真是巧合?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕第十一页 | www.亚洲一区| 日本啊v在线 | 91影院| 99婷婷| 亚洲视频免费在线观看 | 天天操夜夜操 | 在线视频亚洲 | 一级毛片在线播放 | 一区二区三区在线观看视频 | 91精品国产欧美一区二区 | 视频一区二区中文字幕 | 国产在线一区二区 | 在线播放一区二区三区 | 作爱视频免费看 | 国产精品一区在线观看 | 黑人巨大精品 | 美日韩免费视频 | 中文字幕在线视频免费视频 | 中文字幕一区在线观看视频 | 久久99视频 | 伊人久久麻豆 | 在线观看黄视频 | 日韩精品一区二区三区高清免费 | 男女爱爱网站 | 在线观看亚洲精品视频 | 欧美在线一区二区三区 | 影视先锋av资源噜噜 | 欧美日韩精品在线一区 | 成人午夜视频在线观看 | 国产一区二区 | 久久综合久久自在自线精品自 | 成人小视频在线免费观看 | 国产视频三区 | 国产日韩一区二区三免费 | 91精品91久久久 | 日韩成人免费视频 | 91久久久久久久久 | 欧美一级一区 | 国产精品视频免费观看 | 成人免费视频网站在线看 |