首页 > 实用范文 > 其他范文
接口实验报告大全
编辑:心旷神怡 识别码:130-1137471 其他范文 发布时间: 2024-09-13 16:07:31 来源:网络

第一篇:接口实验报告大全

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

学号

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

评 定

教师签名 实 验 时 间

202_ 年 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 路的中断处理,他可以实现中断的屏蔽,优先级的设定,中断号的产生等,他也可以通过设置方式命令字来设置它的工作方式。实验还使自己掌握了,多芯片联合工作的方法,这为以后的电路设计提供了很多的经验。

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

《单片机与接口技术》 实 实 验 报 告

SUN

ES59PA

班 班 级:____________________ 学 学 号:____________________ 姓 姓 名:____________________ 得 得 分:____________________ 指 指 导:____________________ 日 日 期:____________________

合肥工业大学宣城校区

实验一

XXXXXXXXXXXXX

一、实验目的 二、实验 设备

三、实验内容

四、实验步骤

五、实验 现象

六、实验程序(必须带注释)

第三篇:微机原理与接口技术 实验报告一

微机原理与接口技术

实验报告一

姓名

匡越

学号

1715211016

时间

地点

实验题目

一、实验目的1.熟悉Keil软件使用

2.熟悉MCS-51指令

3.学习简单程序的调试方法

二、实验说明

通过实验了解单片机内部存储器的结构和分配及读写存储器的方法,熟悉MCS-51指令同时,学习单片机程序编程、调试方法。

三、实验内容及步骤

1.启动PC机,打开Keil软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序1,进行编译,如有错误按提示找到该行并纠错,重新编译直到通过。

2.编译无误后,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化并将观察到的结果记录到预习报告。

3.新建另一个项目输入源文件2,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察存储块数据变化情况记录到预习报告。点击复位按钮,改变存储块数据,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,记录到预习报告。点击复位按钮,改变存储块数据,分别LOOP、LOOP1设置断点,点击全速执行快捷按钮,在断点处观察寄存器及存储块数据变化情况。

WAVE软件使用方法参考其帮助文件。

四、实验程序流程框图、实验程序

1、源程序1

ORG

0000H

AJMP

MAIN

ORG

0030H

MAIN:

MOV

R0,#30H;

(R0)=

(00H)=

MOV

A,#40H;

(A)=

MOV

R6,A;

(A)=,(R6)=

MOV

A,@R0;

(R0)=

(A)=

MOV

40H,A;

(A)=

(40H)=

MOV

30H,40H;

(30H)=

(40H)=

MOV

R1,#40H;

(R1)=

MOV

@R1,#0AAH;(R1)=

(40H)=

MOV

SP,#60H;

(SP)=

PUSH

ACC;

(SP)=

(61H)=

PUSH

30H;

(SP)=

(62H)=

MOV

A,#0FFH;

(SP)=

(A)=

MOV

30H,#30H;

(SP)=

(30H)=

POP

ACC;

(SP)=

(A)=

POP

30H;

(SP)=

(30H)=

ADD

A,30H;

(30H)=

(A)=

Cy=

SUBB

A,#10;

(A)=

Cy=

MOV

R4,#00100100B;

(R4)=

H

MOV

A,#39H;

(A)

=

ADD

A,R4;

(A)

=

(R4=)

DA

A;

(A)

=

Cy=

MOV

28H,#55H;(28H)

=

Cy=

MOV

C,40H;

(PSW)

=

Cy=

MOV

26H,#00H;(26H)

=

Cy=

MOV

30H,C;

(30H)

=

(26H.1)

=

SJMP

$

j点击project,选择下拉式菜单中的New

project;

k选择所要的单片机,这里我们选择常用的Ateml

公司的AT89C51;

l新建一个File,输入源程序;

m将新建文件保存为text.asm的格式;

n鼠标在屏幕左边的Source

Group1

文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。选“Add

File

to

Group

‘Source

Group

1’”弹出文件窗口,选择刚刚保存的文件;

