VC++實現電腦並口的資料擷取

來源:互聯網
上載者:User
摘 要 並口製作A/D轉換介面電路,利用VC++提供的現成函數,可以直接控制和讀寫標準並口,具有無需開啟機箱、開發成本低廉,製作方便等特點。

  關鍵詞  電腦並口; 模數轉換; VC++

  前言

  電腦與外圍裝置的串連,有多種介面方式:串列、USB、SCSI、並行等,每一種介面方式都有其優點和缺點,由於串列和USB介面的抗幹擾能力較強,傳輸距離遠,所以在資料通訊的時候,多採用以上兩種方式。但有些應用場合,如CCD、視頻資料擷取卡,其要求的傳輸距離近,這時候採用並行介面,而且這樣的運用隨著人們對資料處理速度要求的提高會越來越多。

  另外當電腦用於類比訊號檢測時,需要配置A/D轉換介面電路,商品化的資料擷取卡價格比較貴,而自己開發一套傳統的資料擷取卡需要很多知識的儲備,尤其涉及到了低層驅動程式的開發,難度比較大。

  並行介面的腳位定義

  1、物理介面描述

  電腦並口適配器或資料採集卡基本上都採用多模式方式控制晶片,並口適配器的工作方式可以在CMOS中設定。並口工作模式有:標準並行介面(SPP)、簡單雙向介面(PS/2)、增強型並行介面(EPP1.9)、擴充功能介面(ECP)等。

  物理介面採用了IEEE1284標準描述的Dsub25針內孔式連接器。管腳訊號隨工作模式不同也有所不同,下面就預設工作都是SPP模式說明一下(見表1)。

  其中S對應狀態寄存器,C對應控制寄存器,它們對應的地址分別為基址(378H)+1、基址(378H)+2。

  表1並行連接埠SPP模式下物理連線及輸出方向簡介

  

  2、相關寄存器描述

  圖1是印表機適配器的控制寄存器,它只用了其中的低5位。

  

  圖1 控制寄存器

  圖2是印表機適配器的狀態寄存器,它只用了其中的高5位。

  

  圖2 狀態寄存器

  其中每位與引腳對應關係如表1所示。

  1、AD7820引腳及功能

  AD7820是AD公司的一種與微處理器相容的高速8位模數轉換器(ADC)晶片採用單+5V供電,無需外接時鐘,內部有取樣保持電路,轉換時間達到1.36 μs。引腳3所示

  引腳功能介紹:

  Vin類比訊號輸人;

  

  圖3 AD7820引腳圖

  DBO-DB7三態資料輸出;

  /RDY寫控制/輸出準備好;

  MODE模式選擇,內部通過一個50μA電流源拉低,MODE=0時啟用讀模式,MODE=1時啟用寫一讀模式;

    讀控制,低電平時訪問資料;

  中斷輸出控制位,低電平時表示AD轉換結束;

  GND電源地;

  VREF(一)參考電壓負端(一),零碼輸入類比電壓,範圍是:GND≤VREF(一) ≤VREF(十);

  VREF(+)參考電壓正端(十),滿配量輸入類比電壓,範圍是:VREF(一) ≤VREF(十) ≤VDD;

   片選輸人,進行讀或寫操作時,必須為低電平;

  溢出標誌位;

  NC空管腳;

  VDD電源+5V.

  2、電路實現

  

  圖4 A/D轉換介面電路

  A/D轉換介面電路原理4所示,AD7820工作在讀模式下,只要 產生一個負脈衝就開始資料轉換。 所需的控制訊號由印表機控制口的C1位輸出線引腳14腳產生,向 引腳輸出一個負脈衝,A/D轉換開始,在1.36 μs之後轉換結束,資料鎖存在片內三態輸出資料鎖存器中, 引腳輸出一個低電平。 引腳與印表機狀態口的S7位對應的插座11腳串連,通過查詢狀態口的S7位即可知道轉換是否結束。

  圖4中74LS157為四2選1資料選取器,用於將結果分兩次傳給印表機狀態口的S3~S6位,也就是與印表機的引腳15、13、12、10相連。 的控制訊號由印表機控制口的C2位16腳控制。電腦通過二次從印表機狀態口獲得資料。

  軟體實現

  PC機配置上述A/D轉換介面電路之後,就可以對類比電訊號的檢測了,類比電訊號的輸入範圍為0~4.98V。配上感應器之後,就可用於非電學類比量的檢測。

  下面給出一段小程式採用VC++語言編寫的。VC++中對連接埠的輸入/輸出,可以通過連接埠I/O函數一in p、一ou tp來實現,函數包含在conio. h庫中。

  ……………..

  -outp(0x37a,3) ; //清理連接埠

  -outp(0x37a,0) ; //啟動a/d轉換

  Do{datainput=-inp(0x379)&0x80} ;

  While(datainput!=0x80) ; //等待轉換結束

  Data=-inp(0x379); //輸入低四位元據

  Data=Data&0x78 ;

  Data1=Data>>3;

  -outp(0x37a,0x4); //控制16腳為高電平

  Data=-inp(0x379) ; //輸入高四位

  Data=Data&0x78 ;

  -outp(0x37a,3) ; //使A/D停止轉換

  Data=Data<<1;

  Data=Data|Data1 //8位2進位合并

  ………… //進一步資料處理

  結束語

  本系統可應用在一些即時性要求不是很高的系統中,它拋棄龐大的單片微型計算機系統,也不佔用微機擴充槽,體積小,耗費少,且突破了傳統微機資料擷取的固定模式,使資料擷取裝置與微機的介面更加靈活、方便。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.