北邮微原硬件实验.docx

上传人:b****1 文档编号:3458541 上传时间:2023-05-05 格式:DOCX 页数:31 大小:490.17KB
下载 相关 举报
北邮微原硬件实验.docx_第1页
第1页 / 共31页
北邮微原硬件实验.docx_第2页
第2页 / 共31页
北邮微原硬件实验.docx_第3页
第3页 / 共31页
北邮微原硬件实验.docx_第4页
第4页 / 共31页
北邮微原硬件实验.docx_第5页
第5页 / 共31页
北邮微原硬件实验.docx_第6页
第6页 / 共31页
北邮微原硬件实验.docx_第7页
第7页 / 共31页
北邮微原硬件实验.docx_第8页
第8页 / 共31页
北邮微原硬件实验.docx_第9页
第9页 / 共31页
北邮微原硬件实验.docx_第10页
第10页 / 共31页
北邮微原硬件实验.docx_第11页
第11页 / 共31页
北邮微原硬件实验.docx_第12页
第12页 / 共31页
北邮微原硬件实验.docx_第13页
第13页 / 共31页
北邮微原硬件实验.docx_第14页
第14页 / 共31页
北邮微原硬件实验.docx_第15页
第15页 / 共31页
北邮微原硬件实验.docx_第16页
第16页 / 共31页
北邮微原硬件实验.docx_第17页
第17页 / 共31页
北邮微原硬件实验.docx_第18页
第18页 / 共31页
北邮微原硬件实验.docx_第19页
第19页 / 共31页
北邮微原硬件实验.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北邮微原硬件实验.docx

《北邮微原硬件实验.docx》由会员分享,可在线阅读,更多相关《北邮微原硬件实验.docx(31页珍藏版)》请在冰点文库上搜索。

北邮微原硬件实验.docx

北邮微原硬件实验

信息与通信工程学院

微原硬件实验报告

 

班级:

学号:

班序号:

【一.基本的I/O实验】

实验一I/O地址译码

一、实验目的

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

二、实验原理和容

1、实验电路如图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输出一个负脉冲。

图1-1

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

2、接线:

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

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

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

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

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

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

START:

MOVCX,0FFFFH;L7闪烁控制

LOOP1:

MOVDX,2A0H;灯亮

OUTDX,AL

CALLDELAY1

MOVDX,2A8H;灯灭

OUTDX,AL

CALLDELAY1

LOOPLOOP1;循环闪烁

CODEENDS

ENDSTART

五、实验结果

灯L7闪烁

实验二简单并行接口

一、实验目的

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

(选择273进行实验)

二、实验原理和容

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

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

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

3、接线:

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

图1-2

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

1.硬件接线图

2.软件程序流程图

 

四、源程序

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

EXIT:

MOVDX,2A8H;返回DOS

MOVAL,0

OUTDX,AL;所有灯灭

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验结果

8个灯代表8位ASCII码,灯亮代表‘1’,灯灭代表‘0’。

当从键盘输入字母或字符时,8个灯显示与输入对应的ASCII码,按下ESC键则所有灯灭。

六、实验总结

接线时注意各个端口名称不要接错,接线完成之后可以用HQFC中的演示实验验证接线是否正确。

实验一中需要加入合理的延时子程序来实现灯的亮灭交替。

七、实验收获与心得体会

第一次微原硬件实验在参考讲义和询问老师的情况下了解到了基础的硬件试验箱操作方法,学会了通过电脑软件编写控制试验箱的简单步骤以及相关注意事项。

【二.可编程并行接口8255实验】

实验三可编程并行接口8255

实验四七段数码管

一、实验目的

实验三:

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

实验四:

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

二、实验原理和容

实验三:

1、实验电路如图2-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

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

 

图2-1

实验四:

静态显示:

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

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

1.硬件接线图

实验三

实验四

2.软件程序流程图

实验三

实验四

四、源程序(仅实验三代码)

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK;基本框架

START:

MOVAX,DATA

MOVDS,AX

