freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

溫度測量及顯word版(編輯修改稿)

2025-02-04 08:21 本頁面
 

【文章內(nèi)容簡介】 器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下, DS18B20 的 GND引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是 85℃ 。 圖 13 外部電源工作方式 鹽城工學院本科生畢業(yè)論文 ( 2022) 15 DS18B20 的 具體說明 DS18B20 內(nèi)部具有地址分配如表 5 所示的 9 字節(jié) RAM。其實字節(jié) 0 和字節(jié) 1 存放 DS18B20的溫度測量值;字節(jié) 4存放配置字節(jié),用于設定溫度測量的分辨率等參數(shù);字節(jié) 8 是 DS18B20 自己生成的循環(huán)冗余校驗碼( CRC),在主 CPU 讀取 DS18B20數(shù)據(jù)時,用于校驗讀取數(shù)據(jù)的正確性。 表 5 DS18B20 內(nèi)部 RAM分配 字節(jié) 0( Byte0) 溫度值低字節(jié) TL 字節(jié) 5( Byte5) 保留 字節(jié) 1( Byte1) 溫度值高字節(jié) TH 字節(jié) 6( Byte6) 保留 字節(jié) 2( Byte2) TL 或用戶 Byte1 字節(jié) 7( Byte7) 保留 字節(jié) 3( Byte3) TH 或用戶 Byte2 字節(jié) 8( Byte8) CRC校驗字節(jié) 字節(jié) 4( Byte4) 配置字節(jié) CONFIG 主 CPU經(jīng) DQ向 DS18B20發(fā)送溫度測量(變換)等命令, DS18B20 將測量的溫度值存放在 DS18B20的 RAM 字節(jié) 0和字節(jié) 1中。除溫度變換命 令外,還有幾個命令,見表 6。 表 6 DS18B20的部分命令 指令 代碼(十六進制) 指令 代碼(十六進制) Skip ROM(跳過 ROM) CCh Read Scratchpad(讀 RAM) BEh Convert Temperature(溫度變換 ) 44h Write Scratchpad( 寫RAM) 4Eh ? 命令 CCh,跳過 ROM。該命令跳過 ROM中 64位長的序號,既不關心每一個 DS18B20中唯一的序號,因此該命令只能在“一總線”上僅接有一個 DS18B20 時應用。在僅使用單只的 DS18B20時,使用該命令可以簡化編程。 ? 命令 44h,溫度變換。 DS18B20接收到該命令后將觸發(fā)溫度測量,收到命令數(shù)百毫秒后,溫度才能測量完畢,將測量的值存入 RAM的字節(jié) 0和字節(jié) 1中。 ? 命令 BEh,讀 RAM 存儲器。該命令讀取 DS18B20 內(nèi)部 RAM 中的數(shù)據(jù)。讀取數(shù)據(jù)中的頭兩個字節(jié)就是測量的溫度值。 DS18B20 收到 BEh 命令后,將內(nèi)部 RAM 中的數(shù)據(jù)釋放到“一總線” DQ上。 設定 DS18B20使用默認的 12位轉(zhuǎn)換, DS18B20 內(nèi)部 RAM中溫度值存放在字節(jié) 0(記為 TL)和字節(jié) 1(記為 TH)中, TL和 TH 的格式如下。 TL(Byte0): TH(Byte1): 溫度測量及顯示仿真實現(xiàn) 16 存儲器 TH 中的 bit15~bit11 為符號位,如果溫度為負數(shù),則 bit15~bit11 全為 1,否則全為 0。存儲器 TH中的 bit10~bit0 共 11位存儲溫度值。 TL 的 bit3~bit0存儲溫度的小數(shù)部分, TL 的 LSB(最低位)的“ 1”表示 ℃。將存儲器中的二進制數(shù)求補,再分別將整數(shù)部分和小數(shù)部分轉(zhuǎn)換成十進制數(shù)合并后就得到被測溫度值( 55℃ ~125℃)。 表 7是 DS18B20 中 的測量數(shù)據(jù)與溫度值對應關系的例子。 表 7 輸出與溫度的對應關系舉例 溫度 二進制輸出 十六進制輸出 +125℃ 0000 0111 1101 0000 07D0h +85℃ 0000 0101 0101 0000 0550h +℃ 0000 0001 1001 0001 0191h +℃ 0000 0000 1010 0010 00A2h +℃ 0000 0000 0000 1000 0008h 0℃ 0000 0000 0000 0000 0000h ℃ 1111 1111 1111 1000 FFF8h ℃ 1111 1111 0101 1110 FE5Eh ℃ 1111 1110 0110 1111 FE6Fh 55℃ 1111 1100 1001 0000 FC90h 比如,當 DS18B20 的數(shù)據(jù)為“ 0000 0000 1010 0010”時,即 TH=( 0000 0000) 、TL=( 1010 0010) ,根據(jù) TL和 TH的格式計算溫度值為: 2^6*0+2^5*0+2^4*0+2^3*1+2^2*0+2^1*1+2^0*0+2^(1)*0+2^(2)*0+2^(3)*1+2^(4)*0=℃ 由于 TH中的 S為 0,所以得到的數(shù)為正,即 +℃。 AT89C51 單片機與 DS18B20 的接口 鹽城工學院本科生畢業(yè)論文 ( 2022) 17 圖 14 AT89C51與 DS18B20 連接的電路原理圖 可以使用 AT89C51 的任意一個 I/O口連接 DS18B20。如圖 14所示,將 DS18B20 的數(shù)據(jù)引腳 DQ與單片機的 , DS18B20 使用外接電源, R1為 上拉電阻。只需要占用單片機的一個 I/O口,使用非常方便。每只 DS18B20都可以設置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采取數(shù)據(jù)總線供電方式可以節(jié)省一根導線,但完成溫度測量的時間較長;采用外部供電方式則多用一根導線,但測量速度較快。 注意:單片機與 DS18B20通過一總線進行數(shù)據(jù)交換,無論讀和寫均是從最低位( LSB)開始。數(shù)據(jù)線 DQ 是雙向的,既承擔單片機向 DS18B20傳輸命令,也是 DS18B20向單片機回送溫度等數(shù)據(jù)的通道。因此時序關系很重要,有 3個關鍵時序需要掌握。 ( 1) DS18B20的 初始化 DS18B20的初始化是由單片機控制的,是 DS18B20一切命令的初始條件。 DS18B20的初始化時序如圖 15 所示。主機發(fā)送一個復位脈沖(最短時間為 480us 的低電平信號),接著釋放總線并進入接收狀態(tài)。 DS18B20 會在檢測到上升沿后等待 15~60us,然后發(fā)送一個低電平的存在脈沖( 60~240us)告知主機,主機在 60~240us 的期間接收到低電平,即表示 DS18B20存在,并已知初始化成功。 溫度測量及顯示仿真實現(xiàn) 18 圖 15 DS18B20 初始化時序圖 ( 2) DS18B20的寫時序 如圖 16 所示,整個寫時間隙需要持續(xù)至少 60us,連續(xù)寫 2 位數(shù)據(jù)的間隙最少1us。主機將總線由高電平拉至低電平后就觸發(fā)了一個寫時間隙,主機必須在 15us內(nèi)將所有的位送到總線上。 DS18B20 在 15~60us 間開始對總線進行采樣,如果此時總線上為低電平寫入的位是 0,若為高電平寫入的 位是 1。 ( 3) DS18B20的讀時序 如圖 16 所示主機將總線由高電平拉至低電平并在保持 1us 后釋放總線就產(chǎn)生了一個讀時間隙。讀時間隙產(chǎn)生后 DS18B20會將 1或 0傳至總線,若傳送 0則拉低總線,若傳送 1 則保持總線為高電平。在讀時間隙產(chǎn)生后的 15us 內(nèi)主機采集數(shù)據(jù)時間。 由以上的時序關系可見, DS18B20 的時序關系十分嚴格,很好地掌握其時序關系也是編寫 AT89C51 單片機與 DS18B20接口程序的關鍵。 圖 16 DS18B20 讀 /寫時序圖 AT89C51 單片機讀取 DS18B20 溫度值的編程 DS18B20 使用外部供電方式,在轉(zhuǎn)換進行時 DS18B20 會占用(拉低)總線,完成后會釋放(拉高)總線。因此只要檢測總線的狀態(tài)即可得知轉(zhuǎn)換是否完成。讀鹽城工學院本科生畢業(yè)論文 ( 2022) 19 DS18B20 暫存存儲器 RAM 功能時,在讀取所需的存儲器字節(jié)后即可由主機復位DS18B20 中止,不必將 9 個字節(jié)完全讀出。在此只需讀出存儲器的前兩個字節(jié)(被測溫度值)即可。 因為單片機僅連接一個 DS18B20,所以可以節(jié)省掉讀序列號及匹配等過程,即直接使用命令 [CCh]跳過 ROM。 按照操作 DS18B20 工作的操作順序,先進行 DS18B20 的初始化(復位 DS18B20)。一總線上 DS18B20大的所以操作均從初始化開始。 ( 1) 對 DS18B20 的初始化(復位) 對 DS18B20進行初始化的函數(shù)為 Init18B20()。 先令 。延遲一段時間后令 為低,觸發(fā) DS18B20 的初始化。在按要求保證低電平持續(xù) 480us后釋放總線。然后讀取 ,直到 ,可進行其他的操作。 例如:編寫對 DS18B20 初始化的函數(shù)。 sbit P1_7=P1^7 void Init18B20() { //18B20 初始化 unsigned char i=0。 EA=0。 //關中斷 DQ18B20=1。 //保證處于高的狀態(tài) delay(1)。 //延時 DQ18B20=0。 //單片機將 DQ拉低 delay(49)。 //延時 大于 480us DQ18B20=1。 //拉高總線 i=0。 //延時 while(DQ18B20 ==1) 。 //等待,直到 18B20有響應 EA=1。 //開中斷 } ( 2) 向 DS18B20 的寫命令 單片機向 DS18B20 寫入一個字節(jié)的程序為 Write_18B20(unsigned char dat)。 待寫入的字節(jié)定義為 dat。 單片機向 DS18B20 寫命令字節(jié)從最低位( LSB)開始,逐位寫入。 先令 口為高電平即保證總線處于高電平狀態(tài)。延遲一段時間后,開始進行寫數(shù)據(jù)的操作。令 口為低電平開始向 DS18B20寫入數(shù)據(jù)。 dat 的最低位是否為 1,若為 1則讓 口為高電平即 傳送 1,否則保持低電平狀態(tài)即傳送 dat的字節(jié)右移一位為下次傳送做好準備。重復 8次即可將命令寫入 DS18B20。 例如:編寫向 DS18B20 寫入一個字節(jié)的函數(shù) sbit P1_7=P1^7 溫度測量及顯示仿真實現(xiàn) 20 void write_18B20(unsigned char dat) { char i,j。 EA=0。 //關中斷 P1_7=1。 //保證 DQ處于高電平 Delay10us(1)。 for(i=0。i8。i++) { P1_7=0。 //拉低總線 j=0。 //延時 if(dat%2==1) { //傳送命令 P1_7=1。 } dat=(dat1)。 //準備下一次傳送 delay10us(22)。 //延時 200us以上 P1_7=1。 //保證 DQ處于高電平 Delay10us(1)。 //延時 } EA=1。 //開中斷 } 例如調(diào)用 Write_18B20 函數(shù),向 DS18B20 寫入 ROM 操作命令 Skip ROM[CCh],以跳過讀取序列號及匹配等的 ROM操作。 ( 3) 從 DS18B20 中讀數(shù)據(jù) 單片機從 DS18B20 讀取一個字節(jié)的程序為 unsigned char Read_18B20(void),返回一個字節(jié)數(shù)據(jù)。 DS18B20輸出的數(shù)據(jù)是從最低位( LSB)開始的,逐位輸出。 先定義一個無符號的變量 dat存儲來自 DS18B20的數(shù)據(jù),然后開始讀數(shù)據(jù)。 首先令 口為高電平即保證總線處于高電平狀態(tài)。延遲一段時間后,開始進行讀數(shù)據(jù)的操作。將 dat 清 0 為存儲接收的數(shù)據(jù)做好準備。然后拉低 總線觸發(fā)DS18B20開始發(fā)送數(shù)據(jù)。 。判斷總線的狀態(tài),如果為1 則在 dat 的最高位存入 1,否則不對 dat 做任何操作,當下一次 dat 右移時即存入了 8次就完成了一個字節(jié)的讀操作。 例如:編寫從 DS18B20 讀入一個字節(jié)的函數(shù)。 sbit P1_7=P1^7 unsi
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1