北邮微原硬件实验(16页).doc

上传人:1595****071 文档编号:39797668 上传时间:2022-09-08 格式:DOC 页数:16 大小:182KB
返回 下载 相关 举报
北邮微原硬件实验(16页).doc_第1页
第1页 / 共16页
北邮微原硬件实验(16页).doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《北邮微原硬件实验(16页).doc》由会员分享,可在线阅读,更多相关《北邮微原硬件实验(16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-北邮微原硬件实验-第 16 页信息与通信工程学院微原硬件实验报告姓名: 班级: 学号: 班内序号: 【一 基本的I/O实验】实验一 I/O地址译码一、 实验目的掌握I/O地址译码电路的工作原理。二、 实验原理和内容1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H287H,Y1:288H28FH, 当CPU执行I/O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV D

2、X,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,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.软件程序流程图四、 源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK

3、 STACK DB 100H DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架;延时子程序DELAY1 PROC NEARMOV BX,500HPUSH CXLOOP2:MOV CX,0FFFHWAIT1: LOOP WAIT1DEC BXJNZ LOOP2POP CXRETDELAY1 ENDP START:MOV CX,0FFFFH ;L7闪烁控制LOOP1:MOV DX,2A0H;灯亮OUT DX,ALCALL DELAY1MOV DX,2A8H ;灯灭OUT DX,ALCALL DELAY1LOOP L

4、OOP1 ;循环闪烁CODE ENDSEND START五、 实验结果灯L7闪烁实验二 简单并行接口一、 实验目的掌握简单并行接口的工作原理及使用方法。(选择273进行实验)二、 实验原理和内容1、按下面图1-2简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7。 2、编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。3、接线:按图1-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

5、 图1-2三、 硬件接线图及软件程序流程图1.硬件接线图2.软件程序流程图四、 源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACKDB 100 DUP(?)STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架START: MOV AH,1;键盘输入INT 21HCMP AL,27;判断是否为ESC键JZ EXITMOV DX,2A8HOUT DX,AL ;输出JMP STARTEXIT: MOV DX,2A8H ;返回DOSMOV AL,0OUT DX,AL ;所有灯灭MOV A

6、X,4C00HINT 21HCODE ENDSEND START五、 实验结果8个灯代表8位ASCII码,灯亮代表1,灯灭代表0。当从键盘输入字母或字符时,8个灯显示与输入对应的ASCII码,按下ESC键则所有灯灭。六、 实验总结接线时注意各个端口名称不要接错,接线完成之后可以用HQFC中的演示实验验证接线是否正确。实验一中需要加入合理的延时子程序来实现灯的亮灭交替。七、 实验收获与心得体会第一次微原硬件实验在参考讲义和询问老师的情况下了解到了基础的硬件试验箱操作方法,学会了通过电脑软件编写控制试验箱的简单步骤以及相关注意事项。【二 可编程并行接口8255实验】实验三 可编程并行接口8255实

7、验四 七段数码管一、 实验目的实验三:通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。实验四:掌握数码管显示数字的原理。二、 实验原理和内容实验三:1、 实验电路如图2-1,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7。 2、 编程从8255C口输入数据,再从A口输出。 图2-1实验四:静态显示:按图2-2连接好电路,将8255的A口PA0PA7分别与七段数码管的段码驱动输入端adp相连,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示学号的后四位0210。三、 硬件接线图及软件程序流程图1. 硬件接线图实

8、验三实验四2. 软件程序流程图实验三实验四四、 源程序(仅实验三代码)DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架START:MOV AX,DATA MOVDS,AX MOV DX,283H ;8255控制寄存器端口地址283H MOV AL,10000000B ;工作方式为0 OUT DX,AL ;初始化8255DIGITAL: MOV DX,28AH ;熄灭数码管 MOV AL,00H OUT DX,

9、AL MOV DX,288H ;A口显示0 MOV AL,3FH OUT DX,AL MOV DX,28AH ;C口00000001(位码) MOV AL,01H OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口显示2 MOV AL,06H OUT DX,AL MOV DX,28AH ;C口00000010(位码) MOV AL,02H OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口显示1 MOV AL,5BH OUT DX,AL

10、 MOV DX,28AH MOV AL,04H ;C口00000100(位码) OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口显示0 MOV AL,3FH OUT DX,AL MOV DX,28AH MOVAL,08H ;C口00001000(位码) OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,00H OUT DX,AL MOV AH,01H INT 16H JNZ EXIT ;有键盘输入,退出 JMP DIGITALEXIT:MOVAX,4C00H INT21HCODEENDS E

11、ND START 五、 实验结果数码管显示了学号的后四位“0210”如图所示。当键盘有按键输入时退出,数码管灭。六、 实验总结本次实验中控制数码管显示的主要有两个端口,A口和C口,C口控制哪一路数码管亮,A口控制一路数码管亮什么数字;工作方式的选择如下图所示,D7=1表示控制寄存器中存放的是工作方式选择字,工作在方式0,A、C均为输出,B口不使用,故AL为10000000B或10000010B均可。七、 实验收获与心得体会初步了解可编程并行接口8255的简单应用;在实验三中8255的工作方式选择字非常重要,要弄清A、C口为输入还是输出,其次在代码中设计按键退出模块,可以使得运行更加可靠。学习了

12、控制数码管显示的方法,即通过两路控制,一路负责扫描决定哪一路显示,一路负责决定显示什么数字。这种思路与数电实验中VHDL语言控制数码管有异曲同工之处,让我体会到了编程思想的相同之处。【三 可编程定时器/计数8253实验】实验八 可编程定时器/计数器(8253/8254)一、 实验目的学习掌握8253用作定时器的编程原理;二、 实验原理和内容1完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。2扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 注意:8253输入频率应小于2MHz。三、 硬件接线图及软件程序流程图1. 硬件接线图2. 软件程序流程图四、 源程序DATA SE

13、GMENTFENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管MUSIC DB 0,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 ;存放播放的乐曲音符NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入(00h=00000000;070h=01110000;0b0h=10110000;0d0h=11010000;0e0

14、h=11100000)DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序1DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RETDELAY ENDP;延时子程序2DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RETDELAY1 ENDP;获取键盘输入值的子程序KEY PROC

15、NEAR PUSH AX ;保护现场 PUSH CX PUSH DX MOV CX,00H ;从第一行开始扫描CHECK: MOV DX,28AH ;C口地址给DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,BX OUT DX,AL;防抖 IN AL,DX ;判断是否有键盘按下 MOV AH,AL CALL DELAY IN AL,DX CMP AL,AH JNZ CHECK ;不相等说明为抖动,重新检测;判断按下的列 AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP

16、AL,0BH JZ NEXT3 MOV BX,01H JMP GOTNEXT: INC CX CMP CX,05H JNZ JUMP1 MOV CX,01H ;修改变量扫描下一行JUMP1: JMP CHECKNEXT1: MOV BX,04H JMP GOTNEXT2: MOV BX,03H JMP GOTNEXT3: MOV BX,02H;计算按下键盘的数值GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL SUB BL,01H ;此时BX中所存即为对应的偏移量 POP DX ;恢复现场 POP CX POP AX RET KEY E

17、NDP;主程序START: MOV AX,DATA MOV DS,AX ;8253初始化 MOV DX,283H MOV AL,36H OUT DX,AL ;8255初始化 MOV DX,28BH MOV AL,81H ;C口输入 OUT DX,AL MOV DX,289H ;B口位选数码管 MOV AL,01H OUT DX,AL;扫描键盘LOOP1: CALL KEY CMP BX,0 ;按0播放音乐 JZ PLAY0 CMP BX,9 ;按9退出 JZ EXIT;按18发出对应音 MOV CX,BX MOV BX,OFFSET DIGITAL ;数码管显示音符 ADD BX,CX MOV

18、 AL,BX MOV DX,288H ;A口输出 OUT DX,AL ;播放该音符 MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,BX MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY1 CALL DELAY1 MOV DX,28AH ;C口输入 IN AL,DX;检测键盘是否弹起 MOV AH,ALLOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2 ;初始化8253,停止播放音乐 MOV AX,0H M

19、OV DX,283H MOV AL,36H OUT DX,AL JMP LOOP1 ;播放音乐PLAY0: MOV CX,01HPLAY: PUSH CX ;读取音符,存于CX中 MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,BX MOV CL,AL MOV CH,0H ;数码管显示 MOV BX,OFFSET DIGITAL ADD BX,CX MOV AL,BX MOV DX,288H OUT DX,AL ;播放该乐符 MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,B

20、X MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL POP CX ;延时,持续播放 MOV AX,90HLOOP3: CALL DELAY1 DEC AX JNZ LOOP3 ;乐曲未结束时,CX加1 INC CX CMP CX,28H;共40个音符 JNZ JUM JMP LOOP1JUM: JMP PLAYEXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H CODE ENDS END START五、 实验结果1. 按小键盘的0,播放预置音乐,数码管显示音符对应的数字18;2. 按小键盘的18

21、,分别发出do,re,mi,fa,so,la,si,高音do,数码管显示按下的音符对应的18数字;3. 按小键盘的9,数码管熄灭,放音停止,返回dos;六、 实验总结1. 在开始用MUSIC存乐谱实现了代码的多用性,可以直接在开头改变对应数字来实现不同乐曲的演奏;2. 开头用DIGITAL存数码管需要显示的08数字,数码管显示原理参考实验三和四,不同点在于8255中C口为输入,B口位选数码管仅第一路亮;3. 实验难点主要在小键盘与数码管,8254的连接控制。获得键盘输入值的子程序参考了实验五的键盘扫描,其原理为先给第一行一个低电平,然后检测哪一列为低电平如第三列,则为坐标(1,3)的按键被按下

22、。若所有列均无低电平则给第二行低电平重复上述检测;4. 在代码中需加入延时程序以保证音乐播放的准确性;5. 按键要加入防抖程序。原理为检测按键是否达到一定时长,如果达到则为按键,否则判断为误触七、 实验收获与心得体会通过本次试验熟悉了可编程定时器/计时器的使用。通过键盘,8254,数码管的组合实现简单的电子琴功能。在本次试验中只使用了0至9十个按键,有机会可以完善,如不同的按键可以播放不同的乐曲等。此外,本实验中防抖非常重要,第一次连接试验箱试验时没有写入防抖程序导致按键发音不对,后加入按键防抖程序问题得以解决。这让我想到了数电实验用VHDL写打地鼠程序时也需要写防抖程序,体会到了编程的相通性

23、以及编程中必须要面面俱到才能保证结果的正确稳定。八、 思考题写出8253计数初值,输入频率和输出频率的关系:答:输出频率 = 输入频率/8253计数初值【四 串行通讯接口8251实验】实验十六 串行通讯8251一、 实验目的1、了解串行通讯的基本原理。 2、掌握串行接口芯片8251的工作原理和编程方法。二、 实验原理和内容基础功能:1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。 2、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过82

24、51A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。 扩展功能:双机通信,将发送端用小键盘发送数据,接收端用数码管显示接收的数据。三、 硬件接线图及软件程序流程图1. 硬件接线图(引用讲义)2 软件程序流程图(引用讲义)四、 源程序DATA SEGMENTSTRING DB TRANSLATE ,$STRING1 DB RECEIVE ,$STRING2 DB 0DH,0AH,$DATA ENDSSTACK SEGMENT STACK SATCK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:

25、DATA,SS:STACK;延时子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RETDELAY ENDP;开始START: MOV AX,DATA MOV DS,AX;8254初始化 MOV DX,283H MOV AL,16H ;0号计数器,读低字节,方式3 OUT DX,AL CALL DELAY MOV DX,280H;计数器地址为280H,计数初值为52 MOV AL,34H OUT DX,AL CALL DELAY;8251初始化 MOV DX,2B9H;控制端口 MOV AL,40H ;内部复位命令

26、OUT DX,AL NOP CALL DELAY MOV AL,5EH ;方式控制字(01011110) OUT DX,AL MOV AL,37H ;命令控制字(00110111) OUT DX,AL CALL DELAY;发送数据GOON: MOV DX,2B9H;读状态字 IN AL,DX TEST AL,01H JZ GOON ;缓冲区为空显示提示语句否则继续检测;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING INT 21H MOV AH,01H INT 21H;检测是否为ESC键 CMP AL,1BH JZ EXIT INC AL;加1 MOV DX,2

27、B8H OUT DX,AL ;接收数据RECEIVE: MOV DX,2B9H IN AL,DX TEST AL,02H JZ RECEIVE;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING2 INT 21H MOV AH,09H MOV DX,OFFSET STRING1 INT 21H MOV DX,2B8H IN AL,DX MOV DL,AL MOV AH,02H;显示接收的数据 INT 21H MOV AH,09H MOV DX,OFFSET STRING2 INT 21H JMP GOON EXIT: MOV AX,4C00H INT 21H CODE

28、 ENDS END START五、 实验结果键盘输入后加一发送,在屏幕上显示对应输入字符ASCII码加一后的字符,如:输入a显示b,输入1显示2。按ESC键后退出。六、 实验总结18254初始化选0号计数器,只写读写低8位,选择方式3,计数初值为二进制;2方式控制字的确定如下图,异步方式、1个停止位、奇校验位,、8位数据、波特因子为16,故为5EH;3命令控制字的确定重点在于接收和发送都允许;4接收和发送数据前先检查状态字,看缓冲区是否为空;5单机通信中控制字后需要加入延时程序七、 实验收获与心得体会通过本次试验,让我对8251有了更深的了解。可以将书本上的理论应用到实际,更加充分的理解了芯片的原理及其使用。本次试验中双机通信的扩展内容调试了很长时间,数码管必须等接收方按键后才可显示,无法做到实时显示故没有贴出代码,希望以后能有机会改进。通过这四次实验,我在编程、调试、实验的过程中对于汇编语言有了更深的了解,对于微原课本上的原理理论也有了更好的理解。最后,谢谢老师给予的指导,希望有机会能更多的接触此类实验。八、 思考题在实验中,你如何确定RxC,TxC的值,写出计算公式答:RXC=TXC=8253输出时钟频率=8251波特率*波特率因子

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