MOVDX,283H;8255控制寄存器端口地址283H

MOVAL,10000000B;工作方式为0

OUTDX,AL;初始化8255

DIGITAL:

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示0

MOVAL,3FH

OUTDX,AL

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

MOVAL,01H

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示2

MOVAL,06H

OUTDX,AL

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

MOVAL,02H

OUTDX,AL

MOVDX,28AH;熄灭数码管

MOVAL,00H

OUTDX,AL

MOVDX,288H;A口显示1

MOVAL,5BH

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;有键盘输入,退出

JMPDIGITAL

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验结果

数码管显示了学号的后四位“0210”如图所示。

当键盘有按键输入时退出,数码管灭。

六、实验总结

本次实验中控制数码管显示的主要有两个端口,A口和C口,C口控制哪一路数码管亮,A口控制一路数码管亮什么数字;工作方式的选择如下图所示,D7=1表示控制寄存器中存放的是工作方式选择字,工作在方式0,A、C均为输出,B口不使用,故AL为10000000B或10000010B均可。

七、实验收获与心得体会

初步了解可编程并行接口8255的简单应用;在实验三中8255的工作方式选择字非常重要,要弄清A、C口为输入还是输出,其次在代码中设计按键退出模块,可以使得运行更加可靠。

学习了控制数码管显示的方法,即通过两路控制,一路负责扫描决定哪一路显示,一路负责决定显示什么数字。

这种思路与数电实验中VHDL语言控制数码管有异曲同工之处,让我体会到了编程思想的相同之处。

 

【三.可编程定时器/计数8253实验】

实验八可编程定时器/计数器(8253/8254)

一、实验目的

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

二、实验原理和容

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

 

2.扩展部分:

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

注意:

8253输入频率应小于2MHz。

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

1.硬件接线图

2.软件程序流程图

四、源程序

DATASEGMENT

FENPINDW0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比

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

MUSICDB0,3,2,1,2,3,3,3,0,2,2,2,0,3,5,5,0,3,2,1,2,3,3,3,1,2,2,3,2,1,0,5,0,1,0;存放播放的乐曲音符

NUMDB00H,070H,0B0H,0D0H,0E0H;检测键盘输入(00h=00000000;070h=01110000;0b0h=10110000;0d0h=11010000;0e0h=11100000)

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序1

DELAYPROCNEAR

PUSHCX

MOVCX,100H

WAIT0:

LOOPWAIT0

POPCX

RET

DELAYENDP

;延时子程序2

DELAY1PROCNEAR

PUSHCX

MOVCX,0FFFFH

WAIT1:

LOOPWAIT1

POPCX

RET

DELAY1ENDP

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

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,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

五、实验结果

1.按小键盘的0,播放预置音乐,数码管显示音符对应的数字1~8;

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

3.按小键盘的9,数码管熄灭,放音停止,返回dos;

六、实验总结

1.在开始用MUSIC存乐谱实现了代码的多用性,可以直接在开头改变对应数字来实现不同乐曲的演奏;

2.开头用DIGITAL存数码管需要显示的0~8数字,数码管显示原理参考实验三和四,不同点在于8255中C口为输入,B口位选数码管仅第一路亮;

3.实验难点主要在小键盘与数码管,8254的连接控制。

获得键盘输入值的子程序参考了实验五的键盘扫描,其原理为先给第一行一个低电平,然后检测哪一列为低电平如第三列,则为坐标(1,3)的按键被按下。

若所有列均无低电平则给第二行低电平重复上述检测;

4.在代码中需加入延时程序以保证音乐播放的准确性;

5.按键要加入防抖程序。

原理为检测按键是否达到一定时长,如果达到则为按键,否则判断为误触

七、实验收获与心得体会

通过本次试验熟悉了可编程定时器/计时器的使用。

通过键盘,8254,数码管的组合实现简单的电子琴功能。

在本次试验中只使用了0至9十个按键,有机会可以完善,如不同的按键可以播放不同的乐曲等。

