接口实验报告

2024-04-10

接口实验报告(共8篇)

篇1:接口实验报告

系 别 电科 班 级 电科 091 班 姓 名

学号

课 程 名 称 微机接口技术 成 绩

评 定

教师签名 实 验 时 间

2012 年 6 月 11 日 实验四

综合实验 一、实验目的1、了解 8253 定时器的硬件连接方法及时序关系,掌握 8253 工作方式以及编程方法。

2、了解 8255 芯片结构及接口方式,掌握 8255 输入、输出的编程方法。

3、掌握 8088 中断系统原理,掌握 8259A 扩展 8088 系统中断的方法及编程。

二、实验内容

编程将 8253 定时器 0 设定为方式 3,定时器 1 设定在方式 2,每 5 秒产生一次中断请求(共八次),用 8259 实现中,CPU 响应后,通过 8255 的 A 口读取一次开关状态(8 位),存入内存单元中,读入 8 个数据后,再通过 8255 的 B 口送到 LED 依次输出显示(1 亮,0灭)。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明和电路原理图

本实验需要用到 CPU 模块(F3 区)、8253 模块(C4 区)、8255 模块、8259 模块(C5区)、频率发生器模块(E6 区)、八位逻辑电平显示模块(B5 区),8253 电路原理图参见图 4-1。频率发生器电路原理图参见图 4-2。8255 电路原理图参见图 4-3。8259 电路原理图参见图 4-4。

8253 是一种可编程计数器/定时器,它是用软、硬技术结合的方法实现定时和计数控制。其主要有以下特点:

①有 3 个独立的 16 位计数器,每个计数器均以减法计数。

②每个计数器都可按二进制计数或十进制(BCD 码)计数。

③每个计数器都可由程序设置 6 种工作方式。

④每个计数器计数速度可以达 2MHz。

8259A 是专用控制中断优先级而设计的集成电路,可对中断源的优先级排队、识别、及提供中断矢量。单块 8259A 可编程实现 8 级中断管理,并可选择优先模式及中断请求方式。另外由多片 8259A 级联,可构成多达 64 级的矢量中断系统。

中断序号 0 1 2 3 4 5 6 7

变量地址 20H 23H 24H 27H 28H 2BH 2CH 2FH 30H 33H 34H 37H 38H 3BH 3CH 3FH 本实验用 2 号中断源 IR2,接单次脉冲,中断方式为边沿触发方式。

程序每按一次按键产生一次中断,中断服务程序使输出状态反转一次。

8255 是可编程的并行输入/输出接口芯片,通用性强且使用灵活。8255 共有三个八位口,其中 A 口和 B 口是单纯的数据口,供数据 I/O 口使用。C 口可分为两个 4 位端口(C 口 的上半部分和下半部),不仅可以作数据 I/O 口使用,还能用作控制线,配合 A 口和 B 口使用。

图4-1

8253

图4-2

频率发生器

GND12VCC24D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK218U9C8253ICAD0ICAD1ICAD2ICAD3ICAD4ICAD5ICAD6ICAD7A0A1P37CCS_8253R11C4.7KVCCVCCP38CCLK0P39COUT0P40CGATE0P41CCLK1P43COUT1P42CGATE1P44CCLK2P45COUT2P46CGATE2/RD_IC/WR_ICCLK10RST11Q19Q47Q55Q64Q76Q813Q912Q1014Q1115Q121Q132Q143VDD16GND8U4ECD4020IOCK1VCCIOCK2IOCK3IOCK4P23E150HzP24E300HzP25E600HzP26E2.4kHzP28E153.6kHzP27E19.2kHz2.4576MHzD034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD5WR36A09A18RESET35CS6GND7VCC26U11C8255ICAD0ICAD1ICAD2ICAD3ICAD4ICAD5ICAD6ICAD7P58CCS_8255R13C4.7KVCC/RESET_ICA1A0VCC12345678JD3CPA0-712345678JD4CPB0-712345678JD5CPC0-7/RD_IC/WR_IC

图 4-3

8255 电路

图 4-1

8259

五、实验程序

;//***************************************************************;文件名: 综合实验;功能: 8253定时/计数器,8259中断,8255并行输入输出实验;接线:;

用导线连接CPU模块的208H到8259的CS_8259;;

;

用导线连接CPU模块的8000到8253模块的CS_8253;;

频率发生器模块的153.6kHz接8253模块的CLK0;;

8253模块的CLK1接OUT0,;//***************************************************************

TIM_CTL

EQU

8003H

;8253 状态/命令口地址 TIMER0

EQU

8000H

ICAD0ICAD1ICAD2ICAD3ICAD4ICAD5ICAD6P47CCS_8259R12C4.7KVCCP48CINTP49CINTAVCCP50CINT_0P51CINT_1P52CINT_2P53CINT_3P54CINT_4P55CINT_5P56CINT_6P57CINT_7INT_0INT_1INT_2INT_3INT_4INT_5INT_6INT_***881RP1C10KVCCINT_0INT_1INT_2INT_3INT_4INT_5INT_6INT_7/RD_IC/WR_ICIR018IR119IR220IR321IR422IR523IR624IR725CAS012CAS113CAS215AD011AD110AD29AD38AD47AD56AD65AD74CS1INT17INTA26RD3WR2GND14VCC28SP/EN16A027U10C8259A0ICAD7

TIMER1

EQU

8001H

TIMER2

EQU

8002H

MODE03

EQU

00110110B MODE12

EQU

01110100B MODE22

EQU

10110100B CS8259

EQU

208H C8255

EQU

203H

;8255 状态/命令口地址 P8255A

EQU

200H

;8255 PA 口地址 P8255B

EQU

201H

;8255 PC 口地址 P8255C

EQU

202H

;8255 PC 口地址

DATA

SEGMENT ARY

DB 8 DUP(?)DATA

ENDS STACK

SEGMENT STACK STA

DW 50 DUP(?)TOP

EQU LENGTH STA STACK

ENDS

CODE

SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

MOV

DX,C8255

MOV

AL,10011000B

;设置8255的A口输入,CH口输入,B口输出,CL口输出

OUT

DX,AL

CALL

DSCSH

;8253初始化

CALL

ZDCSH

;8239初始化

MOV

BX,OFFSET ARY

MOV

CX,8

XUNH:

CMP

CX,0

JNE

XUNH

MOV

CX,8

MOV

BX,OFFSET ARY LOOP1:

MOV

AL,[BX]

MOV

DX,P8255B

OUT

DX,AL

CALL

DELAY

INC

BX

LOOP

LOOP1

IRQ2:

CLI

MOV

DX,P8255A

IN

AL,DX

NOT

