基于pc机的智能仪器仪表接口设计_第1页
基于pc机的智能仪器仪表接口设计_第2页
基于pc机的智能仪器仪表接口设计_第3页
基于pc机的智能仪器仪表接口设计_第4页
基于pc机的智能仪器仪表接口设计_第5页
已阅读5页,还剩55页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章 基于PC机的智能仪器仪表接口设计主要内容§6.1 IBMPC/AT概述§6.2 PC/AT系统总线的扩充(√)§6.3 GAL译码技术(√)§6.4 PC/AT总线驱动§6.5 PC机软件设计§6.6 PC机串口技术(√)第一页,编辑于星期六:二十一点二十一分。§6.7 PC机并行打印口(√)§6.8并行通讯接口(GPIB)

PC机机接口技术(续)第二页,编辑于星期六:二十一点二十一分。6.1IBMPC/AT概述主要内容6.1.1扩充槽(图片)6.1.2存储器空间和I/O地址分配第三页,编辑于星期六:二十一点二十一分。6.1.1扩充槽(图片)

第四页,编辑于星期六:二十一点二十一分。PC104第五页,编辑于星期六:二十一点二十一分。第六页,编辑于星期六:二十一点二十一分。6.1.2存储器空间和I/O地址分配存储器空间分配;系统硬件内存分配方法;MEM接口的寻址方法;I/O地址分配;I/O接口的寻址方法;(详细)第七页,编辑于星期六:二十一点二十一分。存储器空间分配

第八页,编辑于星期六:二十一点二十一分。系统硬件内存分配方法

若需预先保留0D0000H~0DFFFFH区域的内存,方法如下:1.使DOS不占用 在系统CONFIG.SYS文件中加入:

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

使WINDOWS不占用 在WINDOWS的SYSTEM.INI文件中加入:(2K长为一个单元) [386Enh] EMMExclude=d000-d7ff EMMExclude=d800-dfff第九页,编辑于星期六:二十一点二十一分。MEM接口的寻址方法1.在DOS下,如需要对0E0001H单元进行操作,则对应地址应写成:0XE0000001(E000:0001H)Temp=(BYTEfar*)0XE0000001;写:*Temp=data;读:data=*Temp;2.

用VC5.0编程 如需要对0D0000H单元进行操作,则对应操作地址为其自身。

pt=(unsignedshort*)0x000d0000;写:*pt=data;读:data=*pt;

3.

VB可以通过调用VC编写的DLL来读写MEM。

VB调用DLL有16/32位系统之分。第十页,编辑于星期六:二十一点二十一分。I/O地址分配第十一页,编辑于星期六:二十一点二十一分。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)第十二页,编辑于星期六:二十一点二十一分。§6.2PC/AT系统总线的扩充主要内容6.2.1PC/ATI/O扩展插槽脚原理图;(√)6.2.2PC/AT总线引脚的功能定义;6.2.3I/O和MEM扩展的地址译码逻辑;(√)第十三页,编辑于星期六:二十一点二十一分。6.2.1

PC/ATI/O扩展插槽原理图第十四页,编辑于星期六:二十一点二十一分。第十五页,编辑于星期六:二十一点二十一分。6.2.3I/O和MEM扩展的地址译码逻辑

一、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第十六页,编辑于星期六:二十一点二十一分。二、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第十七页,编辑于星期六:二十一点二十一分。6.3GAL译码技术主要内容6.3.1GAL译码的特点6.3.2常用GAL器件6.3.3GAL的开发语言ABEL语言(√)6.3.4写入设备第十八页,编辑于星期六:二十一点二十一分。6.3.1GAL译码的特点

.减小系统的硬件规模,提高系统可靠性;.简化系统设计,提高系统速度;.提高系统的开发效率;.降低系统成本;第十九页,编辑于星期六:二十一点二十一分。6.3.2常用GAL器件第二十页,编辑于星期六:二十一点二十一分。6.3.3GAL的开发语言ABEL语言(√)例程如下所示

moduleSDC96//和end配对构成一个完整的模块

