微机原理课程设计报告

《微机应用系统》

课程设计报告

 


题    目:      电子音乐播放器      

专业班级:电子信息科学与技术1001

设计学生:         高扬宇            

                                      

完成时间:     2012 6 27     

湖南文理学院物理与电子科学学院


源程序:

CODE SEGMENT

  ASSUME CS:CODE

     ORG 100H               ;首地址

START:MOV CX,3              ;设置歌曲重复播放次数

      LOOP $

MUSIC:LEA SI,FREQ           ;取FREQ的偏移地址

      LEA BP,TIME           ;取TIME的偏移地址

LOP:  MOV DI,[SI]           ;把[SI]的内容放到DI

      CMP DI,0                 ;0用于判断是否结束歌曲

      JE  START            

      MOV BX,[BP]           ;把[BP]的内容放到BX

      CALL SPEAKER

      ADD SI,2                 ;取下一频率值

      ADD BP,2                 ;取下一时间节拍值

      JMP LOP            ;跳回LOP循环

;音乐子程序

SPEAKER PROC

       PUSH AX             ;保存堆栈

       PUSH BX

       PUSH CX

       PUSH DX

       PUSH DI

;初始化部分

MOV AL,10110110B ;对计数器写控制字,选计数器2,先写低8位,后写高8位。

OUT 04A6H,AL     ;方式3(方波发生器)、双字节写和二进制计数方式写到控制口

MOV DX,5          ;设置被除数

MOV AX,0B8D8H

DIV DI                ; (DI)=频率,商→AL,余数→AH

OUT 04A4H,AL      ;先送LSB 最低有效位

MOV AL,AH

OUT 04A4H,AL      ;后送MSB 最高有效位

WAIT1: MOV CX,4            ;设循环次数4

DELAY:       LOOP DELAY

       DEC BX                 ;循环持续BX次,即传进来的节拍时间

       JNZ WAIT1

       POP DI              ;恢复堆栈

       POP DX

       POP CX

       POP BX

       POP AX

       RET

SPEAKER ENDP

;歌曲乐谱

;歌曲:《我和你》

FREQ   DW  1   DUP(659,784,523,578,659,392,523,578,659,784,578,578)

        DW  1   DUP(659,784,523,578,659,440,578,784,578,659,523,523)

        DW  1   DUP(880,784,880,523,659,440,659,784,578,578)

        DW  1   DUP(659,784,523,578,659,440,578,784,578,659,523,523)

DW  10  DUP(-1),0         ;歌曲频率

TIME   DW   2  DUP(20000,20000,40000),4 DUP(20000),2 DUP(40000)

        DW   2  DUP(20000,20000,40000),4 DUP(20000),2 DUP(40000)

        DW   4  DUP(40000),4 DUP(20000),2 DUP(40000)

        DW   2  DUP(20000,20000,40000),4 DUP(20000),2 DUP(40000)                    

        DW  10  DUP(20000)        ;歌曲时间节拍值


设计总结:

通过两个星期的课程设计,我经历了一个电子音乐播放器从零开始到实现音乐播放的过程。这种感觉就像自己亲手盖起一幢房子一样,感觉很踏实。虽然最后的效果和预想中有点出入。中间遇到了一些问题,但通过老师的帮助及自己的努力,还是把问题给解决了。

这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,首先就让我对proteus这个软件有了更进一步的了解,使应用起来更加自如。和之前的实验相比,这次的课程设计不管是程序,硬件的连接还是功能上都比较复杂一点,要求掌握的知识比较全面。

经过这次的课程设计,再一次的印证了理论来源于实践,而实践又能升华理论这一个观点。

    首先,要实现题目要求的功能,我们必须清楚所需要的芯片,要在脑中有一个大概的方向,然后全心地投入其中,养成一种钻研的习惯,在设计过程中一定都会遇到或大或小的一系列问题,但每当问题出现时,决不能泄气。因为有时你可能离成功只有一步之遥,这是我在这次课程设计中深刻感受到的。

其次,通过课程设计,让我在课本的基础上,更深入的了解了各种芯片的用法和程序的完成过程,调试方法及技巧。但同时也让我看到了自己在学习中的漏洞。

总之,这次的课程设计在很大程度上提升了我的动手能力了加深了我对理论知识的理解。感谢老师在这个过程中的耐心指导。

 

第二篇:微机原理与接口技术课程设计报告

《微机原理与接口技术》

课程设计报告

题目:开关控制霓虹灯

姓名:XXX 同组人:专业:自动化

班级:XXX

学号:XXX

日期: 20xx年1月4日 XXX

一、 概述

(1) 设计题目:开关控制霓虹灯

(2)课程设计目的:

1.掌握8255的使用和编程方法。

2.通过用8255设计广告牌的霓虹灯(霓虹灯实现闪亮与循环)来熟悉用8255的输入输出方式及它的控制方式字。综合运用本学期所学的关于汇编的知识,在试验中一步熟悉本学期所学的课程,并结合实际生活,掌握汇编的应用。

(2) 设计方案及功能描述:本实验设计的霓虹灯有四种不同变化,即两个开关

四种不同组合方式。开关分别为K0,K1(开关闭合为1,打开为0。)。当开关组合为00时,8个灯全亮;当开关组合为01时,8个灯依次循环亮,表现为流水灯;当开关组合为10时,位置为奇数的灯一起闪烁;当开关组合为11时,位置为偶数的灯一起闪烁。

二、硬件电路原理图

(1)硬件原理图:

(2)所使用芯片(8255)的使用原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、

B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构如图1及引脚如图2所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2所示。

(3)芯片(8255)的内部结构和引脚信号及功能

微机原理与接口技术课程设计报告

微机原理与接口技术课程设计报告

微机原理与接口技术课程设计报告

图1

