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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機DS18B20水溫控制系統設計

作者:佚名   來源:本站原創   點擊數:  更新時間:2007年08月25日   【字體:
六.溫度轉換核心及其算法 1.溫度傳感器DS18B20原理與特性本系統采用了DS18B20單總線可編程溫度傳感器,來實現對溫度的采集和轉換,大大簡化了電路的復雜度,以及算法的要求。首先先來介紹一下DS18B20這塊傳感器的特性及其功能: DSl8B20的管腳及特點 DS18B20可編程溫度傳感器有3個管腳。(如圖:1) GND為接地線,DQ為數據輸入輸出接口,通過一個較弱的上拉電阻與單片機相連。VDD為電源接口,既可由數據線提供電源,又可由外部提供電源,范圍3.O~5.5 V。本文使用外部電源供電。主要特點有: 1. 用戶可自設定報警上下限溫度值。 2. 不需要外部組件,能測量-55~+125℃ 范圍內的溫度。 3. -10℃ ~ +85℃ 范圍內的測溫準確度為±0.5℃ 。 4. 通過編程可實現9~l2位的數字讀數方式,可在至多750 ms內將溫度轉換成12 位的數字,測溫分辨率可達0.0625℃ 。 5. 獨特的單總線接口方式,與微處理器連接時僅需要一條線即可實現與微處理器雙向通訊。 DS18B20的內部結構 DS18B20內部功能模塊如圖2所示,主要由4部分組成:64位光刻R0M(圖3)、溫度傳感器、非易失性的溫度報警觸發器TH和TL、配置寄存器。R0M 中的64位序列號是出廠前被光刻好的,他可以看作是該DSISB20的地址序列碼,每個DSI8B20的64位序列號均不相同。高低溫報警觸發器TH 和TL,配置寄存器均由一個字節的E2PROM組成,使用一個存儲器功能命令可對 TH,TL或配置寄存器寫入。配置寄存器中R1,R0決定溫度轉換的精度位數:R1R0=’00’,9位精度,最大轉換時間為93.75 ms;R1R0 = ‘01’,10位精度,最大轉換時間為187.5 ms;R1R0 = ‘10’,11位精度,最大轉換時間為375 ms;R1R0 =’11’,12位精度,最大轉換時間為750 ms;未編程時默認為12位精度。本系統采用的也是12位的精度。 DS18B20的內存結構 DSI8B20溫度傳感器的內部存儲器包括一個高速暫存RAM (便箋式的內部存儲器)和一個非易失性的可電擦除的EEPROM,后者存放高溫和低溫觸發器TH,TL和結構寄存器。便箋存儲器包含了9個連續字節(0~8),前兩個字節是測得的溫度信息(圖4),字節0的內容是溫度的低8位,字節1是溫度的高8位,字節2是TH(溫度上限報警),字節3是TL(溫度下限報警),字節4是配置寄存器(圖5),用于確定輸出分辨率9到12位。第5、6、7個字節是預留寄存器,用于內部計算。字節8是冗余檢驗字節,校驗前面所有8個字節的CRC碼,可用來保證通信正確。 DS18B20的測溫功能當DSI8B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的0,1字節。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后,數據格式以0.062 5℃/LSB形式表示。溫度值格式如圖4所示,其中“S”為標志位,對應的溫度計算:當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變換為原碼,再計算十進制值。圖4下面的表是對應的一部分溫度值。DSI8B20完成溫度轉換后,就把測得的溫度值與 TH做比較,若T>TH或T RoM操作命令 -> 存儲器操作命令-> 處理數據 1 初始化 單總線上的所有處理均從初始化開始 2 ROM操作品令 總線主機檢測到DSl820的存在便可以發出ROM操作命令之一這些命令如 指令 代碼 Read ROM(讀ROM) [33H] Match ROM(匹配ROM) [55H] Skip ROM(跳過ROM] [CCH] Search ROM(搜索ROM) [F0H] Alarm search(告警搜索) [ECH] 3 存儲器操作命令 指令 代碼 Write Scratchpad(寫暫存存儲器) [4EH] Read Scratchpad(讀暫存存儲器) [BEH] Copy Scratchpad(復制暫存存儲器) [48H] Convert Temperature(溫度變換) [44H] Recall EPROM(重新調出) [B8H] Read Power supply(讀電源) [B4H] 溫度傳感器與單片機通訊時序 2.溫度轉換算法及分析由于DS18B20轉換后的代碼并不是實際的溫度值,所以要進行計算轉換。溫度高字節(MS Byte)高5位是用來保存溫度的正負(標志為S的bit11~bit15),高字節(MS Byte)低3位和低字節來保存溫度值(bit0 ~ bit10)。其中低字節(LS Byte)的低4位來保存溫度的小數位(bit0 ~ bit 3)。由于本程序采用的是0.0625的精度,小數部分的值,可以用后四位代表的實際數值乘以0.0625,得到真正的數值,數值可能帶幾個小數位,所以采取小數舍入,保留一位小數即可。也就說,本系統的溫度精確到了0.1度。 算法核心:首先程序判斷溫度是否是零下,如果是,則DS18B20保存的是溫度的補碼值,需要對其低8位(LS Byte)取反加一變成原碼。處理過后把DS18B20的溫度Copy到單片機的RAM中,里面已經是溫度值的Hex碼了,然后轉換Hex碼到BCD碼,分別把小數位,個位,十位,百位的BCD碼存入RAM中。由于百位沒有用,默認情況是置為0A,在顯示屏上沒有任何顯示。溫度算法核心代碼 DATA_DEAL: MOV A,TEMPERATURE_H ;TEMPERATURE_H存放的是DS18B20轉換后的高8位的值(上圖的MS Byte)ANL A,#80H ;判溫度是否零下 JZ TEMPC1 ;A為0,說明是正數,跳往TEMPC1,如果是負數,則對低8為進行補碼處理 CLR C MOV A,TEMPERATURE_L ;為負數,對低8 位(上圖的LS Byte)求補 CPL A ;取反加1 ADD A,#01H MOV TEMPERATURE_L,A ;取補碼后存回TEMPERATURE_L,此時TEMPERATURE_L里面的值就可以表示溫度了 MOV A,TEMPERATURE_H CPL A ADDC A,#00H ;高位TEMPERATURE_H取反,加上從低位TEMPERATURE_L進來的位 MOV TEMPERATURE_H,A ;寫回TEMPERATURE_H MOV TEMPERATURE_HC,#0BH SJMP TEMPC11 TEMPC1: MOV TEMPERATURE_HC,#0AH TEMPC11:MOV A,TEMPERATURE_HC SWAP A MOV TEMPERATURE_HC,A MOV A,TEMPERATURE_L ANL A,#0FH ;取A低4位(小數位,單位是0.0625),得出來的數要乘以0.0625,通過查表來算出值 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR ;查表 MOV TEMPERATURE_LC,A ;TEMPERATURE_LC的低四位保存 小數部分 BCD MOV DIS_BUF_X,A ;小數位的BCD碼送入顯示buffer中 MOV A,TEMPERATURE_L ;整數部分 ANL A,#0F0H ;得到個位單個數值 SWAP A ;SWAP后就得到個位真正的個位 MOV TEMPERATURE_L,A MOV A,TEMPERATURE_H ANL A,#0FH SWAP A ORL A,TEMPERATURE_L MOV TEMPERATURE_ZH,A ;組合后的值存入TEMPERATURE_ZH LCALL HtoB ;轉換HEx值成為BCD碼 MOV TEMPERATURE_L,A ;TEMPERATURE_L目前存入的是十位和個位的BCD編碼 ANL A,#0F0H SWAP A ORL A,TEMPERATURE_HC ;TEMPERATURE_HC 低4位 存放 十位數 BCD MOV TEMPERATURE_HC,A MOV A,TEMPERATURE_L ANL A,#0FH SWAP A ;TEMPERATURE_LC高4位 存放 個位數 BCD ORL A,TEMPERATURE_LC MOV TEMPERATURE_LC,A MOV A,R7 JZ TEMPC12 ANL A,#0FH SWAP A MOV R7,A MOV A,TEMPERATURE_HC ;TEMPERATURE_HC高4位 存放 百位數 BCD ANL A,#0FH ORL A,R7 MOV TEMPERATURE_HC,A TEMPC12:RET ;小數部分碼表 TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H 結果溫度值的BCD碼存放到TEMPERATURE_HC(百位和十位),TEMPERATURE_LC(個位和小數位)中七.硬件設計說明 1.系統總體電路圖 2.各個模塊電路圖輸入系統 1. 鍵盤模塊我們用的下面四個獨立鍵盤中的三個,分別是:K2,K3,K4。 1. 溫度測量模塊 DS18B20通過P3.3口和AT89S52進行通訊。
關閉窗口
主站蜘蛛池模板: 日韩精品影院 | 国产成人精品一区二区在线 | 在线观看av网站永久 | 精品免费看 | 国产一区久久 | 欧美成人精品一区二区男人看 | 国产精品美女久久久久aⅴ国产馆 | 久久久亚洲 | 欧美激情网站 | 欧美性乱 | 国产中文字幕在线观看 | 国产成人高清在线观看 | 欧美精品一区二区三区在线播放 | 亚洲成人一区二区 | 国产亚洲一区精品 | 久久久久国产精品一区二区 | 九九热在线免费观看 | 91精品国产乱码麻豆白嫩 | 亚洲一区二区三区在线观看免费 | 丁香六月激情 | 久久99精品久久久97夜夜嗨 | 久久男人| 欧美成人专区 | 亚洲国产一区二区视频 | 久久久91精品国产一区二区三区 | 污免费网站 | 中文字幕一区在线观看视频 | 成人一区二 | 91久久综合 | 日韩一区二区成人 | 国产欧美在线播放 | 成人久久 | 亚洲综合第一页 | 中文字幕高清免费日韩视频在线 | 91久久婷婷 | 国产精品一区二区三区久久 | 欧美性受xxxx | 日韩精品在线看 | 亚洲综合成人网 | 成人激情视频在线 | 中文欧美日韩 |