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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AT89C51單片機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計新方法

          基于AT89C51單片機(jī)的數(shù)據(jù)采集系統(tǒng)設(shè)計新方法

          作者: 時間:2012-11-02 來源:網(wǎng)絡(luò) 收藏

          引言

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

          近年來,隨著制造技術(shù)的發(fā)展,的價格越來越低,性能卻不斷提升,因而其應(yīng)用范圍也越來越廣。然而在開發(fā)的應(yīng)用時,傳統(tǒng)一般都需要大量的硬件設(shè)備,這些設(shè)備極易損壞而且攜帶不方便。為此,本文詳細(xì)說明了如何利用Pro-teus和兩款串口仿真軟件來進(jìn)行程序及外圍電路的仿真。采用該可以大大簡化硬件電路測試和調(diào)試過程,對單片機(jī)系統(tǒng)開發(fā)具有指導(dǎo)意義。本文介紹的AT89C5l單片機(jī)的系統(tǒng)能實現(xiàn)16路信號輸入,每一路都是0~10 mV的信號,每秒鐘采集一遍,從而將數(shù)據(jù)傳給上位PC計算機(jī)。

          1 硬件

          1.1 主控芯片

          是一種帶有4 KB閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS 8位微處理器,可為很多嵌入式控制系統(tǒng)提供靈活且價廉的方案。所以,本采用ATMEL公司的作為程序的主控芯片。

          AT89C51數(shù)據(jù)總線是由P0口提供的,P0口本身能以多種方式提供數(shù)據(jù)總線和地址總線。當(dāng)ALE輸出信號為高電平時,P0將輸出的數(shù)據(jù)鎖入總線驅(qū)動器中作為地址的低8位,然后和P2送出來的高8位地址一起組成一個完整的16位地址,以尋址到外部的64KB的地址空間。AT89C51的地址總線比較簡單(只有3個:RD、WR、PSEN),其中RD是用來讀取外部數(shù)據(jù)內(nèi)存的控制線,WR是用來寫數(shù)據(jù)到外部數(shù)據(jù)內(nèi)存的控制線,PSEN是用來存取外部程序內(nèi)存的讀取控制線。

          由于P0口是數(shù)據(jù)和地址分時復(fù)用口,故要進(jìn)行地址鎖存,本設(shè)計使用74HC573作為鎖存器。

          1.2 系統(tǒng)硬件電路

          本系統(tǒng)的硬件電路原理如圖1所示。因為ADC0809的地址選擇端A、B、C都接地,所以ADC0809的通道只有IN0被選通。16路模擬信號連接到多路選擇模擬開關(guān)HCC4067后,即可通過地址選擇端A、B、C、D進(jìn)行選擇,每一次選通一路,選通的通道經(jīng)IO COM X和ADC0809的IN0相連,以進(jìn)行A/D轉(zhuǎn)換。P2.7(地址總線最高位A 15)可作為A/D轉(zhuǎn)換的啟動開關(guān),P2.7為低電平有效。在啟動A/D轉(zhuǎn)換時,可由寫信號WR和P2.7控制ADC0809的地址鎖存和轉(zhuǎn)換啟動。而在讀取轉(zhuǎn)換結(jié)果時,則由讀信號RD和P2.7控制ADC0809的OE信號。若令P2.7為0,74HC573的A、B、C、D即可給出被選擇的模擬通道的地址,此時若ABCD=0000,則16路信號的100被選通,并將其數(shù)據(jù)送到ADC0809的IN0中,地址是7FF0H;若ABCD:1111,地址為7FFFH,則指向IO15。所以,16路信號依次對應(yīng)的地址為7FFOH~7FFFH。轉(zhuǎn)換完成后,數(shù)據(jù)將保存到一數(shù)組中,直到當(dāng)上位PC機(jī)通過串行口發(fā)信號時,AT89C51通過檢測地址是否和本機(jī)地址相符來作出動作。如果地址相符,則發(fā)送A/D轉(zhuǎn)換結(jié)果,如不相符,則繼續(xù)等待。

          1.3 信號選通與調(diào)理

          本系統(tǒng)要求有16路模擬信號輸入,而且必須將這些信號互相隔離,然后才能對這些信號逐一選通后進(jìn)入A/D轉(zhuǎn)換。為此,本系統(tǒng)選用了16選1多路模擬開關(guān)HCC4067。

          一般傳感器的輸出信號都比較微弱,要將該微弱信號轉(zhuǎn)換成有用的信號以便于后期使用,就要加入信號調(diào)理電路,其作用是進(jìn)行信號放大和去除干擾等。本設(shè)計中的信號輸入每路都是0~10mV.但ADC0809的輸入要求是0~5 V,因此選用運(yùn)算放大器OP07來進(jìn)行信號放大。OP07是一種精密運(yùn)算放大器,它使用雙極性電源供電,精度較高,放大倍數(shù)為500,可把0~10 mV信號放大到0~5 V。使用OP07的信號調(diào)理電路。

          1.4 A/D采樣電路

          ADC0809是美國NS公司生產(chǎn)的CMOS組件,是一種8路輸入單片模數(shù)轉(zhuǎn)換器件,采用逐位逼近式A/D轉(zhuǎn)換原理,它的輸出輸人接口全部為TTL電平,數(shù)據(jù)輸出口線為三態(tài),可以直接接到微機(jī)系統(tǒng)總線上,而無需另加I/O接口芯片。

          由于本設(shè)計中使用16選1模擬開關(guān)來進(jìn)行信號的選擇,因此,ADC0809的信號選擇功能就不使用了,設(shè)計時把ADC0809的地址選擇端A、B、C都接地,即ABC=000,這樣,選通通道始終是IN0。將EOC通過非門連接到AT89C51的INT0腳,可通過查詢方式來檢測轉(zhuǎn)換是否完成。

          由于ADC0809的典型工作頻率640 kHz不太容易得到,所以通常使用相近頻率且容易獲得的信號進(jìn)行替代。本設(shè)計中,單片機(jī)的晶振頻率12MHz,ALE信號輸出為晶振頻率的六分之一(即2MHz、),可將該2 MHz經(jīng)過74HC74四分頻后得到500 kHz信號來給ADC0809使用。

          1.5 串行口控制

          AT89C51內(nèi)部有一個可編程的全雙工串行通信接口,該口能同時進(jìn)行串行發(fā)送和接收,以便通過RXD引腳(串行數(shù)據(jù)接收端)和TXD引腳(串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。AT89C51串行口有四種工作方式,本設(shè)計中,AT89C51串行口工作于方式3。串口方式3的波特率是可變的,它可由定時器T1的溢出率來控制。通過計算可以得到T1的裝載初值為0xfd,波特率為9600bps。

          RS232是用正負(fù)電壓來表示邏輯狀態(tài)的,它與TTL以高低電平來表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計算機(jī)接口或與終端的TTL器件連接,必須在RS232與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。目前廣泛使用的集成電路轉(zhuǎn)換器件是MAX232芯片,它可完成TTL到EIA的雙向電平轉(zhuǎn)換。MAX232是一種雙組驅(qū)動器/接收器,片內(nèi)含有一個電容性電壓發(fā)生器,可在單5V電源供電時提供EIA/TIA-232-E電平。每個接收器均可將EIA/TIA-232-E電平轉(zhuǎn)換為5 V TTL/CMOS電平。這些接收器具有1.3 V的門限值及0.5V的典型遲滯,而且可以接收±30 V的輸入。利用MAX232芯片連接單片機(jī)和PC的具體電路。

          由以上器件分析可知該系統(tǒng)所用到的電源電壓總共有兩種,其中運(yùn)放OP07使用±12 V,其它芯片使用+5 V電壓。


          上一頁 1 2 3 下一頁

          評論


          相關(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); })();