title`Sui-daochedecodeofpcc:\sd\sdc96.abl16April1997'//自我注释标题

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

SAEN,SA9,SA8,SA7,SA6pin1,2,3,4,5;//定义各个管脚

SA5,SA4,SRD,SWR,SA3pin6,7,8,9,11;//定义输入管脚

PCEN,PCS1pin12,13;//定义输出管脚

H,L,X=1,0,.X.;//定义常数10和任意数.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//和module构成完整模块第二十一页,编辑于星期六:二十一点二十一分。ABEL语言符号定义一.逻辑运算符

!A取二进制反码A&B与A#B或A$B异或A!$B同或

二.算术预算符

-A取二进制补码A-B减法A+B加法

A*B乘法A/B无符号整除A%B取模

A<<BA左移B位A>>BA右移B位三.关系运算符

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

A<=B小于等于A>B大于A>=B大于等于四.优先级

-!&<<>>*/%+-#$!$==!=<<=>>=第二十二页,编辑于星期六:二十一点二十一分。6.3.4写入设备可利用编程器将编译好的程序写入GAL之中,编程器可用ALL03/07等,调入ABEL语言生成的*.JED文件.第二十三页,编辑于星期六:二十一点二十一分。ALL07图片

第二十四页,编辑于星期六:二十一点二十一分。6.4PC/AT总线驱动地址和控制总线驱动器数据总线驱动器第二十五页,编辑于星期六:二十一点二十一分。6.5PC机软件设计主要内容6.5.1VB和VC++的关系6.5.2动态链接库DLL6.5.3WIN32API6.5.4用VC编写WIN32S下的DLL6.5.5VB对DLL的调用(√)第二十六页,编辑于星期六:二十一点二十一分。6.5.5VB对DLL的调用(√)

对于DLL中的过程,Declare语句的完整语法如下:[Public|Private]DeclareSubnameLib”libname”[“Aliasaliasname”][([arglist])]

对于DLL中的函数,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)第二十七页,编辑于星期六:二十一点二十一分。VB对DLL的调用(续)DeclareFunctionSETMPEGLib"c:\jn\visualtrain\mpegdll.dll"Alias"SETPICDLLMODE"(ByValffAsString,modeAspicdllmode)AsLongTypepicdllmodeFileNumAsByteFileAddAsLongFrameSpeedAsLongSignalNumAsLongPlayStatusAsByterealspeedAsLonglimitspeedAsLongdistanceAsLongRealtime_hourAsLongRealtime_minuteAsLongRealtime_secondAsLongStartStopAsByteForBackAsByteEndType第二十八页,编辑于星期六:二十一点二十一分。VB对DLL的调用(续)数据类型对照表:(自动获取WINAPI调用声明演示)

第二十九页,编辑于星期六:二十一点二十一分。6.6PC机串口技术(√)主要内容6.6.1PC机串口的引脚定义信号线的定义6.6.2逻辑电平变换6.6.38250串行接口芯片6.6.4利用VB的MSCOMM控件来控制PC机的串行通讯第三十页,编辑于星期六:二十一点二十一分。6.6.1PC机串口的引脚定义信号线的定义第三十一页,编辑于星期六:二十一点二十一分。1488、14896.6.3逻辑电平变换第三十二页,编辑于星期六:二十一点二十一分。MAX232

单5V供电,完成TTL和EIA电平互换

双路串行口

4个电解电容及其极性连接要正确

逻辑电平变换(续)第三十三页,编辑于星期六:二十一点二十一分。6.6.38250串行接口芯片(详细)1.通讯线控制寄存器(3FBH)D1、D0:字符代码的长度00→5位01→6位10→7位11→8位D2:停止位数目0→1位1→1.5位(字符长度为5位时)2位(字符长度为6、7、8位时)D3:奇偶校验0→无1→有D4:奇偶校验类型0→奇1→偶校验D5:附着奇偶校验0→该位无效1→奇偶校验位恒为1(若D3=1、D4=0)

奇偶校验位恒为0(若D3=1、D4=1)无奇偶校验位(若D3=0)D6:间断位设置0→无效1→强迫连续输出空白状态(逻辑0电平)D7:寻址位0→正常值1→寻址波特率除数寄存器第三十四页,编辑于星期六:二十一点二十一分。2.通讯线状态寄存器(3FDH)

相应位为1则存在该状态D0:接收数据就绪(接收数据前查之,为“1”则表明接收到了新的数据)D1:超越错D2:奇偶错D3:格式错D4:间断检测D5:发送保持寄存器空(发送前查之,为“1”则表明可以向3F8再次写入新的待发数据)D6:发送移位寄存器空D7:恒为0第三十五页,编辑于星期六:二十一点二十一分。3.数据发送保持寄存器(同时也为接收数据保持寄存器)(3F8H)其中D0位为发送数据的第一位,即低位在前发送。

4.接收数据保持寄存器(3F8H)其中D0位为接收的第一位。

第三十六页,编辑于星期六:二十一点二十一分。5.除数锁存器(3F8H/3F9H) 除数=

BAUDRATE 3F9H 3F8H 300 01 80H 1200 00 60H 2400 00 30H 4800 00 18H 9600 00 0CH第三十七页,编辑于星期六:二十一点二十一分。6.中断允许寄存器(3F9H) D0:允许接收数据就绪中断

D1:允许发送保持寄存器空中断

D2:允许接收字符错中断

D3:允许改变MODEM状态中断

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

D0: 1→DTR信号有效

D1: 1→RTS信号有效第三十八页,编辑于星期六:二十一点二十一分。二.串行口8250初始化OUT(&H2FB),&H80寻址波特率寄存器OUT(&H2F8),&HC &h000C→BTS=9600OUT(&H2F9),0 OUT(&H2FB),3 数据类型8位1个停止位无奇偶校验OUT(&H2FC),3 DTR和RTS有效信号OUT(&H2F9),0 非中断模式第三十九页,编辑于星期六:二十一点二十一分。三.串行口查询发送数据FSSJDD:k=INP(&H2FD) k1=kAND&H20 IFk1=&H20THEN OUT(&H2F8),a(i) ELSE GOTOFSSJDD ENDIF第四十页,编辑于星期六:二十一点二十一分。四.串行口查询接收数据

JSSJDD: k=INP(&H2FD) k2=kAND&H1 IFk2=&H1THEN b=INP(&H2F8) ELSE GOTO JSSJDD ENDIF第四十一页,编辑于星期六:二十一点二十一分。6.6.5利用VB的MSCOMM控件来控制PC机的串行通讯

一.MSCOMM控件及其属性设计如图所示

第四十二页,编辑于星期六:二十一点二十一分。二.发送软件的编写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第四十三页,编辑于星期六:二十一点二十一分。三.利用MSCOMM中断接收数据

PrivateSubMSComm_OnComm()SelectCaseMSComm.CommEvent

CasecomEventRxOver'Receivebufferoverflow.IfCommVerify=FalseThen‘如果校验不对,则再次初始化串口

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

‘处理接收到的有效数据

EndIfEndSelectEndSub第四十四页,编辑于星期六:二十一点二十一分。三.利用MSCOMM中断接收数据(续)

‘接收校核程序FunctionCommVerify()AsBooleanDimtemp_BufferAsVariantDimiAsInteger,ttAsByteDimkkAsSingletemp_Buffer=frmTest.MSComm.InputCommBuffer=temp_Buffertt=CommBuffer(0)Fori=1To31tt=ttXorCommBuffer(i)NextiIftt<>CommBuffer(32)ThenCommVerify=FalseElseIfFirstComm=TrueThenEndIfEndFunction第四十五页,编辑于星期六:二十一点二十一分。6.7PC机并行打印口主要内容6.7.1打印机接口“标准”6.7.2IBMPC打印机接口6.7.3IBMPC打印机接口编程和系统子程序调用6.7.4IBMPC并行接口I/O口的扩展第四十六页,编辑于星期六:二十一点二十一分。6.7.2IBMPC打印机接口第四十七页,编辑于星期六:二十一点二十一分。每个打印接口的基本口地址

数据状态控制

LPT1:378H379H37AHLPT2:278H279H27AHLPT3:3BCH3BDH3BEH第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论