溫度采集報(bào)警系統(tǒng)_第1頁(yè)
溫度采集報(bào)警系統(tǒng)_第2頁(yè)
溫度采集報(bào)警系統(tǒng)_第3頁(yè)
溫度采集報(bào)警系統(tǒng)_第4頁(yè)
溫度采集報(bào)警系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 畢畢業(yè)業(yè)設(shè)設(shè)計(jì)計(jì)(論論文文)題題 目目: 溫度采集報(bào)警系統(tǒng)英文題目英文題目: 學(xué)生姓名學(xué)生姓名: 班班 級(jí)級(jí): 指導(dǎo)教師指導(dǎo)教師: 專專 業(yè)業(yè): 自動(dòng)化二二零零 06 年年 06 月月 摘要摘要該系統(tǒng)主要敘述了一種運(yùn)用 1wire 結(jié)構(gòu)的數(shù)字溫度傳感器 ds18b20 設(shè)計(jì)溫度采集報(bào)警系統(tǒng)的設(shè)計(jì)方案。該系統(tǒng)由硬件和軟件兩部分組成,硬件部分。包括以單片機(jī)為主控的電路模塊,以 ds18b20 為主的傳感器采集模塊,報(bào)警模塊,鍵盤(pán)輸入模塊和顯示輸出模塊。通過(guò)單片機(jī)對(duì)溫度傳感器的讀取,實(shí)時(shí)采集數(shù)據(jù),從而來(lái)監(jiān)控環(huán)境的溫度,并根據(jù)實(shí)際的需要來(lái)設(shè)定高低溫界限來(lái)實(shí)現(xiàn)高溫和低溫報(bào)警。該系統(tǒng)與以往的溫度采集報(bào)警

2、系統(tǒng)不同,因?yàn)樗捎昧诵乱淮囊痪€口溫度傳感器ds18b20,獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,給人們帶來(lái)了更方便控制,更利于人們的使用。它和單片機(jī)的連接的硬件電路更簡(jiǎn)單,實(shí)時(shí)性良好,有良好的人機(jī)界面可以應(yīng)用在藥液發(fā)酵控制、大棚種植、食品保鮮等控制系統(tǒng)中。關(guān)鍵詞關(guān)鍵詞: 1-wire bus;ds18b20;單片機(jī)畢業(yè)(論文) abstractabstractthis system is a design about the application of the 1-wire digital temperature sensor ds18b20.

3、that system is constitute by the hardware and software two parts。include the electric circuit mold piece that controls for the lord with a machine, regard ds18b20 as principle of spread the feeling machine to collect the mold piece, report to the police the mold piece, the keyboard importation mold

4、piece and show the exportation mold piece. the environmental temperature is controlled by gathering the temperature data through the microprocessor in real time. and it sends a warning signal of lower or higher temperature according to the virtual situation.that system collects with former temperatu

5、re to report to the police the system dissimilarity, because it adopts a temperature of the new generation to spread the feeling machine ds18b20, special and the characteristics of the economy, use door can easily the set sets up to spread the feeling machine network, in order to measure the system

6、to set up to lead into the all new concept, brought the more convenient control to the people, more benefit in the peoples usage. the scheme could have application in the liquid medicine ferment control 、shed planting and food fresh control systems.keywordskeywords1-wire bus;ds18b20;microprocessor畢業(yè)

7、(論文) 目錄 目目 錄錄緒論.11ds18b20 的介紹 .211 ds18b20 的內(nèi)部結(jié)構(gòu).21.2 ds18b20 的溫度轉(zhuǎn)化.31.3 ds18b20 的存儲(chǔ)器.41.3.1 ds18b20 的暫存存儲(chǔ)器.41.3.2 ds18b20 的配置寄存器.51.4 ds18b20 的操作命令.51.4.1 ds18b20 的 rom 命令.51.4.2 ds18b20 的功能命令.61.5 ds18b20 的讀寫(xiě)時(shí)序.71.5.1 ds18b20 的初始化時(shí)序.71.5.2 ds18b20 的寫(xiě)時(shí)序.81.5.3 ds18b20 的讀時(shí)序.81.6 ds18b20 的供電模式.91.7 d

8、s18b20 使用中注意事項(xiàng).92. 硬件設(shè)計(jì).102.1 最小系統(tǒng)板塊 .10211 at89c51 簡(jiǎn)介.11212 復(fù)位電路及晶振電路簡(jiǎn)介 .132.2 溫度傳感器 .142.3 串口顯示電路 .14231 74ls164 簡(jiǎn)介.14232 串口顯示電路 .152.4 擴(kuò)展部分 .152.4.1 4*4 按鍵電路.163. 軟件設(shè)計(jì).183.1 軟件框圖 .183.2 ds18b20 的控制程序.183.2.1 ds18b20 的初始化程序.183.2.2 ds18b20 的單字節(jié)的寫(xiě)和讀子程序.193.2.3 ds18b20 的分辨率設(shè)置子程序.213.3 系統(tǒng)的程序設(shè)計(jì) .22331

9、 主程序分段程序 .22總結(jié).35致謝.35參考文獻(xiàn).36附錄.36畢業(yè)(論文) 緒論 0緒論緒論 隨著計(jì)算機(jī)的應(yīng)用滲透到社會(huì)的各行各業(yè),各種不同的應(yīng)用層次對(duì)實(shí)現(xiàn)作業(yè)的智能化,自動(dòng)化和集成化提出了一定的要求。傳統(tǒng)靠人控制的溫度測(cè)控系統(tǒng),外圍電路比較復(fù)雜,測(cè)量精度較低,分辨力不高,需要進(jìn)行溫度校準(zhǔn),而且它們的體積較大,使用不夠方便,更重要的是參數(shù)的整定需要有其他儀表的參與,外界設(shè)施多,成本高,因而越來(lái)越適應(yīng)不了社會(huì)的要求。在對(duì)多類型、多通道信號(hào)同時(shí)進(jìn)行檢測(cè)和控制中,傳統(tǒng)的測(cè)控系統(tǒng)能力有限。如何將計(jì)算機(jī)與各種設(shè)備設(shè)施結(jié)合,簡(jiǎn)化人工操作并實(shí)現(xiàn)自動(dòng)控制,滿足社會(huì)的需求,成為一個(gè)很迫切的問(wèn)題。環(huán)境的溫度