AL

MOV

[BX],AL

MOV

DX,P8255B

OUT

DX,AL

CALL

DELAY

INC

BX

DEC

CX

STI

IRET

ZDCSH

PROC NEAR

XOR

AX,AX

MOV

DS,AX

LEA

AX,IRQ2

MOV

DS:28H,AX

MOV

AX,CS

MOV

DS:2AH,AX

MOV

DX,CS8259

MOV

AL,00010011B

;ICW1

OUT

DX,AL

INC

DX

MOV

AL,00001000B

;ICW2:中断号从8开始

OUT

DX,AL

MOV

AL,00001111B

;ICW4:全嵌套方式,86/88系统,自动结束中断

OUT

DX,AL

MOV

AL,11111011B

;OCW1:开放Int-2

OUT

DX,AL

MOV

DX,CS8259

MOV

AL,20H

;OCW2:非特殊EOI结束中断

OUT

DX,AL

STI

;开中断

RET ZDCSH

ENDP

DSCSH

PROC NEAR

MOV

DX,TIM_CTL

MOV

AL,00110110B

OUT

DX,AL

MOV

DX,TIMER0

MOV

AL,00H

OUT

DX,AL

MOV

AL,03H

OUT

DX,AL

MOV

DX,TIM_CTL

MOV

AL,01110100B

OUT

DX,AL

MOV

DX,TIMER1

MOV

AL,0E8H

OUT

DX,AL

MOV

AL,03H

OUT

DX,AL

RET DSCSH

ENDP

DELAY

PROC

NEAR

PUSH

CX

PUSH

BX

MOV

BL,20 DL1:

MOV

CX,8000H DL2:

LOOP

DL2

DEC

BL

CMP

BL,0

JNE

DL1

POP

CX

RET DELAY

ENDP

CODE

ENDS

END

START

六、实验步骤

1)系统各跳线器处在初始设置状态。

用导线连接 CPU 模块的 200 到 8253 模块的 CS_8253; 频率发生器模块的 153.6kHz 接 8253 模块的 CLK0; 8253 模块的 CLK1 接 OUT0,CLK2 接 OUT1,GATE0、GATE1、GATE2 接+5V,OUT2 接 L0 灯。

2)启动 PC 机,打开 THGMW-88 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)观察发光二极管的显示情况。

七、实验现象和分析 实验是为了输入和显示开关状态,并且通过 8253、8255、8259 来实现。实验通过 8253 来实现定时的采样,实验中每 5 秒产生一次定时输出;用 8259 来产生中断,当定时时间到就产生一次高电平输出,引起中断,产生中断后,CPU 对开关进行读取,并输出,通过发光二极管来显示输出结果;用 8255 来实现数据的输入和输出,输入为读取开关量,而输出为结果的输出到发光二极管,分别通过 8255 的 PA 口和 PB 口来实现。运行程序后,可以对开关进行拨动,在定时时间到后,可以看到发光二极管显示的状态的开关的状态相同。由此,可以认为电路对开关状态的输入和输出是正确的,实验完成了预想的要求。

八、实验总结

通过实验基本上掌握了 8253、8255、8259 的使用方法。8253 为计数器,有三个计数通道,并且有六种工作方式,可以产生多种不同的波形输出,实现不同长度的时间定时,通过方式命令字的设置可以设置不同计数器的不同方式。8255 为并行输入输出芯片,有三个输入输出口,可以实现三路的输入输出,并且有几种工作方式,在实验中,只用了方式 0,作为普通的输入输出口,工作时,可以通过方式命令字来设置三个口的工作状态。而 8259 为中断管理芯片,可以实现 8 路的中断处理,他可以实现中断的屏蔽,优先级的设定,中断号的产生等,他也可以通过设置方式命令字来设置它的工作方式。实验还使自己掌握了,多芯片联合工作的方法,这为以后的电路设计提供了很多的经验。

篇2:接口实验报告

1.了解温度传感器电路的工作原理

2. 了解温度控制的基本原理

3. 掌握一线总线接口的使用

二、实验说明

这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。 1.DALLAS最新单线数字温度传感器DS18B20简介

Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

DS18B20测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。

DS18B20内部结构

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:

DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘以0.0625

即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘以0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为

DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的`易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

2.本实验在读取温度的基础上,完成类似空调恒温控制的实验。用加热电阻代替加热电机。温度值通过LED静态显示电路以十进制形式显示出来,制冷采用自然冷却。

三、实验内容及步骤

本实验需要用到单片机最小应用系统(F1区)、串行静态显示(I3区)和温度传感器模块(C3区)。

1.DS18B20的CONTROL接最小应用系统P1.4,OUT接最小应用系统P2.0,最小系统的P1.0,P1.1接串行静态显示的DIN,CLK端。

2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加TH44_ DS18B20.ASM源程序,进行编译,直到编译无误。

4.编译无误后,全速运行程序。程序正常运行后,按下自锁开关‘控制’SIC。LED数显为 “XX”为十进制温度测量值, “XX”为十进制温度设定值,按下自锁开关“控制”SIC则加热源开始加热,温度也随着变化,当加热到设定的控制温度时如40度时,停止加热。

5.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。(ISP烧录器的使用查看附录二) 四、源程序

;单片机内存分配申明!

TEMPER_L EQU 29H ;用于保存读出温度的低8位TEMPER_H EQU 28H ;用于保存读出温度的高8位FLAG1 EQU 38H ;是否检测到DS18B20标志位A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置LEDBUF EQU 30HTEMPEQU 55HDIN BIT P1.0CLK BIT P1.1

ORG 0000HLJMP STARTORG 0100H START: SETBP1.4 MAIN:

LCALL GET_TEMPER;调用读温度子程序

;进行温度显示,这里我们考虑用网站提供的两位数码管来显示温度 ;显示范围00到99度,显示精度为1度

;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位

;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度

;这个转化温度的方法可是我想出来的哦~~非常简洁无需乘于0.0625系数

MOV A,29H

MOV C,40H;将28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,A

LCALL DISPLAYRESULT

LCALL DISPLAYLED;调用数码管显示子程序LCALL DELAY1 AJMP MAIN

; 这是DS18B20复位初始化子程序 INIT_1820:SETB P2.0NOPCLR P2.0

;主机发出延时537微秒的复位低脉冲MOV R1,#3 TSR1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1

SETB P2.0;然后拉高数据线NOPNOPNOPMOV R0,#25H TSR2:

JNB P2.0,TSR3;等待DS18B20回应DJNZ R0,TSR2

LJMP TSR4 ; 延时 TSR3:

SETB FLAG1; 置标志位,表示DS1820存在LJMP TSR5 TSR4:

篇3:接口实验报告

“微机原理与接口技术”是计算机等工科专业的一门传统的重点课程,目的在于让学生对于微型计算机硬件工作原理有所了解,提高对于计算机硬件接口的应用,为计算机接口部件的开发打下理论基础。但目前该课程的普遍现状是,课时安排上重理论、轻实践,教学内容上重软件、轻硬件。其根本原因还是实验设备有限、维护困难。虚拟实验的出现逐步缓解了这个问题,它将计算机技术、软件技术以及网络技术和传统实验仪器结合起来,改变实验系统的构建模式,提升实验仪器的整体性能,突破实验操作的时空限制,是传统实验方法的变革,是继理论研究和实验研究之后的第三种科学研究方法[1]。讨论研究如何构建微机接口虚拟实验,并将其合理地应用于微机原理与接口技术教学对于推动该课程实验教学改革,促进该课程的发展具有重要意义。

二、虚拟实验及课程特点分析

当前国内外对于虚拟实验问题的解决方案主要有四种思路:模拟演示实验、远程设备控制实验、基于虚拟仪器的虚拟实验和基于web的虚拟实验[2]。

1、模拟演示实验

网络条件下的演示实验主要有视频演示和动画演示两种方式。视频演示是指将演示实验的过程完全拍摄下来,经过编辑和处理后放到服务器上供学生和教师在教学过程中使用。动画演示是指采用动画制作软件对实验过程进行演示。

2、远程设备控制实验

远程设备控制是指实验者通过与网络连接的计算机输入数据,这些数据通过网络传送到服务器,服务器对这些数据进行处理以控制相关实验设备工作,再收集实验数据传送到实验者的计算机上。.其优点是技术比较成熟,难度较小,容易实现,而且关于计算机与可编程设备的通讯己经有了规范的协议IEEE488.2,但网络传输量大,延迟比较大,还必须存在真实的实验设备。在现在的网络条件下,多用于局域网内部。

3、基于虚拟仪器的虚拟实验

在网络教学的条件下,理工科实验要使用的大量的专业实验仪器无法被实验者使用,而使用虚拟仪器技术可以在屏幕上提供给实验者多种专业仪器来完成实验。虚拟仪器技术具有高效、易用、开放、灵活、更新快、功能强大、性价比高、用户定义等优点。

4、基于we b的虚拟实验

基于web的虚拟实验可在web中创建一个可视化的虚拟环境,其中每一个可视化的虚拟物体代表一种实验对象。用户可以使用系统提供的交互手段对这些虚拟物体进行操作。虚拟实验环境可以针对不同的实验科目分别设计具体的实验环境。

微机接口技术的实验有以下特点:(1)涉及的实验器件较多如定时器8253,DMA控制器8237,中断控制器8259,串行并行接口芯片8251、8255,数模转换接口芯片等[3]。(2)器件均为可编程芯片,需要与汇编语言的编译器相结合。(3)要实现任意器件的组合实验,虚拟难度大。

三、基于虚拟仪器的Web虚拟实验方案

从以上分析可以看出,基于虚拟仪器的虚拟实验技术具有灵活高效的特性,较适合用于微机原理与接口技术实验。但由于其器件模拟编程难度相对较高,普遍采用单机版或C/S模式。学生或教师在不同的地点使用时必须根据操作系统来安装相应的客户端程序。而基于web的虚拟实验则可以在任何能浏览网页的计算机上运行,具有跨地域跨平台的优势,但目前的基于web的虚拟实验受到网页技术的限制往往都是面向实验环境的简单虚拟,能做到器件级的web虚拟实验少之又少。

随着Flash的Action Script技术及动态网页技术的不断发展,网页上的人机交互和数据库的读取已经可以接近单机水平[4]。Flash内嵌于网页中,通过Action Script脚本语言完成和使用者的交互,同样通过脚本语言通过动态网页技术,实现对服务器端数据库的读写操作。结构如图1所示。

虚拟器件的属性、方法的参数放在服务器端数据库中,器件的通用方法则存于Flash文件中。一旦用户开始实验,Flash交互程序根据已选取的实验器件,通过动态网页连接到数据库,读出该器件的属性及参数后调用Flash程序内部存放的通用方法虚拟出实验现象。在教学过程中教师或学生通过交互界面选取实验器件,组合成实验环境观察实验结果。

四、可编程芯片虚拟实验

可编程芯片的初始化可通过参数方式设置,或在服务器上编译执行汇编代码。其中参数设置方式无需通过服务器,直接在交互界面填好执行。若使用汇编方式初始化芯片,可把源代码传送到服务器,编译执行后把执行结果以参数方式传回给Flash,然后通过通用方法调用参数显示实验结果,其结构如图2所示。

比较两种方式,通过参数设置初始化由于在本机浏览器中直接运行,速度快而且服务器负担小,但与真实的汇编指令控制可编程芯片有所不同。服务器编译方式则可完全虚拟真实操作,同时也增加了服务器的负荷,特别是多个用户同时提交汇编代码时,多线程编译执行会增加CPU使用率。一个较好的解决方法是设置最大线程数,超出的提交请求采用队列的方式等待资源。这样一定程度上会降低实验开始前的响应速度,一旦服务器返回参数后,实验的速度则和本机执行完全一样。

五、结语

这种基于虚拟仪器的Web虚拟实验首先解决了微机接口实验中的实验器件级的虚拟问题,各种器件像导线、开关、小灯泡、数码管、可编程芯片、脉冲发生器等均可通过数据库扩充和修改,方便实验器件的管理和扩充。其次把Flash交互界面替代C/S模型中的客户端程序,实现了B/S的跨平台特性,使得在任何可以浏览网页的地方均可做实验,如笔记本、手机等移动产品。

参考文献

[1]王汝传,陈丹伟,顾翔.虚拟现实技术及其实现研究[J].计算机工程,2002,26(12):l-4.

[2]朱刚.微机接口虚拟实验的研究[D].华中科技大学图书馆.2004.硕士学位论文.

[3]雷晓平,屈莉莉,罗海天.微机原理与接口技术[M].北京:人民邮电出版社,2006:280-311.

篇4:“脑机接口”实验:意识控制成真

浙江大学紫金港校区求是高等研究院实验里,5岁多的猴子先生“建辉”,头戴着一顶鲜蓝色的毛线帽,安静地呆在实验台上,准备进行一次有意思的实验。研究人员将利用它的大脑控制一只机械手进行抓、勾、握等动作实验。

猴子用意念“指挥”机械手

“建辉”正值青年时期,大约相当于人类20多岁的年纪,各项生理体征均十分良好,正是进行实验的理想状态。

2011年7月,浙江大学教授、生物医学工程专家郑筱祥的研究团队为“建辉”在脑部做了精细的神经外科手术,在它的大脑运动皮层植入了两个与200多个神经元相连接的芯片,每个芯片有96个电极。芯片的另一头连接着计算机。在“建辉”头顶的帽子里面,装着一个联系猴子脑内芯片和实验室计算机的一个信号采集设备。

实验开始时,只见“建辉”用手指,分别做出抓、勾、握、捏的动作,而在离“建辉”不远处,一只本来没有思想的机械手,好像有了心灵感应般,“建辉”做什么动作,它也做什么。

“这个过程实际上是在猴子想要做某个手部动作时大脑发出的信号,然后通过控制系统同时让机械手去完成,从而实现‘意念’控制。”郑筱祥说。这便是她和研究团队正在进行的“脑机接口”实验,即在大脑和外部设备之间建立一条非神经和肌肉的通道,用于传递信息或控制指令,从而能够让外部设备按照大脑的指令采取行动。

小白鼠为“建辉”实验打基础

郑筱祥团队进行这个项目的实验已持续6年。在实验的开始阶段,研究人员主要是利用数十只大白鼠进行有关实验,利用这些大白鼠,郑筱祥研究团队完成了大白鼠“动物机器人”和意念控制压杆喝水实验。

所谓 “动物机器人”,又称“机器人动物”或“智能动物”,即采用人工电信号刺激动物相关脑区的神经系统,以控制动物的行为。在大白鼠的“动物机器人”实验中,大白鼠在科研人员的“遥控”下,被实施向左、右、前、后、转弯等与方向相关的刺激,成功地实现了走田字格、米字格以及迷宫等复杂路线。

在大白鼠意念控制实验成功以后,郑筱祥就开始利用猴子做意念控制实验。通过反复的实验,该研究团队运用计算机信息技术,成功提取并破译了猴子大脑里,关于“抓、勾、握、捏”这4种手势的神经信号。

国内“脑机结合”并非世界前沿

郑筱祥表示,这项成果与国际“脑机接口”领域最前沿水平同步,其研究成果的特别之处在于,他们捕捉到的神经信号是更为精细的手指信号,其5个手指可以活动。该研究对目前国际上的研究起到了很好的互补作用,此外目前在国内也是最先进的。

浙江大学新闻办公室主任单泠表示,在该实验做成功以后,媒体对这个项目的关注非常强烈,但当前该项目还有许多问题需要进行深入研究,在这种情况下,外界的深度关注并不合适。

据了解,“脑机接口”研究领域起步最早的是美国。2008年,美国匹兹堡大学的科学家实现了让猴子用“意念”控制机械手臂的运动。2011年10月,美国杜克大学医学中心的科学家在《自然》杂志发表文章,宣布他们不仅能让猴子用意念移动虚拟手掌,还能感受虚拟手掌触摸物体的触觉信号。这也就是说,目前杜克大学医学中心已经在“脑机接口”的信号双向传递上取得了重要突破。

而目前浙江大学所实现的依旧是“脑机接口”信号的单向传递,这也就意味着“建辉”虽能发出指令让机械手臂抓取东西,但却感受不到机械手臂抓取东西的信号反馈。

记者了解到,目前山东科技大学等国内其他一些研究机构也还未见信号双向传递的突破。在未来一段时间,“脑机接口”技术信号的双向传递将是郑筱祥团队的一个重要研究方向。

技术受益及生命伦理的考问

现在,人类已经开始从“脑机接口”技术中获益。在世界范围内已经广泛应用的人工耳蜗和正在兴起的人工视网膜技术也属于“脑机接口”技术,它们分别在听觉和视觉功能修复上给成千上万人带来福音。

“从长远来看,该项技术在未来必然会在伦理上出现一些争议。”中国协和医科大学生命伦理学研究中心副教授张新庆说。

在美国的一些科幻电影中,好莱坞的编剧们预言,把大脑中的内容全部数字化,可以储存到一个小小的芯片上,把这个芯片植入动物或机器人的脑中,也许会制造出性能超群的生化人。到那个时候,人类的地位和尊严又能放到哪里呢?

不过单泠表示,现在讨论这个问题显然还太早,从目前的科学实验来看,目前该技术的研究在世界范围内还处于起步阶段,人类在短时间内还无法达到这样的地步,因此这样的一些担心就显得有些多余了。

对于一些人对猴子等这类实验动物健康的担心和动物伦理质疑,浙江大学求是高等研究院副教授陈卫东表示,给猴子做手术、在它们大脑中植入芯片并没破坏其大脑应有功能,不会在精神和肉体上对猴子造成太大伤害。在美国,脑袋里被植入芯片时间最长的猴子,截至2012年其被植入的时间已经长达5年,但这只猴子没出现身体和情绪上的问题,但这样的时间跨度太短,还有待观察。

篇5:《单片机与接口技术》实验报告1

一、实验目的(1)了解D/A转换芯片DAC0832的性能及编程方法;

(2)了解单片机系统中扩展D/A转换芯片的基本方法。

二、实验内容

利用DAC0832芯片输出一个从0V开始逐渐升至5V再降至0V的可变电压。

三、实验步骤

四、实验现象解释

篇6:微机原理与接口技术实验总结

11107108

徐寒黎

一、实验内容以及设计思路

1、①试编写一程序,比较两个字符串STRING1、STRING2 所含字符是否相同,若相同输出“MATCH”,若不相同输出 “NO MATCH”。设计思路:定义一个数据段,在数据段中定义两个字符串作为STRING1、STRING2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将STRING1和STRING2都实现用键盘输入,方法是

MOV DX,OFFSET STRING2 MOV AH,0AH INT 21H 并且显示在显示器上,显示方法将0AH改成09H,语句与上面类似。然后进行比较第一个单元,MOV AL,[STRING1+1] CMP AL,[STRING2+1] JNZ NOMATCH 若字符串长度不等,则直接跳转,输出输出 “NO MATCH”; 若长度相等再逐个比较 LEA SI,[STRING1+2] LEA DI,[STRING2+2] MOV CL,[STRING1+1] MOV CH,0 CLD REPE CMPSB JCXZ MATCH,意思是全部相同就跳转MATCH,输出“MATCH”;不然进入下面的NOMATCH。退出。

②试编写求级数1^3+2^3 +3^3 …..前几项和刚大于10000的程序。

设计思路:原先编写的程序,设定和为10000,结果是14。但要求高一点的话,可以自己设置,实现用键盘输入和的值。

一个难点是将输入的ASCII码字符串,转换成与之相同的十进制数的数值。关键的思路部分是:从1开始求级数,将和的值存在AX里,要加下一项级数前,比如这时已经加到4,PUSH一下AX,然后将5乘三遍,将乘积MOV到BX里,再POP AX,然后将BX的值加到AX里,然后将AX与N比较,如果比N小就继续上述步骤,知道刚比N大就输出数字。

③试编写一程序,完成字符串中各字符出现频度的统计,统计结果在屏幕上输出。

设计思路:因为这个程序需要统计所有的字符,所以首先要定义一个存储区,用来存放26个字符以及每个字符出现的个数。用键盘控制输入字符串以后,将字符串的第一个字符与这二十六个字符逐个比较,若有相同,在存放相应次数的存储单元的值上加1。然后比较第二个字符,依次类推,将字符串里的字符全部比较完。将个数大于1的字符以及字符的个数都输出到屏幕上。退出语句。缺点和不足:这样需要定义一个非常繁的存储区。可以根据输入的字符,然后进行比较和统计。

④设计一个动画程序。

设计思路:这个程序参考了网上的资料,没有什么新意,是小鸟的图形,可以用上下左右键进行移动,可以退出。

步骤:首先设置堆栈段,数据段,代码段,设置显示方式等一些属性,设置背景色,设置小鸟的初始位置以及写出小鸟图形的像素的点。功能性的语句是,用键盘接受一个输入,将其与1bh比较,用JZ语句跳转到退出。若不是便与48h比较,看是否为向上,是则跳转到相应语句,不是则继续与50h比较;,看是否向下,是则跳转到关于向下移动的相关语句,否则再与4bh比较,看是否向左,依次类推,根据键盘输入的上下左右跳转到不同的语句。再将小鸟的位置进行与上下左右键的输入相应的移动。

最后编写好退出语句。

2、硬件接口主要是了解8255与8253的功能,以及控制字。①I/O地址译码

只要对硬件概念清晰,很简单的。基本上没有什么创造性。收获:熟悉实验箱结构,了解每部分元件和标注的意义。掌握I/O地址译码电路的工作原理。②可编程定时器8253 1,对照实验电路图,将计数器0设置为方式0,即数初值设为N(N<0fh),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并用逻辑笔观察OUT0点平变化。

2,将计数器0、计数器1分别设置为方式3,计数初值设为1000用逻辑笔观察out1输出电平的变化。

收获:掌握8253的基本工作原理和编程方法

③并行接口8255 1,试验电路如图所示,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。3,数码管静态显示:按下图接好电路,将8255A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接5V(选中),S0和dp接地(关闭)。编程从键盘输入一位十进制数(0-9),在七段数码管上显示。

4,数码管动态显示:按下图接好电路,七段数码管的连接不变,位码驱动输入端S1、S0接8255 C口的PC1和PC0。编程在两个数码管上显示“56”。

动态显示时,先送“5”的段码送A口,再送02h到C口为位码;经一定延时后,送“6”的段码送A口,再送01h到C口为位码。循环完成,可以显示数码。5,数码管动态显示(选做):同图接好电路,编程在两个数码管上显示循环显示“00-99”。只要搞清楚各个口的地址,以及选择适当的控制字,其实很简单的。

收获:掌握8255的基本工作原理和编程方法,对方式0的认识加深了。

二、试验中遇到的问题 1在编写程序时,我深深体会到,画程序框图的重要性,每一步跳转的条件一定要搞清楚,Y和N不能搞反了,否则就错了。

2实验2,里面涉及的寄存器很多,很容易就会用乱了,还是很需要注意的。3比如那个小鸟动画的题目,当时在控制左右移动的时候,选择的起始位置的语句没写对位置,每次按一个移位的键以后,都从最初的初始位置向某个方向移动。

4硬件方面的,一开始没搞懂地址什么意思,所以连线时很懵懂,后来清楚了,发现就没什么了。

三、心得感受

微机原理与接口技术的课程实验历时大半个学期,通过自己编写、运行程序,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。

前四个简单程序设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。

后面几个实验是并行输入输出接口8255和计数器8253的功能的操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。

篇7:接口实验报告

课程设计名称:

微机原理与接口技术课程设计

课程设计题目:

微机打印口外接交通灯模拟LED显示器

称:

信息工程学院

专业:

计算机科学与技术

班级:

学号:

姓名:

评分:

教师:

X

X

设计选题及功能说明

设计选题:微机打印口外接交通灯模拟LED显示器。

课题要求及功能说明:

通过微机打印插座(25D)设计,用微机编程可实现对打印口外接12个路口交通灯(红、绿、黄)的控制显示等。

设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;

延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4方向通车;

延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次后,再切换到1、3路口方向,之后重复上述过程。

硬件电路设计

硬件电路采用Protel

Technology公司的CAD工具Protel

99进行设计。

2.1

8255A芯片选择

按照课题设计要求,我们选择通过8255A并口来控制LED发光二极管的亮灭,8255A具有3个通道3种工作方式的可编程并行接口芯片。使用前要写入一个方式控制字选择A、B、C三个端口各自的工作方式,共有三种;

方式0

:基本的输入输出方式,即无须联络就可以直接进行的I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。

方式1

:选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.方式2:

双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。

8255A引脚信号如右图

2.2电路设计

本设计用DB25

连接8255控制12个LED亮灭

电路原理图如图1:

图1

交通灯原理图

2.3印刷电路图设计

制作pcb印刷电路板,采用的是自动布线的方法。即利用正确的原理图制作网络表,然后新建CAM

output

configuration文件,在设定好印刷板得规格大小后导入刚才生成的网络表,然后再调整各元件的位置,等待其自动布线。经过多次设计修改,本交通灯模拟LED显示器的PCB图如图2所示

图2

交通灯模拟LED显示器

测试程序

用汇编语言编写对交通灯的测试程序要根据交通灯原理图,主机与8255A连接:从交通灯原理图可以看出,低电平有效/CS选择8255A,通过对A0、A1控制选择8255A的PBPC端口,低电平有效/WR控制输入;8255A与交通灯连接:8255A的端口PB高4位分别与交通灯的四个方向的绿灯相连,PC端口的低4位与四个方向的红灯相连,PC端口的高4位与四个方向的黄灯,从交通灯原理图可看出一下特点(1)相对方向的灯保持一致,如1、3,方向,2、4方向。那么在设计程序时,1、3方向的一样,2、4方向的一样(2)四个方向的交通灯可能出现的组合:红绿、红黄,不会出现绿黄。既不能出现端口PB高4位与PC端口的高4位同时有效的情况。根据以上所述程序可以设计为如下

DATAPT

EQU

378H

CTRLPT

EQU

37AH

INTCNT

EQU

GDURA

EQU

YDURA

EQU

RDURA

EQU

GSTATE

EQU

0

Y1STATE

EQU

Y2STATE

EQU

RSTATE

EQU

Y3STATE

EQU

Y4STATE

EQU

DSEG

SEGMENT

OLD1CH

DD

?

LTSTATE

DB

?

YBLKCNT

DB

0

DSEG

ENDS

CSEG

SEGMENT

ASSUME

CS:

CSEG,DS:

DSEG

START:

MOV

DX,CTRLPT

MOV

AL,11101100B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,10000000B

OUT

DX,AL

MOV

AX,351CH

INT

21H

MOV

WORD

PTR

OLD1CH,BX

MOV

WORD

PTR

OLD1CH

+

2,ES

MOV

DX,OFFSET

NEW1CH

MOV

AX,251CH

CALL

GREEN

INT

21H

MOV

AH,0

INT

16H

LDS

DX,OLD1CH

MOV

AX,251CH

INT

21H

MOV

AH,4CH

INT

21H

NEW1CH:

CMP

CX,0

JZ

NEXT

DEC

CX

IRET

NEXT:

CMP

LTSTATE,GSTATE

JZ

GRN

CMP

LTSTATE,Y1STATE

JZ

YLW1

CMP

LTSTATE,Y2STATE

JZ

YLW2

CMP

LTSTATE,RSTATE

JZ

RD

CMP

LTSTATE,Y3STATE

JZ

YLW3

CMP

LTSTATE,Y4STATE

JZ

YLW4

GRN:

CALL

GREEN

IRET

YLW1:

CALL

YELLOW1

IRET

YLW2:

CALL

YELLOW2

IRET

RD:

CALL

RED

RET

YLW3:

CALL

YELLOW3

IRET

YLW4:

CALL

YELLOW4

IRET

GREEN

PROC

;

;绿灯

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11101000B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,11110000B;1、3方向的绿灯,2、4方向的红灯亮30秒

OUT

DX,AL

MOV

DX,MOV

AL,11100100B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,10100101B

OUT

DX,AL

MOV

CX,GDURA

*

INTCNT

MOV

LTSTATE,Y1STATE

POP

DX

POP

AX

RET

GREEN

ENDP

YELLOW1

PROC

;黄灯

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11100100B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,11110101B

;

1、3方向的黄灯亮0.5秒(黄灯一共闪烁3次,即亮灭各3次)

OUT

DX,AL

MOV

DX,CTRLPT

MOV

AL,11101000B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,10100000B

OUT

DX,AL

MOV

CX,INTCNT

/

MOV

LTSTATE,Y2STATE

POP

DX

POP

AX

RET

YELLOW1

ENDP

YELLOW2

PROC

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11101000B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,11110000B;

1、3方向的黄灯灭0.5秒(黄灯一共闪烁3次,即亮灭各3次)

OUT

DX,AL

MOV

CX,INTCNT

/

INC

YBLKCNT

CMP

YBLKCNT,YDURA

JZ

CHGRED

MOV

LTSTATE,Y1STATE

JMP

Y2RET

CHGRED:

MOV

LTSTATE,RSTATE

MOV

YBLKCNT,0

Y2RET:

POP

DX

POP

AX

RET

YELLOW2

ENDP

RED

PROC

;红灯

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11100100B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,01011010B;

1、3方向的红灯,2、4方向的绿灯亮30秒

OUT

DX,AL

MOV

CX,RDURA

*

INTCNT

MOV

LTSTATE,Y3STATE

POP

DX

POP

AX

RET

RED

ENDP

YELLOW3

PROC;

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11100100B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,11111010B

;

2、4方向的黄灯亮0.5秒(黄灯一共闪烁3次,即亮灭各3次)

OUT

DX,AL

MOV

DX,CTRLPT

MOV

AL,11101000B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,01010000B

OUT

DX,AL

MOV

CX,INTCNT

/

MOV

LTSTATE,Y4STATE

POP

DX

POP

AX

RET

YELLOW3

ENDP

YELLOW4

PROC

PUSH

AX

PUSH

DX

MOV

DX,CTRLPT

MOV

AL,11101000B

OUT

DX,AL

MOV

DX,DATAPT

MOV

AL,11110000B

;

2、4方向的黄灯灭0.5秒(黄灯一共闪烁3次,即亮灭各3次)

OUT

DX,AL

MOV

CX,INTCNT

/

INC

YBLKCNT

CMP

YBLKCNT,YDURA

JZ

CHGGRN

MOV

LTSTATE,Y3STATE

JMP

Y4RET

CHGGRN:

MOV

LTSTATE,GSTATE

MOV

YBLKCNT,0

Y4RET:

POP

DX

POP

AX

RET

YELLOW4

ENDP

CSEG

ENDS

END

START

小结

通过本次关于微机打印口外接交通灯模拟LED显示器的课程设计,我了解了交通灯的工作原理,而在此基础上设计原理图和硬件电路板,则让我对课本上的知识进行了实际的应用,例如DB25

25帧的打印机接口,8255A芯片,对他们的功能及作用都有了较深的理解。完成本次实验的工具软件是protel99,这是一款电子工程师设计电路原理图和PCB的行业软件。不过值得注意的是,本软件的汉化版经常出现问题,特别是对制作pcb图的影响很大。所以建议使用protel99的英文版。通过主机打印口和8255A接口的连接,对db25各个针脚功能有了更深入得了解,拓展了课本上的知识。因为在整个小组中我主要负责制作pcb这一块,所以觉得确定印刷电路板的尺寸大小,定印刷电路层次和元器件布局很重要。实验的最后一部分是编写程序,增强了我的汇编语言能力。

参考文献

戴梅萼

史嘉权

微型计算机技术及应用(第4版)

清华大学出版社

2008年2月

Protel

99SE电路设计基础与工程范例

赵景波

王臣业编著

清华大学出版社2008年5月

Protel

99SE

电路设计与制板

朱云芳

江桦

翟旭等编著

机械工业出版社

2007年11月

汇编语言程序设计教程

(第二版)

卜艳萍编著

清华大学出版社

2007

胡景春

实践优秀作品选编

东南大学出版社

2010年2月

胡景春

刘洪

微机原理\单片机应用实验指导(第二版)

南昌航院计算机系

2004

附录一

电路原理图

附录二

PCB图

附录三

25针并行口打印机口的针脚功能表

篇8:接口实验报告

实验是教学中一个必不可少的重要环节,是培养学生创新精神、科学素质和设计能力的重要途径。目前大部分高校的微机接口实验必须借助于专门硬件实验设备才可以进行,而这种实验模式有着以下一些缺点:

(1) 由于受到经费的限制,学校所能提供的实验设备有限,在目前学生人数日益增多的情况下,很难满足每个学生拥有一台设备的要求。

(2) 实验设备易损坏、老化,而且由于微型计算机发展迅速,实验设备更新换代往往跟不上微型计算机发展的速度,导致实验内容陈旧、不全面。如目前大多数高校该课程的使用教材和授课内容已经是以32位微处理器为背景,讲授32位微型计算机原理和接口技术,但配套的32位实验设备却鲜见。

(3) 微机接口实验通常是软件和硬件相接合,学生平时对计算机硬件的实践操作机会很少,初次涉及较多的接插线和元器件常出现错误,造成实验时间过长,学生排查错误困难,而且一旦出现差错易造成器件或设备的损坏和故障危险,影响了学生学习的主动性和积极性。

(4) 随着互联网的发展,基于网络的远程教学在教育领域中的影响越来越大。由于教学机构与学生在空间上分离,学生无法到学校实验室做具体的实验,这成为了制约远程教育质量的一个重要因素[1,2]。

鉴于以上情况,虚拟实验已成为当今研究的热点[3,4,5,6,7]。所谓虚拟实验是指在计算机系统中采用虚拟现实技术实现的各种虚拟实验环境,实验者可以像在真实的环境中一样完成各种预定的实验项目,所取得的学习或训练效果等价于甚至在某些情况下优于在真实环境中所取得的效果。近年来,虚拟实验得到了快速发展,但大部分集中在物理、化学类等学科,而微机接口等可编程类虚拟实验由于受技术的限制,发展相对缓慢。本文针对微机接口实验的具体特点,对微机接口虚拟实验的设计思想和实现原理进行了深入研究,重点讨论了虚拟中断实验的具体实现。

1 微机接口虚拟实验的设计思想

根据微机接口实验的特点,接口实验虚拟化应采用虚实接合的设计思想,以最大限度地模拟真实的实验环境。“实”即原有的实验程序和开发工具、开发环境保持不变,不需要做任何改动。学生不需要重新熟悉专门的编程语言、新的开发环境,一切开发过程和真实环境中的相同。“虚”即将微机接口实验需要的专门实验设备虚拟化,以“软”代“硬”,编写程序对硬件实验设备的实验结果进行仿真,以此来构建一个虚拟实验设备。虚拟实验设备包含8254、8255、8250等虚拟接口芯片以及数码管、开关、发光二级管等虚拟外设。

微机接口实验涉及到对特定的可编程接口芯片的编程[8],互动性是虚拟实验中的最大难点。如果仅仅让学生运行给定的实验程序和观察预先设置的实验结果,而不让他们自己亲自动手编程、调试和执行实验程序,通过程序运行控制设备工作,察看运行效果来检验程序正确性,根本达不到预想的实验效果,也不能提起学生对接口实验的兴趣。因此实现虚拟可编程实验必须根据实验程序执行后产生的指令流,虚拟实验设备实时动作以仿真真实设备。

如果对实验程序执行后产生的所有指令、每个操作序列给出相应的系统反馈,由于编程代码的不可预测性,用户最终的操作序列集合的元素数量太大,是很难实现的。通过对接口实验仔细分析,可发现在微机接口实验中,大部分都是要求用户编写程序通过指令序列去控制硬件设备,从而检验用户程序的正确与否。而接口是CPU和外设之间的数据交换的中转站,用户对外设的控制完全是通过对接口芯片的编程实现的。PC系列机中,CPU对I/O端口的访问又是通过IN/OUT指令完成的,因此可截获用户程序运行中对端口的操作序列(即IN/OUT指令流),然后根据这个端口操作序列让虚拟实验设备实时动作,对真实设备的真实运行结果进行模拟仿真。可以看出,构造虚拟实验的关键是让虚拟实验设备程序实时获得实验程序执行后的I/O指令流,即输入、输出指令的截获。

2 微机接口虚拟实验的实现原理

由于Windows 2000/XP操作系统中,普通应用程序对端口是不能直接用IN/OUT指令进行访问的,也不能使用STI、CLI中断允许和禁止指令[9],因此目前各高校微机接口实验程序的编程格式基本上仍是DOS格式,程序运行在Windows的虚拟86模式,即DOS虚拟机(VDM)环境中。应用程序运行在实模式DOS环境和运行在DOS虚拟机中,尽管指令代码相同,但是运行的机制完全不同。在实模式DOS环境下,应用程序和硬件的关系非常密切,另外由于DOS驱动程序和应用程序拥有相同的特权,从软件的角度来截获用户的I/O操作是不可能的。虚拟86模式是保护模式下的一种特殊工作模式,实模式DOS程序可以不经任何修改地运行在此模式中。但DOS程序中任何对硬件访问的特权操作都会被系统截获,并被传送到内核模式设备驱动,以使这些操作能在不危及系统完整性的情况下执行。

Windows 2000/XP操作系统提供了两种拦截方式[10],一种是基于应用程序的拦截;另一种是基于VDM的截获。基于应用程序的拦截需要修改应用程序,而本文的设计目标是不需要对接口实验程序作任何改动,保持虚拟实验程序和真实实验程序的一致性,因此采用了基于VDM的截获,其原理由图1所示。

基于VDM的截获不需要对DOS实验程序做任何修改。VDM会将截获的DOS实验程序中对端口的I/O操作,路由到虚拟设备驱动程序(VDD),VDD再根据每种具体的操作来进行转发,可以直接访问硬件设备;也可以脱离实际的硬件,转发给虚拟实验设备程序,虚拟实验设备会根据用户的指令实时反馈,对真实设备的真实运行结果进行模拟仿真,例如发出声音、屏幕的显示发生变化等。

3 虚拟中断实验的实现

中断系统是微机系统的重要组成部分,中断的虚拟是虚拟实验的重点也是难点,本文给出了虚拟中断实验的实现方法。由图1所示,整个虚拟实验需开发的程序由以下三部分组成:

(1) DOS中断实验程序

该程序和真正硬件实验程序相同,不需要实验者对原有的实验程序做任何修改。中断程序通常由主程序和中断服务程序组成,其流程图分别如图2(a)、(b)所示。

(2) 虚拟实验设备程序

虚拟实验设备程序是开发的普通Win32应用程序,完成对真实硬件设备的仿真,在界面上是对真实设备的外观模拟,在内部逻辑处模块上是对真实设备的功能仿真。

(3) VDD驱动程序

VDD是实现虚拟实验最重要的一个部分。VDD是一种特殊的驱动程序,是一个运行在操作系统用户模式下的32位动态链接库DLL。它通过一个截获-转发机制,将DOS实验程序和虚拟实验设备联系起来,而又使得实验者感觉不到VDD的存在,认为是在直接控制虚拟实验设备,从而获得与控制真实设备同样的体验。VDD不仅可以截获DOS程序的I/O操作,即IN/OUT指令以及对内存的读写操作,另外还支持DMA操作、CPU寄存器的读写和硬件中断模拟。VDD编写时必须符合Windows SDK中定义的Win32 DLL函数的规则形式,可分为如下三个部分:

① 初始化函数 它是VDD驱动运行的入口,主要完成初始化所需截获的端口地址列表,安装回调函数,以及创建并启动等待线程用于和Win32应用程序(即虚拟实验设备程序)进行通信。当初始化模块被成功载入后,DOS实验程序中对端口地址列表中的端口读写指令都会被成功截获,并且调用相应的回调函数。

② 端口写操作回调函数 它将截获的OUT指令中的端口地址和端口值传递到Win32应用程序, 实现对物理可编程实验设备的仿真,包括功能仿真、界面仿真。功能部分真实地模拟了具体可编程实验设备的功能特性,界面部分则是以图形化的形式再现了真实可编程实验设备的运行效果,如数码管的显示等。端口读操作回调函数,在截获到实验程序中的IN指令时,将虚拟的端口值返回给实验程序。

③ 等待线程 它实现和Win32应用程序,即虚拟实验设备的通信,以及中断的触发。虚拟实验的设计目标一方面是必须根据实验程序执行后产生的指令流,虚拟设备实时动作以仿真真实设备;另外还必须检验实验程序的正确与否。因此触发中断之前,应从以下几个方面来检测实验程序的正确性。

VDD中断触发流程如图3所示。

① 检测CPU是否处于开中断状态 在真实的中断实验中,中断信号通常是由硬件实验台的硬件设备产生。该中断信号作为可屏蔽中断由8259接口芯片进行管理,CPU只有处于开中断状态,才能响应可屏蔽中断,暂停现行程序的执行转而执行中断服务程序。因此DOS实验主程序在置换中断向量之后必须有一条STI开中断指令,否则实验结果是不正确的。但是VDD的中断模拟技术允许VDD向VDM模拟一个硬件中断申请信号,VDM接收到该中断申请信号,无论 CPU是否处于开中断状态,一定会执行相应的中断服务程序,从而可得到的正确运行结果。为了能得到和真实实验设备相同的实验结果,VDD程序在中断触发之前必须利用VDD的寄存器读函数getIF,检测CPU是否处于开中断状态,即CPU的I标志位是否为1。

② 检测8259相应通道是否开放 在真实的中断实验中,硬件中断信号接到主从8259的IR7-IR0,只有没有被8259屏蔽寄存器屏蔽的中断申请信号才能通过 8259向CPU提请中断。DOS实验主程序必须开放8259程序中断,例如硬件中断信号接到PC系列机中从8259的IR1,则程序段如下:

IN AL,21H

AND AL,11111011B

OUT 21H,AL ;主8259的屏蔽字的D2置0,开放主8259的IR2

IN AL,0A1H

AND AL,11111101B

OUT 0A1H,AL ;从8259的屏蔽字的D1置0,开放从8259的IR1

同样,VDM接收到VDD发送的模拟中断信号,无论当前8259是否开放,都会执行相应的中断服务程序,因此VDD程序在中断触发之前必须检测8259屏蔽字相应位是否置0。本文采用的检测方法如下:首先VDD初始化函数中截获的端口地址应包括主从8259屏蔽寄存器口地址,其次在端口写操作回调函数中,判断截获的端口地址是否为8259屏蔽寄存器口地址,若是则判断对应的端口值即屏蔽字相应位是否为1。

③ 检测中断向量的正确置换及中断结束命令字 对于可屏蔽硬件中断,在中断服务程序中断返回之前,应向8259送中断结束命令字20H,将8259中断服务寄存器相应位置0,否则CPU不能响应新的中断申请。实验证明中断结束命令字对VDD发送的模拟中断申请信号的作用相同,如果DOS中断服务程序在中断返回前没有向8259送中断结束命令,则中断服务程序不能正确地执行,得到正确的仿真结果。因此对于中断向量的是否正确置换及是否写中断结束命令字,不需要软件编程,而是从程序的运行结果就可以检测。

4 结 论

实验结果表明,通过对实际的接口硬件设备的软件模拟,虚拟设备能够做出与实际硬件完全类似的动作,实验的效果明显。基于VDM所截获的微机接口虚拟实验不仅比较有效地解决目前微机接口实验存在的一些问题和不足,在某些方面甚至优于真实的硬件实验,如不占用系统硬件资源、共享度高、成本低、可以不断增加新的实验内容等。硬件的虚拟化排除了实验中硬件故障的影响,学生通过虚拟实验可以更方便地检查出程序的错误,编写出正确的实验程序,提高了学习兴趣,获得更好的课程教学效果。

参考文献

[1]Jamahl W,Overstreet,Anthony Tzes.An Internet-Based Real-TimeControl Engineering Laboratory[J].IEEE Control Systems Magazine,October 1999:19-33.

[2]Aktan B,et al.Distance learning applied to control engineering labora-tories[J].IEEE Trans on Education,1996,39(8):320-326.

[3]Kuo R,Chang M,Heh J S.Applying interactive mechanism to virtualexperiment environment on WWW with experiment action language[C]//IEEE International Conference on Advanced Learning Technol-ogies,2001:289-290.

[4]江诗林,吴泉源.开展虚拟实验系统的研究和应用[J].计算机工程与科学,2002(22):34-35.

[5]李健苹.远程教育实验教学的实施[J].重庆广播电视大学学报,2002(1):11-13.

[6]詹碧卿,林超文,蒋建生,等.现代远程教育教学模式探讨[J].中国远程教育,2002(2):43-47.

[7]陈传波,朱伟,刘乐善.一个可编程虚拟实验平台的研究[J].机算机工程科学,2004(7):77-78.

[8]孙力娟,等.微型计算机原理与接口技术[M].北京:清华大学出版社,2007.

[9]坎特.Windows WDM设备驱动程序开发指南[M].北京:机械工业出版社,2007.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【接口实验报告】相关文章:

总线接口04-28

接口设计思路04-11

接口监理细则05-02

软件接口技术05-13

HPI接口05-16

设备接口设计论文04-15

接口设计论文范文05-09

医院信息系统接口07-26

接口设计论文提纲11-15

微机接口技术心得04-25

上一篇:语文教学中如何培养学生创新能力论文下一篇:必过专业技术人员答案