o对程序进行编译运行;

使程序一得:

ORG

0000H

AJMP

MAIN

ORG

0030H

MAIN:

MOV

R0,#30H

;

(R0)=

0x30

(00H)=

0x0000

MOV

A,#40H

;

(A)=

0x40

MOV

R6,A

;

(A)=

0x40,(R6)=

0x40

MOV

A,@R0

;

(R0)=

0x30

(A)=

0x16

MOV

40H,A

;

(A)=0x16

(40H)=

0x0040

MOV

30H,40H

;

(30H)=

0x0030

(40H)=

0x0040

MOV

R1,#40H

;

(R1)=

0x40

MOV

@R1,#0AAH;(R1)=

0x40

(40H)=

0x0040

MOV

SP,#60H;

(SP)=

0x60

PUSH

ACC;

(SP)=

0x61

(61H)=

0x0061

PUSH

30H;

(SP)=

0x62

(62H)=

0x0062

MOV

A,#0FFH;

(SP)=

0x62

(A)=

0xff

MOV

30H,#30H;

(SP)=

0x62

(30H)=

0x0030

POP

ACC;

(SP)=

0x61

(A)=

0x16

POP

30H;

(SP)=

0x60

(30H)=

0x0030

ADD

A,30H;

(30H)=

0x0030

(A)=

0x2a

Cy=

0

SUBB

A,#10;

(A)=

0x20

Cy=

0

MOV

R4,#00100100B;

(R4)=

0x24

H

MOV

A,#39H;

(A)

=

0x39

ADD

A,R4;

(A)

=

0x5d

(R4=)

0x24

DA

A;

(A)

=

0x63

Cy=

0

MOV

28H,#55H;(28H)

=

0x0028

Cy=

0

MOV

C,40H;

(PSW)

=

0x80

Cy=

MOV

26H,#00H;(26H)

=

0x0026

Cy=

MOV

30H,C;

(30H)

=

0x0030

(26H.1)

=

0

SJMP

$

2、源程序2

设(30H)=4,(31H)=1,(32H)=3,(33H)=5,(34H)=2,(35H)=6

ORG

0000H

AJMP

MAIN

ORG

0030H

MAIN:

MOV

R0,#30H;30H→R0

MOV

R2,#6;6→R2

SORT:

MOV

A,R0;30H→A

MOV

R1,A;30H→R1

MOV

A,R2;6→A

MOV

R5,A;6→R5

CLR

F0;

状态标志位清零

DEC

R5;寄存器R5减一

MOV

A,@R1;R1→A

LOOP:

MOV

R3,A;A→R3

INC

R1

;寄存器R1增1

CLR

C

;进位标志位清零

MOV

A,@R1;31H→A

SUBB

A,R3;累加器内容减去寄存器内容

JNC

LOOP1;仅为标志位为1,则进行LOOP1

;以下代码完成数据交换

SETB

F0;状态标志位置1

MOV

A,@R1;31H→A

XCH

A,R3;将A于与R3的数据交换

MOV

@R1,A;将4赋值给寄存器R1(31H)

DEC

R1;寄存器减一

MOV

A,R3;1→A

MOV

@R1,A;将1赋值给寄存器R1(30H)

INC

R1;寄存器R1增一

LOOP1:

MOV

A,@R1;4→A

DJNZ

R5,LOOP;寄存器R5减一,不为零则回到LOOP

JB

F0,SORT;状态标志位为零,则回到SORT

SJMP

$

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

实验六D/A转换(脱机:HW10)

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

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

二、实验内容

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

三、实验步骤

四、实验现象解释

五、实验程序

第五篇:北京邮电大学微机原理与接口技术硬件实验报告

信息与通信工程学院

微机原理与接口技术硬件实验报告

姓 学 序

级:

名:

号:

号:

期: 202_-10-30——202_-12-26 目录

实验一 I/O地址译码.............................................................................................................................3

一、实验目的............................................................................................................................3

二、实验原理及内容..............................................................................................................3