10、、濕度、壓強(qiáng)等都是影響工農(nóng)業(yè)生產(chǎn)的比較重要的因素。例如,儲(chǔ)存糧食的倉(cāng)庫(kù)中的溫度、濕度的正常與否將直接影響到糧食可以儲(chǔ)存的時(shí)間以及糧食的質(zhì)量,如果倉(cāng)庫(kù)中的溫度、濕度沒(méi)有控制好就會(huì)給國(guó)家?guī)?lái)重大的損失。再如,北方晝夜溫差較大而且干燥,如果沒(méi)有對(duì)大棚進(jìn)行恒溫恒濕控制的話,在夜間溫度降低或者大棚內(nèi)的濕度太低,將會(huì)對(duì)大棚內(nèi)的作物的生長(zhǎng)產(chǎn)生不良影響,造成作物的減產(chǎn)、失收。在釀造業(yè)中,環(huán)境稍微有點(diǎn)變化就會(huì)有副產(chǎn)品制造出來(lái),降低了產(chǎn)品質(zhì)量,因此酵池中的溫度、壓強(qiáng)更要進(jìn)行精確的控制如此多的環(huán)境參數(shù)的測(cè)量和控制是一項(xiàng)重復(fù)和煩瑣的工作,使用人工的方式來(lái)進(jìn)行長(zhǎng)期的測(cè)量和控制,非常容易出現(xiàn)失誤從而造成不必要的損失。因此

11、本文以溫度的監(jiān)測(cè)為例介紹一種使用 1-wrie 結(jié)構(gòu)器件(ds18b20)的溫度監(jiān)控系統(tǒng)。dallas 半導(dǎo)體公司的數(shù)字化溫度傳感器 ds1820 是世界上第一片支持 “一線總線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。目前智能控制系統(tǒng)越來(lái)越走進(jìn)人們的生活了,不管是在工用還是在民用方面都受到了人們的重視,數(shù)字式的溫度傳感器 18b20 的出現(xiàn),給人們帶來(lái)了更方便控制,更利于人們的使用,它和單片機(jī)的連接的硬件電路更簡(jiǎn)單,有良好的人機(jī)界面,有巨大的實(shí)用價(jià)值! 通過(guò)利用 ds1820 作為溫度傳感器,基于單片機(jī) at89c51 而設(shè)計(jì)

12、的溫度采集報(bào)警系統(tǒng),可以實(shí)現(xiàn)實(shí)時(shí)采集數(shù)據(jù),進(jìn)行對(duì)溫度的測(cè)控。并可以通過(guò)鍵盤(pán)預(yù)設(shè)高溫和低溫界限,與采集的溫度進(jìn)行比較而發(fā)出報(bào)警信號(hào)。此系統(tǒng)實(shí)時(shí)性良好,有良好的人機(jī)界面可以應(yīng)用在藥液發(fā)酵控制、大棚種植、食品保鮮等控制系統(tǒng)中。畢業(yè)(論文) 緒論 11 1ds18b20ds18b20 的介紹的介紹ds18b20 支持“一線總線”接口,測(cè)量溫度范圍為-55c +125c,在-10 +85c 范圍內(nèi),精度為0.5c?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持 3v 5.

13、5v 的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。ds18b20 可以程序設(shè)定 9 12 位的分辨率,精度為0.5c??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在eeprom 中,掉電后依然保存。ds18b20 的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色!繼“一線總線”的早期產(chǎn)品后,ds18b20 開(kāi)辟了溫度傳感器技術(shù)的新概念。ds18b20 使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng)。11 11 1 ds18b20ds18b20 的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)ds18b20 的管腳排列如圖 1:dq 為數(shù)字信號(hào)

14、輸入/輸出端;gnd 為電源地;vdd 為外接供電電源輸入端(在寄生電源接線方式時(shí)接地) 。2圖圖 1 1 ds18b20ds18b20 的管腳的管腳1 2 3dallasds18b20gnddqvdd1 2 3 ds18b20 to-92封裝底視圖ds18b20z 8腳soic封裝1 82 73 64 5 ncdqvddncncgndncnc畢業(yè)(論文) ds18b20 的介紹 1ds18b20 內(nèi)部結(jié)構(gòu)主要由四部分組成:64 位光刻 rom、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器 th 和 tl、配置寄存器。rom 中的 64 位序列號(hào)是出廠前被光刻好的,它可以看作是該 ds18b20 的地址

15、序列碼,每個(gè) ds18b20 的 64 位序列號(hào)均不相同。64 位 rom 的排的循環(huán)冗余校驗(yàn)碼(crc=x8x5x41)。rom 的作用是使每一個(gè) ds18b20 都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)ds18b20 的目的。內(nèi)部結(jié)構(gòu)2如圖 2。1.21.2 ds18b20ds18b20 的溫度轉(zhuǎn)化的溫度轉(zhuǎn)化 ds18b20 中的溫度傳感器可完成對(duì)溫度的測(cè)量,以 12 位轉(zhuǎn)化為例:用 16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625/lsb 形式表達(dá),其中 s 為符號(hào)位。見(jiàn)表 1:表表 1 1 溫度的二進(jìn)制補(bǔ)碼形式溫度的二進(jìn)制補(bǔ)碼形式bit 7bit 6bit 5bit 4bi

