微机实践全部实验.docx

上传人:b****5 文档编号:7464783 上传时间:2023-01-24 格式:DOCX 页数:26 大小:62.65KB
下载 相关 举报
微机实践全部实验.docx_第1页
第1页 / 共26页
微机实践全部实验.docx_第2页
第2页 / 共26页
微机实践全部实验.docx_第3页
第3页 / 共26页
微机实践全部实验.docx_第4页
第4页 / 共26页
微机实践全部实验.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

微机实践全部实验.docx

《微机实践全部实验.docx》由会员分享,可在线阅读,更多相关《微机实践全部实验.docx(26页珍藏版)》请在冰豆网上搜索。

微机实践全部实验.docx

微机实践全部实验

实验一开关状态显示

【实验目的】

熟悉实验箱和软件开发平台的使用。

了解基本I/O端口的操作方法和技巧,掌握编程和调试基本技能。

【实验内容】

利用74LS244作为输入口,读取开关状态,根据给定表格中开关状态对应的输出关系,通过74LS273驱动发光二极管显示出来。

【实验区域电路连接图】

参考上图连线:

Y0~Y1接K1~K2(对应J1、J2);Q0~Q7接L1~L8(对应J3至J10);CS1接8000H孔(对应J12);CS2接9000H孔(对应J11);IOWR→IOWR;IORD→IORD;然后用数据排线连接JX7→JX17(BUS2)。

【程序框图】

【编程】

CODESEGMENT

ASSUMECS:

CODE

ORG1200H

START:

MOVDX,8000H

INAL,DX

TESTAL,01H

JNZY1/测试AL是否等于01H,若不等于,则跳入循环Y1/

TESTAL,02H

JNZY2/测试AL是否等于02H,若不等于,则跳入循环Y2/

MOVDX,9000H

MOVAL,0FFH/点亮所有的灯/

OUTDX,AL

JMPSTART

Y1:

TESTAL,02H

JNZY3/测试AL是否等于02H,若不等于,则跳入循环Y3/

MOVDX,9000H

MOVAL,0AAH/点亮奇数号灯/

OUTDX,AL

JMPSTART

Y2:

MOVDX,9000H

MOVAL,55H/点亮偶数号灯/

OUTDX,AL

JMPSTART

Y3:

MOVDX,9000H

MOVAL,00H/所有灯全灭/

OUTDX,AL

JMPSTART

CODEENDS

ENDSTART

【问答题】

1、I/O端口的寻址方式有哪2种?

在x86系统中,采用哪一种?

解:

I/O端口的寻址方式有两种:

一种是I/O地址与存储器地址统一编址,一种是I/O地址与存储器地址分别独立编址。

在x86系统中,采用I/O地址与存储器地址分别独立编址。

2、在输入/输出电路中,为什么常常要使用锁存器和缓冲器?

解:

一般来说,I/O设备速度比CPU执行速度慢,故输入设备的数据线锁存在端口的锁存器中,CPU从端口中读入数据;输出时CPU将数据“打入”缓冲器后就可以退出,外设从缓冲器取数据。

【心得体会】

第一次的实践课程做的是开关状态显示,通过本次试验的操作,我了解了dice8086实验系统自带键盘、显示电路和监控管理程序,在无PC机的情况下,同样可以脱机通过单步、断点、全速等方法调试实验程序。

熟悉了实验箱和软件开发平台的使用。

了解基本I/O端口的操作方法和技巧,掌握编程和调试基本技能。

掌握了编程和调试基本技能,加深了对课堂上理论知识的学习,将理论与实践动手相结合,更好的掌握了知识,熟练了实验箱和软件结合使用的方法。

实验二模拟交通灯实验

【实验目的】

1.学习在PC机系统中扩展简单I/O接口的方法。

2.进一步学习编制数据输出程序的设计方法。

3.学习模拟交通灯控制的方法。

【实验内容】