三、硬件接线图与软件程序流程图..................................................................................3

四、源程序.......................................................................................................................................4

五、实验结果..................................................................................................................................5

六、实验总结..................................................................................................................................5

七、实验收获与心得体会...........................................................................................................5 实验二简单并行接口..............................................................................................................................5

一、实验目的............................................................................................................................5

二、实验原理及内容..............................................................................................................5

三、硬件接线图与软件程序流程图........................................................................................6

四、源程序.......................................................................................................................................6

五、实验结果..................................................................................................................................7

六、实验总结..................................................................................................................................7

七、实验收获与心得体会...........................................................................................................7 实验四七段数码管..................................................................................................................................7

一、实验目的..................................................................................................................................7

二、实验原理及内容....................................................................................................................8

三、硬件接线图与软件程序流程图........................................................................................8

四、源程序.......................................................................................................................................9

五、实验结果...............................................................................................................................11

六、实验总结...............................................................................................................................11

七、实验收获与心得体会........................................................................................................11 实验八可编程定时器/计数器(8253/8254).........................................................................11

一、实验目的...............................................................................................................................11

二、实验原理及内容.................................................................................................................11

三、硬件接线图与软件程序流程图.....................................................................................12

四、源程序....................................................................................................................................13

五、实验结果...............................................................................................................................17

六、实验总结与思考题............................................................................................................17

七、实验收获与心得体会........................................................................................................17 实验十六串行通讯8251....................................................................................................................18

一、实验目的...............................................................................................................................18

二、实验原理及内容.................................................................................................................18

三、硬件接线图与软件程序流程图.....................................................................................18

四、源程序....................................................................................................................................19

五、实验结果...............................................................................................................................22

六、实验总结与思考题............................................................................................................22

七、实验收获与心得体会........................................................................................................22

实验一 I/O地址译码

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理及内容

1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,„„当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX)

Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、„„),时间间隔通过软件延时实现。

2、接线: Y4/IO地址接 CLK/D触发器 Y5/IO地址接 CD/D触发器

D/D触发器接 SD/D角发器接 +5V Q/D触发器接 L7(LED灯)或逻辑笔

三、硬件接线图与软件程序流程图

硬件连接图如下: 程序流程图如下:

四、源程序

CODE SEGMENT

ASSUME CS:CODE ;定义代码段

START:

MOV DX,2A0H

;选通Y4

OUT DX,AL

CALL DELAY

;延时

MOV DX,2A8H

;选通Y5

OUT DX,AL

CALL DELAY ;延时

MOV AH,1H

INT 16H;01号功能调用,从键盘接收按键 JZ START

;无键按下,返回START MOV AH,4CH;有键按下,返回DOS系统 INT 21H

DELAY PROC NEAR

;延时子程序,循环系数为100

MOV BX,100 LOOP1: MOV CX,0

LOOP2: LOOP LOOP2

DEC BX

JNZ LOOP1

RET

DELAY ENDP

CODE

ENDS

END START

五、实验结果

按下键盘时L7闪烁发光,交替亮灭。

六、实验总结

实验一开始时不理解怎样选通Y4和Y5的地址,对整个接口电路分析后才明白了译码电路真正的原理。

七、实验收获与心得体会

本次实验主要了解了端口的输出,D触发器作为一个外部端口实现了向D触发器内写值并正确输出,控制灯泡亮灭,实现了译码功能。对I/O接口有了更深的理解,对以后的实验很有帮助。这次实验是第一次用汇编语言来让硬件实现功能,和之前学过的C++有很大的区别,也让我进一步看到了他们的不同之处。

实验二简单并行接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验原理及内容

1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

5、接线:1)输出

按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)2)输入

按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

三、硬件接线图与软件程序流程图

硬件连接图如下:

图4-2-1

图4-2-2

程序流程图如下:

