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

正文內(nèi)容

基于ds18b20單線多點(diǎn)溫度測(cè)量系統(tǒng)畢業(yè)論文設(shè)計(jì)(編輯修改稿)

2024-07-19 16:11 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 儲(chǔ)器中的數(shù)據(jù)計(jì)算得到,因此當(dāng)存儲(chǔ)器中的數(shù)據(jù)發(fā)生改變時(shí),CRC的值也隨之改變。CRC能夠在總線控制器讀DS18B20時(shí)進(jìn)行數(shù)據(jù)校驗(yàn)。為校驗(yàn)數(shù)據(jù)是否被正確讀取,總線控制器必須用接受到的數(shù)據(jù)計(jì)算出一個(gè)CRC值,和存儲(chǔ)在DS18B20的64位ROM 中的值(讀ROM時(shí))或DS18B20內(nèi)部計(jì)算出的8位CRC值(讀存儲(chǔ)器時(shí))進(jìn)行比較。如果計(jì)算得到的CRC值和讀取出來的CRC值相吻合,數(shù)據(jù)被無錯(cuò)傳輸。CRC值的比較以及是否進(jìn)行下一步操作完全由總線控制器決定。XORXORXORINPUT(MSB)(LSB)圖19 CRC生成單總線系統(tǒng)只有一條定義的信號(hào)線。每一個(gè)總線上的器件必須是漏極開路或三態(tài)輸出。這樣的系統(tǒng)允許每一個(gè)掛在總線上的區(qū)間都能在適當(dāng)?shù)臅r(shí)間驅(qū)動(dòng)它。DS18B20的單總線端口(DQ引腳)是漏極開路式的,單總線需要一個(gè)約5KΩ的外部上拉電阻;單總線的空閑狀態(tài)是高電平。無論任何理由需要暫停某一執(zhí)行過程時(shí),如果還想恢復(fù)執(zhí)行的畫,總線必須停留在空閑狀態(tài)。在恢復(fù)期間,如果單總線處于非活動(dòng)(高電平)狀態(tài),位與位間的恢復(fù)時(shí)間可以無限長。如果總線停留在低電平超過480us,總線上的所有器件都將被復(fù)位。5UATypRXTX+5V100ΩMOSFETRX圖110 DS18B20電路連接 處理順序經(jīng)過單線總線接口訪問DS18B20的協(xié)議如下:步驟1:初始化步驟2:ROM操作指令步驟3:DS18B20功能指令 初始化通過單總線的所有執(zhí)行操作處理都從一個(gè)初始化序列開始。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和其后由從機(jī)發(fā)出的存在脈沖。存在脈沖讓總線控制器知道DS18B20在總線上且已準(zhǔn)備好操作。 ROM操作指令一旦總線控制器探測(cè)到一個(gè)存在脈沖,它就發(fā)出一條ROM指令。如果總線上掛有多只DS18B20,這些指令將基于器件獨(dú)有的64位ROM片序列碼使得總線控制器選出特定要進(jìn)行操作的器件。這些指令同樣也可以使總線控制器識(shí)別有多少個(gè)什么型號(hào)的器件掛在總線上,同樣,它們也可以識(shí)別哪些器件已經(jīng)符合報(bào)警條件。ROM指令有5條,都是8位長度。總線控制器在發(fā)起一條DS18B20功能指令之前必須先發(fā)出一條ROM指令。表23 ROM操作指令指令名稱指令代碼指令功能讀ROM33H讀DS18B20 ROM中的編碼(即讀64位地址編碼)ROM匹配55H發(fā)出此命令之后,接著發(fā)出64位ROM編碼,訪問單總線上與編碼相對(duì)應(yīng)DS18B20使之作出響應(yīng),為下一步對(duì)該DS18B20的讀寫作準(zhǔn)備搜索ROM0F0H用于確定接在同一總線上DS18B20的個(gè)數(shù)和識(shí)別64位ROM地址,為操作各器件作好準(zhǔn)備跳過ROM0CCH忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令,適用于單片機(jī)工作報(bào)警搜索0ECH該指令執(zhí)行后,只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng) DS18B20功能指令在總線控制器發(fā)給欲連接的DS18B20一條ROM命令后,跟著可以發(fā)送一條DS18B20功能指令。這些命令允許總線控制器讀寫DS18B20的暫存器,發(fā)起溫度轉(zhuǎn)換和識(shí)別電源模式。DS18B20功能指令如下圖所示:表24 DS18B20功能指令指令名稱指令代碼指令功能溫度變換44H啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)間最長為500ms(典型為200ms),結(jié)果存入內(nèi)部9字節(jié)RAM中讀暫存器0BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的第3,4字節(jié)寫上,下限溫度數(shù)據(jù)命令,緊跟著該命令之后是傳送兩字節(jié)的數(shù)據(jù)復(fù)制暫存器48H將RAM的第3,4字節(jié)的內(nèi)容復(fù)制到EEPROM中重調(diào)EEPROM0B8HEEPROM中的內(nèi)容恢復(fù)到RAM中的第3,4字節(jié)讀供電方式0B4H讀DS18B20的供電模式,寄生供電時(shí)DS18B20發(fā)送“0”,外接供電時(shí)DS18B20發(fā)送“1”第三章 系統(tǒng)軟件設(shè)計(jì)整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實(shí)質(zhì)性的功能如測(cè)量、計(jì)算、顯示、報(bào)警等。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。以下是系統(tǒng)軟件結(jié)構(gòu)圖:主程序液晶顯示子程序溫度測(cè)量子程序中斷程序控制鍵盤掃描選擇程序圖31 系統(tǒng)軟件結(jié)構(gòu)圖 DSl8B20溫度測(cè)量 單點(diǎn)測(cè)量溫度如果總線上只有一個(gè)器件, 則不需要識(shí)別器件的編碼, 直接訪問該器件即可。訪問流程圖如下:初始化DS18B20開始發(fā)Skip ROM命令溫度轉(zhuǎn)換延時(shí)500ms等待溫度轉(zhuǎn)換初始化DS18B20發(fā)Skip ROM命令發(fā)讀溫度命令讀DS18B20返回EEPROM中的內(nèi)容,順序從字節(jié)0的LSB位開始讀兩次,即讀出溫度值的高低兩字將二進(jìn)制溫度轉(zhuǎn)換成十進(jìn)制溫度取整數(shù)部分的7位至ACC各位中以實(shí)現(xiàn)溫度轉(zhuǎn)換結(jié)束圖32單點(diǎn)溫度測(cè)量流程圖 多點(diǎn)測(cè)量溫度多點(diǎn)測(cè)量溫度中需每一片DSl8B20在ROM中都存有唯一的序列號(hào), 在出廠前己寫入片內(nèi)ROM中,主機(jī)在進(jìn)入操作程序前必須逐一接入DS18B20用讀ROM(33H)命令將該DS18B20的序列號(hào)讀出并登錄。當(dāng)主機(jī)需要對(duì)眾多在線DS18B20的某一個(gè)進(jìn)行操作時(shí), 首先要發(fā)出匹配ROM命令(55H),緊接著主機(jī)提供64位序列號(hào),之后的操作就是針對(duì)該DS18B20的。而所謂跳過ROM命令即為:之后的操作是對(duì)所有DS18B20的??驁D中先有跳過ROM,即是啟動(dòng)所有DS18B20進(jìn)行溫度變換,之后通過匹配ROM,再逐一地讀回每個(gè)DS18B20的溫度數(shù)據(jù)。在DS18B20組成的測(cè)溫系統(tǒng)中,主機(jī)在發(fā)出跳過ROM命令之后, 再發(fā)出統(tǒng)一的溫度轉(zhuǎn)換啟動(dòng)碼44H, 就可以實(shí)現(xiàn)所有DS18B20的統(tǒng)一轉(zhuǎn)換,再經(jīng)過1秒后,就可以用很少的時(shí)間去逐一讀取。開始結(jié)束初始化DS18B20發(fā)送搜索ROM命令讀在線DS18B20序列號(hào)初始化DS18B20存在一個(gè)DS18B20發(fā)送溫度轉(zhuǎn)換命令發(fā)送匹配ROM命令發(fā)送匹配溫度傳感器序列號(hào)所有傳感器溫度讀取完畢讀取溫度NYNNY圖33 多點(diǎn)溫度測(cè)量流程圖 DS18B20 ROM搜索算法搜索算法采用的是二叉樹型結(jié)構(gòu),搜索過程沿各分節(jié)點(diǎn)進(jìn)行,直到找到器件的ROM碼即葉子為止;后續(xù)的搜索操作沿著節(jié)點(diǎn)上的其它路徑進(jìn)行,按照同樣的方式直到找到總線上的所有器件代碼。搜索算法首先通過復(fù)位(reset)和在線應(yīng)答脈沖(presencepulse)時(shí)隙將1Wire總線上的所有器件復(fù)位;成功地執(zhí)行該操作后,發(fā)送1個(gè)字節(jié)的搜索命令;搜索命令使1Wire器件準(zhǔn)備就緒、開始進(jìn)行搜索操作。搜索命令分為兩類:標(biāo)準(zhǔn)搜索命令(F0 hex)用來搜索連接到網(wǎng)絡(luò)中所有器件;報(bào)警或有條件搜索命令(EC hex)只用來搜索那些處于報(bào)警狀態(tài)下的器件,這種方式縮小了搜索范圍,可以快速查找到所需要注意的器件。當(dāng)單線總線上掛有多個(gè)DS18B20時(shí),系統(tǒng)對(duì)總線上器件的數(shù)量和每個(gè)器件的ROM的識(shí)別與搜索是通過DS18820 ROM搜索命令與算法配合來實(shí)現(xiàn)的。下面具體介紹ROM搜索命令的工作過程。對(duì)64位ROM編碼識(shí)別從最低位開始,ROM編碼的每一位搜索過程可總結(jié)為“兩讀一寫”:讀一位,讀該位補(bǔ)碼;寫一位??偩€主機(jī)在ROM編碼每一位上完成這三步就可以獲得一個(gè)器件的ROM編碼。 (1)讀兩位 總線主機(jī)發(fā)布ROM搜索命令后執(zhí)行一次讀,總線上所有器件就把它們各自ROM編碼的第一位放到總線來作出響應(yīng)。這次讀獲得的數(shù)據(jù)是所有器件放在總線上數(shù)據(jù)的“與”。再執(zhí)行一次讀,因?yàn)镽OM搜索命令正在執(zhí)行所以總線上所有器件把各自ROM編碼的第一位的補(bǔ)碼放在總線上,第二次讀獲得的數(shù)據(jù)也是所有器件放在總線上數(shù)據(jù)的“與”。對(duì)第一位的“兩讀”就此完成。之后主機(jī)再次進(jìn)行的“兩讀”則是針對(duì)ROM編碼的第二位,以此類推。從“兩讀”獲得的數(shù)據(jù)有以下解釋,如下表所列。表31 “兩讀”數(shù)據(jù)解釋“兩讀”數(shù)據(jù)“兩讀”數(shù)據(jù)解釋00有器件的總線上,總線上所有器件再次數(shù)據(jù)位上發(fā)生沖突01有器件的總線上,總線上所有器件再次數(shù)據(jù)位均為010有器件的總線上,總線上所有器件再次數(shù)據(jù)位均為111沒有器件在總線上(2)寫一位 對(duì)ROM編碼的某一位“兩讀”之后,對(duì)該位進(jìn)行“一寫”操作?!耙粚憽辈僮鲗懙臄?shù)據(jù)要根據(jù)“兩讀”獲得的數(shù)據(jù)來確定。如果“兩讀”數(shù)據(jù)為00,則表示總線上器件在該位上數(shù)據(jù)發(fā)生沖突,“一寫”寫的數(shù)據(jù)此種情況下具有“排除”的作用,如果器件ROM編碼在該位上的數(shù)據(jù)與“一寫”寫的數(shù)據(jù)相同,則繼續(xù)保持與總線的聯(lián)系。如果不相同則此器件從總線上“排除”,不再響應(yīng)主機(jī)發(fā)布的命令,直到主機(jī)進(jìn)行下一次復(fù)位。如果“兩讀”數(shù)據(jù)為01,則表示總線上所有器件在該位上均位0,為保持器件與總線的聯(lián)系,“一寫”操作主機(jī)應(yīng)寫0。同理,如“兩讀”數(shù)據(jù)為10,主機(jī)則應(yīng)寫1。執(zhí)行1Wire復(fù)位信號(hào)檢測(cè)到應(yīng)答脈沖LastDevice Flag=1?是否是2否設(shè)id_bit_number值為1設(shè)last_zero值為0發(fā)送搜索命令(F0或ECh設(shè)id_bit_number值為1設(shè)last_zero值為0)22發(fā)送搜索命令(F0或ECh)id_bit=cmp_id_bit=1?2是否id_bit=cmp_id_bit=0?=0?id_bit_number=LastDiscrepancy??id_bit_number=LastDiscrepancy?16
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1