版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1-Wire 總線協(xié)議應(yīng)用作為一種單主機(jī)多從機(jī)的總線系統(tǒng), 在一條 1-Wire 總線 上可掛接的從器件數(shù)量幾乎不受限制。為了不引起邏輯上的 沖突,所有從器件的 1-Wire 總線接口都是漏極開(kāi)路的, 因此 在使用時(shí)必須對(duì)總線外加上拉電阻 (一般取 5k 左右)。 主機(jī)對(duì) 1-Wire 總線的基本操作分為復(fù)位、 讀和寫三種, 其中 所有的讀寫操作均為低位在前高位在后。復(fù)位、讀和寫是 1-Wire 總線通信的基礎(chǔ), 下面通過(guò)具體程序詳細(xì)介紹這 3 種 操作的時(shí)序要求。(程序中 DQ 代表 1-Wire 總線,定義為 P1.0 , uchar 定義為 unsigned char ) 1 1-Wir
2、e 總線的復(fù)位 復(fù)位是 1-Wire 總線通信中最為重要的一種操作, 在每次總線 通信之前主機(jī)必須首先發(fā)送復(fù)位信號(hào)。如程序 1.1 所示,產(chǎn) 生復(fù)位信號(hào)時(shí)主機(jī)首先將總線拉低480960s然后釋放,由于上拉電阻的存在,此時(shí)總線變?yōu)楦唠娖健?1-Wire 總線器件在接收到有效跳變的 1560s 內(nèi)會(huì)將總線 拉低 60240s ,在此期間主機(jī)可以通過(guò)對(duì) DQ 采樣 來(lái)判斷是否有從器件掛接在當(dāng)前總線上。函數(shù) Reset ()的 返回值為 0 表示有器件掛接在總線上, 返回值為 1 表示沒(méi)有 器件掛接在總線上。程序 1.1 總線復(fù)位uchar Reset(void)uchar tdq;DQ=0; / 主
3、機(jī)拉低總線 delay480s(); / 等待 480sDQ=1; / 主機(jī)釋放總線 delay60s(); / 等待 60s tdq=DQ; / 主機(jī)對(duì)總線采樣 delay480s(); / 等待復(fù)位結(jié)束 return tdq; / 返回采樣值 2 1-Wire 總線的寫操作由于只有一條 I/O 線,主機(jī) 1-Wire 總線的寫操作只能逐位進(jìn) 行,連續(xù)寫 8 次即可寫入總線一個(gè)字節(jié)。如程序 1.2 所示, 當(dāng) MCS-51 單片機(jī)的時(shí)鐘頻率為 12MHz 時(shí),程序中的語(yǔ)句 _nop_(); 可以產(chǎn)生 1s 的延時(shí),調(diào)用此函數(shù)時(shí)需包含頭 文件 intrins.h 。向 1-Wire 總線寫 1
4、bit 至少 需要 60s ,同時(shí)還要保證兩次連續(xù)的寫操作有1s 以上的間隔。若待寫位 wbit 為 0 則主機(jī)拉低總線 60s 然后釋放,寫 0 操作完成。若待寫位 wbit 為 1 , 則主機(jī)拉低總線并在115& #956;s內(nèi)釋放,然后等待60s ,寫 1 操作完成。程序1.2向總線寫1bitvoid Writebit(uchar wbit)_nop_();/保證兩次寫操作間隔1s 以上DQ=0;_nop_();/保證主機(jī)拉低總線 1s 以上if(wbit)/向總線寫 1DQ=1;delay60s();else/ 向總線寫 0 delay60s();DQ=1;3 1-Wire 總線的讀操
5、作與寫操作類似, 主機(jī)對(duì) 1-Wire 總線的讀操作也只能逐位進(jìn)行, 連續(xù)讀 8 次,即可讀入主機(jī)一個(gè)字節(jié)。從 1-Wire 總線讀取 1bit 同樣至少需要 60s ,同時(shí)也要保證兩次連續(xù)的讀 操作間隔 1s 以上。如程序 1.3 所示,從總線讀數(shù)據(jù) 時(shí),主機(jī)首先拉低總線 1s 以上然后釋放,在釋放總 線后的115& #956;s內(nèi)主機(jī)對(duì)總線的采樣值即為讀取到的 數(shù)據(jù)。程序1.3從總線讀1bituchar Readbit()uchar tdq;_nop_();/保證兩次連續(xù)寫操作間隔1s 以上DQ=0;_nop_();/保證拉低總線的時(shí)間不少于1sDQ=1;_nop_();tdq=DQ;/主
6、機(jī)對(duì)總線采樣delay60s();/等待讀操作結(jié)束return tdq;/返回讀取到的數(shù)據(jù)數(shù)字溫度傳感器 DS18B201 DS18B20 的基本特性 采用 1-Wire 總線接口,可以方便實(shí)現(xiàn)多點(diǎn)測(cè)溫。 與主機(jī)連接方便,除 5k 的總線上拉電阻外無(wú)須其 他額外器件。電源電壓范圍為 3.05.5V,與3.3V和5V數(shù)字系統(tǒng)均可 很好地兼容。測(cè)量范圍為-55+125C,分辨率為 912位可編程。 通過(guò)編程可設(shè)置溫度報(bào)警上下限,設(shè)置值掉電不丟失。 內(nèi)部集成了用于器件尋址的 64bit 光刻 ROM 編碼。2 DS18B20 中的存儲(chǔ)器在 DS18B20 中共有三種存儲(chǔ)器,分別是 ROM 、RAM
7、、 EEPROM ,每種存儲(chǔ)器都有其特定的功能, 可查閱相關(guān)資料。3 1-Wire 總線 ROM 功能命令在 DS18B20 內(nèi)部光刻了一個(gè)長(zhǎng)度為 64bit 的 ROM 編碼,這 個(gè)編碼是器件的身份識(shí)別標(biāo)志。當(dāng)總線上掛接著多個(gè)DS18B20 時(shí)可以通過(guò) ROM 編碼對(duì)特定器件進(jìn)行操作。 ROM 功能命令是針對(duì)器件的 ROM 編碼進(jìn)行操作的命令,共有 5 個(gè),長(zhǎng)度均為 8bit ( 1Byte )。 讀 ROM(33H)當(dāng)掛接在總線上的 1-Wire 總線器件接收到此命令時(shí),會(huì)在主 機(jī)讀操作的配合下將自身的 ROM 編碼按由低位到高位的順 序依次發(fā)送給主機(jī)??偩€上掛接有多個(gè)DS18B20 時(shí),
8、此命令會(huì)使所有器件同時(shí)向主機(jī)傳送自身的ROM 編碼,這將導(dǎo)致數(shù)據(jù)的沖突 匹配 ROM(55H)主機(jī)在發(fā)送完此命令后, 必須緊接著發(fā)送一個(gè) 64bit 的 ROM 編碼,與此 ROM 編碼匹配的從器件會(huì)響應(yīng)主機(jī)的后續(xù)命令, 而其他從器件則處于等待狀態(tài)。該命令主要用于選擇總線上 的特定器件進(jìn)行訪問(wèn)。 跳過(guò) ROM(CCH)發(fā)送此命令后,主機(jī)不必提供 ROM 編碼即可對(duì)從器件進(jìn)行 訪問(wèn)。與讀 ROM 命令類似,該命令同樣只適用于單節(jié)點(diǎn)的 1-Wire 總線系統(tǒng), 當(dāng)總線上有多個(gè)器件掛接時(shí)會(huì)引起數(shù)據(jù)的 沖突。 查找 ROM(F0H)當(dāng)主機(jī)不知道總線上器件的 ROM 編碼時(shí),可以使用此命令 并配合特定的
9、算法查找出總線上從器件的數(shù)量和各個(gè)從器 件的 ROM 編碼。 報(bào)警查找 (ECH)此命令用于查找總線上滿足報(bào)警條件的 DS18B20 ,通過(guò)報(bào) 警查找命令并配合特定的查找算法,可以查找出總線上滿足 報(bào)警條件的器件數(shù)目和各個(gè)器件的 ROM 編碼。4 DS18B20 器件功能命令與 1-Wire 總線相關(guān)的命令分為 ROM 功能命令和器件功能命 令兩種, ROM 功能命令具有通用性,不僅適用于 DS18B20 也適用于其他具有 1-Wire 總線接口的器件, 主要用于器件的 識(shí)別與尋址;器件功能命令具有專用性,它們與器件的具體 功能緊密相關(guān)。下面是 DS18B20 的器件功能命令。 啟動(dòng)溫度轉(zhuǎn)換
10、(44H)該命令發(fā)送完成后, 主機(jī)可以通過(guò)調(diào)用 Readbit() 函數(shù)判斷溫 度轉(zhuǎn)換是否完成, 若 Readbit() 的返回值為 0 則表示轉(zhuǎn)換正在 進(jìn)行,若 Readbit() 的返回值為 1 則表示轉(zhuǎn)換完成。 讀 RAM(BEH) 該命令發(fā)送完成后,主機(jī)可以通過(guò)調(diào)用 Readbit() 函數(shù)將 DS18B20 中 RAM 的內(nèi)容從低位到高位依次讀出。 寫 RAM(4EH)該命令發(fā)出后,主機(jī)隨后寫入 1-Wire 總線的 3 字節(jié)將依次 被存儲(chǔ)到 DS18B20 的報(bào)警上限、 報(bào)警下限和配置寄存器中。 復(fù)制 RAM(48H)該命令會(huì)將 DS18B20 的報(bào)警上限、報(bào)警下限和配置寄存器 中
11、的內(nèi)容復(fù)制到 EEPROM 中。該命令發(fā)出后,主機(jī)可以通 過(guò)調(diào)用 Readbit() 函數(shù)判斷復(fù)制操作是否完成,若 Readbit() 的返回值為 1 ,則表示復(fù)制操作完成。 回讀 EEPROM(B8H)該命令會(huì)將存儲(chǔ)在 EEPROM 中的報(bào)警上限、報(bào)警下限和配 置寄器的內(nèi)容回讀到 RAM 中,主機(jī)可以通過(guò)調(diào)用 Readbit() 函數(shù)判斷回讀操作是否完成, 若 Readbit() 的返回值為 1 則表 示回讀操作完成。 DS18B20 在上電時(shí)會(huì)自動(dòng)進(jìn)行一次回讀 操作。圖 1 主機(jī)與 DS18B20 的通信流程圖5 主機(jī)與 DS18B20 的通信流程如圖 1 所示,主機(jī)通過(guò) 1-Wire 總
12、線接口對(duì) DS18B20 的每次 訪問(wèn)都以復(fù)位信號(hào)和 ROM 功能命令開(kāi)始,訪問(wèn)的結(jié)束位置 是不確定的,這與具體的功能命令相關(guān)。圖中圓角矩形中的 操作與主機(jī)發(fā)送的功能命令相對(duì)應(yīng),隨著功能命令的不同圓 角矩形中的操作有時(shí)可以被省略。對(duì)總線上的 DS18B20 來(lái) 說(shuō),復(fù)位信號(hào)意味著又一次通信的開(kāi)始,器件對(duì)此的響應(yīng)是 拉低總線以告知主機(jī)自身的存在,然后準(zhǔn)備接收 ROM 功能 命令。多點(diǎn)測(cè)溫系統(tǒng)仿真實(shí)例DS18B20 是一種比較廉價(jià)的溫度傳感器,其封封裝形式如 圖 2 所示。在 Proteus 中包含有 DS18B20 的仿真模型,這 使得相關(guān)程序的調(diào)試變得簡(jiǎn)單方便。下面以一個(gè)實(shí)例介紹用 Prote
13、us 仿真多點(diǎn)測(cè)溫系統(tǒng)的步驟。圖 2 DS18B20 封裝形式 繪制仿真原理圖如圖 3 所示,在本實(shí)例中以單片機(jī) AT89C52 和 8 個(gè) DS18B20 構(gòu)成了一個(gè)多點(diǎn)測(cè)溫系統(tǒng)。為了有足夠的空間存 儲(chǔ)各個(gè) DS18B20 的 ROM 編碼和溫度值,在實(shí)例中用一片 8KB 的 SRAM 芯片 6116 對(duì)單片機(jī)的 RAM 進(jìn)行了擴(kuò)展。 設(shè)置 DS18B20 仿真模型的屬性首先右擊選中 protues 編輯區(qū)中的 DS18B20 仿真模型然后 再左擊,此時(shí)彈出如圖 4 所示的屬性設(shè)置對(duì)話框。其中, Family Code 是器件的家族碼,對(duì)于 DS18B20 來(lái)說(shuō)是 28H ROM Seria
14、l Number 對(duì)應(yīng)于器件的 48bit 序列號(hào),格式為十 六進(jìn)制,在填寫過(guò)程中要保證同一條 1-Wire 總線上所有仿真 模型的 ROM Serial Number 都不相同。 Automatic Serialization 設(shè)置為 No 時(shí)仿真模型將使用 ROM Serial Number 中的序列號(hào),設(shè)置為 Yes 時(shí)模型的序列號(hào)將由仿真 環(huán)境自動(dòng)生成,在此設(shè)置為 Yes ,這樣可以免去手動(dòng)修改 ROM Serial Number 的麻煩。 Current Value 中是仿真模型 當(dāng)前的溫度值。 Cranularity 中是單擊仿真模型的溫度值增減 按鈕時(shí)溫度值的改變量,在此設(shè)置為
15、1.1 。其他選項(xiàng)保持默 認(rèn)即可。單擊 OK 按鈕,設(shè)置完成。圖 3 多點(diǎn)測(cè)溫系統(tǒng)仿真原理圖 編制源程序主機(jī)是通過(guò) Reset() 、 Readbit() 、 Writebit() 三種基本操作與 1-Wire 總線進(jìn)行通信的, 只要這三個(gè)函數(shù)的時(shí)序準(zhǔn)確,那么 對(duì)于有一定 C 語(yǔ)言編程基礎(chǔ)的用戶來(lái)說(shuō)程序其他部分的編 寫將不是難事,按照前面介紹的流程向總線發(fā)送功能命令并 進(jìn)行相應(yīng)讀寫操作即可。多點(diǎn)測(cè)溫系統(tǒng)編程的難點(diǎn)在于器件 的查找,系統(tǒng)上電時(shí)主機(jī)首先要查找總線上掛接著多少個(gè) 1-Wire 器件并將各個(gè)器件的 ROM 編碼讀入單片機(jī)的 RAM 中,這需要一套復(fù)雜的算法,限于篇幅關(guān)于此算法在此不再
16、詳述。本仿真實(shí)例大體工作過(guò)程如圖 3 右下角注釋部分所示, 查找總線上所有器件的 ROM 編碼并存儲(chǔ) 這一步可以由 uchar B20ReadROM(uchar B20ROM 函數(shù) 完成,該函數(shù)的返回值是查找到的器件數(shù)目,各個(gè)器件的 ROM 編碼將存儲(chǔ)在二維數(shù)組 B20ROM 中。圖 4 DS18B20 仿真模型屬性設(shè)置 統(tǒng)一開(kāi)始溫度轉(zhuǎn)換 的通信流程為: 發(fā)送復(fù)位 信號(hào);發(fā)送跳過(guò) ROM(CCH) 命令;發(fā)送啟動(dòng)溫度轉(zhuǎn)換 (44H) 命令。 逐器件讀取溫度值 的通信流程為: 發(fā)送復(fù)位 信號(hào);發(fā)送匹配 ROM(55H)命令;發(fā)送第i(i=O7)個(gè)器件的 ROM 編碼;發(fā)送讀 RAM(BEH) 命
17、令;讀取 2 字節(jié),其中低 字節(jié)在前,高字節(jié)在后,讀取到的值符合溫度值數(shù)據(jù)格式。 在 Proteus 中添加監(jiān)視變量為了檢驗(yàn)程序運(yùn)行的正確與否,通常的做法是將運(yùn)行結(jié)果通 過(guò)單片機(jī)的 UART 接口輸出到虛擬終端上, 這種方法的缺點(diǎn) 是會(huì)占用一定的單片機(jī)資源,在此介紹另外一種程序調(diào)試技 巧監(jiān)視變量。在 Proteus 的運(yùn)行狀態(tài)下點(diǎn)擊 DebugWatch Window 會(huì)彈出監(jiān)視窗口 (Watch Window) ,然后按下 Alt+A 鍵會(huì)彈出如圖 5 所示的添加存儲(chǔ) 器條目對(duì)話框 (Add Memory Item) 。所謂監(jiān)視變量也就是監(jiān) 視相應(yīng)存儲(chǔ)單元中的內(nèi)容,圖 5 中圖 5 添加存儲(chǔ)
18、器條目對(duì)話框Memory 用于選擇待監(jiān)視變量所在的存儲(chǔ)器; Name 用于填 寫變量名稱,為了含義清晰該名稱最好與源程序中定義的變 量名稱一致; Address 用于填寫待監(jiān)視變量的地址; Data Type 和 Display Fomat 用于設(shè)置數(shù)據(jù)格式和顯示格式。 設(shè)置 完成后單擊 Add 按鈕即可添加一個(gè)監(jiān)視變量。 在本實(shí)例中將 測(cè)量到的溫度值轉(zhuǎn)化成 ACSLL 碼字符串的格式存儲(chǔ)在二維 數(shù)組 TempBuffer 中,因此 Data Type 選擇為 ASCLLZ String , Watch Window 的最終結(jié)果如圖 6 所示。 Value 一欄中顯示 的即為 8 個(gè) DS18B20 測(cè)量到的溫度值,單擊仿真模型的溫 度增減按鈕溫度值的改變
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版P2P平臺(tái)借款合同違約責(zé)任界定范本2篇
- 2025年度快遞加盟店轉(zhuǎn)讓合同示范文本3篇
- 2025年度二零二五年度離婚協(xié)議中共同財(cái)產(chǎn)分割及債務(wù)承擔(dān)協(xié)議3篇
- 2025版股權(quán)轉(zhuǎn)讓協(xié)議書.3篇
- 《企業(yè)內(nèi)部薪酬差距、員工離職行為和企業(yè)績(jī)效的關(guān)系研究》
- 二零二五年代運(yùn)營(yíng)與客戶互動(dòng)管理服務(wù)合同樣本3篇
- 2025年度TD基站裝修工程節(jié)能評(píng)估合同3篇
- 2025年度數(shù)據(jù)中心擴(kuò)容按揭升級(jí)合同3篇
- 2025年度ROHS檢測(cè)與環(huán)保產(chǎn)業(yè)國(guó)際合作合同
- 二零二五年度二手車置換及售后服務(wù)全面保障合同3篇
- 蒸汽壓力流速流量管徑關(guān)系
- 水墨中式中國(guó)風(fēng)書香校園PPT模板
- 2023年新教材人教版高中生物選擇性必修3《生物技術(shù)與工程》全冊(cè)各章節(jié)課時(shí)練習(xí)題及章末檢測(cè)含答案解析
- 生鮮連鎖超市運(yùn)營(yíng)實(shí)戰(zhàn)手冊(cè)
- 軟件工程師KPI表
- 燃?xì)獍l(fā)電工程監(jiān)理導(dǎo)則
- GB 16844-1997普通照明用自鎮(zhèn)流燈的安全要求
- 供熱企業(yè)安全風(fēng)險(xiǎn)隱患辨識(shí)清單
- 矩形沉井計(jì)算表格(自動(dòng)版)
- 滬教牛津版五年級(jí)下冊(cè)英語(yǔ)全冊(cè)課件
- 湘藝版 四年級(jí)上冊(cè)音樂(lè)教案- 第十課 我心愛(ài)的小馬車
評(píng)論
0/150
提交評(píng)論