北邮微机原理硬件实验报告完整版.docx

上传人:b****7 文档编号:9171719 上传时间:2023-02-03 格式:DOCX 页数:44 大小:643.94KB
下载 相关 举报
北邮微机原理硬件实验报告完整版.docx_第1页
第1页 / 共44页
北邮微机原理硬件实验报告完整版.docx_第2页
第2页 / 共44页
北邮微机原理硬件实验报告完整版.docx_第3页
第3页 / 共44页
北邮微机原理硬件实验报告完整版.docx_第4页
第4页 / 共44页
北邮微机原理硬件实验报告完整版.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

北邮微机原理硬件实验报告完整版.docx

《北邮微机原理硬件实验报告完整版.docx》由会员分享,可在线阅读,更多相关《北邮微机原理硬件实验报告完整版.docx(44页珍藏版)》请在冰豆网上搜索。

北邮微机原理硬件实验报告完整版.docx

北邮微机原理硬件实验报告完整版

微机原理硬件实验

I/O地址译码

&

简单并行接口

 

班级:

姓名:

学号:

 

一实验目的

实验一:

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

实验二:

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

二、实验原理和内容

实验一:

1、实验电路如图4-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(或INAL,DX)

Y4输出一个负脉冲,执行下面两条指令

MOVDX,2A8H

OUTDX,AL(或INAL,DX)

Y5输出一个负脉冲。

图4-1-1

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

2、接线:

Y4/IO地址接CLK/D触发器

Y5/IO地址接CD/D触发器

D/D触发器接SD/D角发器接+5V

Q/D触发器接L7(LED灯)或逻辑笔

实验二:

1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。

74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

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

图4-2-1

3、接线:

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

三硬件接线图及软件程序流程图

1硬件接线图

实验一:

实验二:

2软件程序流程图

实验一:

实验二:

四源程序

实验一:

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAY1PROCNEAR

MOVBX,500H

PUSHCX

LOOP2:

MOVCX,0FFFH

WAIT1:

LOOPWAIT1

DECBX

JNZLOOP2

POPCX

RET

DELAY1ENDP

;L7闪烁

START:

MOVCX,0FFFFH

LOOP1:

MOVDX,2A0H;灯亮

OUTDX,AL

CALLDELAY1

MOVDX,2A8H;灯灭

OUTDX,AL

CALLDELAY1

LOOPLOOP1;循环闪烁

CODEENDS

ENDSTART

实验二:

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAH,1;键盘输入

INT21H

CMPAL,27;判断是否为ESC键

JZEXIT

MOVDX,2A8H

OUTDX,AL;输出

JMPSTART

;返回DOS

EXIT:

MOVDX,2A8H

MOVAL,0

OUTDX,AL;所有灯灭

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五实验结果

实验一:

L7闪烁

实验二:

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

六:

实验总结

1主要问题是对题目中所给的硬件接线图不是很理解,如第二个实验中或门的作用。

向老师请教后明白了硬件接线图的原理,做实验就容易许多。

2在第一个实验中起先对AL进行了赋值,后来发现是没必要的,不对AL赋值对产生负脉冲无影响,后来删掉了相应的赋值语句,精简了代码。

七实验收获与心得体会

这是第一次接触微原硬件实验,实验板比小学期单片机实验更丰富,但也会导致刚开始的时候不知道该把线接在哪。

在明白了硬件接法,将自己的代码反映在硬件上时,觉得非常有趣。

之前一直以为微原实验不如C++等高级语言编程有趣,现在看来丝毫不逊色。

且通过自己动手实验,使我对理论课所学知识有了更好的理解。

期待通过这几次微原实验能让我收获更多知识。

微机原理硬件实验

可编程并行接口8255

&

七段数码管

&

键盘显示控制实验

 

班级:

姓名:

学号:

 

一实验目的

实验三:

通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。

实验四:

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

实验五:

掌握8255控制键盘及显示电路的基本功能及编程方法。

