基于pc機(jī)的智能儀器儀表接口設(shè)計(jì)_第1頁
基于pc機(jī)的智能儀器儀表接口設(shè)計(jì)_第2頁
基于pc機(jī)的智能儀器儀表接口設(shè)計(jì)_第3頁
基于pc機(jī)的智能儀器儀表接口設(shè)計(jì)_第4頁
基于pc機(jī)的智能儀器儀表接口設(shè)計(jì)_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第六章 基于PC機(jī)的智能儀器儀表接口設(shè)計(jì)主要內(nèi)容§6.1 IBMPC/AT概述§6.2 PC/AT系統(tǒng)總線的擴(kuò)充(√)§6.3 GAL譯碼技術(shù)(√)§6.4 PC/AT總線驅(qū)動(dòng)§6.5 PC機(jī)軟件設(shè)計(jì)§6.6 PC機(jī)串口技術(shù)(√)第一頁,編輯于星期六:二十一點(diǎn)二十一分?!?.7 PC機(jī)并行打印口(√)§6.8并行通訊接口(GPIB)

PC機(jī)機(jī)接口技術(shù)(續(xù))第二頁,編輯于星期六:二十一點(diǎn)二十一分。6.1IBMPC/AT概述主要內(nèi)容6.1.1擴(kuò)充槽(圖片)6.1.2存儲(chǔ)器空間和I/O地址分配第三頁,編輯于星期六:二十一點(diǎn)二十一分。6.1.1擴(kuò)充槽(圖片)

第四頁,編輯于星期六:二十一點(diǎn)二十一分。PC104第五頁,編輯于星期六:二十一點(diǎn)二十一分。第六頁,編輯于星期六:二十一點(diǎn)二十一分。6.1.2存儲(chǔ)器空間和I/O地址分配存儲(chǔ)器空間分配;系統(tǒng)硬件內(nèi)存分配方法;MEM接口的尋址方法;I/O地址分配;I/O接口的尋址方法;(詳細(xì))第七頁,編輯于星期六:二十一點(diǎn)二十一分。存儲(chǔ)器空間分配

第八頁,編輯于星期六:二十一點(diǎn)二十一分。系統(tǒng)硬件內(nèi)存分配方法

若需預(yù)先保留0D0000H~0DFFFFH區(qū)域的內(nèi)存,方法如下:1.使DOS不占用 在系統(tǒng)CONFIG.SYS文件中加入:

Device=c:\dos\EMM386.EXEX=d000-dfff2.

使WINDOWS不占用 在WINDOWS的SYSTEM.INI文件中加入:(2K長為一個(gè)單元) [386Enh] EMMExclude=d000-d7ff EMMExclude=d800-dfff第九頁,編輯于星期六:二十一點(diǎn)二十一分。MEM接口的尋址方法1.在DOS下,如需要對(duì)0E0001H單元進(jìn)行操作,則對(duì)應(yīng)地址應(yīng)寫成:0XE0000001(E000:0001H)Temp=(BYTEfar*)0XE0000001;寫:*Temp=data;讀:data=*Temp;2.

用VC5.0編程 如需要對(duì)0D0000H單元進(jìn)行操作,則對(duì)應(yīng)操作地址為其自身。

pt=(unsignedshort*)0x000d0000;寫:*pt=data;讀:data=*pt;

3.

VB可以通過調(diào)用VC編寫的DLL來讀寫MEM。

VB調(diào)用DLL有16/32位系統(tǒng)之分。第十頁,編輯于星期六:二十一點(diǎn)二十一分。I/O地址分配第十一頁,編輯于星期六:二十一點(diǎn)二十一分。I/O接口的尋址方法1.

匯編語言:寫:MOVAL, 10000000B MOVDX, 3FBH OUT DX, AL

讀:MOV DX, 3FDH IN AL, DX2.

BASIC 寫:OUT(&H3FB, &H80)

讀:A=INP(&H3FD)3.

C語音寫:OUTPORTB(0X3FB,0X80)

