ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:733.65KB ,
资源ID:11878102      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11878102.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北京邮电大学微机原理硬件实验报告.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

北京邮电大学微机原理硬件实验报告.docx

1、北京邮电大学微机原理硬件实验报告 实验报告一:I/0地址译码和简单并行接口 实验一&实验二一、 实验目的掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。二、 实验原理及内容 a) I/0地址译码 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H287H,Y1:288H28FH, 当CPU执行I/O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV

2、 DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、),时间间隔通过软件延时实现。 2、接线: Y4/IO地址 接 CLK/D触发器 Y5/IO地址 接 CD/D触发器 D/D触发器 接 SD/D触发器 接 +5V Q/D触发器 接 L7(LED灯)或逻辑笔b) 简单并行接口 1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发

3、器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7。2、编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0K7,8个数据输出端分别接数据总线D0D7。4、用逻辑电平开关预置某个字母的ASC码,编程输入这个ASC码,并将其对应字母在屏幕上显示出来。5、接线:1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

4、 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)三、 硬件连线图1、 I/O地址译码2.简单并行接口四、 软件程序流程图1、 IO地址译码2、 简单并行接口五、 源程序1、 IO地址译码STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX LOP: MOV DX,2A0H OUT DX,AL ;点亮灯 CALL DELAY ;延时

5、 MOV DX,2A8H OUT DX,AL ;熄灭灯 CALL DELAY JMP LOPCODE ENDS END STARTDELAY PROC NEAR ;延时子程序 PUSH CX PUSH BX MOV BX,250 ;25065535LP2: MOV CX,0FFFFHLP1: LOOP LP1 DEC BX JNZ LP2 POP BX POP CX RETDELAY ENDP2、简单并行接口电路STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS

6、:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX LOP: MOV AH,01H INT 21H CMP AL,1BH ;检查是否按下退出esc键 JZ ENDING MOV DX,2A8H ;将ascii码输出 OUT DX,AL JMP LOPENDING:MOV AL,0 OUT DX,AL MOV AX,4C00H INT 21H CODE ENDS END START六、 实验总结 在这三次实验中出现的问题以及相应的解决方法如下: 实验一:因为对D触发器的特性有些遗忘,在编写程序时犯了不少错误,最终通过请教助教解决了一些疑问,从而顺利

7、写出了代码。 实验二:实验二的程序逻辑比较简单,但连线比较多,在实验过程中,也多次连错了线,通过检查纠正了连线错误,也很快完成了实验。 七、 实验收获与心得体会 这次实验是第一次用汇编语言控制接口,因为理论课尚未讲到相关内容,做实验时,上手地比较慢。通过实验一实验二,熟练了对IN、OUT指令的使用,对接口有了初步认识。同时通过研究译码电路,对“地址”也有了进一步的认识。实验报告二:可编程并行接口8255的应用 实验三&实验四&实验五一、 实验目的1、 通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。、2、 掌握数码管显示数字的原理。3、 掌握8255控制键盘及显示电

8、路的基本功能及编程方法;掌握一般键盘和显示电路的工作原理。二、 实验原理及内容a)实验三、实验电路如图4-3-1,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7。 、编程从8255C口输入数据,再从A口输出。 3、接线:PC7PC0/8255 接 K7K0/逻辑电平开关 PA7PA0/8255 接 L7L0/LED显示 CS/8255 接 Y1/IO地址b)实验四、静态显示:按4-4-1连接好电路,将8255的A口PA0PA7分别与七段数码管的段码驱动输入端adp相连,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。

9、(或编程在数码管上循环显示“00-99”, 位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。) 2、接线: PA7PA0/8255 接 dpa/LED数码管 PC3PC0/8255 接 S3S0/LED数码管 CS/8255 接 Y1/IO地址 C)实验五 1、编程:使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:2、接线: PC7PC0 /8255 接 行3列0 /4X4键盘 PA7PA0 /8255 接 dpa /LED数码管 CS/8255 接 Y1 /IO地址 PB3PCB/8255 接 S3S0/LED数码管 (或哪位数码管要显示则位选 S 接

10、+5V 即高电平,不想显示的数码管 S接 GND 即低电平)三、 硬件连线图a) 实验三b) 实验四c) 实验五四、 软件流程图a) 实验三b) 实验四c) 实验五五、 源程序a) 实验三STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,10001001B ;A口输出C口输入,工作方式为00 MOV DX,28BH ;控制端口地址 OUT DX,AL

11、 ;8255初始化,写入工作方式控制字 LOP: MOV DX,28AH ;将开关状态读入 IN AL,DX MOV DX,288H ;讲状态输出到A口 OUT DX,AL MOV AH,0BH ;检测键盘状态 INT 21H CMP AL,0FFH ;如果键盘上有输入则停止程序 JZ ENDING JMP LOPENDING:MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21HCODE ENDS END STARTb) 实验四STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGME

12、NTDATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,10000000B MOV DX,28BH OUT DX,AL;8255初始化 LOP: MOV AL,3FH; 将0的段码输出给A口 MOV DX,288H OUT DX,AL MOV AL,08H;输出位码给C口 MOV DX,28AH OUT DX,AL CALL DELAY;延时程序 MOV AL,06H ;将1的段码输出的A口 MOV DX,288H OUT DX,AL MOV AL,04H ;输出选通位码

13、 MOV DX,28AH OUT DX,AL CALL DELAY MOV AL,7FH ;将8的段码输出的A口 MOV DX,288H OUT DX,AL MOV AL,02H;输出选通位码 MOV DX,28AH OUT DX,AL CALL DELAY MOV AL,06H;将8的段码输出的A口 MOV DX,288H OUT DX,AL MOV AL,01H ;输出选通位码 MOV DX,28AH OUT DX,AL call DELAY MOV AH,0BH ;检查键盘是否有输入 INT 21H CMP AL,0ffh JZ ENDING ;有则退出 JMP LOPENDING: M

14、OV AL,00H MOV DX,28AH OUT DX,AL MOV AX,4C00H INT 21HDELAY PROC NEAR PUSH CX PUSH BX MOV BX,005H ;25065535LP2: MOV CX,0fFFFHLP1: LOOP LP1 DEC BX JNZ LP2 POP BX POP CX RETDELAY ENDP CODE ENDS END START c) 实验五STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGMENTKEYVALUE DB 71H,7CH,07H,4FH ;键盘值对

15、应的段码表,LINE0 DB 79H,77H,7DH,5BH ;LINE1 DB 5EH,6FH,6DH,06H ;LINE2 DB 39H,7FH,66H,3FH ;LINE3ROW DB 0EFH,0DFH,0BFH,7FH DATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,10000001B;C口高4位接键盘行输出,低4位列输入,A口输出 MOV DX,28BH OUT DX,AL LEA BX,KEYVALUE MOV SI,0 SCANROW:MOV AL,R

16、OWSI ;扫描行 MOV DX,28AH OUT DX,AL ;输出行 CALL DELAY ;延迟消抖 IN AL,DX ;读取列 AND AL,0FH CMP AL,0FH JZ NEXT ;此行无键按下 CMP AL,0EH JZ LINE0 ;按下第0列的键 CMP AL,0DH JZ LINE1;按下第1列的键 CMP AL,0BH JZ LINE2;按下第2列的键 JMP LINE3NEXT: INC SI CMP SI,4 JB NEXT1 MOV SI,0NEXT1:JMP SCANROW LINE0:MOV CL,BX+SI+0;查表或许按下的键相应的输出段码 JMP OU

17、TPUTLINE1:MOV CL,BX+SI+4 JMP OUTPUTLINE2:MOV CL,BX+SI+8 JMP OUTPUTLINE3:MOV CL,BX+SI+12OUTPUT:CMP CL,3FH ;检查是否是0,是0就退出 JZ ENDING MOV AL,CL MOV DX,288H ;传送段码给A口 OUT DX,AL MOV AL,01H ;传送位码给B口 MOV DX,289H OUT DX,AL MOV SI,0 JMP SCANROW ;继续扫描 ENDING:MOV AL,00 MOV DX,289H OUT DX,AL MOV AX,4C00H INT 21H D

18、ELAY PROC NEAR PUSH CX PUSH BX MOV BX,1 ;25065535LP2: MOV CX,0FFFHLP1: LOOP LP1 DEC BX JNZ LP2 POP BX POP CX RETDELAY ENDP CODE ENDS END START 六、 实验总结在这三次实验中出现的问题以及相应的解决方法如下:实验三:一开始没法用开关控制LED的亮灭,程序一运行就直接退出了,检查代码发现自己的退出条件写错了,修改后就能正常工作了。实验四:四个数码管显示不正常,四个数字都没法稳定的显示,经过调整延时的大小,能够使后两个数码管正常显示,但前两个数码管不受控制,最

19、后发现是前两个数码管坏了。 实验五:按下的键与数码管中显示的图形不一样,经过检查代码和实验箱,发现代码中按键对应的段码表行列顺序与实验箱不一致,经过调整,解决了不一致的问题。七、 实验收获与心得体会这三次实验都是围绕着8255并行接口做一些小的应用,其中实验三与实验四逻辑比较简单,实验五稍微难一点,因为理论课还未讲到接口部分,硬件实验需要自己自学接口电路,但从中收获了不少知识,大致明白了如何使用一个接口芯片,学会了自己看手册,根据说明来编程使用接口电路,对地址有了更深刻的理解。代码都是实验前自己课下独立编写的,因此上实验室操作时比较顺利,但也遇到了一些小错误,但也都独立解决了,在这样的一个过程

20、中,增强了自己的学习能力和独立解决问题的能力。实验报告三:可编程定时器/计数器(8253/8254)一、实验目的学习掌握8253用作定时器的编程原理;二、实验原理及内容(1)8253应用小结 8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。 18253初始化 使用8253前,要进行初始化编程。初始化编程的步骤是: 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 向使用的计数器端口写入计数初值。 28253控制字D7D600:使用0号计数器,D7D601:使用1号计数器 D7D610:使用2号计数器,D7D611:无效 D5D400

21、:锁存当前计数值 D5D401:只写低8位(高8位为0),读出时只读低8位 D5D410:只写高8位(低8位为0),读出时只读高8位 D5D411:先读/写低8位,后读/写高8位计数值 D3D2D1000:选择方式0,D3D2D1001:选择方式1 D3D2D1X10:选择方式2,D3D2D1X11:选择方式3 D3D2D1100:选择方式4,D3D2D1101:选择方式5 D00:计数初值为二进制,D01:计数初值为BCD码数(2)实验电路1、按图4-8-1虚线连接电路2、接线: CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟

22、 OUT0 /8253 接 喇叭或蜂鸣器(3)实验内容1完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。2扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 注意:8253输入频率应小于2MHz。三、硬件连线图四、软件流程图 1、主程序流程2、 放音子程序流程3、 弹琴子程序流程4、 五、源程序STACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSDATA SEGMENTINPUTINFO DB 0AH,0DH,Please choose mode:1 is playing music;2 is spieling,0AH,0DH

23、 DB $ERROR_INFO DB 0AH,0DH,illegal input,please input again!,0AH,0DH,$TONE DW 3906,3472,3125,2932,2604,2347,2083 ;音调1-7 计数初始值TIME DW 1000H,1000H,1000H,2000H,2000H,4000H,4000H ;持续时间DUANMA DB 06H,5BH,4FH,66H,6DH,7DH,07H ;与乐谱所对应的数码管段码 KEYVALUE DB 71H,7CH,07H,4FH ;键盘值对应的段码表,LINE0 DB 79H,77H,7DH,5BH ;LIN

24、E1 DB 5EH,6FH,6DH,06H ;LINE2 DB 39H,7FH,66H,3FH ;LINE3TUNEK DW 0,0,2083,3125 DW 0,0,2347,3472 DW 0,0,2604,3906 DW 0,0,2932,0ROW DB 0EFH,0DFH,0BFH,7FH DATA ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,10000001B;8255初始化;C口高4位接键盘行输出,低4位列输入,A口输出 MOV DX,28BH OUT DX,A

25、L MOV AL,00110110B ;8253初始化,工作方式3,使用计时器0 MOV DX,283H OUT DX,AL BEGIN:MOV AH,09H ;输入提醒,选择放音或弹琴模式或者退出程序 LEA DX,INPUTINFO INT 21H MOV AH,01H INT 21H CMP AL,1 JZ PLAY_MUSIC CMP AL,2 JZ SPIELING CMP AL,1BH JZ ENDING JMP INPUT_ERROR ;输入检错INPUT_ERROR:MOV AH,09H LEA DX,ERROR_INFO INT 21H JMP BEGIN PLAY_MUSI

26、C:CALL PLAYMUSIC JMP BEGINSPIELING:CALL SPIELINGP JMP BEGINENDING: MOV AX,4C00H INT 21H PLAYMUSIC PROC PUSH SI ;保护现场数据 PUSH DI PUSH AX PUSH BX PUSH CX PUSH DX LEA SI,TONE ;音调表 LEA DI,TIME ;每一个音调持续时间表 LEA BX,DUANMA;段码表 MOV CX,7 ;循环控制变量赋值LOP1: MOV AX,SI ;计数器赋值 MOV DX,280H; 计时器0的地址 OUT DX,AL ;先写入低八位,再写

27、入高八位 MOV AL,AH OUT DX,AL INC SI INC SI MOV AL,BX ;在数码管上显示乐谱 MOV DX,288H ;8255A口地址 OUT DX,AL INC BX MOV AL,01H ;传送位码给B口 MOV DX,289H OUT DX,AL MOV AX,DI;延迟,AX为入口参数 CALL DELAY INC DI INC DI MOV AH,0BH ;检测键盘是否有输入,有则跳出 INT 21H CMP AL,0FFH JZ POUT LOOP LOP1 LEA SI,TONE LEA DI,TIME LEA BX,DUANMA MOV CX,7 ;

28、重新循环 JMP LOP1 POUT: POP DX POP CX POP BX POP AX POP DI POP SI RET PLAYMUSIC ENDPSPIELINGP PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH BP PUSH SI PUSH DI LEA BX,KEYVALUE LEA BP,TUNEK MOV SI,2;只扫描2,3行(0123 4567)SCANROW:MOV AL,ROWSI ;扫描行 MOV DX,28AH OUT DX,AL ;输出行 PUSH AX MOV AX,1 CALL DELAY ;延迟消抖 POP AX IN AL,DX ;读取列 AND AL,0FH CMP AL,0FH JZ NEXT ;此行无键按下 CMP AL,0EH JZ LINE0 CMP AL,0DH JZ LINE1 CMP AL,0BH JZ LINE2 JMP LINE3NEXT: MOV AL,36H ;键盘弹起,对8253重新初始化,是蜂鸣器停止发音 MOV DX,283H OUT DX,AL INC SI CMP SI,4 JB NEXT1 MOV SI,2NEXT1:JMP SCANROW LINE0:MOV CL,BX+SI+0 ;查表 MOV DI,SI SHL DI,1 MOV A

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

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