




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 DX,2A0H OUT
2、 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触发器,8个D输入端分别接数
3、据总线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为实验台逻辑或门) 2)输入 按图4-2-
4、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 ;延时 M
5、OV DX,2A8H OUT DX,AL ;熄灭灯 CALL DELAY JMP LOPCODE ENDS END STARTDELAY PROC NEAR ;延时子程序 PUSH CX PUSH BX MOV BX,250 ;250×65535LP2: 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 SEG
6、MENT ASSUME CS: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、 掌握数码管显示数
8、字的原理。3、 掌握8255控制键盘及显示电路的基本功能及编程方法;掌握一般键盘和显示电路的工作原理。二、 实验原理及内容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、
9、PC3,编程在数码管显示自己的学号的后四位。(或编程在数码管上循环显示“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
10、数码管 (或哪位数码管要显示则位选 S 接 +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口输入,工作方式为
11、00 MOV DX,28BH ;控制端口地址 OUT DX,AL ;8255初始化,写入工作方式控制字 LOP: MOV DX,28AH ;将开关状态读入 IN AL,DX MOV DX,288H ;讲状态输出到A口 OUT DX,AL MOV AH,0BH ;检测键盘状态 INT 21H CMP AL,0FFH ;如果键盘上有输入则停止程序JZ ENDINGJMP LOPENDING:MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21HCODE ENDS END STARTb) 实验四STACK SEGMENT STACK 'STAC
12、K' DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA 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口
13、MOV DX,288H OUT DX,AL MOV AL,04H ;输出选通位码 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
14、AL,0ffh JZ ENDING ;有则退出 JMP LOPENDING: MOV AL,00H MOV DX,28AH OUT DX,AL MOV AX,4C00H INT 21HDELAY PROC NEAR PUSH CX PUSH BX MOV BX,005H ;250×65535LP2: MOV CX,0fFFFHLP1: LOOP LP1 DEC BX JNZ LP2 POP BX POP CX RETDELAY ENDPCODE ENDS END START c) 实验五STACK SEGMENT STACK 'STACK' DB 100 DUP(?)
15、STACK ENDSDATA SEGMENTKEYVALUE DB 71H,7CH,07H,4FH ;键盘值对应的段码表,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,2
16、8BH OUT DX,AL LEA BX,KEYVALUE MOV SI,0 SCANROW:MOV AL,ROWSI ;扫描行 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:
17、JMP SCANROW LINE0:MOV CL,BX+SI+0;查表或许按下的键相应的输出段码 JMP OUTPUTLINE1: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
18、:MOV AL,00 MOV DX,289H OUT DX,AL MOV AX,4C00H INT 21H DELAY PROC NEAR PUSH CX PUSH BX MOV BX,1 ;250×65535LP2: 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控制字
21、D7D600:使用0号计数器,D7D601:使用1号计数器 D7D610:使用2号计数器,D7D611:无效 D5D400:锁存当前计数值 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
22、、接线: CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟 OUT0 /8253 接 喇叭或蜂鸣器(3)实验内容1完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。2扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 注意:8253输入频率应小于2MHz。三、硬件连线图四、软件流程图 1、主程序流程2、 放音子程序流程3、 弹琴子程序流程4、五、源程序STACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDSDATA SEGMENTINPUTINFO
23、DB 0AH,0DH,'Please choose mode:1 is playing music;2 is spieling',0AH,0DH 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
24、06H,5BH,4FH,66H,6DH,7DH,07H ;与乐谱所对应的数码管段码 KEYVALUE DB 71H,7CH,07H,4FH ;键盘值对应的段码表,LINE0 DB 79H,77H,7DH,5BH ;LINE1 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:
25、STACK,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AL,10000001B;8255初始化;C口高4位接键盘行输出,低4位列输入,A口输出 MOV DX,28BH OUT DX,AL 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,'
26、;2' JZ SPIELING CMP AL,1BH JZ ENDING JMP INPUT_ERROR ;输入检错INPUT_ERROR:MOV AH,09H LEA DX,ERROR_INFO INT 21H JMP BEGINPLAY_MUSIC:CALL PLAYMUSIC JMP BEGINSPIELING:CALL SPIELINGP JMP BEGINENDING: MOV AX,4C00H INT 21HPLAYMUSIC PROC PUSH SI ;保护现场数据 PUSH DI PUSH AX PUSH BX PUSH CX PUSH DX LEA SI,TONE ;
27、音调表 LEA DI,TIME ;每一个音调持续时间表 LEA BX,DUANMA;段码表 MOV CX,7 ;循环控制变量赋值LOP1: MOV AX,SI ;计数器赋值 MOV DX,280H; 计时器0的地址 OUT DX,AL ;先写入低八位,再写入高八位 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
28、 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 ;重新循环 JMP LOP1 POUT: POP DX POP CX POP BX POP AX POP DI POP SI RET PLAYMUSIC ENDPSPIELINGP PROC PUSH AXPUSH BXPUSH CXPUSH DXPUSH BPPUSH SIPUSH DI LEA BX,KEYVALUE LEA BP,TUNE
29、K 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 O
30、UT 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 AX,DS:BP+DI+0 JMP OUTPUTLINE1:MOV CL,BX+SI+4 MOV DI,SI SHL DI,1 MOV AX,DS:BP+DI+8 JMP OUTPUTLINE2:MOV CL,BX+SI+8 MOV DI,SI SHL DI,1 MOV AX,DS:BP+DI+16 JMP OUTPUTLINE3:MOV CL,BX+SI+12 MOV DI,SI
31、 SHL DI,1 MOV AX,DS:BP+DI+24OUTPUT:CMP CL,3FH ;检查是否是0,是0就退出 JZ ENDSP MOV DX,280H ; 输出数据给计数器 OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,CL ;数码管显示乐谱 MOV DX,288H ;传送段码给A口 OUT DX,AL MOV AL,01H ;传送位码给B口 MOV DX,289H OUT DX,AL JMP SCANROW ;继续扫描ENDSP:POP DI POP SI POP BP POP DX POP CX POP BX POP AX RETSPIELINGP E
32、NDP DELAY PROC NEAR PUSH CX PUSH AX ; MOV AX,1 ;250×65535LP2: MOV CX,08FFHLP1: LOOP LP1 DEC AX JNZ LP2 POP AX POP CX RETDELAY ENDP CODE ENDS END START六、实验总结 在本次实验中主要出现了如下问题:延迟函数没处理好,在本次实验中,我将弹琴功能和放音功能写在同一个程序中,两个部分都需要使用到延迟函数,在放音子程序中,延迟函数起到控制音调持续时间长短的作用,在弹琴功能中,延迟函数主要起键盘消抖的作用。不同的作用所要求的延迟时间长短不一样,一开
33、始没注意到这个问题,导致放出来的音乐很刺耳。七、实验收获与心得体会本次实验主要内容是使用8254定时器来播放音乐,经过前几次实验,自己对接口电路的使用越来越熟练,按照手册对接口电路进行初始化和读写即可。实验过程也并不是一帆风顺,出现了一些错误,通过解决代码中的错误,我的调试能力得到了很大的锻炼,也变得更加有耐心去解决一些问题。实验报告四:串行通讯8251一、 实验目的1、了解串行通讯的基本原理。 2、掌握串行接口芯片8251的工作原理和编程方法。二、 实验原理及内容1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。 2、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。3、接线: CLK0 /8254 接 1M时钟 GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO地址 CS /8251 接 Y7 /IO地址 RXD /8251 接 TXD /825
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学心理健康教育案例分析集
- 大数据驱动下的市场分析报告范本
- 职场新人职能提升培训课程设计
- 幼儿园家庭教育指导讲座方案
- 幼儿园文化活动策划与执行方案
- 高效写作技巧培训课程及范文指导
- 设备管理员岗位职责详解指南
- 公路建设工程监理工作程序
- 幼小衔接学业评测卷及解析
- 成功商业模式实战案例汇编
- 器械性压疮的护理
- 中国老年患者术后谵妄防治专家共识
- 兄妹断绝协议书范文
- 工艺管道及阀门安装工程施工方案
- 我的家乡沧州
- 《脑出血》课件完整版
- 《日常手语学习》课件
- 2023-2024届高考语文复习小说专题训练(含答案)-李存葆《高山下的花环》
- 新概念第二册单词表(完整版)
- 2024年职教高考《机械制图》考试题库
- (完整版)个人简历模板大全(60种)
评论
0/150
提交评论