讀:A=INPORTB(0X3FD)第十二頁,編輯于星期六:二十一點(diǎn)二十一分?!?.2PC/AT系統(tǒng)總線的擴(kuò)充主要內(nèi)容6.2.1PC/ATI/O擴(kuò)展插槽腳原理圖;(√)6.2.2PC/AT總線引腳的功能定義;6.2.3I/O和MEM擴(kuò)展的地址譯碼邏輯;(√)第十三頁,編輯于星期六:二十一點(diǎn)二十一分。6.2.1

PC/ATI/O擴(kuò)展插槽原理圖第十四頁,編輯于星期六:二十一點(diǎn)二十一分。第十五頁,編輯于星期六:二十一點(diǎn)二十一分。6.2.3I/O和MEM擴(kuò)展的地址譯碼邏輯

一、I/O地址譯碼moduleSDC96

title`Sui-daochedecodeofpcc:\sd\sdc96.abl16April1997'

sdc96device`P16V8S';

SAEN,SA9,SA8,SA7,SA6pin1,2,3,4,5;SA5,SA4,SRD,SWR,SA3pin6,7,8,9,11;PCEN,PCS1 pin12,13;H,L,X=1,0,.X.;A=[SA9,SA8,SA7,SA6,SA5,SA4,SA3,X,X,X];

EQUATIONS

