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

上传人:b****7 文档编号:9073473 上传时间:2023-02-03 格式:DOCX 页数:46 大小:683.44KB
下载 相关 举报
北京邮电大学微原硬件实验报告.docx_第1页
第1页 / 共46页
北京邮电大学微原硬件实验报告.docx_第2页
第2页 / 共46页
北京邮电大学微原硬件实验报告.docx_第3页
第3页 / 共46页
北京邮电大学微原硬件实验报告.docx_第4页
第4页 / 共46页
北京邮电大学微原硬件实验报告.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

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

《北京邮电大学微原硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北京邮电大学微原硬件实验报告.docx(46页珍藏版)》请在冰豆网上搜索。

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

北京邮电大学微原硬件实验报告

 

微原硬件实验报告

 

班级:

学号:

 

班内序号:

姓名:

 

实验一、二 基本的I/O实验

一、 实验目的

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

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

二、实验原理及内容

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输出一个负脉冲,执行下面两条指令

MOV DX,2A8H

OUTDX,AL(或INAL,DX) 

Y5输出一个负脉冲。

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

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

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

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

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

74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

 

5、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

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

图1:

实验一的硬件接线图

图2:

实验二的硬件接线图

图3:

实验二的程序流程图

四、源程序

1、实验一源程序

DATA SEGMENT

DATAﻩENDS