8255A的内部结构如图4-1所示,由三部分电路组成:与CPU借口电路、内部控制逻辑电路和与外设敛迹的输入/输出借口电路。

1.与CPU的接口电路

与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。

数据总线缓冲器是一个三态、双向、8位寄存器,8条数据线D7~D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入命令读取外设输入的数据。

读/写控制逻辑电路用来接收CPU系统总线的读信号RD,写信号WR,片选择信号CS,端口选择信号A1,10和复位信号RESET,用于控制8255A内部寄存器的读/写操作和复位操作。

2.内部控制逻辑电路

内部控制逻辑包括A组控制与B组控制两部分。A组控制寄存器用来控制A口PA7~PA0和C口的高4位PC7~PC4;B组控制寄存器用来控制B口PB7~PB0和C口低4位PC3~PC0。它们接收CPU发送来的控制命令,对A,B,C3个端口的输入/输出方式进行控制。

3.输入/输出借口电路

8255A片内有A,B,C3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有1个8位数据输出锁存/缓冲器和1个8位数据输入缓冲器,用于存放CPU与外部设备交换的数据。

]

图2 8255A的引脚

8255A的引脚如图4-2所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。

D7~D0:三态、双向数据线,与CPU数据总线连接,用来传送数据。 CS:片选信号线,低电平有效时,芯片被选中。

A1,A0:地址线,用来选择内部端口。

RD:读出信号线,低电平有效时,允许数据读出。

WR:写入信号线,低电平有效时,允许数据写入。

RESET:复位信号线,高电平有效时,将所有内部寄存器清0

PA7~PA0:A口输入/输出信号线。

PB7~PB0:B口输入/输出信号线。

PC7~PC0:C口输入/输出信号线。

Vcc:+5V电源。

GND:电源地线。

(4)线路连接:

微机原理与接口技术课程设计报告

(5)8255A工作方式控制字的格式如图3所示

微机原理与接口技术课程设计报告

图3

D0:设置PC3~PC0的数据传送方向。D0=1为输入;D0=0为输出。 D1:设置B口的数据传送方向。D1=1为输入;D1=0为输出。

D2:设置B口的工作方式。D2=1为方式1;D2=0为方式0。

D3:设置PC7~PC4的数据传送方向。D3=1为输入;D3=0为输出。 D4:设置A口的数据传送方向。D4=1为输入;D4=0为输出。

D6D5:设置A口的工作方式。D6D5=00为方式1;D6D5=01为方式1,D6D5=10 或11为方式2。

D7: 方式控制字的标志位,恒为1。

(6)试验总流程图:

三、汇编语言流程清单

DATA SEGMENT

微机原理与接口技术课程设计报告

IOPORT EQU 0D880H-280H

IO8255B EQU IOPORT+281H

IO8255C EQU IOPORT+282H

IO8255T EQU IOPORT+283H

TAB DB '1 2 3 4 5 6 7 8 ',0DH,0AH,'$'

MESS DB 'PLEASE ENTER ANY KEY WHEN READY!',0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK

STA DW 50 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AH,09H

MOV DX,OFFSET MESS

INT 21H

MOV AH,01H

INT 21H

MOV DX,IO8255T

MOV AL,92H

OUT DX,AL

MOV DX,IO8255B

IN AL,DX

MOV BL,AL

MOV BH,BL

CMP BH,00H

JZ QQQ

CMP BH,01H

JZ BBB

CMP BH,02H

JZ DDD

CMP BH,03H

JZ SSS

QQQ: MOV DX,IO8255C

MOV AL,0FFH

OUT DX,AL

CALL DELAY10

CALL DELAY10

CALL DELAY10

LOOP KKK

BBB: MOV DX,IO8255C

MOV AL,01H OUT DX,AL CALL DELAY10 MOV BL,07H LLL: ROL AL,1 OUT DX,AL CALL DELAY10 CMP AL,80H JNZ LLL JZ RRR

RRR: CALL DELAY10 ROR AL,1 OUT DX,AL CMP AL,01H OUT DX,AL CALL DELAY10 JNZ RRR JZ KKK DDD: MOV DX,IO8255C MOV AL,55H OUT DX,AL

CALL DELAY10 MOV AL,00H OUT DX,AL CALL DELAY10 LOOP KKK SSS: MOV DX,IO8255C MOV AL,0AAH OUT DX,AL

CALL DELAY10 MOV AL,00H OUT DX,AL CALL DELAY10 LOOP KKK

KKK: MOV DX,IO8255B IN AL,DX MOV BL,AL MOV BH,BL MOV AH,06H MOV DL,0FFH INT 21H

JNZ PPP CMP BH,00H JZ QQQ

CMP BH,01H

JZ BBB

CMP BH,02H

JZ DDD

CMP BH,03H

JZ SSS

PPP: MOV AX,4C00H

INT 21H

DELAY1 PROC NEAR

PUSH CX

MOV CX,0FFFFH

CCC: LOOP CCC

POP CX

RET

DELAY1 ENDP

DELAY10 PROC NEAR

PUSH AX

PUSH CX

MOV CX,0F00H

UUU: CALL DELAY1

LOOP UUU

POP CX

POP AX

RET

DELAY10 ENDP

CODE ENDS

END START

四、总结

1.通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有 通过了这样的试验才能更好的体会到。实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重性,只有能够熟练的掌握才能在实验过程中得心应手。

2.大家在实验的时候一般是两个人或者三个人,讲究的是团队合作。遇到问题大家一起讨论,这就增强了我们的合作精神。

3.做实验,重要的并不是实验的结果,而是在实验过程中,我们解决问题的能力,所以,我相信,只要是认真做了,自己就成长了。我想,就算是以后工作了,我也会牢记这句话,踏踏实实地做好每件事情。

相关推荐