微机原理与接口实验指导书整合.docx
《微机原理与接口实验指导书整合.docx》由会员分享,可在线阅读,更多相关《微机原理与接口实验指导书整合.docx(102页珍藏版)》请在冰豆网上搜索。
![微机原理与接口实验指导书整合.docx](https://file1.bdocx.com/fileroot1/2023-7/5/f3a16439-c9b3-4d5f-ab24-6d5c828a4e9a/f3a16439-c9b3-4d5f-ab24-6d5c828a4e9a1.gif)
微机原理与接口实验指导书整合
微机原理与接口
实验指导书
目录
第一章概述...................................................1
第二章软件实验
1、存储器块清零..............................................................12
2、内存块移动.............................................................14
3、二进制到BCD码转换.....................................................16
4、二进制到ASCII码转换...................................................18
5、程序跳转表..............................................................20
6、数据排序................................................................23
第三章硬件实验
1.硬件演示实验.........................................................26
2.八段数码管显示实验.........................................................30
3.人机交互实验......................................................35
4.8255输入输出实验........................................................42
5.外部中断实验........................................................45
6.计数器实验..........................................................49
7.定时器实验.........................................................51
8.实用电子钟实验...........................................................54
9.计算器实验.............................................................57
10.中断定时器综合实验....................................................59
11.串行接口综合实验........................................................62
12.交通灯模拟控制实验......................................................69
13.A/D、D/A实验.............................................................71
14.空调温度控制实验........................................................75
15.电子琴实验.............................................................78
16.综合设计实验1........................................................81
17.综合设计实验2(多功能I/O接口扩充设计)...................................82
第四章逻辑分析工具.........................................85
第一章概述
Lab6000实验系统可根据教学实践的需要实现MCS51/MCS196单片机原理与接口、8088/8086微机原理与接口的一系列实验,并在硬件上预留了自主开发实验的空间。
对基本实验仅需连少量连接线就可完成,减轻学生工作量。
同时也提供了需较多连线的扩展性实验,以进一步锻炼学生的实践开发能力。
此外,系统还为学生提供了强大的软、硬件调试手段。
§2.1实验系统主机的硬件组成
本实验系统主机上有丰富的实验电路模块和灵活的组成方法,既可以和MCS51、MCS96CPU也可以和8088/8086CPU组合完成各种实验。
本实验箱拥有高档通用仿真器所具有的逻辑分析仪、波形发生器和程序跟踪器等强大的分析功能,让学生在做实验时不仅能了解程序的执行过程,更能直观地看到程序运行时的时序或者电路上的信号。
1、逻辑电平开关电路
图1:
逻辑电平开关电路
实验箱上有8只开关K0―K7,并有与之相对应的K0―K7引线孔为逻辑电平输出端。
开关向上拨相应插孔输出高电平“1”,向下拨相应插孔输出低电平“0”。
2、LED电平显示电路
图2:
LED电平显示电路
实验箱上装有8只发光二极管及相应驱动电路。
见图2,L0-L7为相应发光二极管驱动信号输入端,该输入端为高电压电平“1”时发光二极管点亮。
我们可以通过P1口对其直接进行控制,点亮或者熄灭发光二极管。
3、单脉冲电路
单脉冲电路由按键(PULSE)和去抖动电路组成,每按一次(PULSE)键产生一个单脉冲。
板上有单脉冲的输出信号插孔,图为“”和“”,分别为正脉冲和负脉冲。
图3:
单脉冲发生电路
4、逻辑门电路
或门与门非门
图4:
逻辑门电路
本实验箱提供系列门电路:
非门,或门,与门,D触发器。
逻辑门电路由7400和7404组合实现。
5、逻辑测量(逻辑笔)电路
本实验箱上有逻辑测量电路,如图5。
可用于测量各种电平,其中红灯亮表示高电平,绿灯亮表示低电平。
如果两灯同时闪动,表示有脉冲信号;两灯都不亮时,表示浮空(高阻态)。
图5:
逻辑笔电路
6、4 MHz脉冲信号源和多级分频电路
下图是4MHz脉冲信号输出电路。
可将4MHz脉冲信号接到分频电路上,经过分频后,能得到2M、1M、500K、250K、125K、62.5KHz多种频率的脉冲信号。
图6-1:
4 MHz脉冲产生电路
7、可调模拟量输入电路
图7:
电位器
电位器电路用于产生可变的模拟量(0-5V)。
8、串口通信程序实验插孔
做串行通信实验时,如果不需要将TTL电平转到RS232电平,可直接将POD51/96仿真板或POD8086仿真板上的TXD、RXD与通信对方交叉对接,并且共地即可。
单片机与标准的串行设备通信,需要将TTL电平转到RS232电平或将RS232电平转成TTL电平。
本实验箱提供用户串行通信接口,可以用这两个插孔进行RS232通信程序实验,经电平转换后,再通过实验箱的“用户串口”接到PC机或其它RS232设备,实现数据互传。
9、六位LED数码显示器和4×6键盘电路
本实验箱的LED显示电路和键盘电路如图8。
显示控制的位码由74HC374输出,经ULN2003反向驱动后,做LED的位选通信号。
位选通信号也可做为键盘列扫描码,键盘扫描的行数据从74HC245读回,374输出的列扫描码经245读入后,用来判断是否有键被按
图8:
键盘及LED显示电路
下,以及按下的是什么键。
如果没有键按下,由于上拉电阻的作用,经245读回的值为高,如果有键按下,374输出的低电平经过按键被接到245的端口上,这样从245读回的数据就会有低位,根据374输出的列信号和245读回的行信号,就可以判断哪个键被按下。
LED显示的段码由另一个74HC374输出。
键盘和LED显示电路的地址译码见图8,做键盘和LED实验时,需将KEY/LEDCS接到相应的地址译码上。
位码输出地址为0X002H,段码输出地址为0X004H,键盘行码读回地址为0X001H,此处X是由KEY/LEDCS决定。
例如将KEY/LEDCS接到地址译码的CS0上,那么位码输出地址就为08002H,段码输出地址就是08004H,键盘行码读回地址为08001H。
10、存储器电路
本实验箱上有一片32K存储器61256。
提供给学生做存储器实验,由于地址译码为4K一段,所以只能提供4K容量使用,地址从0000H~0FFFH。
用RAMCS来选择不同的地址段,以适应不同的应用电路。
图9:
8255端口扩展电路
11、8255端口扩展电路
12、A/D转换电路
实验箱上有一个0~5V的可调电位器,将可变电压输出端接入A/D转换电路的输入端,通过CPU软件处理,读进A/D转换值,再将转换值送数码管显示。
我们可以调节电位器,使之输出不同电压值,通过数码管的显示,检验A/D转换正确与否。
图10:
A/D转换电路
13、D/A转换电路
图11:
D/A转换电路
我们可以通过软件编程控制D/A转换芯片DAC0832,输出相应电流值,经过采样电路取出模拟量电压值,用电压表测量电压输出端子,读出电压值。
14、16×16LED点阵电路
图12:
LED点阵电路
15、8251A串行口扩展电路
图13:
8251A串行口扩展电路
图14:
8253定时器/计数器扩展电路
16、8253定时器/计数器扩展电路
17、8259中断扩展电路
图29-1:
实验板右边8259中断扩展电路
图15:
实验板左边8259中断扩展电路
图16:
8237DMA扩展电路
18、8237DMA扩展电路
图17:
4-16译码器电路
19、4-16译码器
20、实验电路插座
本实验箱具有1个40芯通用电路插座,每个插座的全部引脚都被引出到相应的插孔,40芯通用插座可兼容28芯、24芯、16芯和14芯插座。
利用这个插座,可对双列直插式的各种微机芯片进行实验。
21、总线插孔
本实验箱上有三排总线插座,用于引出各种总线信号,其中AD0~AD7为8根数据总线,A0~A15为16根地址总线。
另外ALE,RD,WR为控制总线。
与CPU相关的一些控制信号和I/O信号例如P1口、RXD、TXD等信号在相应的仿真板上。
22、地址译码插孔
片选号
地址范围
CS0
08000H~08FFFH
CS1
09000H~09FFFH
CS2
0A000H~0AFFFH
CS3
0B000H~0BFFFH
CS4
0C000H~0CFFFH
CS5
0D000H~0DFFFH
CS6
0E000H~0EFFFH
CS7
0F000H~0FFFFH
§2.2实验系统的EX88B仿真板简介
进行i8088/86的实验时,需将EX88B仿真板插在实验箱上,EX88B仿真板如图:
IO/M:
用于选择访问外设还是存储器
§2.3实验系统的使用方法
本实验系统具有三种使用方法:
1、无系统机,仅用实验箱的板上仿真器进行仿真和实验。
2、有系统机,用系统机上的集成调试软件驱动板上仿真器进行仿真和实验。
3、无实验箱、无仿真器,仅在系统机上采用软件模拟方式进行仿真。
§2.48088/86CPU系列实验说明
一、系统的启动
1、进行8088/86CPU实验时,并插上EX88B仿真板。
2、将配套的串行通讯电缆的一端与实验台的RS2329芯D形插座相连,另一端与PC相的串行口相连。
3、将实验台的电源线与220V电源相连。
(实验结束后应拔下)
4、打开实验台电源开关,红色电源指示灯亮。
仿真开发器初始化成功后,会在LED上显示‘8088’。
5、打开计算机电源,执行WAVE集成调试软件。
注意:
1、无论是集成电路的插拔、通讯电缆的连接、跳线器的设置还是实验线路的连接,都应确保在断电情况下进行,否则可能造成对设备的损坏。
2、实验线路连接完成后,应仔细检查无误后再接通电源。
二、8088/8086CPU系列实验软件设置
WAVE集成调试环境应设置如下:
仿真器型号:
伟福Lab6000实验箱
仿真头型号:
8088/86实验(8088/86)
语言设置对话框各命令行应设置如下:
编译器路径:
一般情况下为C:
\COMP86,也可设为你自己的安装路径。
ASM命令行:
‘/zi/l’
C命令行:
‘-mt-v-y-c’
LINK命令行:
‘/m/l/v’
软件实验一存储器块清零
一、实验要求
指定存储器中某块的起始地址和长度,要求能将其内容清零。
二、实验目的
1.掌握存储器读写方法
2.了解存储器的块操作方法
三、实验说明
通过本实验,学生可以了解8088微机读写存储器的读写方法,同时也可以了解8088微机编程,调试方法。
如何将存储器块的内容置成某固定值(例全填充为07FH)?
请学生修改程序,完成此操作。
四、参考程序
1、参考程序
datasegment
否
Blockdb256dup(55h)
dataends
codesegment
assumecs:
code,ds:
data
startprocnear
movax,data
movds,ax
movbx,offsetBlock;起始地址
movcx,256;清256字节
Again:
mov[bx],byteptr0
incbx
LoopAgain;记数减一
jmp$
codeends
endstart
五、实验步骤
(1)进入Wave6000,输入程序并检查,保存程序。
(2)“编译”程序。
(3)“全速执行”程序。
(4)“暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。
(5)在指令“jmp$”处设断点。
(6)“全速执行”程序。
(7)在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。
六、思考题
(1)请修改程序,向Block存储器块填入00,01,02,…,FE,FF等256字节;
软件实验二内存块移动
一、实验要求
将指定源地址和长度的存储块移到指定目标位置
二、实验目的
1.了解内存的移动方法。
2.加深对存储器读写的认识。
三、实验说明
块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。
另外,若源块地址和目标块地址有重叠,该如何避免?
四、程序框图
;移动32字节
datasegment
Sourcedb32dup(055h)
Targetdb32dup(0aah)
dataends
codesegment
assumecs:
code,ds:
data,es:
data
startprocnear
movax,data
movds,ax
moves,ax
movsi,offsetSource
movdi,offsetTarget
movcx,20H
repmovsb
jmp$
codeends
endstart
否
五、实验步骤
(1)进入Wave6000,输入程序并检查,保存程序。
(2)“编译”程序。
(3)在指令“jmp$”处设断点。
(4)“全速执行”程序。
(5)在“数据窗口(MEMOREY)”分别查看0400H、0500H开始32个单元的内容,记录并分析实验结果。
软件实验三二进制到BCD转换
一、实验要求
将给定的一个二进制数转换成二十进制(BCD)码。
二、实验目的
1、掌握简单的数值转换算法。
2、基本了解数值的各种表达方法。
三、实验说明
计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
有兴趣的同学可以试试将BCD转换成二进制码。
四、参考程序
;将AX拆为三个BCD码,并存入Result开始的三个单元。
datasegment
Resultdb3dup(?
)
dataends
codesegment
assumecs:
code,ds:
data
startprocnear
movax,data
movds,ax
movax,123
movcl,100
divcl
movResult,al;除以100,得百位数
moval,ah
movah,0
movcl,10
divcl
movResult+1,al;余数除以10,得十位数
movResult+2,ah;余数为个位数
jmp$
codeends
endstart
结束
五、实验步骤
(1)进入Wave6000,输入程序并检查,保存程序。
(2)“编译”程序。
(3)在指令“jmp$”处设断点。
(4)“全速执行”程序。
(5)在“数据窗口(MEMOREY)”查看0400H、0401H、0402H三个单元的内容,记录并分析实验结果。
六、思考题
(1)请编写程序,实现BCD转换成二进制码
软件实验四二进制到ASCII码转换
一、实验要求
给出一个BCD数,将其转换成ASCII值。
二、实验目的
1.了解BCD值和ASCII值的区别。
2.了解如何将BCD值转换成ASCII值。
3.了解如何查表进行数值转换及快速计算。
三、实验说明
此实验主要让学生了解数值的BCD码和ASCII码的区别,利用查表功能可能快速地进行数值转换。
进一步了解数值的各种表达方式。
四、程序框图
;将AX拆为二个ASCII码,并存入Result开始的二个单元
datasegment
Resultdb2dup(?
)
ASCIITab:
db"0123456789ABCDEF";定义数字对应的ASCII表
dataends
codesegment
assumecs:
code,ds:
data
startprocnear
movax,data
movds,ax
movax,1ah
movbl,al
shrbl,4
movbh,0
movah,byteptrASCIITab[bx]
movResult,ah
andal,0fh
movbl,al
movah,byteptrASCIITab[bx]
movResult+1,ah
jmp$
codeends
endstart
结束
五、实验步骤
(1)进入Wave6000,输入程序并检查,保存程序。
(2)“编译”程序。
(3)在指令“jmp$”处设断点。
(4)“全速执行”程序。
(5)在“数据窗口(MEMOREY)”查看0400H、0401H两个单元的内容,记录并分析实验结果。
软件实验五程序跳转表
一、实验要求
在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。
二、实验目的
1.了解程序的多分支结构
2.了解多分支结构程序的编程方法
三、实验说明
多分支结构是程序中常见的结构,若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。
四、程序框图
下列程序并非为了完成某一特定功能编写的,而是提供给我们了解程序的多分支结构及其编程方法使用的。
codesegment
调用返回
assumecs:
code
Func0procnear
movax,0
ret
Func0endp
Func1procnear
movax,1
ret
Func1endp
Func2procnear
movax,2
ret
Func2endp
Func3procnear
movax,3
ret
Func3endp
FuncEnterprocnear
cmpax,0
jnzNext1
jmpFunc0
Next1:
cmpax,1
jnzNext2
jmpFunc1
Next2:
cmpax,2
jnzNext3
jmpFunc2
Next3:
cmpax,3
jnzNext4
jmpFunc3
Next4:
ret
FuncEnterendp
startprocnear
movax,0
callFuncEnter
movax,1
callFuncEnter
movax,2
callFuncEnter
movax,3
callFuncEnter
jmp$
codeends
五、实验步骤
(1)进入Wave6000,输入程序并检查,保存程序。
(2)“编译”程序。
(3)在指令“cmpax,0”处设断点。
(4)“单步”执行程序。
(5)记录指令的执行顺序,并分析实验结果。
软件实验六数据排序
一、实验要求
给出一组随机数,将此组数据排序,使之成为有序数列
二、实验目的
1.了解数据排序的简单算法。
三、实验说明
有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在
数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序框图
Lenequ10
datasegment
Arraydb5,2,1,0,2,3,8,6,5,9
Changedb0
dataends
codesegment
assumecs:
code,ds:
data
startprocnear
movax,data
movds,ax
Sort:
movbx,offsetArray
movcx,Len-1
movChange,0
Goon:
moval,byteptr[bx]
incbx
cmpal,byteptr[bx]