16、t 3bit 2bit 1bit 0lsls bytebyte3222120212223242bit 15bit 14bit 13bit 12bit 11bit 10bit 9bit 8msms bytebytes ss ss ss ss s625242這是 12 位轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲(chǔ)在 18b20 的兩個(gè) 8 比特的 ram 中,二進(jìn)制中的前面 5 位是符號(hào)位,如果測(cè)得的溫度大于 0,這 5 位為 0,只要將測(cè)到的數(shù)值乘于 0.0625 即可得到實(shí)際溫度;如果溫度小于 0,這 5 位為 1,測(cè)到的數(shù)值需要取反加 1 再乘于 0.0625 即可得到實(shí)際溫度。畢業(yè)(論文) ds18

17、b20 的介紹 2例如+125的數(shù)字輸出為 07d0h,+25.0625的數(shù)字輸出為 0191h,-25.0625的數(shù)字輸出為 ff6fh,-55的數(shù)字輸出為 fc90h。3見(jiàn)表 2:表表 2 2 溫度的轉(zhuǎn)化溫度的轉(zhuǎn)化1250000 0111 1101 000007d0h850000 0101 0101 00000550h25.06250000 0001 1001 00010191h10.1250000 0000 1010 001000a2h0.50000 0000 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000ff

18、ffh-10.1251111 1111 0101 1110ff5eh-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90h1.31.3 ds18b20ds18b20 的存儲(chǔ)器的存儲(chǔ)器 ds18b20 溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存 ram 和一個(gè)非易失性的可電擦除的 eeprom,后者存放高溫度和低溫度觸發(fā)器 th、tl 和結(jié)構(gòu)寄存器。1.3.11.3.1 ds18b20ds18b20 的暫存存儲(chǔ)器的暫存存儲(chǔ)器寄存器內(nèi)部字節(jié)地址溫度最低位字節(jié)0溫度最高位字節(jié)1高溫限值2低溫限值3保留4保留5計(jì)數(shù)剩余值6每度計(jì)數(shù)值7crc

19、校驗(yàn)8畢業(yè)(論文) ds18b20 的介紹 3表表 3 3 ds18b20ds18b20 的暫存寄存器分布的暫存寄存器分布暫存存儲(chǔ)器包含了 8 個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是 th、tl 的易失性拷貝,第五個(gè)字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新。第六、七、八個(gè)字節(jié)用于內(nèi)部計(jì)算。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。見(jiàn)表 3。1.3.21.3.2 ds18b20ds18b20 的配置寄存器的配置寄存器該字節(jié)的分布見(jiàn)表 4。表表 4 4 ds18b20ds18b20 的配置寄存器的配置寄存

20、器tmr1r211111低五位一直都是 1 ,tm 是測(cè)試模式位,用于設(shè)置 ds18b20 在工作模式還是在測(cè)試模式。在 ds18b20 出廠時(shí)該位被設(shè)置為 0,一般不要去改動(dòng)。r1 和 r0 用來(lái)設(shè)置分辨率,如表 54所示:(ds18b20 出廠時(shí)被設(shè)置為 12 位)表表 5 5 ds18b20ds18b20 的配置寄存器的配置寄存器分辨率的設(shè)置分辨率的設(shè)置r1r0分辨率溫度最大轉(zhuǎn)化時(shí)間009 位93.75ms0110 位187.5ms1011 位375ms1112 位750ms1.41.4 ds18b20ds18b20 的操作命令的操作命令 根據(jù) ds18b20 的通訊協(xié)議,主機(jī)控制 ds

21、18b20 完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì) ds18b20 進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條 rom 指令,最后發(fā)送 ram 指令,這樣才能對(duì) ds18b20 進(jìn)行預(yù)定的操作。復(fù)位要求主 cpu 將數(shù)據(jù)線下拉 500 微秒,然后釋放,ds18b20 收到信號(hào)后等待 1660 微秒左右,后發(fā)出 60240 微秒的存在低脈沖,主 cpu 收到此信號(hào)表示復(fù)位成功。1.4.11.4.1 ds18b20ds18b20 的的 romrom 命令命令在進(jìn)行完初始化命令之后,主機(jī)就可以通過(guò)發(fā)出rom命令對(duì)1-wire器件進(jìn)行畢業(yè)(論文) ds18b20 的介紹 4操作了。1-wire器件的ro

22、m命令包括:搜索命令(f0) 、讀rom命令(33) 、跳躍rom命令(cc) 、匹配rom命令(55) 、報(bào)警搜索命令(ec)等,如表6所示。不同的1-wire器件會(huì)稍微有所不同。表表6 6 ds18b20ds18b20的的romrom指令指令指令約定代碼功能讀 rom33h讀 18b20 的編碼(即讀 64 位地址)符合 rom55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問(wèn)單線總線與讀編碼相應(yīng)的 ds18b20,使之做出響應(yīng),該為下一步對(duì) ds18b20 進(jìn)行操作作好準(zhǔn)備搜索 rom0f0h用與確定掛在同一總線上 ds18b20 的個(gè)數(shù)和識(shí)別 64 位地址,為操作各器件做好準(zhǔn)

23、備。跳過(guò) ram0cch忽略 64 位 rom 地址,直接向 ds18b20 發(fā)溫度轉(zhuǎn)化命令,適用單片機(jī)工作告警搜索命令0ech執(zhí)行后,只有溫度超過(guò)設(shè)定值上限或下限時(shí),片子才做出響應(yīng)對(duì)于多節(jié)點(diǎn)的系統(tǒng),在對(duì)1-wire器件進(jìn)行操作之前必須要對(duì)總線上所有的器件進(jìn)行搜索,讀出它們的64位的id碼。有了這個(gè)64位的id碼才能夠?qū)Σ煌钠骷M(jìn)行操作。由于1-wire器件的id碼是刻在芯片內(nèi)部的,用眼睛是無(wú)法看出來(lái)的,因此主機(jī)必須通過(guò)某種合適的算法把64位的id碼給讀出來(lái)。這個(gè)算法實(shí)際上是一個(gè)“二叉樹(shù)”算法。在得到了器件的64位id碼后就可以通過(guò)匹配命令(55)后面跟隨的64位id碼來(lái)選擇總線上相應(yīng)器件進(jìn)