用8255做输出口,控制十二个发光管(4组红绿黄灯)的亮灭,模拟十字路口交通灯管理。

【实验区域电路连接图】

PC0→L3;PC1→L7;PC2→L11;PC3→L15;红灯

PC4→L2;PC5→L6;PC6→L10;PC7→L14;绿灯

PB4→L1;PB5→L5;PB6→L9;PB7→L13。

黄灯

8255数据、控制线内部已线连好。

【程序框图】

【编程】

CODESEGMENT

ASSUMECS:

CODE

ORG1000H

PORTAEQU0FF28H

PORTBEQU0FF29H

PORTCEQU0FF2AH

PORTCNEQU0FF2BH;将8255的A、B、C和控制口地址定义,方便使用

main:

movdx,portcn

moval,80h

outdx,al;8255初始化,向控制口写入80H,表示A、B、C三个口都工作在方式0

movdx,portb

moval,0f0h

outdx,al;B口高位为黄灯,输出0F0H/0FFH使黄灯初始全灭。

否则默认输出全0,黄灯会全亮

movdx,portc

moval,0f0h

outdx,al;C口高位绿灯,低位红灯。

输出0F0H使绿灯全灭红灯全亮

calldelay1;延时

BEGIN:

;主循环标号

movdx,portc

moval,0a5h

outdx,al;1、3路口绿灯亮,即PC4和PC6为0。

对应路口红灯灭,即PC0和PC2为1,所以输出0A5H

calldelay3;红绿灯转换之间的长延时

movdx,portc

moval,0f5h

outdx,al;1、3路口绿灯灭,红灯不变,输出0F5H

movcx,8;黄灯闪烁次数计数赋初值8

L1:

movdx,portb

moval,0a0h

outdx,al;1、3路口黄灯对应PB4和PB6,该两位为0,故输出0A0H或0AFH

calldelay2;黄灯闪烁之间的短延时

movdx,portb

moval,0f0h

outdx,al;1、3路口黄灯灭,输出0F0H或0FFH

calldelay2

deccx;闪烁次数计数减1

jnzL1;闪烁次数计数不为0则跳回L1继续闪烁

movdx,portc

moval,0f0h;绿灯全灭,红灯全亮

outdx,al

movdx,portc

moval,5ah

outdx,al;2、4路口绿灯亮,红灯灭

calldelay3

movdx,portc

moval,0fah

outdx,al;2、4路口绿灯灭,红灯不变

movcx,8

L2:

movdx,portb

moval,50h

outdx,al

calldelay2

movdx,portb

moval,0f0h

outdx,al

calldelay2

deccx

jnzL2;2、4路口黄灯闪烁8次

movdx,portc

moval,0f0h

outdx,al;四个红灯全亮

jmpBEGIN

delay1:

movax,5h

movbx,0h

x:

decbx

jnzx

decax

jnzx

ret

delay2:

movax,1h

movbx,0h

y:

decbx

jnzy

decax

jnzy

ret

delay3:

movax,20h

movbx,0h

z:

decbx

jnzz

decax

jnzz

ret

codeends

endmain

【问答题】

1、8255A的哪个端口能实现位操作控制(按位置位/复位)?

执行控制字写入操作的端口是哪个?

解:

8255A的C端口能实现位操作控制(按位置位/复位),执行控制字写入操作的端口是命令字端口。

2、写出下图中Intel8255A占用的4个端口地址。

解:

FFF0H、FFF2H、FFF4H、FFF6H。

【心得体会】

这次的课程设计让我把书本上的理论知识应用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有助于检验理论的正确性的道理。

模拟交通灯工作的实验,通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯,以模拟交通路灯的管理。

在实验中不但要满足题目所提出的要求,更要结合实际,考虑到现实问题,比如说绿灯时间要比红灯时间长。

通过本次实验,不仅再次熟悉了8255A,更是对自己编程技术一个很好的锻炼,对我以后参加工作或者继续学习深造将产生巨大的帮助和影响。