此外,本实验中防抖非常重要,第一次连接试验箱试验时没有写入防抖程序导致按键发音不对,后加入按键防抖程序问题得以解决。

这让我想到了数电实验用VHDL写打地鼠程序时也需要写防抖程序,体会到了编程的相通性以及编程中必须要面面俱到才能保证结果的正确稳定。

八、思考题

写出8253计数初值,输入频率和输出频率的关系:

答:

输出频率=输入频率/8253计数初值

 

【四.串行通讯接口8251实验】

实验十六串行通讯8251

一、实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、实验原理和容

基础功能:

1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

2、编程:

从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示,(或将存制定区域存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。

)实现自发自收。

扩展功能:

双机通信,将发送端用小键盘发送数据,接收端用数码管显示接收的数据。

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

1.硬件接线图(引用讲义)

2.软件程序流程图(引用讲义)

四、源程序

DATASEGMENT

STRINGDB'TRANSLATE','$'

STRING1DB'RECEIVE','$'

STRING2DB0DH,0AH,'$'

DATAENDS

STACKSEGMENTSTACK'SATCK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYPROCNEAR

PUSHCX

MOVCX,100H

WAIT0:

LOOPWAIT0

POPCX

RET

DELAYENDP

;开始

START:

MOVAX,DATA

MOVDS,AX

;8254初始化

MOVDX,283H

MOVAL,16H;0号计数器,读低字节,方式3

OUTDX,AL

CALLDELAY

MOVDX,280H;计数器地址为280H,计数初值为52

MOVAL,34H

OUTDX,AL

CALLDELAY

;8251初始化

MOVDX,2B9H;控制端口

MOVAL,40H;部复位命令

OUTDX,AL

NOP

CALLDELAY

MOVAL,5EH;方式控制字(01011110)

OUTDX,AL

MOVAL,37H;命令控制字(00110111)

OUTDX,AL

CALLDELAY

;发送数据

GOON:

MOVDX,2B9H;读状态字

INAL,DX

TESTAL,01H

JZGOON;缓冲区为空显示提示语句否则继续检测

;显示提示语句

MOVAH,09H

MOVDX,OFFSETSTRING

INT21H

MOVAH,01H

INT21H

;检测是否为ESC键

CMPAL,1BH

JZEXIT

INCAL;加1

MOVDX,2B8H

OUTDX,AL

;接收数据

RECEIVE:

MOVDX,2B9H

INAL,DX

TESTAL,02H

JZRECEIVE

;显示提示语句

MOVAH,09H

MOVDX,OFFSETSTRING2

INT21H

MOVAH,09H

MOVDX,OFFSETSTRING1

INT21H

MOVDX,2B8H

INAL,DX

MOVDL,AL

MOVAH,02H;显示接收的数据

INT21H

MOVAH,09H

MOVDX,OFFSETSTRING2

INT21H

JMPGOON

EXIT:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

五、实验结果

键盘输入后加一发送,在屏幕上显示对应输入字符ASCII码加一后的字符,如:

输入a显示b,输入1显示2。

按ESC键后退出。

六、实验总结

1.8254初始化选0号计数器,只写读写低8位,选择方式3,计数初值为二进制;

2.方式控制字的确定如下图,异步方式、1个停止位、奇校验位,、8位数据、波特因子为16,故为5EH;

3.命令控制字的确定重点在于接收和发送都允许;

4.接收和发送数据前先检查状态字,看缓冲区是否为空;

5.单机通信中控制字后需要加入延时程序

七、实验收获与心得体会

通过本次试验,让我对8251有了更深的了解。

可以将书本上的理论应用到实际,更加充分的理解了芯片的原理及其使用。

本次试验中双机通信的扩展容调试了很长时间,数码管必须等接收方按键后才可显示,无法做到实时显示故没有贴出代码,希望以后能有机会改进。

通过这四次实验,我在编程、调试、实验的过程中对于汇编语言有了更深的了解,对于微原课本上的原理理论也有了更好的理解。

最后,老师给予的指导,希望有机

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2