<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用ADuC834構(gòu)成二次儀表系統(tǒng)

          利用ADuC834構(gòu)成二次儀表系統(tǒng)

          ——
          作者:山東大學(xué)信息科學(xué)與工程學(xué)院 劉濤 張春業(yè) 時(shí)間:2007-01-26 來源:《國外電子元器件》 收藏

          aduc834是一種真正意義上的完整的數(shù)據(jù)采集系統(tǒng)芯片。這種嶄新的微處理轉(zhuǎn)換器和先進(jìn)的混合信號(hào)處理工藝顯著提高了數(shù)據(jù)采集系統(tǒng)的性能,并大幅度減少了應(yīng)用系統(tǒng)的開發(fā)時(shí)間和成本。aduc834是美國模擬器件(ad)公司最新投入市場的一款微處理轉(zhuǎn)換器產(chǎn)品,它集成了雙路σ-δ型adc、溫度傳感器、增益可程控放大器(pga)、8位51 mcu、62k的可編程程序eeprom、4k的數(shù)據(jù)flash memory、2304字節(jié)的片內(nèi)ram、12位dac以及定時(shí)器、i2c兼容的spi和標(biāo)準(zhǔn)的串行i/o等。由此可見,aduc834本身就是一個(gè)內(nèi)嵌mcu的高性能數(shù)據(jù)采集系統(tǒng),利用它可以極方便地構(gòu)成各種二次儀表系統(tǒng)。

          1 aduc834芯片介紹

          aduc834內(nèi)部集成了兩路獨(dú)立的σ-δadc,其中主通道adc為24位,輔助通道adc為16位。兩個(gè)獨(dú)立的adc通道由于使用了數(shù)字濾波,因而可以實(shí)現(xiàn)寬動(dòng)態(tài)范圍的低頻信號(hào)測量,非常適用于稱重儀、張力應(yīng)變儀、壓力轉(zhuǎn)換器和溫度測量等方面的應(yīng)用。其中主通道的ad輸入范圍在±20mv~±2.56v之間分為8檔,使用時(shí)可任選一檔。由于使用了σ-δ轉(zhuǎn)換技術(shù),因此可以實(shí)現(xiàn)高達(dá)24位無丟失碼性能,且輔助通道還可以作為溫度傳感器使用。

          aduc834利用32khz晶振來驅(qū)動(dòng)片內(nèi)鎖相環(huán)(pll)以產(chǎn)生內(nèi)部所需要的工作頻率,它的微控制器內(nèi)核與8051兼容。片內(nèi)外圍設(shè)備包括一個(gè)與spi和i2c兼容的串行端口、多路數(shù)字輸入/輸出端口、看門狗定時(shí)器、電源監(jiān)視器以及時(shí)間間隔計(jì)數(shù)器。同時(shí)片內(nèi)還提供了62kb閃速/電擦除程序存儲(chǔ)器以及2304字節(jié)的片內(nèi)ram。

          aduc834本身能提供程序串行下載,所以可以直接下載調(diào)試程序,非常方便于程序的開發(fā)和設(shè)計(jì)。因此,利用aduc834可以非常簡單地制作各種復(fù)雜的二次儀表。

          2二次儀表的硬件電路設(shè)計(jì)

          本系統(tǒng)設(shè)計(jì)主要針對(duì)兩路傳感器進(jìn)行采樣,然后進(jìn)行數(shù)據(jù)處理和相應(yīng)的數(shù)據(jù)顯示,同時(shí)要求有復(fù)雜菜單設(shè)計(jì)。由于數(shù)據(jù)處理過程中要用到浮點(diǎn)乘除運(yùn)算,同時(shí)要求有菜單設(shè)置,因此,利用aduc834的62k程序存儲(chǔ)空間可以進(jìn)行各種復(fù)雜的運(yùn)算和處理,而不需要外擴(kuò)程序存儲(chǔ)器。圖1是其硬件設(shè)計(jì)原理圖。

          本文引用地址:http://www.ex-cimer.com/article/20584.htm

          本系統(tǒng)利用aduc834的p3口構(gòu)成3×4鍵盤,并通過p0、p2口和74hc138譯碼器來構(gòu)成10個(gè)數(shù)碼管動(dòng)態(tài)顯示屏,然后利用aduc834的p1.0、p1.1和74hc164構(gòu)成8個(gè)發(fā)光led的顯示,同時(shí)利用a-duc834的串口spi功能進(jìn)行軟件調(diào)試。

          2.1數(shù)碼管的動(dòng)態(tài)顯示

          利用aduc834的p2口的p2.0~p2.4,并通過74hc138譯碼可以得到8個(gè)地址選通信號(hào),而p2.5和p2.6則用于構(gòu)成剩下的2個(gè)選通信號(hào),同時(shí)把p0口作為顯示的數(shù)據(jù)接口。

          用程序可選擇aduc834定時(shí)器t2的自裝入方式,并可將其定時(shí)為2ms,同時(shí)可采用動(dòng)態(tài)方式刷新數(shù)碼管的顯示緩沖區(qū),以實(shí)現(xiàn)動(dòng)態(tài)顯示。

          2.2鍵盤控制電路

          由aduc834的p3口的p3.0~p3.6可以構(gòu)成鍵盤控制電路,其原理圖如圖2所示。

          由圖2可以看出,該鍵盤有3行4列共12個(gè)鍵,使用7個(gè)i/0作為控制線,其中采用p3.0、p3.1、p3.2作為行掃描線,采用p3.3~p3.6作為列回復(fù)線來構(gòu)成矩陣鍵盤。運(yùn)行中,當(dāng)有鍵按下時(shí),程序并不立即進(jìn)入按鍵處理程序,只有在按鍵按下又松開的時(shí)刻才進(jìn)入程序處理,因?yàn)檫@樣可防止按鍵的連擊和抖動(dòng)。

          2.3發(fā)光led設(shè)計(jì)

          由于本系統(tǒng)要求有8種狀態(tài)顯示,故需要使用8個(gè)發(fā)光led來表示當(dāng)前程序運(yùn)行的不同狀態(tài)。而這可利用p1.0、p1.1和74hc164控制8個(gè)發(fā)光數(shù)碼管來進(jìn)行顯示。

          3二次儀表的軟件程序設(shè)計(jì)

          3.1數(shù)據(jù)采集程序

          進(jìn)行ad采集時(shí),可選擇aduc834的內(nèi)部參考電壓(注意此時(shí)內(nèi)部參考電壓是vref=1.25v,所以adc通道輸入范圍都縮小一半),并通過寫寄存器ad0con的rn2、rn1和rn0來選擇不同的輸入范圍,同時(shí)通過寫寄存器ad0con的ch1、ch0來進(jìn)行通道替換,以實(shí)現(xiàn)對(duì)兩個(gè)通道輸入電壓的ad采樣。其初始采集程序如下:


          3.2用戶閃速/電擦除數(shù)據(jù)存儲(chǔ)器的編程

          aduc834的用戶閃速/電擦除數(shù)據(jù)存儲(chǔ)器的容量為4kb,利用這些eeprom可以進(jìn)行系統(tǒng)配置信息的存儲(chǔ)。具體程序如下:




          4結(jié)論

          本文所描述的二次儀表的軟硬件設(shè)計(jì)具有采集速度快、精度高、系統(tǒng)體積小的特點(diǎn),特別適用于需要進(jìn)行復(fù)雜運(yùn)算且要求采集精度較高、體積較小的系統(tǒng)中。在實(shí)際的設(shè)計(jì)開發(fā)中,使用aduc834可在很大程度上縮短開發(fā)時(shí)間并降低成本。另外,筆者設(shè)計(jì)的這款二次儀表在實(shí)際應(yīng)用中也取得了很好的使用效果。




          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();