实验三8253定时器/计数器实验

一、实验目的

学会8253芯片与微机接口的原理和方法。

掌握8253定时器/计数器的工作原理和编程方法。

二、实验内容

编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。

1、编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。

2、修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。

3、上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。

三、实验区域电路连接图

参考上图连线:

CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)

四、编程指南

8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。

8253的六种工作方式:

⑴方式0:

计数结束中断⑷方式3:

方波频率发生器

⑵方式l:

可编程频率发生⑸方式4:

软件触发的选通信号

⑶方式2:

频率发生器⑹方式5:

硬件触发的选通信号

8253初始化编程

1、8253初始化编程

8253的控制寄存器和3个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。

因此8253在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则:

①在对某个计数器设置初值之前,必须先写入控制字;

②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

2、8253的编程命令

8253的编程命令有两类:

一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令;另一类是读出命令,用来读取计数器的当前值。

锁存命令是配合读出命令使用的。

在读出计数器值前,必须先用锁存命令锁定当前计数寄存器的值。

否则,在读数时,减1计数器的值处在动态变化过程中,当前计数输出寄存器随之变化,就会得到一个不确定的结果。

当CPU将此锁定值读走后,锁存功能自动失效,当前计数输出寄存器的内容又跟随减1计数器变化。

在锁存和读出计数值的过程中,减1计数器仍在作正常减1计数。

这种机制确保了即能在计数过程中读取计数值,又不影响计数过程的进行。

五、程序框图

实验步骤

1、按连线图连接好,检查无误后打开实验箱电源。

在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。

3、运行程序后,观察LED闪烁周期(可以看10次或更多次闪烁时间,以提高观察准确度)。

再按要求调整初始值,使得闪烁周期为1S时间。

如果运行不正常就要检查连线,程序。

排查错误,修改程序,直到运行程序正常。

七、实验程序清单及注释

codesegment

assumecs:

code

org1200h

START:

movdx,43h;8253控制寄存器地址存入DX

moval,00110100b

outdx,al;对8253初始化,计数器0选择16位方式2二进制计数

movdx,40h;8253计数器0地址

moval,0EEH

outdx,al

moval,2H

outdx,al;给计数器0装入初值2EEH,先低字节后高字节

movdx,43h

moval,01110110b

outdx,al;8253初始化,计数器1选择16位方式3二进制计数

movdx,41h;8253计数器1地址

moval,0E8h

outdx,al

moval,3h

outdx,al;给计数器1装入初值3E8H,先低字节后高字节

jmp$;跳到本地址,使程序在这里无限循环

codeends

endSTART

计算步骤及结果

由公式:

f=

计数器1的输出频率(1.5S时):

计数器1的输出频率(1.0S时):

观察时,计时30s,观察这段时间内LED闪烁多少次,即可估算输出频率。

九、程序修改与调试

修改计数器0初值,

750到500

(1)初始程序输出频率是1.5Hz,即LED灯每1.5秒闪烁一次,若要使LED灯每1s闪烁一次,即输出为1Hz。

则程序应该作以下修改(十六进制时):

       MOV AL,0EEHMOV AL,0F4H

       OUT DX,ALOUT DX,AL

       MOV AL,2H→MOV AL,1H

       OUT DX,AL   OUT DX,AL

(2)若计数方式为BCD码,则程序应该作以下修改:

       MOV AL,00110100BMOV AL,00110101B

       OUT DX,AL  OUT DX,AL      

       MOV DX,40H  MOV DX,40H 

       MOV AL,0EEH→MOV AL,00H

       OUT DX,ALOUT DX,AL

       MOV AL,2HMOV AL,5H

      

       MOV AL,01110110BMOV AL,01110111B

       OUT DX,AL   OUT DX,AL

       MOV DX,41H   MOV DX,41H

       MOV AL,0E8H→MOV AL,00H

       OUT DX,ALOUT DX,AL

       MOV AL,3HMOV AL,10H

       OUT DX,AL OUT DX,AL  

