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

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 利用PC并行口實現(xiàn)數(shù)據(jù)的快速獲取和控制

          利用PC并行口實現(xiàn)數(shù)據(jù)的快速獲取和控制

          作者:珊譯 時間:2003-06-13 來源:電子設(shè)計應(yīng)用 收藏
          設(shè)計者往往希望PC機不加任何內(nèi)部硬件即可實現(xiàn)對系統(tǒng)的完全控制。為此,設(shè)計人員需要至少一個獲取數(shù)據(jù)的模擬通道來監(jiān)測受控信號;另外,還要有數(shù)字輸出通道來處理外部器件的開關(guān)動作。
          為實現(xiàn)精確控制,需將開關(guān)控制換為PID控制,即將數(shù)字輸出信號替換為模擬輸出或PWM??刂齐娐钒ò送ǖ赖?2位ADC,2位數(shù)字輸出(DO),2位PWM和2位數(shù)字輸入(DI),它們以EPP模式通過并行口與PC機相連。在EPP模式下,端口是4個控制位的8位雙向總線。一個完整的I/O周期約需1ms,故最大轉(zhuǎn)換速率為1MB/s。因為A/D轉(zhuǎn)換需要幾個I/O周期,模擬轉(zhuǎn)換速率約為100kHz,而開關(guān)轉(zhuǎn)換非常迅速,可在1ms內(nèi)完成,故系統(tǒng)反應(yīng)時間很短。
          由于CPLD的靈活性好、更經(jīng)濟,越來越多的數(shù)字設(shè)計是基于CPLD的,它以一個單高密度器件取代了搭建邏輯電路的舊模式,使設(shè)計更加靈活、緊湊、速度快。設(shè)計、綜合、模擬CPLD的內(nèi)容有多種方法:硬件描述語言(如VHDL)和電路原理圖等。
          圖1中最關(guān)鍵的部分是U1,它將所有電路邏輯集成在一個芯片上。由于并口不包括地址總線,系統(tǒng)要在2個周期內(nèi)進(jìn)行數(shù)據(jù)的讀或?qū)?,即先寫地址,再進(jìn)行讀或?qū)憯?shù)據(jù)。
          U2中MAX1973為12位數(shù)據(jù)獲取系統(tǒng),單電源5V供電,提供8個可編程模擬輸入通道,其電壓可選范圍:±10V,±5V,0~10V,0~5V。該設(shè)備提供與傳感器(4~20mA,±12V和±15V)的靈活接口。另外,轉(zhuǎn)換器有過壓保護(hù)(±16.5V),采樣速率可達(dá)100kSa/s。U2使用內(nèi)部時鐘,經(jīng)C8、C9和C10接模擬地,通過寫ADC的控制位激活A(yù)/D轉(zhuǎn)換。其控制方式為“0-1-0-R-B-A2-A1-A0”,其中R為一個范圍(0~5V,1~10V),B為極性選擇(0為單極,1為雙極),A2-A1-A0為通道選擇。
          U3為10MHz時鐘電路,C1、C2、C3、L1、L2為模擬部分電源引腳的濾波電路,R1、C6為上電復(fù)位電路,U4為5V低壓穩(wěn)壓器。


          圖1 用PC實現(xiàn)完全系統(tǒng)控制的CPLD電路設(shè)計。本電路包括八通道12位ADC,2位數(shù)字輸出(DO),2位PWM和2位數(shù)字輸入(DI),均通過并行口與PC機相連



          關(guān)鍵詞: PC并行口

          評論


          技術(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); })();