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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10464|回復: 12
打印 上一主題 下一主題
收起左側

用DS18B20制作數字溫度計詳解 匯編 有實物圖

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

;DS18B20的子程序(有具體的時序要求)
WRITE_1820: MOV R2,#8 ;一共8位數據
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中讀出兩個字節的溫度數據
READ_18200: MOV R4,#2 ;將溫度高位和低位從DS18B20中讀出
MOV R1,#TEMPER_L ;低位存入TEMPER_L(TEMPER_L),高位存入(TEMPER_H)
RE00: MOV R2,#8 ;數據一共有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 ;取個位數
MOVC A,@A+DPTR ;查個位數的7段代碼
MOV P0,A ;送出個位的7段代碼
CLR P2.0 ;開個位顯示
ACALL D1MS ;顯示1MS
SETB P2.0
MOV A,B_BIT1 ;取十位數
MOVC A,@A+DPTR ;查十位數的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.1 ;開十位顯示
ACALL D1MS ;顯示1MS
SETB P2.1
MOV A,D_BIT1 ;取百位數
MOVC A,@A+DPTR ;查百位數的7段代碼
MOV P0,A ;送出百位的7段代碼
CLR P2.2;開百位顯示
ACALL D1MS ;顯示1MS
SETB P2.2
MOV P0,#00H
DJNZ R1,DPLOP ;100次沒完循環
DJNZ R0,DPL1 ;4100次沒完循環
RET
;1MS延時(12MHZ)
D1MS: MOV R7,#0FFH
DJNZ R7,$
RET
;7段數碼管09數字的共陽顯示代碼
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H
      DB 92H,82H,0F8H,80H,90H
     END
注:晶振12MHZ
本程序已通過實踐驗證!!!












評分

參與人數 2威望 +2 黑幣 +7 收起 理由
1424603412 + 5 贊一個!
lshhjx + 2 + 2 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:45963 發表于 2015-7-14 16:17 | 只看該作者
點個贊,加不了分
回復

使用道具 舉報

板凳
ID:85702 發表于 2015-7-14 23:56 | 只看該作者
匯編的。不容易懂呀
回復

使用道具 舉報

地板
ID:86421 發表于 2015-7-21 23:07 | 只看該作者
點個贊
回復

使用道具 舉報

5#
ID:85847 發表于 2015-7-24 19:08 | 只看該作者
如果有C語言版本的就更好了。
回復

使用道具 舉報

6#
ID:87141 發表于 2015-7-29 09:57 | 只看該作者
點贊,不錯。
回復

使用道具 舉報

7#
ID:59827 發表于 2015-8-15 11:26 | 只看該作者
這個匯編語言的,值得學習啊!
回復

使用道具 舉報

8#
ID:89071 發表于 2015-9-1 15:00 | 只看該作者
贊  期待C語言版本的 還有多路版本
回復

使用道具 舉報

9#
ID:517951 發表于 2020-11-15 07:54 | 只看該作者

這個匯編語言的牛,18B20的資料很詳細值得學習啊!
回復

使用道具 舉報

10#
ID:61140 發表于 2022-4-3 14:28 | 只看該作者
無圖無真相,只有個黑圖,點亮的圖呢?
回復

使用道具 舉報

11#
ID:72088 發表于 2022-4-5 12:31 | 只看該作者
這匯編咋和我的一樣呢,定義符號也一樣,難道真是巧合?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.色午夜.com | 久久久久久国 | www.av7788.com| 啪一啪| 伊人性伊人情综合网 | 日韩在线小视频 | 性做久久久久久免费观看欧美 | 日日操视频 | 婷婷久久久久 | 午夜精品久久久久久久久久久久 | 国产精品91视频 | 久久久妇女国产精品影视 | 亚洲网站在线 | 日韩免费三级 | 天天操天天拍 | 久久高清免费视频 | 久久国产区 | 91免费在线视频 | 天天射天天干 | 91精品国产乱码久久久久久久久 | 欧美成人高清 | 日日骚网 | 黄色片免费看视频 | 中国一级特黄真人毛片 | 看特级黄色片 | 欧美视频 亚洲视频 | www.中文字幕.com | 久久久久国产视频 | 成人片免费看 | 欧美日韩在线视频一区二区 | 欧美在线播放一区 | 成年人网站免费 | 国产农村妇女精品一二区 | 久久综合一区 | 国产精品久久久久久久午夜片 | 亚洲成人免费观看 | 精品美女久久久久久免费 | 老子午夜影院 | 黄色av网站在线免费观看 | 久久久亚洲成人 | 在线三级网址 |