微机原理硬件实验报告.docx
- 文档编号:30279383
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:31
- 大小:840.85KB
微机原理硬件实验报告.docx
《微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理硬件实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
微机原理硬件实验报告
信息与通信工程学院
微机原理硬件实验报告
班级:
2010211111
姓名:
学号:
序号:
07
日期:
2012年12月19日
Ø掌握I/O地址译码电路的工作原理。
实验电路如图1-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
则Y4输出一个负脉冲;
执行下面两条指令:
MOVDX,2A8H
OUTDX,AL
则Y5输出一个负脉冲。
其中2A0H和2A8H的地址值由硬件连接图决定。
通过硬件连接图,得到确定A9~A3,AEN,IOW,IOR的值。
其中A6=A8=0,A7=A9=1,AEN=0,IOW与IOR不可同时为1(即不能同时读写)。
当要从Y4输出低脉冲时,A5A4A3=100;从Y5输出时,A5A4A3=101。
因此:
Y4输出时,A9~A0=1010100000B=2A0H;
Y5输出时,A9~A0=1010101000B=2A8H。
通对Y4,Y5的控制,将如脉冲连续输入到D触发器的CLK和CD,D触发器交替完成0,1变换,使得Q也进行连续的0,1变换。
并将其两接到L7对应端口上,进而控制L7的闪烁频率。
通过设置delay函数,控制延时时间,得到不同的闪烁频率。
3.1硬件连接图
硬件连接图如下图所示:
图1-1硬件连接图
3.2软件流程图
软件流程图如下图所示:
图1-2软件流程图
DATASEGMENT;数据段
DK1EQU2A0H;Y4端口地址
DK2EQU2A8H;Y5端口地址
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVDX,DK1
OUTDX,AL;Y4输出一个负脉冲
CALLDELAY;调用延时子程序,实现对于显示亮灭频率的控制
MOVDX,DK2
OUTDX,AL;Y5输出一个负脉冲
CALLDELAY;调用延时子程序,实现对于显示亮灭频率的控制
MOVAH,1
INT16H;键盘输入,zf=1,无键盘输入
JESTART;zf=1转移
MOVAH,4CH
INT21H;返回dos
DELAYPROCNEAR;延时子程序
MOVBX,300;通过调整BX初值设置延时时间,控制频率
WAITS:
NOP
DECBX
JNEWAITS
RET
DELAYENDP
CODEENDS
ENDSTART
发光二级管L7连续亮灭变化,当键盘输入时,停止。
开始没有考虑到延时的问题,结果L7等就持续亮的状态,后来试着加入延时程序,实现了亮灭功能,并可以对延时时间进行控制。
这是第一个微机原理硬件实验,尽管实验很基础,原理也很简单,但是实验刚开始在理解上还是存在一些困难,尤其是关于端口地址的确定方面;另外就是在软件与硬件结合方面自己还欠缺很多经验,尤其是对于汇编语言的结合,感觉还很需要加强。
掌握简单并行接口的工作原理及使用方法。
1、按图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7;
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性;
3.1硬件连接图
硬件连接图如下图所示:
图2-1硬件连接图
3.2软件流程图
软件流程图如下图所示:
图2-2软件流程图
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0FFH;设置循环次数,此处将最大循环次数值设成很大,以保证多次连续输入
LOOP1:
MOVAH,1
INT21H;键盘输入一个字符
CMPAL,1BH;若输入ESC,则程序结束
JZEND1
MOVDX,2A8H
OUTDX,AL;若不是ESC,将输入结果ASCII码输出
LOOPLOOP1
END1:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
发光二极管可显示正确的键盘输入字符对应ASCII码,并可以连续输入。
总的来说较第一个实验编程实现更简单一些,编程中开始只能一次输出,后来加了LOOP函数,并设定CF初值,便可实现多次连续输入。
这次实验相比上一次就要顺利一些了。
看起来挺难,1但真正将软件流程图写出来以后就发现其实实现方法还是很直接的。
经过上两个实验的学习,对接口芯片通过软件编程实现硬件特定功能的原理有了初步的了解。
八、课程小建议
这次微机原理硬件实验课做了两个实验,最大的感觉就是入门很慢,可能是因为我们的理论课学习还远没有学到接口结束和接口芯片。
所以希望以后实验安排上能够尽量更为合理;或者老师在第一次授课时可以更多的介绍一下接口的原理知识,其实我觉得这方面的知识其实不难,主要是我们没有接触过,相信经过老师的点拨,大部分同学就可以顺利的完成实验。
掌握数码管显示数字的原理。
2.1可编程并行接口8255芯片的工作原理
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位(如图3-1),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
图3-18255工作方式字
依上图,则本次试验所需要选择的工作方式控制字为10000000B,即为80H。
2.2七段数码管显示原理
1)字型代码显示
本次试验所使用的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
七段数码管的字型代码表如下表:
图3-2七段数码管字型代码
2)数码管静态显示
按图3-3连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
3.1硬件连接图
硬件连接图如下图所示:
图3-1硬件连接图
3.2软件流程图
图3-2软件流程图
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;写入工作方式控制字
MOVDX,28BH;控制寄存器端口地址
OUTDX,AL
LOOP:
MOVDX,28AH;C口(位码)地址
MOVAL,00H;数码管清零
OUTDX,AL
MOVDX,288H;A口送出段码
MOVAL,3FH;0的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,08H;第4位显示显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,07H;7的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,04H;第3位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,3FH;0的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,02H;第2位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,5bH;2的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,01H;第1位显示
OUTDX,AL
MOVAH,1;键盘输入
INT16H
JZLOOP;若有输入,则结束;否则继续显示
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
静态显示学号后4位:
0317。
这次试验主要与道德问题是对于方式控制字的不理解。
这是第一次接触比较复杂的接口芯片,尽管进行了预习,但是对于芯片的工作原理理解的不够明确,主要会不知道如何对芯片进行初始化。
后来经过仔细阅读教材以及老师对接口地址的讲解,这个问题得以解决;同时对于数码管显示的原理的理解也花了一段时间,开始以为两者需要同时赋值才行,后来查阅相关资料发现可以向后对断码和位码进行赋值;第三就是开始数码管显示不清晰,后来加入了数码管清零功能,在每次赋值结束后都对数码管进行清零,数码管现实就变得清晰了。
这次实验,使我深入了解了8255的初始化以及编程方法。
同时也使我对硬件接口的理解更加深刻了.这次程序编写发现单步调试是很有有用的东西,尤其是在程序DEBUG没有问题,但是显示结果不对的时候。
学习掌握8253用作定时器的编程原理。
2.18253的初始设置
1)8253的初始化
使用8253前,要进行初始化编程。
初始化编程的步骤是:
Ø向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
Ø向使用的计数器端口写入计数初值。
2)8253控制字
图8-18253控制字
3)8253控制寄存器地址283H,
计数器0地址280H,
计数器1地址281H,
计数器2地址282H,
定时器可工作在方式3下。
Ø根据题意要求,控制字应设置为:
00111110B。
2.2音乐发生器原理
音符频率对照表如下:
图4-1音符频率对照
且可知时钟频率应为1MHz,故可以计算出分频初值。
2.3实验内容
本实验完成一个音乐发生器,通过喇叭放出已经存储的音乐音乐,并在数码管上显示乐谱。
3.1硬件连接图
硬件连接图如下图所示:
图4-2硬件连接图
3.2软件流程图
软件流程图如下图所示:
图4-3软件流程图
DATASEGMENT
BUFDB'1234555434443213512345554344321131666545554344432135666545554344432131';洋娃娃和小熊跳舞
LTHEQU$-BUF;乐谱长度
ENDS
STACKSEGMENT
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,80H;写入方式控制字
MOVDX,28BH;控制寄存器端口地址
OUTDX,AL;初始化8255
MOVDX,283H
MOVAL,00111110B
OUTDX,AL;初始化8254
BEGIN:
MOVBX,OFFSETBUF;载入已存音谱
MOVCX,LTH;根据音谱长度设定循环变量
PRO:
MOVAL,[BX];载入音符
ADDBX,1;下一个音符
CMPAL,31H;通过比较ASCII码,确定正在读取的音符
JZDO
CMPAL,32H
JZRE
CMPAL,33H
JZMI
CMPAL,34H
JZFA
CMPAL,35H
JZSO
CMPAL,36H
JZLA
CMPAL,37H
JZXI
CMPAL,38H
JZDOI
PRO2:
LOOPPRO
JMPFIN;音乐播放“结束”
DO:
MOVDX,280H;设置零号计数器的初始值
MOVAL,42H;DO对应的初始值的低8位
OUTDX,AL
MOVAL,0FH;DO对应的初始值的高8位
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出DO音符的段码
MOVAL,06H
OUTDX,AL
MOVDX,28AH;送出位码,使用第4位显示
MOVAL,08H
OUTDX,AL
CALLDELAY;调用延时子程序
JMPPRO2;播放下一个音符
RE:
MOVDX,280H
MOVAL,90H
OUTDX,AL
MOVAL,0DH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,5BH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
MI:
MOVDX,280H
MOVAL,34H
OUTDX,AL
MOVAL,0CH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,4FH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
FA:
MOVDX,280H
MOVAL,74H
OUTDX,AL
MOVAL,0BH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,66H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
SO:
MOVDX,280H
MOVAL,2CH
OUTDX,AL
MOVAL,0AH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,6DH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
LA:
MOVDX,280H
MOVAL,28H
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,7DH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
SI:
MOVDX,280H
MOVAL,24H
OUTDX,AL
MOVAL,08H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,07H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
DOI:
MOVDX,280H
MOVAL,0A2H
OUTDX,AL
MOVAL,07H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,75H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
FIN:
MOVDX,280H;乐谱播完,进入静音状态,发出超声波值
MOVAL,0AH;低8位赋值
OUTDX,AL
MOVAL,00H;高8位赋值
OUTDX,AL
MOVAH,01H;键盘输入
INT21H
CMPAL,1BH;判断输入是否为“ESC”
JNZBEGIN;是则退出,否则重复播放
MOVAH,4CH;程序结束
INT21H
DELAYPROCNEAR;延时子程序
PUSHCX;CX值保护,将其压入堆栈
MOVCX,0FFFFH
L:
MOVAX,50;嵌套循环延时,增加延时长度
WA:
DECAX
JNZWA
LOOPL
POPCX;还原CX值
RET
DELAYENDP
CODEENDS
ENDSTART
五、思考题
问题:
写出8253计数初值、输入频率和输出频率的关系:
答:
输出频率=时钟频率/计数初值。
通过喇叭播放音乐“洋娃娃和小熊跳舞”,播放结束后,按ESC退出;按其他键重新播放。
这次总的来说做得还是比较顺利,可能是之前把几个常遇到的问题都遇到了。
在确定循环次数的时候,最开始需要根据不同乐谱手动设定播放音符的次数,后来与同学商讨进行优化,通过计算乐谱长度,实现了循环播放乐谱次数的自动确定。
这次实验同时运用了8254、8255两个芯片,配合实现音乐播放(计数、分频)和数码管显示的功能。
尽管实现的功能又复杂了很多,但是感觉确实比以前做得顺手很多了。
经过这几次实验,觉得自己对于接口芯片的初始化,端口地址的确定,控制方式的选择都有了更好的认识。
Ø了解串行通讯的基本原理。
Ø掌握串行接口芯片8251的工作原理和编程方法。
2.18251初始化
(1)方式控制字
图5-1方式控制字
(2)命令控制字
图5-2命令控制字
(3)状态字
图5-3状态字
2.2实验内容
1)自收自发。
采用查询方式:
将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在数码管上显示出来。
2)双机通信。
发送端用小键盘发送数据,接收端用数码管显示接收的数据。
2.3实验步骤
硬件具体连接方式如下:
1)8MHz信号接分频器74LS393的CLK端,从74LS393的Q4(250kHz)接8253的CLK,T/C接地或接RESET;
2)GATE接+5V;
3)8253的OUT和8251A的TXC、RXC相连,作为发送时钟和接收时钟;
4)8251A的CS和Y2相连,Y2地址为E840-E847H;
5)8253的CS和Y1相连,Y1地址为E820-E827H;
6)用导线将TXD和RXD相接,成为自发自收方式;
7)CTS端必须为低电平,8251A才可向外发送信号,RTS、DTR、DSR可不用,实验板中RTS、DTR、DSR均已接地。
3.1硬件连接图
硬件连接图如下图所示:
图5-4硬件连接图
3.2软件流程图
软件流程图如下图所示:
图5-5软件流程图
DATASEGMENT
NUMDB0,1,2,3,4,5,6,7,8,9;显示的数据
COUNTEQU$-NUM
SMGDB0EDH,21H,0F4H,0F1H,39H,0D9H,0DDH,61H,0FDH,0F9H;0-9的数码管显示
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
START:
;8253初始化
MOVAL,16H
MOVDX,0EE23H
OUTDX,AL
MOVAL,0FAH
MOVDX,0EE20H
OUTDX,AL
;8255A初始化
MOVAX,DATA
MOVDS,AX
MOVAL,80H
MOVDX,0EE03H
OUTDX,AL
;数码管显示部分初始化
MOVAL,20H
MOVDX,0EE01H
OUTDX,AL
MOVAL,0
MOVDX,0EE00H
OUTDX,AL
AGAIN:
MOVDX,0EE41H
MOVAL,40H;8251A初始化,内部复位
OUTDX,AL
CALLFARPTRDELAY;延时
MOVDX,0EE41H
MOVAL,4EH;1个停止位,无校验位,8位数据,波特率因子16
OUTDX,AL
MOVAL,37H;命令控制字
OUTDX,AL
MOVCX,COUNT
INCCX
LEASI,NUM;数据区地址送SI
NEXT:
MOVDX,0EE41H;读取当前是否收到新数据
INAL,DX
CMPAL,02H
JNZRECIVE;转接收
CMPAL,01H;检测是否可以发送字符
JZJIANCE
SEND:
MOVAL,[SI];取数据区一个数据
MOVDX,0EE40H;开始传送
OUTDX,AL
INCSI;参量加一,指向下一个
DECCX
LOOPNEXT;是否传送完毕
JMPJIANCE
RECIVE:
MOVDX,0EE40H;开始接收
INAL,DX
LEABX,SMG;查对应的数码管显示
XLAT
MOVDX,0EE00H;送数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 硬件 实验 报告