掌握一般键盘和显示电路的工作原理。

二实验原理和内容

实验三:

1、实验电路见硬件连接图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2、编程从8255C口输入数据,再从A口输出。

实验四:

静态显示:

按下图连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。

实验五:

编程:

使得在小键盘上每按一个健,4位数码管上显示出相应字符。

三硬件接线图及软件程序流程图

1硬件接线图

实验三:

实验四:

2软件程序流程图

实验三:

(引用讲义上已给出的图)

实验四:

(引用讲义上已给出的图)

实验五:

四源程序

实验三

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVDX,28BH;8255初始化,10001001,C口输入,A口输出

MOVAL,89H

OUTDX,AL

LOOP1:

MOVDX,28AH;C口输入

INAL,DX

MOVDX,288H;A口输出

OUTDX,AL

MOVAH,01H

INT16H

JNZEXIT;ZF=0说明有按键输入,故退出

JMPLOOP1

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

实验四

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVDX,28BH;8255控制寄存器端口地址28BH

MOVAL,80H;工作方式为0

OUTDX,AL;初始化8255

DIGITAL:

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示5

MOVAL,6DH

OUTDX,AL

MOVDX,28AH;C口00000001(位码)

MOVAL,01H

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示2

MOVAL,5BH

OUTDX,AL

MOVDX,28AH;C口00000010(位码)

MOVAL,02H

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示6

MOVAL,7DH

OUTDX,AL

MOVDX,28AH

MOVAL,04H;C口00000100(位码)

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示0

MOVAL,3FH

OUTDX,AL

MOVDX,28AH

MOVAL,08H;C口00001000(位码)

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVAH,01H

INT16H

JNZEXIT;ZF=0说明有按键输入,故退出

JMPDIGITAL

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

实验五

DATASEGMENT

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;数码管显示0123456789ABCDEF

NUMDB70H,0B0H,0D0H,0E0H;用于扫描键盘70H=01110000,0B0H=10110000,0D0H=11010000,0E0H=11100000

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYPROCNEAR

PUSHCX

MOVCX,100H

WAIT1:

LOOPWAIT1

POPCX

RET

DELAYENDP

;获取键盘的输入数字的子程序,通过BX寄存器传递

KEYPROCNEAR

PUSHAX;保护现场

PUSHCX

PUSHDX

MOVCX,00H;从第一行开始扫描

CHECK:

MOVDX,28AH;C口地址给DX

MOVBX,OFFSETNUM

ADDBX,CX

MOVAL,[BX]

OUTDX,AL

;防抖

INAL,DX;判断是否有键盘按下

MOVAH,AL

CALLDELAY

INAL,DX

CMPAL,AH

JNZCHECK;不相等说明为抖动,重新检测

;判断按下的列

ANDAL,0FH

CMPAL,0FH

JZNEXT;这一行的所有列都没有按下的则跳到下一行扫描

CMPAL,0EH

JZNEXT1

CMPAL,0DH

JZNEXT2

CMPAL,0BH

JZNEXT3

MOVBX,00H

JMPGOT

NEXT:

INCCX;修改变量扫描下一行

CMPCX,04H

JNZJUMP1

MOVCX,00H

JUMP1:

JMPCHECK

NEXT1:

MOVBX,03H

JMPGOT

NEXT2:

MOVBX,02H

JMPGOT

NEXT3:

MOVBX,01H

;计算按下键盘的数值

GOT:

MOVAL,CL

MOVDL,04H

MULDL

ADDBL,AL;此时BX中所存即为对应的偏移量

POPDX;恢复现场

POPCX

POPAX

RET

KEYENDP

;主程序

START:

MOVAX,DATA

MOVDS,AX

MOVDX,28BH;8255初始化

MOVAL,81H;C口输入

OUTDX,AL

MOVDX,289H;B口位选数码管

MOVAL,01H

OUTDX,AL

;扫描键盘

LOOP1:

CALLKEY

;数码管显示字符

MOVAX,BX