四、源程序 CODE SEGMENT;定义代码段 ASSUME CS:CODE START:MOV AH,1 INT 21H;从键盘检测输入 CMP AL,00011011B JZ EXIT MOV DX,2A8H;送出ASCII码 OUT DX,AL MOV DX,2A0H;读入ASCII码 IN AL,DX MOV DL,AL MOV AH,02H;屏幕显示ASCII码 INT 21H JMP START;循环检测

EXIT:MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、实验结果

从键盘输入字符或数字,若不是Esc键,则二极管显示其ASCII码情况,若按下ESC,则返回dos,且各LED灯灭。

六、实验总结

实验一开始不太明白如何把输入的字符通过二极管显示出来,后来参考了实验一的译码输出,理解了实验原理。

七、实验收获与心得体会

这次实验是对I/O接口译码电路的运用,进一步熟悉了译码电路、键盘输入检测等功能的运用,让我很好的明白了CPU的地址总线与外部接口是如何工作,也进一步了解了硬件实验,希望在以后的实验中有更多的收获。

实验四七段数码管

一、实验目的

掌握数码管显示数字的原理

二、实验原理及内容

1、静态显示:按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。)

2、接线: PA7~PA0/8255 接dp~a/LED数码管 PC3~PC0/8255 接 S3~S0/LED数码管 CS/8255 接 Y1/IO地址

三、硬件接线图与软件程序流程图

硬件连接图如下:

程序流程图如下:

四、源程序

DATA SEGMENT;定义代码段 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,28BH;控制口地址

MOV AL,80H;控制字10000000设定工作方式0,所有口都置为输出

OUT DX,AL

LOP1: MOV DX,288H ;A口地址

MOV AL,3fH;段选写0 OUT DX,AL

MOV DX,28AH;位选第4个LED,C口地址

MOV AL,08H OUT DX,AL

MOV DX,28AH;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H;段选写3 MOV AL,4fH OUT DX,AL

MOV DX,28AH ;位选第3个LED MOV AL,04H OUT DX,AL

MOV DX,28AH;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL

MOV DX,28AH;位选第2个LED MOV AL,02H OUT DX,AL

MOV DX,28AH ;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL

MOV DX,28AH ;位选第1个LED MOV AL,01H OUT DX,AL

MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL

MOV AH,01H INT 16H JNZ EXIT;有键输入则退出

JMP LOP1 EXIT: MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、实验结果

结果显示了学号的后四位0300,如下如所示:

当有键盘输入时,返回DOS系统。

六、实验总结

本次实验用了8255并行接口芯片,采用方式0,所有口都用输出模式,A口为段选,控制输出的数据,C口为位选,控制不同的位不断扫描、交替亮灭。

七、实验收获与心得体会

这次实验在前两次实验的基础上,用到了并行接口芯片和数码管,在数码管上显示数据,在8255工作在方式0时,用两个输出端口,控制数码管工作,数码管在之前数电实验的基础上比较好理解,这次实验较之前的实验更有难度,不过学到了很多知识,由于理论还没有讲到8255,实验有一定难度,不过对理论课也有一定的帮助。

实验八可编程定时器/计数器(8253/8254)

一、实验目的

学习掌握8253用作定时器的编程原理;

二、实验原理及内容

1.8253初始化

使用8253前,要进行初始化编程。初始化编程的步骤是: ①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。②向使用的计数器端口写入计数初值。2.8253控制字

D7D6=00:使用0号计数器,D7D6=01:使用1号计数器 D7D6=10:使用2号计数器,D7D6=11:无效 D5D4=00:锁存当前计数值

D5D4=01:只写低8位(高8位为0),读出时只读低8位 D5D4=10:只写高8位(低8位为0),读出时只读高8位 D5D4=11:先读/写低8位,后读/写高8位计数值

D3D2D1=000:选择方式0,D3D2D1=001:选择方式1 D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3 D3D2D1=100:选择方式4,D3D2D1=101:选择方式5 D0=0:计数初值为二进制,D0=1:计数初值为BCD码数

3.实验内容

完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。利用小键盘实现弹琴功能,并显示弹奏的乐谱。

三、硬件接线图与软件程序流程图

接线图如下:

CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟

OUT0 /8253 接喇叭或蜂鸣器 程序流程图如下:

四、源程序

DATA SEGMENT FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,202_,1953;分频比 DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管 MUSIC DB 5,3,5,3,5,3,1,1,2,4,3,2,5,5,5,5,5,3,5,3,5,3,1,1,2,4,3,2,1,1,1,1,2,2,4,4,3,1,5,5;存放播放的乐曲音符

NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入 DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

;延时子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

;延时子程序2 DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RET DELAY1 ENDP

;获取键盘输入值的子程序 KEY PROC NEAR PUSH AX ;保护现场 PUSH CX PUSH DX MOV CX,01H CHECK: MOV DX,28AH ;C口地址给DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,[BX] OUT DX,AL ;防抖

IN AL,DX ;判断是否有键盘按下 MOV AH,AL CALL DELAY IN AL,DX CMP AL,AH JNZ CHECK ;不相等说明为抖动,重新检测 ;判断按下的列

AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOT NEXT: INC CX ;修改变量扫描下一行 CMP CX,05H JNZ JUMP1 MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H

;计算按下键盘的数值

GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL SUB BL,01H ;此时BX中所存即为对应的偏移量 POP DX ;恢复现场 POP CX POP AX RET KEY ENDP

;主程序

START: MOV AX,DATA MOV DS,AX ;8253初始化

MOV DX,283H MOV AL,36H控制字为00110110,选计数器0,先读低字节再读高字节,选用工作方式3 OUT DX,AL ;8255初始化

MOV DX,28BH MOV AL,81H ;C口输入(10000001)

OUT DX,AL MOV DX,289H ;B口位选数码管

MOV AL,01H OUT DX,AL ;扫描键盘

LOOP1: CALL KEY CMP BX,0 ;按0播放音乐 JZ PLAY0 CMP BX,9 ;按9退出 JZ EXIT ;按1~8发出对应音 MOV CX,BX MOV BX,OFFSET DIGITAL ;数码管显示音符 ADD BX,CX MOV AL,[BX] MOV DX,288H ;A口输出 OUT DX,AL ;播放该音符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY1 CALL DELAY1

MOV DX,28AH ;C口输入 IN AL,DX ;检测键盘是否弹起 MOV AH,AL LOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2 ;初始化8253,停止播放音乐 MOV AX,0H MOV DX,283H MOV AL,36H OUT DX,AL JMP LOOP1

;播放音乐

PLAY0: MOV CX,01H PLAY: PUSH CX

;读取音符,存于CX中

MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,[BX] MOV CL,AL MOV CH,0H ;数码管显示

MOV BX,OFFSET DIGITAL ADD BX,CX MOV AL,[BX] MOV DX,288H OUT DX,AL

;播放该乐符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL POP CX ;延时,持续播放

MOV AX,90H LOOP3: CALL DELAY1 DEC AX JNZ LOOP3 ;乐曲未结束时,CX加1 INC CX CMP CX,28H;共40个音符 JNZ JUM JMP LOOP1 JUM: JMP PLAY

EXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H

CODE ENDS END START

五、实验结果

按下键盘0,播放歌曲“粉刷匠”,数码管显示相应的音符;按下小键盘的1——8,喇叭播放所对应的音符,数码管显示按下的音符;按下键盘的9时,数码管熄灭,返回DOS系统。

六、实验总结与思考题

实验主要用了8253计数器,其工作在方式3下,作为方波发生器,产生不同音符的不同频率的方波。根据音符频率和1M的时钟确定输入频率,检测键盘的输入,判断输入的字符,8253产生相应的频率,喇叭播放音符,数码管输出按下的音符。实验的难点在于怎样判断键盘的输入。

思考题:写出8253计数初值,输入频率和输出频率的关系:

答:输出频率 = 输入频率/8253计数初值

七、实验收获与心得体会