十、问答题

1、8253初始化编程时需要遵循的原则是什么?

答:

(1)在赋初值前先写控制字

(2)赋初值时,初值的格式要与控制字中的信息相同

(3)若控制字中要求高低位都写,先写入低字节再写入高字节

(4)按计数器012的顺序进行初始化编程

2、简述8253初始化编程的步骤

答:

(1)写控制字

(2)写入初值

3、思考二进制计数或BCD码计数时,装入的初值最大值为多少?

答:

0000H

十一、心得体会

8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL本次实验,我重新学习了微机原理中关于8253定时器/计数器的工作原理以及微机接口的原理与方法,加深了对理论知识的理解与认识。

同时,对计数器频率的修改,让我再次熟悉了8253输出频率的计算方法,进一步掌握了8253的编程方法,也巩固了工作方式2和3的工作原理与基本作用。

实验四D/A转换器实验

一、实验目的

了解D/A转换的基本原理,掌握DAC0832芯片的性能、使用方法及对应的硬件电路。

二、实验内容

编写程序,要求输出锯齿波、三角波及方波,分别用示波器观察波形;如有能力,把三段程序编在一起,循环输出三种波形。

三、实验区域电路连接图

连线如下所示:

CS5→8000H;IOWR→IOWR;JX2→JX17;AOUT→示波器。

四、编程指南

首先须由CS片选信号确定量DAC寄存器的端口地址,然后锁存一个数据通过0832输出,典型程序如下:

MOVDX,DAPORT;0832口地址

MOVAL,DATA;输出数据到0832

OUTDX,AL

产生波形信号的周期由延时常数确定。

五、程序框图

六、实验步骤

按连线图连接好,检查无误后打开实验箱电源。

在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。

运行程序后,用示波器测量0832左侧AOUT插孔,应有方波或锯齿波输出。

如果运行不正常就要检查连线,程序。

排查错误,修改程序,直到运行程序正常。

七、实验程序清单及注释

(1)方波:

CODESEGMENT

ASSUMECS:

CODE

ORG1200H

START:

MOVDX,8000H

MOVAL,00H

L1:

OUTDX,AL

CALLDELAY;延时

XORAL,0FFH;取反

JMPL1

DELAY:

MOVBX,0FFH

L5:

DECBX

JNZL5

RET

CODEENDS

ENDSTART

(2)锯齿波:

CODESEGMENT

ASSUMECS:

CODE

ORG1000H

START:

MOVDX,8000H

MOVAL,00H

L2:

OUTDX,AL

NOP;空操作,相当于延时一个时钟周期

INCAL

JMPL2

CODEENDS

ENDSTART

(3)三角波:

CODESEGMENT

ASSUMECS:

CODE

ORG1000H

START:

MOVDX,8000H

MOVAL,00H

L3:

OUTDX,AL

INCAL

CMPAL,0FFH;比较AL和0FFH

JZL4

JMPL4;相等则跳L4

JMPL3

L4:

OUTDX,AL

DECAL

NOP

JZL3;AL为0则跳L3

CODEENDS

ENDSTART

八、实验波形

(1)方波:

方波幅值:

5.36V

方波周期:

2.64ms

(2)锯齿波

锯齿波幅值:

5.36V

锯齿波周期:

2.36ms

(3)三角波:

三角波幅值:

5.36V

三角波周期:

5.80ms

九、问答题

1、DAC产生波形的频率如何调节?

频率上限的限制取决于哪些因素?

答:

只要调节延时程序就可以实现改变频率,如NOP指令。

三角波和锯齿波的频率除了取决于程序执行的长度,及延时时间,还取决于CPU频率和转换频率。

频率的上限取决于CPU频率和转换频率。

2、如果要求产生正弦波一般用什么方法实现?

具体如何实施的(给个方案)。

答:

先确定采样频率,把一个周期平分为N份,算出每一份对应的正弦值;每隔1/N周期,送算出的N个数值;N越大正弦波形越明显,但不能超过系统频率。

十、心得体会

D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。

本次实验让我了解到了D/A转换的基本原理,初步掌握了DAC0832芯片的性能和使用方法以及对应的硬件功能,通过对锯齿波、三角波以及方波程序的编写,对编程的整体把握有了进一步的提高,实验中对示波器的使用我又了解到了测量波形电压值和周期的方法。

三个不同程序的编写让我对它了解又进了一步。

实验五A/D转换器实验

一、实验目的

了解模/数转换基本原理,掌握ADC0809的使用方法。

掌握A/D转换与计算机的接口方法,了解ADC0809芯片的转换性能及编程,了解计算机如何进行数据采集。

二、实验内容

编写程序,用查询方式采样输入模拟电压(模拟量电压从实验装置的电位器接入),并将其转换为二进制数字量,用发光二极管显示。

三、实验区域电路连接图

连线如下所示:

IN0→AOUT1(可调电压,VIN→+5V);IOWR→IOWR;IORD→IORD;

CLK→500K(单脉冲与时钟单元);ADDA、ADDB、ADDC→GND;

CS4→8000H;JX6→JX17(数据总线)

四、编程指南

ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:

MOVDX,ADPORT;ADC0809端口地址

OUTDX,AL;发CS和WR信号并送通道地址

A/D转换芯片为逐次逼近型,精度为8位,每转换一次约100微秒,所以程序若为查询式,则在启动后要加适当延时。

用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。

MOVDX,ADPORT;ADC0809端口地址

INAL,DX

循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。

五、程序框图

六、实验步骤

按连线图连接好,参考实验一连接8255和LED让ADC转换结果在LED上显示。

电位器只需连接中心抽头,电源内部已经连接好了(电位器无需连接电源,以防短路)。

检查无误后打开实验箱电源。

在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。

运行程序后,观察LED显示,记录代码,计算获得的代码是否与输入电压符合。

如果显示的代码末位跳动厉害,影响观察,可以插入延时(大概1秒左右)。

如果运行不正常就要检查连线,程序。

排查错误,修改程序,直到运行程序正常。

修改程序把延时获取A/D数据的方式改成查询EOC获取A/D数据的方式,指定8255的PB3接EOC。

七、实验程序清单及注释

(1)查询方式

CODESEGMENT

ASSUMECS:

CODE

ORG1000H

START:

MOVDX,0FF2BH;8255控制口地址

MOVAL,B

OUTDX,AL;8255初始化

LOP1:

MOVDX,8000H;0809地址

MOVAL,0

OUTDX,AL;发CS和WR信号并送通道地址,开始转换

MOVBL,255

DELAY:

DECBL

JNZDELAY;延时

MOVDX,8000H

INAL,DX;读取转换后数据

NOTAL;取反,因为LED是共阳极,0才是亮,代表

1;同理,1代表0,故需取反。

MOVDX,0FF28H;8255的A口地址

OUTDX,AL;输出到A口点亮LED

JMPLOP1

CODEENDS

ENDSTART

(2)EOC方式

CODESEGMENT

ASSUMECS:

CODE

ORG1000H

START:

MOVDX,0FF2BH

MOVAL,B;8255初始化

OUTDX,AL

LOP1:

MOVDX,8000H

MOVAL,0

OUTDX,AL;启动转换

LOP2:

MOVDX,0FF29H

INAL,DX;读取8255B口数据

TESTAL,00001000B;监测PB3是否为1

JZLOP2;不为1继续监测

MOVDX,8000H

INAL,DX;为1,说明转换完成,读取结果

NOTAL

MOVDX,0FF28H

OUTDX,AL

JMPLOP1

CODEENDS

ENDSTART

八、实验数据

A:

查询方式:

(1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1