MOVBX,OFFSETTABLE

ADDBX,AX;此时BX即为对应的地址

MOVAL,[BX]

CMPBX,OFFSETTABLE;按下的为0则退出

JZEXIT

MOVDX,288H;A口输出

OUTDX,AL

MOVDX,28AH;C口输入

INAL,DX

;检测键盘是否弹起

MOVAH,AL

LOOP2:

CALLDELAY

INAL,DX

CMPAL,AH

JZLOOP2

JMPLOOP1

;返回DOS

EXIT:

MOVAL,00H

MOVDX,288H;A口输出

OUTDX,AL

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五实验结果

实验三:

拨动K0~K7,对应的L0~L7亮,有按键输入则退出。

实验四:

数码管显示学号的后四位:

0625。

有按键输入则退出。

实验五:

按小键盘1~F则数码管显示对应的字符,按下0则结束。

六:

实验总结

本次实验课做了三个实验,每个实验也都变换了端口重新操作以加深理解,觉得比第一次做的更熟练。

本次实验遇到问题的主要是实验五,键盘扫描及防抖程序较为复杂,需要考虑很多。

在添加按小键盘0则退出时起初代码位置不对导致有逻辑错误,修改了两次才正确。

七实验收获与心得体会

这次实验觉得和小学期的单片机实验有很多的想通之处。

小学期使用的键盘扫描方法就是行扫描法,所以这次对扫描方法的理解更轻松一些。

通过这次实验,我对8255的应用有了更深的了解。

这次实验我更加注意了代码优化,每个实验都添加了退出的代码,觉得更可靠。

实验三和四相对来说更容易,几乎是静态的,而实验五由于一直随着按键而变化所以需要考虑多种情况和变化,增加了难度,这也提高了我编程时考虑多种情况的意识,相信对我以后的编程也有很多的好处。

微机原理硬件实验

 

可编程定时器/计数器

(8253/8254)

 

班级:

姓名:

学号:

 

一、实验目的

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

二、实验原理和内容

1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。

2.扩展部分:

利用小键盘实现弹琴功能,并显示弹奏的乐谱。

注意:

8253输入频率应小于2MHz。

三硬件接线图及软件程序流程图

1硬件接线图

 

 

2软件程序流程图

 

四源程序

DATASEGMENT

FENPINDW0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比1(do)-i(do)

DIGITALDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管

MUSICDB0,1,2,3,1,1,2,3,1,0,3,4,5,0,3,4,5,0,5,6,5,4,3,1,0,5,6,5,4,3,1,0,1,5,1,0,1,5,1,0;存放播放的乐曲音符0是空拍

NUMDB00H,070H,0B0H,0D0H,0E0H;检测键盘输入

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYPROCNEAR

PUSHCX

MOVCX,100H

WAIT0:

LOOPWAIT0

POPCX

RET

DELAYENDP

;延时子程序2

DELAY1PROCNEAR

PUSHCX

MOVCX,0FFFFH

WAIT1:

LOOPWAIT1

POPCX

RET

DELAY1ENDP

;获取键盘输入值的子程序

KEYPROCNEAR

PUSHAX;保护现场

PUSHCX

PUSHDX

MOVCX,01H

CHECK:

MOVDX,28AH;C口地址给DX

MOVBX,OFFSETNUM

ADDBX,CX

MOVAL,[BX]

OUTDX,AL

;防抖

INAL,DX;判断是否有键盘按下

MOVAH,AL

CALLDELAY

INAL,DX

CMPAL,AH

JNZCHECK;不相等说明为抖动,重新检测

;判断按下的列

ANDAL,0FH

CMPAL,0FH

JZNEXT

CMPAL,0EH

JZNEXT1

CMPAL,0DH

JZNEXT2

CMPAL,0BH

JZNEXT3

MOVBX,01H

JMPGOT

NEXT:

INCCX;修改变量扫描下一行

CMPCX,05H

JNZJUMP1

MOVCX,01H

JUMP1:

JMPCHECK

NEXT1:

MOVBX,04H

JMPGOT

NEXT2:

MOVBX,03H

JMPGOT

NEXT3:

MOVBX,02H

;计算按下键盘的数值

GOT:

SUBCX,01H

MOVAL,CL

MOVDL,04H

MULDL

ADDBL,AL

SUBBL,01H;此时BX中所存即为对应的偏移量

POPDX;恢复现场

POPCX

POPAX

RET

KEYENDP

;主程序

START:

MOVAX,DATA

MOVDS,AX

;8253初始化

MOVDX,283H

MOVAL,36H

OUTDX,AL

;8255初始化

MOVDX,28BH

MOVAL,81H;C口输入

OUTDX,AL

MOVDX,289H;B口位选数码管

MOVAL,01H

OUTDX,AL

;扫描键盘

LOOP1:

CALLKEY

CMPBX,0;按0播放音乐

JZPLAY0

CMPBX,9;按9退出

JZEXIT

;按1~8发出对应音

MOVCX,BX

MOVBX,OFFSETDIGITAL;数码管显示音符

ADDBX,CX

MOVAL,[BX]

MOVDX,288H;A口输出

OUTDX,AL

;播放该音符

MOVBX,OFFSETFENPIN

MOVAX,CX

ADDAX,AX

ADDBX,AX

;计数,先低八位后高八位

MOVAX,[BX]

MOVDX,280H

OUTDX,AL

MOVAL,AH

OUTDX,AL

CALLDELAY1

CALLDELAY1

MOVDX,28AH;C口输入

INAL,DX

;检测键盘是否弹起

MOVAH,AL

LOOP2:

CALLDELAY

INAL,DX

CMPAL,AH

JZLOOP2

;初始化8253,停止播放音乐

MOVAX,0H

MOVDX,283H

MOVAL,36H

OUTDX,AL

JMPLOOP1

;播放音乐

PLAY0:

MOVCX,01H

PLAY:

PUSHCX

;读取音符,存于CX中

MOVBX,OFFSETMUSIC

ADDBX,CX

MOVAL,[BX]

MOVCL,AL

MOVCH,0H

;数码管显示

MOVBX,OFFSETDIGITAL

ADDBX,CX

MOVAL,[BX]

MOVDX,288H

OUTDX,AL

;播放该乐符

MOVBX,OFFSETFENPIN

MOVAX,CX

ADDAX,AX

ADDBX,AX

;计数,先低八位后高八位

MOVAX,[BX]

MOVDX,280H

OUTDX,AL

MOVAL,AH

OUTDX,AL

POPCX

;延时,持续播放

MOVAX,90H

LOOP3:

CALLDELAY1

DECAX

JNZLOOP3

;乐曲未结束时,CX加1

INCCX

CMPCX,28H;共40个音符

JNZJUM

JMPLOOP1

JUM:

JMPPLAY

EXIT:

MOVAL,0

MOVDX,288H

OUTDX,AL

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五实验结果

按小键盘的0时,播放预置音乐《两只老虎》,同时数码管显示相应的音符;

按小键盘的1~8时,分别发出do,re,mi,fa,so,la,si,高音do,数码管显示按下的音符;

按小键盘的9时,熄灭数码管,回到dos

六:

实验总结

由于小学期单片机实验做的就是电子琴,原理上比较熟悉,所以这次实验比较容易。

在调试时,主要是调整延时以使音乐播放更准确。

延时程序是保证本次实验成功的关键。

在弹奏时,发声时长即为按键时长,按键弹起时停止播放音乐(但为保证按键很短时发声不至于太急促,仍在此处加入了一点延时)。

七实验收获与心得体会

这次实验的主要收获是熟悉了可编程定时器/计数器的使用。

可以利用8253/8254工作于方式三来产生相应频率的方波,送给喇叭后发出相应的音。

这次实验也使我对查表调用的使用更得

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

当前位置:首页 > 求职职场 > 简历

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

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