这次实验较之前的实验难度较大,用到了8255、8253、数码管,是个相对来说系统点的实验,这也使得代码在实现起来比较多而复杂。一开始实验时不理解8255计数器的工作原理,对音符如何通过喇叭显示出来也不明白,在弄清楚了他们的原理和相互之间的联系之后,才慢慢理解。实验的内容要求编一小段音乐,虽然实验很难,但是也增加了我们对实验的兴趣。实验十六串行通讯8251

一、实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、实验原理及内容

1、按下图连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

2、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。

3、接线: CLK0 /8254 接 1M时钟 GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO地址 CS /8251 接 Y7 /IO地址 RXD /8251 接 TXD /8251

三、硬件接线图与软件程序流程图

硬件接线图如下: 程序流程图如下:

四、源程序

DATA SEGMENT;定义数据段

STRING DB 'SEND ','$';定义字符串 STRING1 DB 'RECEIVE ','$' STRING2 DB 0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK 'SATCK';定义堆栈段

DB 100 DUP(?)STACK ENDS

CODE SEGMENT;定义代码段

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

;延时子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

START: MOV AX,DATA MOV DS,AX;8254初始化

MOV DX,283H MOV AL,16H;(00010110)计数器0,只读低字节,方式3,二进制 OUT DX,AL CALL DELAY MOV DX,280H;计数器0,初值为52 MOV AL,34H;初值52 OUT DX,AL CALL DELAY;8251初始化

MOV DX,2B9H;控制端口地址

MOV AL,40H;(01000000)内部复位命令 OUT DX,AL NOP CALL DELAY MOV AL,5E;(01011110)方式控制字:波特率因子为16,一位停止位,一位奇校

验的异步方式

OUT DX,AL MOV AL,37H;(00110111)命令控制字 OUT DX,AL CALL DELAY

;发送数据

GOON: MOV DX,2B9H;读状态字 IN AL,DX TEST AL,01H ;检测是否可以发送字符 JZ GOON

;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING INT 21H

MOV AH,01H INT 21H;检测是否为ESC键 CMP AL,1BH JZ EXIT INC AL;加1

MOV DX,2B8H;访问数据寄存器 OUT DX,AL;接收数据

RECEIVE: MOV DX,2B9H ;读状态字 IN AL,DX TEST AL,02H ;检测是否收到新数据 JZ RECEIVE

;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING2 INT 21H MOV AH,09H MOV DX,OFFSET STRING1 INT 21H

MOV DX,2B8H IN AL,DX MOV DL,AL MOV AH,02H;显示接收的数据 INT 21H MOV AH,09H MOV DX,OFFSET STRING2 INT 21H JMP GOON ;不断的发送读写

EXIT: MOV AX,4C00H;返回DOS INT 21H

CODE ENDS END START

五、实验结果

实验结果如上图所示,输出字符为输入字符的下一个,可以连续的发送接收,按下Esc健时,返回DOS。

六、实验总结与思考题

实验用到了串行通信接口芯片8251A,采用异步方式,确定了方式控制字。8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接 1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

实验的难点在于发送和接收,当TxRDY为高电平时发送缓存区空,此时可以写入数据,8251A与01进行与运算,若结果为1表示可以发送数据;当RxRDY为高电平时接收缓存区满,此时可以读数据,8251A与10进行与运算,若结果为1表示可以接收数据。

思考题:在实验中,你如何确定RxC,TxC的值,写出计算公式 答:RxC=TxC=8253输出时钟频率=8251波特率*波特率因子

七、实验收获与心得体会

这次实验主要用了串行接口8251A,相比并行接口较为简单,还用到了计数器8253,又加强了对其的了解,这次实验课是在理论课刚上完之后,对8251A的理解也比较到位,所以整个实验都进行的比较顺利,对理论课不太懂得知识,经过实验后也都弄得比较清楚。这是硬件实验的最后一次,用到了两个芯片,还是比较系统的。这学期的硬件实验让我提高了自己的实际操作能力,帮助更好的理解了理论课所学的知识,也对汇编语言有了更直观的了解,收获了很多。

接口实验报告大全
TOP