STACK SEGMENTSTACK'STACK'

 ﻩDB100H DUP(?

STACKENDS

CODEﻩﻩSEGMENT

  ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYﻩPROC ﻩNEAR

ﻩﻩMOVﻩBX,500

ﻩﻩPUSHCX

LOOP2:

MOV ﻩCX,0FFFH

WAIT:

LOOPWAIT

DECﻩBX

ﻩﻩﻩJNZ ﻩLOOP2

POPﻩCX

ﻩﻩRET

DELAY ENDP

START:

ﻩMOVﻩCX,0FFFFH

;二极管闪烁部分

LOOP1:

MOVDX,2A0Hﻩﻩ;灯亮

ﻩﻩMOVﻩAL,0FFH

ﻩﻩOUTﻩDX,AL

CALLﻩDELAY

ﻩﻩMOVﻩDX,2A8Hﻩ;灯灭

ﻩMOV ﻩAL,0

ﻩOUTﻩDX,AL

ﻩﻩﻩCALLDELAY

ﻩﻩﻩLOOPLOOP1

CODE ﻩﻩENDS

ENDSTART

2、实验二的源程序

DATA ﻩSEGMENT

DATAENDS

STACKﻩSEGMENTSTACK 'STACK'

    ﻩDB100DUP(?

STACK ENDS

CODEﻩSEGMENT

    ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

ﻩMOVAH,1ﻩ;键盘输入

  INT 21H

CMPAL,27ﻩ;检测是否为ESC键

 JZEXIT

 ﻩMOVﻩDX,2A8H;输出

  ﻩOUTﻩDX,AL

  ﻩJMPﻩSTART

;返回DOS

EXIT:

MOVAX,4C00H

 INTﻩ21H

CODEENDSﻩ

  ﻩENDﻩSTART

五、实验结果

1、实验一:

二极管闪烁显示

2、实验二:

键盘输入,然后二极管显示键盘输入的ASCⅡ码

六、实验总结

本实验遇到的问题主要是:

1、二极管显示不正常,主要是延时的问题,调整一下就好了。

七、实验收获与心得体会

这次实验的要点是对I/O接口译码电路的理解以及使用。

我们测试了外设功能,这使我们了解了地址与端口的对应情况,从而明确了程序编写的流程和注意事项。

通过该译码电路实验,我掌握了地址译码电路的设计方法和实现原理,对硬件的I/O接口技术有了进一步的认识。

这次实验也为以后的实验打下了基础,特别是,应先理解了译码电路的工作原理,然后才能进行编程。

实验三、四、五可编程并行接口8255实验

一、 实验目的

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

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

3、掌握8255控制键盘及显示电路的基本功能及编程方法。

4、掌握一般键盘和显示电路的工作原理。

二、 实验原理及内容

实验三:

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

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

 

实验四:

1、静态显示:

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

(或编程在数码管上循环显示“00-99”, 位码驱动输入端S0、S1接PC0、PC1;S2、S3接地。

实验五:

1、编程:

使得在小键盘上每按一个健,4位数码管上显示出相应字符。

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

图1:

实验三的硬件接线图

图2:

实验四的硬件接线图

图3:

实验三的程序流程图

图4:

实验四的程序流程图

四、源程序

1、实验三源程序

DATAﻩSEGMENT

DATA ENDS

STACKSEGMENT STACK'STACK'

 ﻩﻩDB 100DUP(?

STACKENDS

CODEﻩﻩSEGMENT

ﻩASSUME CS:

CODE,DS:

DATA,SS:

STACK

START:

ﻩMOV AX,DATA

   ﻩMOV DS,AX

 ﻩMOVDX,28BHﻩﻩ;8255初始化

ﻩMOV  AL,89H

OUT DX,AL

LOOP1:

ﻩﻩMOVDX,28AHﻩﻩ

ﻩIN ﻩAL,DX

MOVﻩDX,288H

OUTﻩDX,AL

ﻩJMPﻩLOOP1

ﻩﻩMOV AH,4CH

ﻩﻩﻩINT 21H

CODEﻩENDS

ENDﻩSTART

2、实验四源程序

(1)显示学号

DATA ﻩSEGMENT

DATA ﻩENDS

STACK ﻩSEGMENTSTACK'STACK'

 DB100DUP(?

STACKENDS

CODESEGMENT

ﻩﻩASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOV AX,DATA

ﻩﻩMOVDS,AX

ﻩﻩMOVﻩDX,28BHﻩﻩ;8255初始化

ﻩMOVAL,80H

ﻩOUTDX,AL

MOVCX,30

VIEW:

ﻩMOVDX,28AHﻩ;第一个数码管显示

MOV ﻩAL,00H

ﻩOUT ﻩDX,AL

ﻩMOVDX,288H

ﻩMOVﻩAL,6DH

OUTDX,AL

MOVﻩDX,28AH

MOVAL,01H

OUT ﻩDX,AL

ﻩﻩ;第二个数码管显示

MOV DX,28AH

MOVAL,00H

ﻩOUT DX,AL

MOVﻩDX,288H

ﻩMOVAL,6FH

ﻩOUT ﻩDX,AL

MOVﻩDX,28AH

ﻩMOVAL,02H

ﻩOUT ﻩDX,AL

ﻩﻩ;第三个数码管显示

ﻩMOVDX,28AH

MOV AL,00H

OUTDX,AL

MOV ﻩAL,0

MOVﻩDX,288H

MOVAL,07H

ﻩOUTDX,AL

MOVDX,28AH

ﻩMOVAL,04H

OUT DX,AL

ﻩ;第四个数码管显示

MOVDX,28AH

MOV ﻩAL,00H

OUTﻩDX,AL

ﻩMOV ﻩAL,0

MOVDX,288H

ﻩMOVAL,3FH

ﻩOUT DX,AL

MOVDX,28AH

ﻩﻩﻩMOVﻩAL,08H

ﻩOUTDX,AL

ﻩﻩﻩ循环显示

JZVIEW

 ﻩﻩ;返回DOS

ﻩﻩMOVAH,4CH

ﻩINTﻩﻩ21H

CODEﻩENDS

ﻩﻩENDﻩSTART

(2)循环显示数字0~99

DATAﻩSEGMENT

TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管显示

DATAﻩENDS

STACKﻩSEGMENTSTACK'STACK'

ﻩDB 100DUP(?

STACKﻩENDS

CODESEGMENT

ﻩﻩASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

ﻩMOV ﻩAX,DATA

  ﻩﻩMOV DS,AX

    ﻩﻩMOV DX,28BHﻩ;8255初始化

MOVﻩAL,80H

OUTﻩDX,AL

;循环显示

 ﻩMOVBX,0H;控制重新从0开始计数的变量

LOOP1:

ﻩMOVﻩCX,100ﻩ;循环扫描数码管让两个数码管都显示

VIEW:

MOVﻩDX,28AHﻩ

MOVAL,00H

OUT ﻩDX,AL

ﻩMOVﻩDX,288H

;计算十位数,并显示

ﻩPUSH ﻩBX

   MOVAX,BX

 MOVBL,0AH

  DIVBL

  MOVﻩAL,AH

   MOVﻩBX,OFFSETTABLE

  MOVﻩAH,0H

 ADD BX,AX

 MOV ﻩAL,[BX]

 OUTDX,AL

  POPﻩﻩBX

ﻩMOVﻩDX,28AH

ﻩMOVﻩAL,01H

ﻩOUT DX,AL

ﻩﻩ;计算个位数显示

MOVﻩDX,28AH

MOVAL,00H

OUTﻩﻩDX,AL

ﻩMOVﻩDX,288H

PUSHﻩBX

 MOVﻩAX,BX

MOV BL,0AH

DIVBL

 MOVﻩBX,OFFSET TABLE

  MOVAH,0H

 ADDBX,AX

 MOVAL,[BX]

ﻩ  OUTﻩDX,AL

  POPﻩBX

ﻩﻩMOVDX,28AH

ﻩMOVAL,02H

ﻩﻩﻩOUT ﻩDX,AL

LOOP ﻩVIEW

ﻩﻩ;修改变量显示下一个数

  INCﻩBL

 CMPﻩBL,64H

  JNZ ﻩJUMP1

  MOVBL,0H

JUMP1:

ﻩ JMP ﻩLOOP1

   ﻩ;返回DOS

ﻩMOVﻩAH,4CH

ﻩﻩINTﻩ21H

CODEﻩENDS

ENDSTART

3.实验五的源程序

DATA  SEGMENT

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,

DB 39H,5EH,79H,71Hﻩ;数码管显示

NUM   DB 00H,070H,0B0H,0D0H,0E0Hﻩ;用于扫描键盘

DATAENDS

STACK   SEGMENTSTACK'STACK'

   DB100DUP(?

STACK ENDS

CODEﻩ  SEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYﻩPROCﻩNEAR

   ﻩPUSH ﻩCX

    ﻩMOVCX,100H

WAIT1:

 LOOP WAIT1

   POPCX

  RET

DELAYﻩENDP

;获取键盘的输入数字的子程序,通过BX寄存器传递

KEYBO PROC  NEAR

   PUSH AX;保护现场

    PUSH CX

   PUSH DX

   ﻩ MOVﻩCX,01H;控制扫描4次

CHECK:

ﻩMOV ﻩDX,28AH;输出一行置低电平

  MOV   BX,OFFSETNUM

 ﻩADDﻩBX,CX

 MOVﻩAL,[BX]

   OUT  ﻩDX,AL

;防抖

 INAL,DXﻩ;判断是否有键盘按下

  MOV ﻩAH,AL

CALL DELAY

      IN  AL,DX

  CMP AL,AH

   JNZ ﻩCHECK

;判断是那一列按下了

     AND AL,0FH

     CMPAL,0FH

   JZﻩNEXT

     CMP   ﻩAL,0EH

   JZ NEXT1

 CMP  AL,0DH

   JZ   ﻩNEXT2

    CMP AL,0BH

   JZ NEXT3

MOVﻩBX,01H

 JMP ﻩGOT

NEXT:

 ﻩINC  ﻩCXﻩ;修改变量扫描下一行

  ﻩCMPCX,05H

 JNZ   ﻩJUMP1

   MOV ﻩCX,01H

JUMP1:

 JMP CHECK

NEXT1:

  MOV  ﻩBX,04H

  JMPﻩGOT

NEXT2:

  MOV  ﻩBX,03H

  JMP ﻩGOT

NEXT3:

 MOV BX,02H

;计算按下键盘的数值

GOT:

  ﻩSUBﻩCX,01H

MOV AL,CL

    MOVﻩDL,04H

   MUL DL

  ﻩADD BL,AL

    SUB ﻩBL,01H

   POPﻩDXﻩ;恢复现场

  ﻩPOP ﻩCX

   POP ﻩAX

  ﻩRET    

KEYBO   ENDP

;主程序

START:

  MOV AX,DATA

  MOVﻩDS,AX

;8255初始化

   ﻩMOVDX,28BH

 ﻩMOVﻩAL,81H

OUT ﻩDX,AL

  MOV DX,289H

  MOVﻩAL,01H

   OUTDX,AL

  ;扫描键盘

LOOP1:

   CALLKEYBO

ﻩ;数码管显示字符

   ﻩMOV  AX,BX

  ﻩMOV BX,OFFSET TABLE

    ﻩADDBX,AX

 ﻩMOVAL,[BX]

    MOVﻩDX,288H

   OUT DX,AL

 ﻩMOVﻩDX,28AH

   INﻩAL,DX

;检测键盘弹起

   MOV ﻩAH,AL

LOOP2:

 ﻩCALLﻩDELAY

 ﻩIN AL,DX

 ﻩCMP AL,AH

     ﻩJZ ﻩLOOP2

   JMPﻩLOOP1

;返回DOS

 MOV AX,4C00H

  ﻩINT21H

             

CODE ENDS

    ENDSTART

五、实验结果

1、实验三:

打开的那个开关对应的二极管亮。

2、实验四:

(1)四个数码管稳定的显示学号:

0795;

(2)两个数码管循环显示0~99数字;

3、实验五:

键盘输入数字,数码管显示相应的的输入的数字。

六、 实验总结

实验中主要遇到了下面的问题:

1、数码管显示总是有阴影,不清晰。

主要原因是数码管循环扫描的速度太快,以及视觉的停留效应。

解决办法发是显示下一个字符之前先对数码管进行初始化,使之不显示;

2、键盘的输入有错误,按键有时会获取错误数字。

主要是由于是键盘经常有毛刺,需要防抖。

通过先检测,延时,再检测的方式进行防抖,排除键盘抖动。

七、实验收获与心得体会

本次实验中,我们使用8255A并行接口芯片和数码管实现了一个数码管的静态和动态显示字符的程序。

为了实现同时显示不同字符,就要通过扫描(依次点亮数码管)的方式来实现,这就要给CAT信号依次赋值,并且在扫描的过程中要用到延时。

动态显示的程序设计思想与静态时的大体相同,只是对动态的每一种状态进行一段时间的静态显示然后换状态而已,所以通过一个二层循环就能很好地解决这个问题。

通过这次实验,我在编程过程中学到了很多东西,不但巩固了书本的知识,而且体会到了编程的过程中思维必须很缜密,否则写出来的程序常会导致无法运行甚至死机。

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

一、实验目的

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

二、实验原理及内容

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

2.扩展部分:

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

注意:

8253输入频率应小于2MHz。

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

图1:

硬件连接图

图2:

程序流程图

四、给出源程序

1、播放音乐

程序:

DATASEGMENT

NOTE   DW0001H,3906,3472,3125,2932,2604,2344,2083,1953;频率

TABLE   ﻩDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管

MUSIC  DB3,3,2,3,5,6,5,8,6,5,5,3,3,5,5,5,6,0,8,8,2,2,3,3,2,1,6,1,5,5,0,5,

DB5,3,3,5,5,6,8,8,2,2,3,3,1,1,6,6,5,5,5,0,5,5,2,2,3,5,3,2,1,6,6,1,1

;存放的乐符

DATA  ﻩENDS

STACK  ﻩSEGMENTSTACK'STACK'

  ﻩDB100DUP(?

STACKﻩENDS

CODEﻩ ﻩﻩSEGMENT

ﻩﻩASSUMECS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAY PROC NEAR

 ﻩPUSH ﻩCX

  ﻩMOV ﻩCX,0FFFFH 

WAIT1:

ﻩLOOP  ﻩWAIT1

    ﻩPOP CX

  RET

DELAY ENDP

;主程序

START:

 MOVﻩAX,DATA

  MOVﻩﻩDS,AX

ﻩ;8254初始化

ﻩ MOVﻩﻩDX,283H

 ﻩMOVﻩAL,36H

OUTDX,AL

ﻩﻩ;8255初始化

  ﻩMOV DX,28BH 

MOV ﻩﻩAL,80H

ﻩOUT DX,AL 

   MOV ﻩDX,28AH

  ﻩﻩMOVﻩﻩAL,01H

ﻩ ﻩOUTﻩDX,AL

  ﻩMOV ﻩCX,01H

;播放音乐

SPEAK:

  ﻩPUSH ﻩCX;保护现场

ﻩﻩ;读取乐符

  MOV ﻩBX,OFFSETMUSIC

   ADD  ﻩBX,CX

   MOV AL,[BX]

  MOV  ﻩCL,AL

    MOV CH,0H

   ;数码管显示

  MOV BX,OFFSETTABLE

     ADD ﻩBX,CX

 MOV ﻩAL,[BX]

MOVﻩDX,288H

     OUTﻩDX,AL

ﻩﻩﻩ;播放该乐符

   MOV ﻩBX,OFFSETNOTE

     MOV ﻩAX,CX

 ADD  ﻩAX,AX

  ADDBX,AX

    MOV AX,[BX]

  MOV ﻩDX,280H

  OUTﻩDX,AL

 MOVﻩAL,AH

 OUT ﻩDX,AL

   POP ﻩCX

 ;延时,持续播放

    MOV ﻩAX,90H

LOOP1:

 CALLﻩDELAY

  DECAX

  JNZLOOP1

 ;判读继续播放还是重新播放     

  INC  CX

  CMP ﻩCX,41H

JNZ JUM

     MOV CX,01H

JUM:

JMP  SPEAK

CODEENDS

ENDSTART

2、拓展:

小键盘弹奏

DATA SEGMENT

NOTE   DW0001H,3906,3472,3125,2932,2604,2344,2083,1953;频率

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

NUM DB00H,070H,0B0H,0D0H,0E0H;检测键盘输出

DATA    ENDS

STACK   SEGMENTSTACK'STACK'

  DB100 DUP(?

STACKENDS

CODEﻩSEGMENT

ﻩASSUME CS:

CODE,DS:

DATA,SS:

STACK

;延时子程序

DELAYPROCNEAR

      ﻩPUSH CX

   MOV  CX,100H

WAIT1:

 ﻩLOOPWAIT1

     ﻩPOP CX

  RET

DELAY   ENDP

;获取键盘输入值的子程序,具体注释

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1