24、行操作,而總線上其他的器件則不會(huì)做出響應(yīng)。對(duì)于單節(jié)點(diǎn)的系統(tǒng),可以通過(guò)讀rom命令(33)把1-wire器件的64位id碼給讀出來(lái)。如果在多節(jié)點(diǎn)的系統(tǒng)中使用該命令則會(huì)由于所有的器件都響應(yīng)這個(gè)命令而發(fā)生數(shù)據(jù)沖突。其實(shí)在單節(jié)點(diǎn)的系統(tǒng)中可以使用跳躍rom命令(cc)而不用通過(guò)匹配rom命令(55)寫(xiě)入64位id碼,直接對(duì)總線上的器件進(jìn)行操作。51.4.21.4.2 ds18b20ds18b20 的功能命令的功能命令不同的 1-wire 器件的功能命令是不同的。在使用時(shí)應(yīng)注意以下幾種情況:(1)在溫度轉(zhuǎn)換和復(fù)制暫存器數(shù)據(jù)至eeprom期間,主機(jī)必須在單總線上允許強(qiáng)上拉。并且在此期間,總線上不能進(jìn)行其它數(shù)

25、據(jù)傳輸;(2)通過(guò)發(fā)出復(fù)位脈沖,主機(jī)能夠在任何時(shí)候中斷數(shù)據(jù)傳輸;畢業(yè)(論文) ds18b20 的介紹 5寫(xiě)“0”時(shí)間片60tx“0”120us恢復(fù)1us寫(xiě)”1“時(shí)間片ds18b20采樣min typ max15us15us30usds18b20采樣min typ max15us15us30us1us(3)在復(fù)位脈沖發(fā)出前,必須寫(xiě)入全部的三個(gè)字節(jié)ds18b20 的功能命令和使用方法見(jiàn)表 76:表表 7 7 ds18b20ds18b20 的功能命令字的功能命令字指令約定代碼功能溫度變換44h啟動(dòng) ds18b20 進(jìn)行溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)間最長(zhǎng)為 500ms,典型值為 200ms,結(jié)果存于內(nèi)部 ram

26、中讀暫存器0beh讀內(nèi)部 ram9 字節(jié)內(nèi)容寫(xiě)暫存器4eh發(fā)出向內(nèi)部 ram 的第 3、4 字節(jié),寫(xiě)上、下限溫度數(shù)據(jù)命令,緊跟著該命令之后,是傳送兩字節(jié)的數(shù)據(jù)重調(diào)2e pram0b8h將中的內(nèi)容復(fù)制到 ram 中的第 3、4 字節(jié)2e pram復(fù)制暫存器48h將 ram 中第 3、4 字節(jié)的內(nèi)容復(fù)制到中2e pram讀供電方式0b4h讀 ds18b20 的供電模式,寄生提供時(shí) ds18b20 發(fā)送 0,外接電源供電 ds18b20 發(fā)送 11.51.5 ds18b20ds18b20 的讀寫(xiě)時(shí)序的讀寫(xiě)時(shí)序 ds18b20的一線工作協(xié)議流程是:初始化rom操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。其工作時(shí)序

27、包括初始化時(shí)序、寫(xiě)時(shí)序和讀時(shí)序,它的讀寫(xiě)分4種類型:分別是寫(xiě)1、寫(xiě)0、讀1、讀0。1.5.11.5.1 ds18b20ds18b20 的初始化時(shí)序的初始化時(shí)序?qū)?-wire器件的所有操作都是從初始化開(kāi)始的,初始化過(guò)程由主機(jī)的復(fù)位脈沖和1-wire器件的應(yīng)答脈沖組成。對(duì)1-wire器件的復(fù)位脈沖實(shí)際上是主機(jī)通過(guò)拉低總線來(lái)實(shí)現(xiàn)的,主機(jī)通過(guò)拉低總線480um以后再把總線拉高使總線上所有1-wire器件復(fù)位,總線上1-wire器件接到復(fù)位脈沖后便通過(guò)拉低總線告訴主機(jī)1-wire器件已經(jīng)準(zhǔn)備就緒。7如圖3所示:畢業(yè)(論文) ds18b20 的介紹 6主機(jī)發(fā)復(fù)位脈沖480tx“0”960us主機(jī)接收存在信

28、號(hào)至少480us15-60us等待ds18b20發(fā)脈沖60-240usvccgnd圖圖3 3 ds18b20ds18b20的初始化時(shí)序的初始化時(shí)序1.5.21.5.2 ds18b20ds18b20 的寫(xiě)時(shí)序的寫(xiě)時(shí)序?qū)憰r(shí)序起始于單片機(jī)拉低總線。產(chǎn)生寫(xiě)1時(shí)序的方式:?jiǎn)纹瑱C(jī)在拉低總線后,接著必須在15us之內(nèi)釋放總線,由5k上拉電阻將總線拉至高電平;而產(chǎn)生寫(xiě)0時(shí)序的方式:在單片機(jī)拉低總線后,只需在整個(gè)時(shí)序期間保持低電平即可(至少60us)。在寫(xiě)時(shí)序起始后15-60us期間,單總線器件采樣總線電平狀態(tài)。如果在此期間采樣為高電平,則邏輯1被寫(xiě)入該器件;如果為0則寫(xiě)入邏輯0。具體情況如圖47所示:圖圖4

