程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC++實現計算機並口的數據采集

VC++實現計算機並口的數據采集

編輯:關於VC++

摘 要 並口制作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進制合並

………… //進一步數據處理

結束語

本系 統可應用在一些實時性要求不是很高的系統中,它拋棄龐大的單片微型計算機系統,也不占 用微機擴展槽,體積小,耗費少,且突破了傳統微機數據采集的固定模式,使數據采集裝置 與微機的接口更加靈活、方便。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved