当前位置:文档之家› 北邮微原硬件实验

北邮微原硬件实验

信息与通信工程学院微原硬件实验报告姓名:班级:学号:班内序号:【一.基本的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范围内,译码器选中,必有一根译码线输出负脉冲。

例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲,执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。

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

2、接线: Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D角发器接 +5VQ/D触发器接 L7(LED灯)或逻辑笔三、硬件接线图及软件程序流程图1.硬件接线图2.软件程序流程图四、源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架;延时子程序DELAY1 PROC NEARMOV BX,500HPUSH CXLOOP2: MOV CX,0FFFHWAIT1: LOOP WAIT1DEC BXJNZ LOOP2POP CXRETDELAY1 ENDPSTART: MOV CX,0FFFFH ;L7闪烁控制LOOP1: MOV DX,2A0H ;灯亮OUT DX,ALCALL DELAY1MOV DX,2A8H ;灯灭OUT DX,ALCALL DELAY1LOOP LOOP1 ;循环闪烁CODE ENDSEND START五、实验结果灯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.软件程序流程图四、源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE 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 AX,4C00HINT 21HCODE ENDSEND START五、实验结果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.软件程序流程图实验三实验四四、源程序(仅实验三代码)DATA SEGMENTDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK ;基本框架START: MOV AX,DATAMOV DS,AXMOV DX,283H ;8255控制寄存器端口地址283H MOV AL,B ;工作方式为0OUT DX,AL ;初始化8255DIGITAL: MOV DX,28AH ;熄灭数码管MOV AL,00HOUT DX,ALMOV DX,288H ;A口显示0MOV AL,3FHOUT DX,ALMOV DX,28AH ;C口00000001(位码)MOV AL,01HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,00HOUT DX,ALMOV DX,288H ;A口显示2MOV AL,06HOUT DX,ALMOV DX,28AH ;C口00000010(位码)MOV AL,02HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,00HOUT DX,ALMOV DX,288H ;A口显示1MOV AL,5BHOUT DX,ALMOV DX,28AHMOV AL,04H ;C口00000100(位码)OUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,00HOUT DX,ALMOV DX,288H ;A口显示0MOV AL,3FHOUT DX,ALMOV DX,28AHMOV AL,08H ;C口00001000(位码)OUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,00HOUT DX,ALMOV AH,01HINT 16HJNZ EXIT ;有键盘输入,退出JMP DIGITALEXIT: MOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果数码管显示了学号的后四位“0210”如图所示。

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

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

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

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

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

【三.可编程定时器/计数8253实验】实验八可编程定时器/计数器(8253/8254)一、实验目的学习掌握8253用作定时器的编程原理;二、实验原理和内容1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。

2.扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。

注意:8253输入频率应小于2MHz。

三、硬件接线图及软件程序流程图1.硬件接线图2.软件程序流程图四、源程序DATA SEGMENTFENPIN 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=;0d0h=;0e0h=)DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序1DELAY PROC NEARPUSH CXMOV CX,100HWAIT0: LOOP WAIT0POP CXRETDELAY ENDP;延时子程序2DELAY1 PROC NEARPUSH CXMOV CX,0FFFFHWAIT1: LOOP WAIT1POP CXRETDELAY1 ENDP;获取键盘输入值的子程序KEY PROC NEARPUSH AX ;保护现场PUSH CXPUSH DXMOV CX,00H ;从第一行开始扫描CHECK: MOV DX,28AH ;C口地址给DXMOV BX,OFFSET NUMADD BX,CXMOV AL,[BX]OUT DX,AL;防抖IN AL,DX ;判断是否有键盘按下MOV AH,ALCALL DELAYIN AL,DXCMP AL,AHJNZ CHECK ;不相等说明为抖动,重新检测;判断按下的列AND AL,0FHCMP AL,0FHJZ NEXTCMP AL,0EHJZ NEXT1CMP AL,0DHJZ NEXT2CMP AL,0BHJZ NEXT3MOV BX,01HJMP GOTNEXT: INC CXCMP CX,05HJNZ JUMP1MOV CX,01H ;修改变量扫描下一行JUMP1: JMP CHECKNEXT1: MOV BX,04HJMP GOTNEXT2: MOV BX,03HJMP GOTNEXT3: MOV BX,02H;计算按下键盘的数值GOT: SUB CX,01HMOV AL,CLMOV DL,04HMUL DLADD BL,ALSUB BL,01H ;此时BX中所存即为对应的偏移量 POP DX ;恢复现场POP CXPOP AXRETKEY ENDP;主程序START: MOV AX,DATAMOV DS,AX;8253初始化MOV DX,283HMOV AL,36HOUT DX,AL;8255初始化MOV DX,28BHMOV AL,81H ;C口输入OUT DX,ALMOV DX,289H ;B口位选数码管MOV AL,01HOUT DX,AL;扫描键盘LOOP1: CALL KEYCMP BX,0 ;按0播放音乐JZ PLAY0CMP BX,9 ;按9退出JZ EXIT;按1~8发出对应音MOV CX,BXMOV BX,OFFSET DIGITAL ;数码管显示音符 ADD BX,CXMOV AL,[BX]MOV DX,288H ;A口输出OUT DX,AL;播放该音符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALCALL DELAY1CALL DELAY1MOV DX,28AH ;C口输入IN AL,DX;检测键盘是否弹起MOV AH,ALLOOP2: CALL DELAYIN AL,DXCMP AL,AHJZ LOOP2;初始化8253,停止播放音乐MOV AX,0HMOV DX,283HMOV AL,36HOUT DX,ALJMP LOOP1;播放音乐PLAY0: MOV CX,01HPLAY: PUSH CX;读取音符,存于CX中MOV BX,OFFSET MUSICADD BX,CXMOV AL,[BX]MOV CL,ALMOV CH,0H;数码管显示MOV BX,OFFSET DIGITALADD BX,CXMOV AL,[BX]MOV DX,288HOUT DX,AL;播放该乐符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALPOP CX;延时,持续播放MOV AX,90HLOOP3: CALL DELAY1DEC AXJNZ LOOP3;乐曲未结束时,CX加1INC CXCMP CX,28H;共40个音符JNZ JUMJMP LOOP1JUM: JMP PLAYEXIT: MOV AL,0MOV DX,288HOUT DX,ALMOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果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的连接控制。

相关主题