29、4 ds18b20ds18b20的寫(xiě)時(shí)序的寫(xiě)時(shí)序1.5.31.5.3 ds18b20ds18b20 的讀時(shí)序的讀時(shí)序 單總線器件僅在單片機(jī)發(fā)出讀時(shí)序時(shí),才向主機(jī)傳輸數(shù)據(jù),所以,在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要60us,且在兩次獨(dú)立的讀時(shí)序之間至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起至少拉低總線1us。在主機(jī)發(fā)起讀時(shí)序之后,單總線器件才開(kāi)始在總線上發(fā)送0或1。若從機(jī)發(fā)送1,則保持總線為高電平;若發(fā)送0,則拉低總線。當(dāng)發(fā)送0時(shí),從機(jī)在該時(shí)序結(jié)束后釋放總線,由上拉電阻將總線拉回至空閑高電平狀態(tài)。從機(jī)發(fā)出的數(shù)據(jù)在起始時(shí)序之后,保持有效時(shí)間15

30、us,因而,主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的15us之內(nèi)采樣總線狀態(tài)。如圖57所示:圖圖5 5 ds18b20ds18b20的讀時(shí)序的讀時(shí)序主機(jī)讀“0”時(shí)間片主機(jī)讀“1”時(shí)間片1us 總線采樣總線采樣15us15us15us30us1us vcc1-wirebusgnd畢業(yè)(論文) ds18b20 的介紹 7mcs-51 p1.0+3v-+5.5v+3v-+5.5vds18b20gndvddi/o4.7kmcs-51 p1.0+3v-+5.5vds18b20vdd外接電源+3v-+5.5vgndi/o外接其他的一線裝置4.7k1.61.6 ds18b20ds18b20 的供電模

31、式的供電模式 以mcs51系列單片機(jī)為例,畫(huà)出了ds18b20與微處理器的典型連接。圖6(a)中ds18b20采用寄生電源方式,其vdd和gnd端均接地,圖6(b)中ds18b20采用外接電源方式,其vdd端用3v5.5v電源供電8。(a a)寄生電源供電方式)寄生電源供電方式(b b)外接電源供電方式)外接電源供電方式圖圖6 6 ds18b20ds18b20的供電方式的供電方式1.71.7 ds18b20ds18b20 使用中注意事項(xiàng)使用中注意事項(xiàng)ds18b20 雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題:(1)較小的硬件開(kāi)銷需要相對(duì)

32、復(fù)雜的軟件進(jìn)行補(bǔ)償,由于 ds1820 與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì) ds18b20 進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用 pl/m、c 等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì) ds1820 操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。畢業(yè)(論文) 硬件設(shè)計(jì) 0(2)在 ds1820 的有關(guān)資料中均未提及單總線上所掛 ds18b20 數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè) ds18b20,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛 ds18b20 超過(guò) 8 個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。(3)連接 ds18b20 的總線電

33、纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過(guò) 50m 時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá) 150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻摹R虼?,在?ds18b20 進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問(wèn)題。(4)在ds18b20測(cè)溫程序設(shè)計(jì)中,向ds18b20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待ds18b20的返回信號(hào),一旦某個(gè)ds18b20接觸不好或斷線,當(dāng)程序讀該ds18b20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。92.2. 硬件設(shè)

34、計(jì)硬件設(shè)計(jì)利用ds18b20做的溫度控制器的硬件電路很簡(jiǎn)單,它大大的簡(jiǎn)化了設(shè)計(jì)電路,節(jié)約了成本。主要是由51最小系統(tǒng)板、按鍵電路、顯示電路、溫度傳感器、報(bào)警電路等組成。如圖7所示:圖圖7 7 硬件框圖硬件框圖2.12.1 最小系統(tǒng)板最小系統(tǒng)板塊塊所謂的51最小系統(tǒng)板就是保證51單片機(jī)能正常工作的最基本的電路,它們主要就是晶振電路和復(fù)位電路。(如圖8所示)畢業(yè)(論文) 硬件設(shè)計(jì) 1圖圖8 8 5151最小系統(tǒng)板最小系統(tǒng)板2 21 11 1 at89c51at89c51 簡(jiǎn)介簡(jiǎn)介我選用的是at89c51微處理器。at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomfalsh pr

35、ogrammable and erasable read only memory)的低電壓,高性能cmos8位微處理器。該器件采用atmel高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51 指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲(chǔ)器組合在單個(gè)芯片中,at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 其引腳定義如下圖:at89c51at89c51的引腳定義的引腳定義管腳說(shuō)明:vcc:供電電壓。畢業(yè)(論文) 硬件設(shè)計(jì) 2 gnd:接地。 p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門(mén)電流。當(dāng) p1口的管腳第一次寫(xiě)1時(shí)

36、,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門(mén)電流。p1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門(mén)電流,當(dāng)p2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作

37、為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門(mén)電流。當(dāng)p3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一

38、些特殊功能口,如下表所示:p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷0)p3.3 /int1(外部中斷1)p3.4 t0(記時(shí)器0外部輸入)p3.5 t1(記時(shí)器1外部輸入)p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖

39、信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)畢業(yè)(論文) 硬件設(shè)計(jì) 3外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無(wú)效。 psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh)

40、,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來(lái)自反向振蕩器的輸出。振蕩器特性: xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。芯片擦除: 整個(gè)perom陣列

41、和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ale管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,cpu停止工作。但ram,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。212 復(fù)位電路及晶振電路簡(jiǎn)介在這里我是用最簡(jiǎn)單的上電復(fù)位電路,它的抗干擾性能不是很好,但是它是最簡(jiǎn)單、最常用的一種復(fù)位電路,所謂上電復(fù)位,是指計(jì)算機(jī)上

