• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用并行方式實現(xiàn)快速讀寫多只單總線器件

      2010-09-13 02:20:56
      科技傳播 2010年15期
      關(guān)鍵詞:溫度傳感器總線器件

      方 凱

      山東藝術(shù)學(xué)院,山東濟南 250014

      用并行方式實現(xiàn)快速讀寫多只單總線器件

      方 凱

      山東藝術(shù)學(xué)院,山東濟南 250014

      本文簡單的介紹了單總線串行總線信號傳輸方式,并提出一種利用MCU的并口進行字節(jié)尋址的方式,同時對多個單總線器件進行并行讀寫的方法及其具體的算法實現(xiàn)。

      單片機;MCU;單總線;1-Wire Bus

      目前,常用的MCU與外接的元器件進行數(shù)據(jù)通信的串行總線主要有I2C總線、SPI總線和SCI總線。其中I2C總線以2線連接(一條時鐘線,一條數(shù)據(jù)線)進行同步串行通信;SPI總線則以3線連接(一條時鐘線,一條數(shù)據(jù)輸入線,一條數(shù)據(jù)輸出線)進行同步通信;SCI總線是以兩線連接(一條數(shù)據(jù)輸入線,一條數(shù)據(jù)輸出線)進行異步串行進行通信的。這些總線至少需要兩條或兩條以上的信號線。而美國的DALLASS半導(dǎo)體公司推出的單總線(1-Wire Bus)技術(shù)采用了單根信號線,既可傳輸時鐘,又能傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而這種單總線技術(shù)具有線路簡單,硬件開銷少,成本低廉,便于總線擴展和維護等優(yōu)點。 目前,常見的單總線器件主要有數(shù)字溫度傳感器DS18B20、A/D轉(zhuǎn)換器如DS2450、電源管理芯片DS2438等。

      對于單總線器件,每一個器件內(nèi)都有一個64位的ROM,包含有8位的產(chǎn)品系列編碼和48位的ID號。這些ID號對每個單總線器件都是唯一的,因此我們可以在一條單總線上掛接多個單總線器件,然后使用單總線傳輸協(xié)議規(guī)定的ReadROM和SearchROM的操作命令來搜索這些器件的ID號,并用MatchROM命令選擇各個特定ID號的單總線器件分別對其進行讀寫。

      但是,在實際應(yīng)用中,尤其是在一個MCU上連接有多個同類型的單總線器件的情況下,這種通過搜索和指定ID號來讀寫單總線器件的方式并不方便。我們雖然可以用ID號來區(qū)分各個器件并且分別對其讀寫而互不干擾,但是沒有很簡單的辦法把每一個ID號和某個具體的單總線器件對應(yīng)起來,因為每個單總線器件的ID號都是隨機的,而且這個ID號并沒有標示在元件上面。比方說,要在一條單總線上連接兩個DS18B20溫度傳感器,分別測量室內(nèi)和室外的溫度,可以用程序搜索到兩個不同的ID號,得到兩個溫度值,但是我們并不知道讀出來的兩個值哪個是室內(nèi)的,哪個是室外的。雖然,對于上面的實例我們可以通過手動屏蔽掉一個器件的方式確認哪個ID對應(yīng)哪個器件,并修改MCU的程序使之分別顯示室內(nèi)外溫度,但是如果用于大批量生產(chǎn)的實際產(chǎn)品時,我們不可能對每一個產(chǎn)品的ID號和實際所在的位置進行手動對應(yīng)。

      因此,可以考慮換一種方式來對多個單總線進行操作:利用MCU的并口同時對多個單總線器件進行讀寫。我們將多個單總線器件分別掛到MCU一個并口的多個IO端上,這樣對于常用的如51系列PIC系列或者AVR系列等8位MCU,一個單總線讀寫周期內(nèi)就能同時讀寫8個單總線器件,而且每個單總線器件的位置和MCU并口IO端的位置都是對應(yīng)的。

      本文以最常用的單總線器件溫度傳感器DS18B20和最常用的51系列MCU為例,闡述了這種操作方式的實現(xiàn)。

      電路的連接如下:將8只DS18B20溫度傳感器各自的DQ端分別與89C51單片機的并口P1的8個IO端相連,然后各傳感器的VCC和GND腳分別接電源和地。

      根據(jù)單總線通信協(xié)議規(guī)定,在每一個單總線讀寫時序中,一條總線只能傳輸一位數(shù)據(jù)。MCU向單總線器件寫數(shù)據(jù)時,MCU在拉低總線10~15uS后釋放總線,即向單總線器件寫1;若MCU拉低總線后保持60uS的低電平,則向單總線器件寫0。

      MCU從單總線單總線器件讀取數(shù)據(jù)時,MCU將總線下拉為低電平1uS左右后釋放總線,單總線器件在檢測到總線電平被拉低后15uS后向MCU傳輸數(shù)據(jù),若單總線器件發(fā)送1,則總線保持高電平,若發(fā)送0,則拉低總線。

      具體對于一個DS18B20,我們要輸出或輸入各類數(shù)據(jù)時,可以采用位尋址方式,直接對連接單總線器件的IO端口進行位操作,產(chǎn)生上述時序以對單總線器件進行讀寫。但是,對于并行連接的多個DS18B20,如果還采用上述方法,程序就會變得比較復(fù)雜,而且速度也會很大的減慢,所以我們換一種方式,用字節(jié)尋址的方式來同時讀寫連接于一個并口上的一組DS18B20,這樣就可以一次讀入或?qū)懗?個位的數(shù)據(jù),從而達到簡化程序并提高讀寫效率的目的。

      以并行方式該讀取數(shù)據(jù)的具體實現(xiàn)算法如下:

      使用這樣的方法,我們就可以并行的方式一次讀取不超過8個的DS18B20單總線溫度傳感器的溫度值到一個8字節(jié)內(nèi)存數(shù)組TData[]中,而所耗用的時間和讀取一個DS18B20單總線溫度傳感器的時間幾乎是相同的。不過,這種方式讀取的各個數(shù)據(jù)位在內(nèi)存中不是順序排列的,而是如表1所示的那樣的交叉排列的。我們必須再用一段程序處理一下,才能得到所需的各個溫度值。

      TData[7] TData[6] TData[5] TData[4] TData[3] TData[2] TData[1] TData[0] Data[0] Bit7.0 Bit6.0 Bit5.0 Bit4.0 Bit3.0 Bit2.0 Bit1.0 Bit0.0 Data[1] Bit7.1 Bit6.1 Bit5.1 Bit4.1 Bit3.1 Bit2.1 Bit1.1 Bit0.1 Data[2] Bit7.2 Bit6.2 Bit5.2 Bit4.2 Bit3.2 Bit22. Bit1.2 Bit0.2 Data[3] Bit7.3 Bit6.3 Bit5.3 Bit4.3 Bit3.3 Bit2.3 Bit1.3 Bit0.3 Data[4] Bit7.4 Bit6.4 Bit5.4 Bit4.4 Bit3.4 Bit2.4 Bit1.4 Bit0.4 Data[5] Bit7.5 Bit6.5 Bit5.5 Bit4.5 Bit3.5 Bit2.5 Bit1.5 Bit0.5 Data[6] Bit7.6 Bit6.6 Bit5.6 Bit4.6 Bit3.6 Bit2.6 Bit1.6 Bit0.6 Data[7] Bit7.7 Bit6.7 Bit5.7 Bit4.7 Bit3.7 Bit2.7 Bit1.7 Bit0.7

      表1 內(nèi)存中存儲的數(shù)據(jù)Tdata[]與實際的8個溫度讀數(shù)Data0-7之間的關(guān)系

      如表1所示,我們要設(shè)計一個將一個將縱向8位數(shù)據(jù)轉(zhuǎn)換成橫向8位的數(shù)據(jù)程序,便可得到各個傳感器溫度讀數(shù)的數(shù)據(jù)字節(jié)。

      數(shù)據(jù)轉(zhuǎn)換的算法的實現(xiàn)如下:

      具體對于DS18B20溫度傳感器而言,因為溫度讀數(shù)是以高字節(jié)和低字節(jié)兩個字存儲的,因此上述程序需要運行兩次方能得到最終的讀數(shù)。

      同樣,如果需要向各個單總線器件寫入數(shù)據(jù),也需要先把要寫入各個單總線器件的數(shù)據(jù)存儲到一個數(shù)組中,用上述算法進行轉(zhuǎn)換,然后在寫入。

      寫入數(shù)據(jù)的具體算法如下:

      這樣,通過上述方法,就可以實現(xiàn)一次對連接個一個MCU并口的不多于8個的單總線器件進行讀寫。

      這種對多個單總線并行讀寫的方式雖然比傳統(tǒng)的單線串接的方式使用了更多的MCU的IO端口,線路連接也使用了更多的連線,但是這樣可以繞過對單總線器件的ROM ID的搜索和匹配操作,節(jié)省了每次數(shù)據(jù)讀寫操作時間;而且一次可以讀寫8組數(shù)據(jù)而所耗費的時間與讀寫一個單總線器件的時間基本相同,很大程度的提高了工作效率。另外,每個器件的讀寫都和MCU的一個IO端口對應(yīng),這樣就可以很方便的應(yīng)用在批量生產(chǎn)的工業(yè)產(chǎn)品上。所以,這種對并行讀寫的方式還是有一定的實際應(yīng)用價值的。

      [1]陳志英,李光輝.單總線(1-Wire Bus)技術(shù)及其應(yīng)用[J].國外電子元器件,2003(8).

      [2]潘勇,孟慶斌.基于DS18B20的多點溫度測量系統(tǒng)設(shè)計[J].電子測量技術(shù),2008(9).

      [3]謝維成,楊加國.單片機原理與應(yīng)用及C51程序設(shè)計[M].北京:清華大學(xué)出版社,2006.

      [4]馬忠梅,籍順心.單片機的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2003:53-58.

      TP368.1

      A

      1674-6708(2010)24-0200-02

      猜你喜歡
      溫度傳感器總線器件
      溫度傳感器DS18B20在溫度計設(shè)計中的應(yīng)用
      電子制作(2019年12期)2019-07-16 08:45:44
      一種高性能CMOS溫度傳感器
      基于PCI Express總線的xHC與FPGA的直接通信
      機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
      XTR105電流變送器在溫度傳感器中的應(yīng)用
      電子制作(2018年12期)2018-08-01 00:47:40
      旋涂-蒸鍍工藝制備紅光量子點器件
      面向高速應(yīng)用的GaN基HEMT器件
      溫度傳感器在筆記本電腦散熱系統(tǒng)中的應(yīng)用
      多通道ARINC429總線檢查儀
      一種加載集總器件的可調(diào)三維周期結(jié)構(gòu)
      眉山市| 吉首市| 武川县| 东山县| 天门市| 海晏县| 塔城市| 枣强县| 宁海县| 商水县| 新河县| 怀仁县| 北宁市| 枣庄市| 抚州市| 余姚市| 维西| 永善县| 上思县| 松滋市| 光泽县| 乡宁县| 滦平县| 新和县| 麻江县| 浮梁县| 蛟河市| 乌鲁木齐县| 锡林浩特市| 客服| 靖远县| 肥城市| 衡东县| 扎鲁特旗| 中阳县| 栾川县| 军事| 江津市| 平顺县| 蕉岭县| 伊宁市|