!PCEN=(!SRD#!SWR)&!SAEN&(A>=^H200)&(A<=^H27F);!PCS1=!SAEN&(A>=^H200)&(A<=^H27F);

endSDC96第十六頁,編輯于星期六:二十一點(diǎn)二十一分。二、MEM16模式的地址譯碼moduleSDTXtitle`Sui-daochedecodeofpcc:\sd\sdtx.abl16April1997'

sdtxdevice`P16V8S';SAEN,SA19,SA18,SA17,SA16pin1,2,3,4,5;SA15,SA14,SRD,SWR,SA13pin6,7,8,9,11;

PCEN,PCS1,PCS2,PCS3,PCS4pin12,13,14,15,16;

H,L,X=1,0,.X.;

A=[SA19,SA18,SA17,SA16,SA15,SA14,SA13,X,X,X,X,X,X,X,X,X,X,X,X,X];

EQUATIONS!PCEN=(!SRD#!SWR)&!SAEN&(A>=^HE0000)&(A<=^HE1FFF);!PCS1=!SAEN&(A>=^HE0000)&(A<=^HE1FFF);!PCS2=!SAEN&(A>=^HE0000)&(A<=^HE1FFF);

!PCS3=!SAEN&(A>=^HE0000)&(A<=^HE1FFF);

!PCS4=!SAEN&(A>=^HE0000)&(A<=^HE1FFF);endSDTX第十七頁,編輯于星期六:二十一點(diǎn)二十一分。6.3GAL譯碼技術(shù)主要內(nèi)容6.3.1GAL譯碼的特點(diǎn)6.3.2常用GAL器件6.3.3GAL的開發(fā)語言ABEL語言(√)6.3.4寫入設(shè)備第十八頁,編輯于星期六:二十一點(diǎn)二十一分。6.3.1GAL譯碼的特點(diǎn)

.減小系統(tǒng)的硬件規(guī)模,提高系統(tǒng)可靠性;.簡化系統(tǒng)設(shè)計(jì),提高系統(tǒng)速度;.提高系統(tǒng)的開發(fā)效率;.降低系統(tǒng)成本;第十九頁,編輯于星期六:二十一點(diǎn)二十一分。6.3.2常用GAL器件第二十頁,編輯于星期六:二十一點(diǎn)二十一分。6.3.3GAL的開發(fā)語言ABEL語言(√)例程如下所示

moduleSDC96//和end配對(duì)構(gòu)成一個(gè)完整的模塊

title`Sui-daochedecodeofpcc:\sd\sdc96.abl16April1997'//自我注釋標(biāo)題

sdc96device`P16V8S';//指定PAL模型和JED文件名

SAEN,SA9,SA8,SA7,SA6pin1,2,3,4,5;//定義各個(gè)管腳

SA5,SA4,SRD,SWR,SA3pin6,7,8,9,11;//定義輸入管腳

PCEN,PCS1pin12,13;//定義輸出管腳

H,L,X=1,0,.X.;//定義常數(shù)10和任意數(shù).X.A=[SA9,SA8,SA7,SA6,SA5,SA4,SA3,X,X,X];//定義地址集合變量

EQUATIONS//輸入輸出邏輯關(guān)系表達(dá)式

!PCEN=(!SRD#!SWR)&!SAEN&(A>=^H200)&(A<=^H27F);!PCS1=!SAEN&(A>=^H200)&(A<=^H27F);endSDC96//和module構(gòu)成完整模塊第二十一頁,編輯于星期六:二十一點(diǎn)二十一分。ABEL語言符號(hào)定義一.邏輯運(yùn)算符

!A取二進(jìn)制反碼A&B與A#B或A$B異或A!$B同或

二.算術(shù)預(yù)算符

-A取二進(jìn)制補(bǔ)碼A-B減法A+B加法

A*B乘法A/B無符號(hào)整除A%B取模

A<<BA左移B位A>>BA右移B位三.關(guān)系運(yùn)算符

A==B等于A!=B不等于A<B小于

A<=B小于等于A>B大于A>=B大于等于四.優(yōu)先級(jí)

-!&<<>>*/%+-#$!$==!=<<=>>=第二十二頁,編輯于星期六:二十一點(diǎn)二十一分。6.3.4寫入設(shè)備可利用編程器將編譯好的程序?qū)懭隚AL之中,編程器可用ALL03/07等,調(diào)入ABEL語言生成的*.JED文件.第二十三頁,編輯于星期六:二十一點(diǎn)二十一分。ALL07圖片

第二十四頁,編輯于星期六:二十一點(diǎn)二十一分。6.4PC/AT總線驅(qū)動(dòng)地址和控制總線驅(qū)動(dòng)器數(shù)據(jù)總線驅(qū)動(dòng)器第二十五頁,編輯于星期六:二十一點(diǎn)二十一分。6.5PC機(jī)軟件設(shè)計(jì)主要內(nèi)容6.5.1VB和VC++的關(guān)系6.5.2動(dòng)態(tài)鏈接庫DLL6.5.3WIN32API6.5.4用VC編寫WIN32S下的DLL6.5.5VB對(duì)DLL的調(diào)用(√)第二十六頁,編輯于星期六:二十一點(diǎn)二十一分。6.5.5VB對(duì)DLL的調(diào)用(√)

對(duì)于DLL中的過程,Declare語句的完整語法如下:[Public|Private]DeclareSubnameLib”libname”[“Aliasaliasname”][([arglist])]

對(duì)于DLL中的函數(shù),Declare語句的完整語法如下:[Public|Private]DeclareFunctionnameLib”libname”[“Aliasaliasname”][([arglist])][Astype]例如:DeclareFunctioninptLib"c:\vbio32\debug\vbio32.dll"Alias"VBINPORTBYTE32"(ByValportAsInteger)AsByteDeclareSuboutptLib"c:\vbio32\debug\vbio32.dll"Alias"VBOUTPORTBYTE32"(ByValportAsInteger,ByValdatabyteAsByte)第二十七頁,編輯于星期六:二十一點(diǎn)二十一分。VB對(duì)DLL的調(diào)用(續(xù))DeclareFunctionSETMPEGLib"c:\jn\visualtrain\mpegdll.dll"Alias"SETPICDLLMODE"(ByValffAsString,modeAspicdllmode)AsLongTypepicdllmodeFileNumAsByteFileAddAsLongFrameSpeedAsLongSignalNumAsLongPlayStatusAsByterealspeedAsLonglimitspeedAsLongdistanceAsLongRealtime_hourAsLongRealtime_minuteAsLongRealtime_secondAsLongStartStopAsByteForBackAsByteEndType第二十八頁,編輯于星期六:二十一點(diǎn)二十一分。VB對(duì)DLL的調(diào)用(續(xù))數(shù)據(jù)類型對(duì)照表:(自動(dòng)獲取WINAPI調(diào)用聲明演示)

第二十九頁,編輯于星期六:二十一點(diǎn)二十一分。6.6PC機(jī)串口技術(shù)(√)主要內(nèi)容6.6.1PC機(jī)串口的引腳定義信號(hào)線的定義6.6.2邏輯電平變換6.6.38250串行接口芯片6.6.4利用VB的MSCOMM控件來控制PC機(jī)的串行通訊第三十頁,編輯于星期六:二十一點(diǎn)二十一分。6.6.1PC機(jī)串口的引腳定義信號(hào)線的定義第三十一頁,編輯于星期六:二十一點(diǎn)二十一分。1488、14896.6.3邏輯電平變換第三十二頁,編輯于星期六:二十一點(diǎn)二十一分。MAX232

單5V供電,完成TTL和EIA電平互換

雙路串行口

4個(gè)電解電容及其極性連接要正確

邏輯電平變換(續(xù))第三十三頁,編輯于星期六:二十一點(diǎn)二十一分。6.6.38250串行接口芯片(詳細(xì))1.通訊線控制寄存器(3FBH)D1、D0:字符代碼的長度00→5位01→6位10→7位11→8位D2:停止位數(shù)目0→1位1→1.5位(字符長度為5位時(shí))2位(字符長度為6、7、8位時(shí))D3:奇偶校驗(yàn)0→無1→有D4:奇偶校驗(yàn)類型0→奇1→偶校驗(yàn)D5:附著奇偶校驗(yàn)0→該位無效1→奇偶校驗(yàn)位恒為1(若D3=1、D4=0)

奇偶校驗(yàn)位恒為0(若D3=1、D4=1)無奇偶校驗(yàn)位(若D3=0)D6:間斷位設(shè)置0→無效1→強(qiáng)迫連續(xù)輸出空白狀態(tài)(邏輯0電平)D7:尋址位0→正常值1→尋址波特率除數(shù)寄存器第三十四頁,編輯于星期六:二十一點(diǎn)二十一分。2.通訊線狀態(tài)寄存器(3FDH)

相應(yīng)位為1則存在該狀態(tài)D0:接收數(shù)據(jù)就緒(接收數(shù)據(jù)前查之,為“1”則表明接收到了新的數(shù)據(jù))D1:超越錯(cuò)D2:奇偶錯(cuò)D3:格式錯(cuò)D4:間斷檢測(cè)D5:發(fā)送保持寄存器空(發(fā)送前查之,為“1”則表明可以向3F8再次寫入新的待發(fā)數(shù)據(jù))D6:發(fā)送移位寄存器空D7:恒為0第三十五頁,編輯于星期六:二十一點(diǎn)二十一分。3.數(shù)據(jù)發(fā)送保持寄存器(同時(shí)也為接收數(shù)據(jù)保持寄存器)(3F8H)其中D0位為發(fā)送數(shù)據(jù)的第一位,即低位在前發(fā)送。

4.接收數(shù)據(jù)保持寄存器(3F8H)其中D0位為接收的第一位。

第三十六頁,編輯于星期六:二十一點(diǎn)二十一分。5.除數(shù)鎖存器(3F8H/3F9H) 除數(shù)=

BAUDRATE 3F9H 3F8H 300 01 80H 1200 00 60H 2400 00 30H 4800 00 18H 9600 00 0CH第三十七頁,編輯于星期六:二十一點(diǎn)二十一分。6.中斷允許寄存器(3F9H) D0:允許接收數(shù)據(jù)就緒中斷

D1:允許發(fā)送保持寄存器空中斷

D2:允許接收字符錯(cuò)中斷

D3:允許改變MODEM狀態(tài)中斷

7.MODEM控制寄存器(3FCH)

D0: 1→DTR信號(hào)有效

D1: 1→RTS信號(hào)有效第三十八頁,編輯于星期六:二十一點(diǎn)二十一分。二.串行口8250初始化OUT(&H2FB),&H80尋址波特率寄存器OUT(&H2F8),&HC &h000C→BTS=9600OUT(&H2F9),0 OUT(&H2FB),3 數(shù)據(jù)類型8位1個(gè)停止位無奇偶校驗(yàn)OUT(&H2FC),3 DTR和RTS有效信號(hào)OUT(&H2F9),0 非中斷模式第三十九頁,編輯于星期六:二十一點(diǎn)二十一分。三.串行口查詢發(fā)送數(shù)據(jù)FSSJDD:k=INP(&H2FD) k1=kAND&H20 IFk1=&H20THEN OUT(&H2F8),a(i) ELSE GOTOFSSJDD ENDIF第四十頁,編輯于星期六:二十一點(diǎn)二十一分。四.串行口查詢接收數(shù)據(jù)

JSSJDD: k=INP(&H2FD) k2=kAND&H1 IFk2=&H1THEN b=INP(&H2F8) ELSE GOTO JSSJDD ENDIF第四十一頁,編輯于星期六:二十一點(diǎn)二十一分。6.6.5利用VB的MSCOMM控件來控制PC機(jī)的串行通訊

一.MSCOMM控件及其屬性設(shè)計(jì)如圖所示

第四十二頁,編輯于星期六:二十一點(diǎn)二十一分。二.發(fā)送軟件的編寫PrivateSubtimComm_Timer()

yhz=out_Buffer(0)Fori=1To31yhz=yhzXorout_Buffer(i)Nextiout_Buffer(32)=yhz

'surpluxonetotrigtheoverflowout_Buffer(33)=&H66

temp_Buffer=out_BufferMSComm.InputLen=0'Opentheport.MSComm.PortOpen=True'Sendtheattentioncommandtothemodem.frmComm.MSComm.Output=temp_BufferfrmComm.MSComm.PortOpen=FalseEndSubDimtemp_BufferAsVariant第四十三頁,編輯于星期六:二十一點(diǎn)二十一分。三.利用MSCOMM中斷接收數(shù)據(jù)

PrivateSubMSComm_OnComm()SelectCaseMSComm.CommEvent

CasecomEventRxOver'Receivebufferoverflow.IfCommVerify=FalseThen‘如果校驗(yàn)不對(duì),則再次初始化串口

MSComm.PortOpen=FalseMSComm.InputLen=0MSComm.PortOpen=TrueElse

‘處理接收到的有效數(shù)據(jù)

EndIfEndSelectEndSub第四十四頁,編輯于星期六:二十一點(diǎn)二十一分。三.利用MSCOMM中斷接收數(shù)據(jù)(續(xù))

‘接收校核程序FunctionCommVerify()AsBooleanDimtemp_BufferAsVariantDimiAsInteger,ttAsByteDimkkAsSingletemp_Buffer=frmTest.MSComm.InputCommBuffer=temp_Buffertt=CommBuffer(0)Fori=1To31tt=ttXorCommBuffer(i)NextiIftt<>CommBuffer(32)ThenCommVerify=FalseElseIfFirstComm=TrueThenEndIfEndFunction第四十五頁,編輯于星期六:二十一點(diǎn)二十一分。6.7PC機(jī)并行打印口主要內(nèi)容6.7.1打印機(jī)接口“標(biāo)準(zhǔn)”6.7.2IBMPC打印機(jī)接口6.7.3IBMPC打印機(jī)接口編程和系統(tǒng)子程序調(diào)用6.7.4IBMPC并行接口I/O口的擴(kuò)展第四十六頁,編輯于星期六:二十一點(diǎn)二十一分。6.7.2IBMPC打印機(jī)接口第四十七頁,編輯于星期六:二十一點(diǎn)二十一分。每個(gè)打印接口的基本口地址

數(shù)據(jù)狀態(tài)控制

LPT1:378H379H37AHLPT2:278H279H27AHLPT3:3BCH3BDH3BEH第

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論