42、電瞬間,要在rst引腳上出現(xiàn)寬度大10ms的正脈沖,使計(jì)算機(jī)進(jìn)入復(fù)位狀態(tài)。晶振是采用最常用的12m的10。在石英晶體兩個(gè)管腳加交變電場(chǎng)時(shí),它將會(huì)產(chǎn)生一定頻率的機(jī)械變形,而這種機(jī)械振動(dòng)又會(huì)產(chǎn)生交變電場(chǎng),稱為壓電效畢業(yè)(論文) 硬件設(shè)計(jì) 4應(yīng)。當(dāng)交變電場(chǎng)的頻率為某一特定值時(shí),振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。這一特定頻率就是石英晶體的固有頻率。石英晶體的諧振頻率由石英晶體的結(jié)晶方向和外形尺寸所決定,具有極高的頻率穩(wěn)定性。2.22.2 溫度傳感器溫度傳感器在該系統(tǒng)中,用外接5v電源的方式給ds18b20供電,它的數(shù)據(jù)線接到了51單片機(jī)p1.0口,直接和單片機(jī)通信。但是根據(jù)ds18b20的特性,

43、在它的dq端要接一個(gè)上拉電阻。如圖96所示圖圖9 9 溫度傳感器溫度傳感器2.32.3 串口顯示電路串口顯示電路2 23 31 1 74ls16474ls164 簡(jiǎn)介簡(jiǎn)介74ls164是一個(gè)串行輸入并行輸出的移位寄存器。并帶有清除端。 其中; q1q8 并行輸出端 。 a,b串行輸入端。 mr 清除端, 為0時(shí),輸出清零。 cp 時(shí)鐘輸入端。74ls164為普通的ttl電路,價(jià)格低,并且鍵值讀入、顯示驅(qū)動(dòng)均可使用該芯片完成。74ls164輸出(q0-q7)作為led的段驅(qū)動(dòng)時(shí),只能連接共陽(yáng)數(shù)碼管。多片74ls164連接時(shí),低位的q7要與高位的a、b端相連,這樣才能實(shí)現(xiàn)多片移位。畢業(yè)(論文) 硬

44、件設(shè)計(jì) 574ls16474ls164引腳定義引腳定義 74ls16474ls164邏輯表定義邏輯表定義232 串口顯示電路單片機(jī)并行i/o口數(shù)量總是有限的,有時(shí)并行口需作其他更重要的用途,一般也不會(huì)用數(shù)量眾多的并行i/o口專門(mén)用來(lái)驅(qū)動(dòng)顯示電路,能否用89c51的串行通信口加上少量i/o及擴(kuò)展芯片用于顯示電路呢?答案是肯定的。 89c51的串行通信口是一個(gè)功能強(qiáng)大的通信口,而且是相當(dāng)好用的通信口,用于顯示驅(qū)動(dòng)電路再合適不過(guò)了,下面我就根據(jù)這種需要設(shè)計(jì)一個(gè)用兩個(gè)串行通信口線加上兩根普通i/o口,設(shè)計(jì)一個(gè)4位led顯示電路。當(dāng)然只要再加上兩根i/o口線即可輕易實(shí)現(xiàn)8位led的顯示電路。在顯示電路上

45、,我選擇了用廉價(jià)易得的74ls164來(lái)組成的串口顯示,它同動(dòng)態(tài)顯示相比,大大的節(jié)省了單片機(jī)的i/o口,節(jié)省了資源,便于系統(tǒng)的擴(kuò)展。圖圖1010 串口顯示電路串口顯示電路應(yīng)用74ls164時(shí),a,b兩端并接后接受單片機(jī)送來(lái)的串行數(shù)據(jù),在串行輸入的整個(gè)過(guò)程中,并行輸出端的狀態(tài)將不斷變化。74ls164清除端平時(shí)應(yīng)置高電平,串行仍在時(shí)鐘脈沖上升沿時(shí)實(shí)現(xiàn)。2.42.4 擴(kuò)展部分?jǐn)U展部分現(xiàn)在的智能控制越來(lái)越要求具有良好的人機(jī)界面,需要和人直接的對(duì)話,能提供給人們有用、易懂的信息。因此在該系統(tǒng)上增加了按鍵電路和報(bào)警電路。畢業(yè)(論文) 硬件設(shè)計(jì) 62.4.1 4*4 按鍵電路圖圖 1111 4*44*4 按

46、鍵電路按鍵電路 在微型機(jī)系統(tǒng)中,鍵盤(pán)是一種最常用的外設(shè),它由多個(gè)開(kāi)關(guān)組合而成。當(dāng)在鍵盤(pán)上壓一個(gè)鍵是,等于在壓下一個(gè)開(kāi)關(guān)。根據(jù)功能的需要,我選擇了 4*4的矩陣鍵盤(pán),分別定義它們?yōu)?0、1、2、3、4、5、6、7、8、9 十個(gè)數(shù)字鍵和+(上限報(bào)警溫度設(shè)置鍵) 、-(下限報(bào)警溫度設(shè)置鍵) 、#(確定鍵)三個(gè)功能鍵。每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。行線接 p2 口的低四位,列線接入 p2 口的高四位。矩陣的行線和列線分別通過(guò)兩并行接口和 cpu 通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1” ,開(kāi)關(guān)的一端(列線)通過(guò)電阻接 vcc,而接地是通過(guò)程序輸出數(shù)字“0”

47、實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。在進(jìn)入上限報(bào)警溫度設(shè)置或者是下限報(bào)警溫度設(shè)置模式時(shí),用戶可以通過(guò)鍵盤(pán)輸入 0 99的任意溫度上限值和下限值。8如圖 11 所示。圖 12 報(bào)警電路畢業(yè)(論文) 硬件設(shè)計(jì) 7該系統(tǒng)的主要功能就是監(jiān)測(cè)環(huán)境的實(shí)時(shí)溫度,我們不可能一天都去看著顯示,因此當(dāng)環(huán)境溫度超過(guò)我們所設(shè)定值的時(shí)候就要一個(gè)報(bào)警提醒,我們通常都采用聲光報(bào)警,在這里只用了一個(gè)

48、紅色的 led 和一個(gè)藍(lán)色的 led 來(lái)模擬高溫和低溫報(bào)警。8如圖 12 所示。 (圖 13 為系統(tǒng)的整體電路圖)圖 13 系統(tǒng)整體電路圖畢業(yè)(論文) 軟件設(shè)計(jì) 13.3. 軟件設(shè)計(jì)軟件設(shè)計(jì)3.13.1 軟件框圖軟件框圖該系統(tǒng)的程序框圖如圖 14 所示: 對(duì)與該系統(tǒng)的程序來(lái)說(shuō),要比其他的溫度傳感器要復(fù)雜一些,主要就是對(duì) ds18b20 的控制。下面分別來(lái)介紹一下:3.23.2 ds18b20ds18b20 的控制程序的控制程序 3.2.13.2.1 ds18b20ds18b20 的初始化程序的初始化程序?qū)τ?ds18b20 來(lái)說(shuō),它的初始化是很重要的,沒(méi)有初始化,它根本就不能工作。初始化過(guò)程由

49、主機(jī)的復(fù)位脈沖和 1-wire 器件的應(yīng)答脈沖組成。對(duì) 1-wire 器件的復(fù)位脈沖實(shí)際上是主機(jī)通過(guò)拉低總線來(lái)實(shí)現(xiàn)的,主機(jī)通過(guò)拉低總線480um 以后再把總線拉高使總線上所有 1-wire 器件復(fù)位,總線上 1-wire 器件接到復(fù)位脈沖后便通過(guò)拉低總線告訴主機(jī) 1-wire 器件已經(jīng)準(zhǔn)備就緒。5下面是它的初始化子程序:init_1820:setb p2.2nopclr p2.2 ;主機(jī)發(fā)出延時(shí) 537 微秒的復(fù)位低脈沖mov r1,#3tsr1:mov r0,#107djnz r0,$畢業(yè)(論文) 軟件設(shè)計(jì) 2djnz r1,tsr1setb p2.2 ;然后拉高數(shù)據(jù)線nopnopnopmo

50、v r0,#25htsr2:jnb p2.2,tsr3 ;等待 ds18b20 回應(yīng)djnz r0,tsr2ljmp tsr4 ; 延時(shí)tsr3:setb flag1 ; 置標(biāo)志位,表示 ds1820 存在clr p1.7 ;檢查到 ds18b20 就點(diǎn)亮 p1.7ledljmp tsr5tsr4:clr flag1 ; 清標(biāo)志位,表示 ds1820 不存在clr p1.1ljmp tsr7tsr5:mov r0,#117tsr6:djnz r0,tsr6 ; 時(shí)序要求延時(shí)一段時(shí)間tsr7:setb p2.2ret3.2.23.2.2 ds18b20ds18b20 的單字節(jié)的寫(xiě)和讀子程序的單字

51、節(jié)的寫(xiě)和讀子程序?qū)憰r(shí)序起始于單片機(jī)拉低總線。產(chǎn)生寫(xiě) 1 時(shí)序的方式:?jiǎn)纹瑱C(jī)在拉低總線后,接著必須在 15us 之內(nèi)釋放總線,由 5k 上拉電阻將總線拉至高電平;而產(chǎn)生寫(xiě) 0 時(shí)序的方式:在單片機(jī)拉低總線后,只需在整個(gè)時(shí)序期間保持低電平即可(至少 60us)。在寫(xiě)時(shí)序起始后 15-60us 期間,單總線器件采樣總線電平狀態(tài)。如果在此期間采樣為高電平,則邏輯 1 被寫(xiě)入該器件;如果為 0 則寫(xiě)入邏輯 0。5r write_1820:mov r2,#8 ;一共 8 位數(shù)據(jù)clr cwr1:clr p2.2mov r3,#5畢業(yè)(論文) 軟件設(shè)計(jì) 3djnz r3,$rrc amov p2.2,cmo

52、v r3,#21djnz r3,$setb p2.2nopdjnz r2,wr1setb p2.2ret 單總線器件僅在單片機(jī)發(fā)出讀時(shí)序時(shí),才向主機(jī)傳輸數(shù)據(jù),所以,在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要 60us,且在兩次獨(dú)立的讀時(shí)序之間至少需要 1us 的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起至少拉低總線 1us。在主機(jī)發(fā)起讀時(shí)序之后,單總線器件才開(kāi)始在總線上發(fā)送 0 或 1。若從機(jī)發(fā)送 1,則保持總線為高電平;若發(fā)送 0,則拉低總線。當(dāng)發(fā)送 0 時(shí),從機(jī)在該時(shí)序結(jié)束后釋放總線,由上拉電阻將總線拉回至空閑高電平狀態(tài)。從機(jī)發(fā)出的數(shù)據(jù)在起始時(shí)序之后,保持有

53、效時(shí)間15us,因而,主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的 15us 之內(nèi)采樣總線狀態(tài)。read_18200:mov r4,#2 ; 將溫度高位和低位從 ds18b20 中讀出mov r1,#29h ; 低位存入 29h(temper_l),高位存入28h(temper_h)re00:mov r2,#8 ;數(shù)據(jù)一共有 8 位re01:clr csetb p2.2nopnopclr p2.2nopnopnopsetb p2.2mov r3,#9re10: djnz r3,re10畢業(yè)(論文) 軟件設(shè)計(jì) 4mov c,p2.2mov r3,#23re20: djnz r3,re20rr

