微机原理硬件实验.docx
《微机原理硬件实验.docx》由会员分享,可在线阅读,更多相关《微机原理硬件实验.docx(50页珍藏版)》请在冰点文库上搜索。
微机原理硬件实验
信息与通信工程学院
微机原理硬件实验报告
班级:
姓名:
学号:
序号:
日期:
2012年12月
目录
一、基本的I/O实验4
一、实验目的4
二、实验原理和内容4
(一)实验一:
4
(二)实验二:
4
三、硬件连接图及软件流程图:
5
(一)实验一:
5
(二)实验二:
6
四、源程序及注释7
(一)实验一:
7
(二)实验二:
8
五、实验结果9
六、实验总结9
七、实验收获与心得体会9
二.可编程并行接口8255实验10
一、实验目的10
二、实验原理和内容10
(一)实验原理10
(二)实验内容11
三、硬件连接图和软件流程图12
(一)实验三:
12
(二)实验四:
14
(三)实验五:
15
四、源程序及注释17
(一)实验三:
17
(二)实验四:
18
(三)实验五:
19
五、实验结果23
六、实验总结24
七、实验收获与心得体会24
三、可编程定时器/计数器(8253)实验25
一、实验目的25
二、实验原理和目的25
(一)实验原理:
25
(二)实验内容:
25
三、硬件连接图和软件流程图26
四、源程序及注释29
(一)基础部分:
29
(二)提高部分:
31
五、实验结果36
六、实验总结36
七、实验收获与心得体会37
四、串行通讯接口8251实验38
一、实验目的38
二、实验原理和目的38
三、硬件连接图和软件流程图38
四、源程序及注释40
五、实验结果41
六、实验总结41
七、实验收获与心得体会42
一、基本的I/O实验
一、实验目的
掌握I/O地址译码电路的工作原理。
掌握简单并行接口的工作原理及使用方法。
二、实验原理和内容
(一)实验一:
1、74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:
280H~287H,Y1:
288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:
执行下面两条指令
MOVDX,2A0H
OUTDX,AL(或INAL,DX)
Y4输出一个负脉冲,执行下面两条指令
MOVDX,2A8H
OUTDX,AL(或INAL,DX)
Y5输出一个负脉冲。
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
2、接线:
Y4/IO地址接CLK/D触发器
Y5/IO地址接CD/D触发器
D/D触发器接SD/D角发器接+5V
Q/D触发器接L7(LED灯)或逻辑笔
(二)实验二:
1、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Ⅱ码,并将其对应字母在屏幕上显示出来。
三、硬件连接图及软件流程图:
(一)实验一:
图一硬件连接图
图2软件流程图
(二)实验二:
图三实验硬件连接图
图四软件流程图
四、源程序及注释
(一)实验一:
DATASEGMENT
DATAENDS
STACKSEGMENT
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
;延时子程序,双重嵌套延时
DELAYPROCNEAR
PUSHCX
MOVCX,0FFFFH
WAIT2:
MOVBX,200
WAIT1:
DECBX
JNZWAIT1;如果BX不为0,则继续执行WAIT1
LOOPWAIT2;如果CX不为0,而BX为0,则执行WAIT2
POPCX;保护寄存器
ENDA:
RET
DELAYENDP
START:
PUSHDS;保护寄存器
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX;设置地址寄存器基地址
MOVDX,2A0H
OUTDX,AL;Y4输出一个负脉冲
CALLDELAY;调用延时子程序
MOVDX,2A8H
OUTDX,AL;Y5输出一个负脉冲
CALLDELAY;调用延时子程序
MOVAH,0BH
INT21H
ORAL,AL
JZSTART
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
(二)实验二:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0FFH
LOOP1:
MOVAH,1;循环执行程序
INT21H;键盘输入是否为ESC
CMPAL,1BH
JZEND1;是则跳出
MOVDX,2A8H;不是输出到Y5
OUTDX,AL
LOOPLOOP1
END1:
MOVAX,4C00H;返回DOS
INT21H
CODEENDS
ENDSTART
五、实验结果
(1)通过软件可以实现L7闪烁发光(亮、灭、亮、灭、……),直到键盘有按键按下。
(2)键盘输入某一个字符,L0~L7显示输出的ASCⅡ码,如果字符是ESC则退出返回DOS
六、实验总结
这是第一次微原的硬件实验,运用了课上学习的理论知识和硬件期间结合起来做了第一次实验。
由于课前没有做好充分准备,对实验所用的编程软件和硬件电路板还不太熟悉,所以实验中还是遇到了不少问题。
第一个难题就是延时时间长短的控制,开始只用了一层嵌套,导致灯一直看上去是亮着的状态,后来询问了老师还有同学,采用了双层嵌套延时,在慢慢尝试中修改最后得到了满意的实验结果。
第二个难题就是软件的应用,在运行的时候经常会出现程序终止的现象,遇到这种情况的时候,只要把硬件电路的电源重启即可。
第三个难题就是编程的不熟练,一定会在在今后的实验中好好慢慢练习。
七、实验收获与心得体会
在硬件实验的过程中,我更加深刻地认识到将理论知识与实践结合的重要性,只有亲自动手实践操作,才能更好地理解知识。
实验中一定要细心,不能放过任何一个实验的异常现象,在思考和操作中提升自己。
二.可编程并行接口8255实验
一、实验目的
1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。
2、掌握数码管显示数字的原理
3、掌握一般键盘和显示电路的工作原理。
二、实验原理和内容
(一)实验原理
1.8255的工作方式
一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。
方式0是基本型输入/输出。
这种方式和外设交换数据时,8255端口与外设之间不使用联络线。
方式1为选通型输入/输出。
用这种方式和外界交换数据时,端口和外设之间要有联络信号。
方式2是双向数据传送,仅A口有这项功能。
当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。
2.工作方式选择字
8255工作方式选择字共8位(如图),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
3.C口置/复位控制字
8255的C口可进行位操作,即:
可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的(图8-10)。
C口置/复位字共8位,各位含义如下:
3.8255A的控制信号与传输动作的对应关系
4.命令字与初始化编程
8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是:
①向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
②当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。
这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。
注意:
“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。
③向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据”
5.静态显示:
将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
(二)实验内容
1、8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
3、静态显示:
将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
4.编程使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:
三、硬件连接图和软件流程图
(一)实验三:
8255控制寄存器端口地址--28BH,A口的地址--288H,B口的地址--289H,C口的地址--28AH。
图一硬件连接图
图二软件流程图
(二)实验四:
图三硬件连接图
图四软件流程图
(三)实验五:
图五硬件连接图
图六软件流程图
四、源程序及注释
(一)实验三:
CODESEGMENT
ASSUMECS:
CODE
BEGIN:
MOVAL,89H
MOVDX,28BH;DX指向地址为28BH的地方
OUTDX,AL;写控制字将AL寄存器中的内容输出到地址为DX的端口,即28BH的端口
MOVDX,28AH;C口输入数据
INAL,DX
MOVDX,288H;A口输出数据
OUTDX,AL
MOVAH,0BH;检测有没有按下键盘,如果按下则停止
INT21H
ORAL,AL
JZBEGIN;如果没有按键,则循环执行
MOVAX,4C00H
INT21H;返回DOS
CODEENDS
ENDBEGIN
(二)实验四:
SMGMACROWEI,DUAN;在数码管上显示的宏
MOVDX,288H
MOVAL,DUAN;C端口输出段码
OUTDX,AL
MOVDX,28aH;A端口输出位码
MOVAL,WEI
OUTDX,AL
MOVAL,00H
OUTDX,AL
ENDM
CODESEGMENT
ASSUMECS:
CODE
BEGIN:
MOVDX,28BH
MOVAL,80H
OUTDX,AL;写控制字,设置A端口输出,C端口输出
SMG08H,06H;调用宏,输出学号
SMG04H,4FH
SMG02H,4FH
SMG01H,7FH
MOVAH,0BH;检测是否有按键按下
INT21H
ORAL,AL
JZBEGIN;如果没有按键,则继续运行
MOVAX,4C00H
INT21H
CODEENDS
ENDBEGIN
(三)实验五:
DATASEGMENT
TMPDB?
TMP1DB?
TMP2DB?
ADB?
a0DB3FH
a1DB06H;储存每个音符的七段数码管显示码
a2DB5BH
a3DB4FH
a4DB66H
a5DB6DH
a6DB7DH
a7DB07H
a8DB7FH
a9DB6FH
aaDB77H
abDB7CH
acDB39H
adDB5EH
aeDB79H
afDB71H
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE,SS:
STACK
RUNPROC
MOVDX,289H;设置位选通信号,用8255的B口
MOVAL,01H
OUTDX,AL
MOVDX,288H;设置段选通信号,用8255的A口
MOVAL,A
OUTDX,AL
MOVAL,0
OUTDX,AL
RET
RUNENDP
BEGIN:
MOVAX,DATA
MOVDS,AX
;读入c口的高四位输入
MOVDX,28BH;设置8255的控制字
MOVAL,10001000B;设置A口出,C口高4位输入,低4位输出
OUTDX,AL
GOON1:
MOVDX,28AH
INAL,DX
MOVTMP1,AL
CMPAL,00F0H
JZGOON1
;读入c口的低四位输入
MOVDX,28BH
MOVAL,10000001B;设置8255控制字,C口低4位输入,高4位输出
OUTDX,AL
GOON2:
MOVDX,28AH
INAL,DX
MOVTMP2,AL
CMPAL,000FH
JZGOON2
ORAL,TMP1
MOVTMP,AL;组合高位和低位放在TMP
CMPTMP,01110111B;0
JNZP1
MOVAL,a0;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P1:
CMPTMP,01111011B;1一行二列
JNZP2
MOVAL,a1;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU;如果没有按键,则继续运行
P2:
CMPTMP,01111101B;2
JNZP3
MOVAL,a2;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P3:
CMPTMP,01111110B;3
JNZP4
MOVAL,a3;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P4:
CMPTMP,10110111B;4
JNZP5
MOVAL,a4;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P5:
CMPTMP,10111011B;5
JNZP6
MOVAL,a5;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P6:
CMPTMP,10111101B;6
JNZP7
MOVAL,a6;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P7:
CMPTMP,10111110B;7
JNZP8
MOVAL,a7;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P8:
CMPTMP,11010111B;8
JNZP9
MOVAL,a8;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
P9:
CMPTMP,11011011B;9
JNZPA
MOVAL,a9;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PA:
CMPTMP,11011101B;a
JNZPB
MOVAL,aa;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PB:
CMPTMP,11011110B;b
JNZPC
MOVAL,ab;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PC:
CMPTMP,11100111B;c
JNZPD
MOVAL,ac;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PD:
CMPTMP,11101011B;d
JNZPE
MOVAL,ad;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PE:
CMPTMP,11101101B;e
JNZPF
MOVAL,ae;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
PF:
CMPTMP,11101110B;f
MOVAL,af;记录0的段选通信号
MOVA,AL
CALLRUN;调用响声及显示子程序
JMPJIESHU
JIESHU:
MOVAH,0BH;检测是否有按键按下
INT21H
ORAL,AL
JZBEGIN;如果没有按键,则继续运行
MOVAX,4C00H
INT21H
CODEENDS
ENDBEGIN
五、实验结果
(1)8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
按下Ki,则对应的Li亮灯。
(2)在数码管上的最后四位显示我的学号后四位1338,按下键盘后程序终止,数码管停止显示,返回DOS。
(3)使得在小键盘上每按一个健,4位数码管上显示出相应字符。
六、实验总结
做这次实验的时候我们还没有学到8255,通过自学以及和同学的讨论,了解了可编程并行接口电路的原理和使用,之后理论学习的时候就很容易了。
但是实验三仅是简单的8255应用,控制字和状态字的写入比较容易。
我学会了用并行接口8255控制数码管的亮灭,准确写入8255的控制字,并用宏的方式调用数码管显示的子过程。
七、实验收获与心得体会
虽然是硬件实验,但是硬件的连线比较容易,大部分连接部分已经集成在电路板内部了,所以对我的硬件操作能力没有太多锻炼。
但是通过本次实验还是对8255的工作方式有所学习。
实验中的实验板是老师连接好了电路板和接口芯片,这样可以简化实验过程,也使得大家的硬件平台一致,我们仅需简单地连接几根线即可。
但这样存在的问题是,我们对芯片的地址和连线失去了动手实践的机会,而这个恰恰是我们专业的一大弱点,硬件接触过少,不熟悉,而软件相对掌握熟练。
建议给学生更多的空间去自己布线,更加熟悉硬件和接口。
虽然这会加大实验难度,但是可以老师引导着学生去做布线部分,给大家讲原理。
关于实验五,这次实验是在我做了实验八之后做的,所以只是把代码改了一下,删去了喇叭放音的部分,增加了字母的显示。
键盘的扫描和小学期单片机的很相似,采用了行扫描法,就是使键盘某一行线为低电平,其余为高电平,然后读取列值,如列值中有某位位低电平,则表明行列交叉点处的键被按下;否则扫描下行,知道扫完全部的行线为止。
本次实验还是比较顺利的,只有一些小错误。
三、可编程定时器/计数器(8253)实验
一、实验目的
学习掌握8253用作定时器的编程原理。
二、实验原理和目的
(一)实验原理:
8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。
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码数
(二)实验内容:
1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
2.扩展部分:
利用小键盘实现弹琴功能,并显示弹奏的乐谱。
注意:
8253输入频率应小于2MHz。
三、硬件连接图和软件流程图
图一硬件连接图
图二基本要求流程图
图三提高要求流程图
四、源程序及注释
(一)基础部分:
PLAYMACROC1,C2,A,B
LOCALAGAIN,AGAIN1
MOVDX,283H
MOVAL,00111110B
OUTDX,AL;8253,送出控制字,计数器0,先读最低8位,再读高八位,方式3,二进制
MOVDX,28BH
MOVAL,80H
OUTDX,AL;设置A端口输出,C端口输出
MOVCX,0FFH
AGAIN:
MOVBX,01H
AGAIN1:
MOVDX,280H;DX指向8283的0