54、c adjnz r2,re01mov r1,adec r1djnz r4,re00ret3.2.33.2.3 ds18b20ds18b20 的分辨率設(shè)置子程序的分辨率設(shè)置子程序分辨率的設(shè)置是配置寄存器中的 r1 和 r0 用來(lái)決定的。6display: mov a,29h ; 將 29h 中的十六進(jìn)制數(shù)轉(zhuǎn)換成 10 進(jìn)制 mov b,#10 ; 10 進(jìn)制/10=10 進(jìn)制div abmov b_bit,a ; 十位在 amov a_bit,b ;個(gè)位在 bmov dptr,#numtab ;指定查表啟始地址mov r0,#4 dpl1: mov r1,#250 ;顯示 1000 次dplop

55、: mov a,a_bit ;取個(gè)位數(shù)movc a,a+dptr ;查個(gè)位數(shù)的 7 段代碼mov p0,a ;送出個(gè)位的 7 段代碼clr p2.7 ;開(kāi)個(gè)位顯示acall d1ms ;顯示 1mssetb p2.7mov a,b_bit ;取十位數(shù)movc a,a+dptr ;查十位數(shù)的 7 段代碼mov p0,a ;送出十位的 7 段代碼clr p2.6 ;開(kāi)十位顯示acall d1ms ;顯示 1mssetb p2.6djnz r1,dplop ;100 次沒(méi)完循環(huán)djnz r0,dpl1 ;4 個(gè) 100 次沒(méi)完循環(huán)ret;1ms 延時(shí)d1ms: mov r7,#80 畢業(yè)(論文) 軟

56、件設(shè)計(jì) 5djnz r7,$ret3.3 系統(tǒng)的程序設(shè)計(jì)溫度主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示,讀出并處理溫度傳感器的測(cè)量溫度值,溫度測(cè)量每一秒進(jìn)行一次。連續(xù)讀出被測(cè)溫度值,并在數(shù)碼管上顯示當(dāng)前溫度值。3 331 主程序分段程序main:lcall init_1820 ;調(diào)用復(fù)位 ds18b20 子程序main1:lcall get_temper ;調(diào)用讀溫度子程序lcall formula ;通過(guò)公式計(jì)算,小數(shù)點(diǎn)后顯示兩位lcall bcdlcall display ;調(diào)用串口顯示子程序lcall delay500 ;延時(shí) 0.5 秒lcall delay500 ;延時(shí) 0.5 秒lcal

57、l delay500 ;延時(shí) 0.5 秒ajmp main1ds18b20復(fù)位初始化程序:初始化過(guò)程由主機(jī)的復(fù)位脈沖和1-wire器件的應(yīng)答脈沖組成。對(duì)1-wire器件的復(fù)位脈沖實(shí)際上是主機(jī)通過(guò)拉低總線來(lái)實(shí)現(xiàn)的,主機(jī)通過(guò)拉低總線480um以后再把總線拉高使總線上所有1-wire器件復(fù)位,總線上1-wire器件接到復(fù)位脈沖后便通過(guò)拉低總線告訴主機(jī)1-wire器件已經(jīng)準(zhǔn)備就緒。init_1820:setb wddatanopclr wddata ;主機(jī)發(fā)出延時(shí) 540 微秒的復(fù)位低脈沖mov r0,#36畢業(yè)(論文) 軟件設(shè)計(jì) 6lcall delaysetb wddata ;然后拉高數(shù)據(jù)線nop

58、nopmov r0,#36tsr2:jnb wddata,tsr3 ;等待 ds18b20 回應(yīng)djnz r0,tsr2ljmp tsr4 ; 延時(shí)tsr3:setb flag1 ; 置標(biāo)志位,表示 ds1820 存在ljmp tsr5tsr4:clr flag1 ; 清標(biāo)志位,表示 ds1820 不存在ljmp tsr7tsr5:mov r0,#06bhtsr6:djnz r0,tsr6 ;復(fù)位成功!時(shí)序要求延時(shí)一段時(shí)間tsr7:setb wddataret讀出轉(zhuǎn)換后的溫度值:先復(fù)位 ds18b20,跳過(guò) rom 匹配,發(fā)出溫度轉(zhuǎn)換命令,等待 ad 轉(zhuǎn)換結(jié)束后,準(zhǔn)備讀溫度前仍要先復(fù)位,跳過(guò)

59、rom 匹配,發(fā)出讀溫度命令,最后將讀出的九個(gè)字節(jié)數(shù)據(jù)保存到 60h-68h。get_temper:setb wddata ; 定時(shí)入口lcall init_1820 ;先復(fù)位 ds18b20jb flag1,tss2ret ; 判斷 ds1820 是否存在?若 ds18b20 不存在則返回tss2:mov a,#0cch ; 跳過(guò) rom 匹配lcall write_1820mov a,#44h ; 發(fā)出溫度轉(zhuǎn)換命令lcall write_1820mov r0,#50 ;等待 ad 轉(zhuǎn)換結(jié)束,12 位的話 750 微秒.lcall delaylcall init_1820 ;準(zhǔn)備讀溫度前先復(fù)

60、位mov a,#0cch ; 跳過(guò) rom 匹配畢業(yè)(論文) 軟件設(shè)計(jì) 7lcall write_1820mov a,#0beh ; 發(fā)出讀溫度命令lcall write_1820lcall read_18200 ; 將讀出的九個(gè)字節(jié)數(shù)據(jù)保存到 60h-68hret寫(xiě) ds18b20 的子程序(有具體的時(shí)序要求):write_1820:mov r2,#8 ;一共 8 位數(shù)據(jù)clr c wr1:clr wddatamov r3,#6djnz r3,$rrc amov wddata,cmov r3,#24djnz r3,$setb wddatanopdjnz r2,wr1setb wddatare

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論