单片机音乐发生器论文.docx

上传人:b****7 文档编号:10306187 上传时间:2023-02-10 格式:DOCX 页数:13 大小:131.65KB
下载 相关 举报
单片机音乐发生器论文.docx_第1页
第1页 / 共13页
单片机音乐发生器论文.docx_第2页
第2页 / 共13页
单片机音乐发生器论文.docx_第3页
第3页 / 共13页
单片机音乐发生器论文.docx_第4页
第4页 / 共13页
单片机音乐发生器论文.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机音乐发生器论文.docx

《单片机音乐发生器论文.docx》由会员分享,可在线阅读,更多相关《单片机音乐发生器论文.docx(13页珍藏版)》请在冰豆网上搜索。

单片机音乐发生器论文.docx

单片机音乐发生器论文

西安建筑科技大学华清学院

课程设计(论文)

 

课程名称:

微型计算机基本原理与接口技术

题目:

基于8088的音乐发生器设计

院(系):

机电系

专业班级:

电信0801

姓名:

张晓飞

学号:

10号

指导教师:

张爱萍

2011年1月14日

 

目录

 

1引言…………………………………………………………………2

2系统设计方案………………………………………………………2

3整个系统实现功能…………………………………………………14

4总结…………………………………………………………………14

参考文献

 

音乐发生器实验

一、引言

如今的科技发展可谓日新月异,而接口的应用也在逐渐的引领生活的脚步。

本次通过音乐发生器课程设计,熟悉基于8253定时/计数器的音乐发生电路的设计与程序控制方法,通过8253定时/计数器产生不同频率的音频电信号,经放大后送至扬声器产生音乐。

该设计分为硬件设计和软件设计。

硬件设计是利用电路板实现一个基于8253定时/计数器的音乐发生器电路;软件设计是编写控制该电路发生音乐的程序。

最终需利用MFID实验平台和音乐发生器模块进行硬件连接,可用8253定时/计数器来控制音频发生器唱出乐曲,并且实现当按不同键时,唱出不同的乐曲。

8253的输入时钟CLK的频率为1.19318MHz。

二、系统设计方案

1、硬件电路设计

可编程定时器/计数器8253是一种在微机系统中实现定时和记数功能的LSI外围接口电路。

它的内部有三个独立的16位定时器/计数器。

每个计数器都有六种工作方式(方式0—方式5),由8253的控制字来控制。

在写入控制字及计数初值后8253才能正常工作。

由于计数过程中门控信号GATE的电平变化、计数初值的重新设置都会对实际计数造成影响,因此最终的OUT波形可能各种各样,实现控制关系各不相同,为了更好的完成本次设计,我们必须对8253的知识进行全面的了解,以及如何运用MF2KP编写汇编语言来实现软件部分的设计,程序设计在后面将介绍。

由实验原理图上的模块可以看出,硬件的设计很简单,将8255的PC6与8253的GATE相连;将PC0与8253的OUT经过一个与门电路然后接在音乐发生器的音频输入上;将8253的CLK2接1.19318Hz,以上便是硬件电路的连接,硬件部分的连接并不难,我们只需要按照图将电路接好就行了。

本此课程设计需要用的是发生器驱动模块,该模块包括喇叭SPK,LM386A,74L138,以及74LS245和LED等。

为了实现该原理图,需要以下实验资源配置:

1.电源:

机器内部供电,将平台的电源开关拨到“内”的位置上,将模块电源JP3接通。

2.电缆线:

采用单线/20芯扁平线。

3.本实验所用到资源:

J(8253),I(8255),R(音乐发生器)模块电源四个模块。

4.I/O端口地址:

8255的4个端口地址为300H-303H。

其中A口=300H,B口=301H,C口=302H,命令口=303H。

8253的四个端口地址为304H-307H。

其中通道0为304H,通道1为305H,通道2为306H,命令口为307H。

发生器模块板电路原理图如下所示:

(1)发生器原理框架图

2、软件程序设计

以下是音符频率参照表:

(2)音符频率参照表

图(3)音符频率参照表

程序的流程图如下:

图(4)程序流程图

汇编程序如下:

sstacksegmentstack

dw200dup(?

sstackends

datasegment

bgdb0ah,0dh,"pleasechooseasong.....$";提示信息

freq1dw330,392,330,294,330,392,330,294,330;音符的频率

dw330,392,330,294,262,294,330,392,294

dw262,262,220,196,196,220,262,294,332,262,0

time1dw3dup(8),4,4,8,4,4,16,;音符的延时

dw2dup(8,8,4,4),16

dw3dup(8,4,4),16

freq2dw330,292,262,294,3dup(330)

dw3dup(394),330,392,392

dw330,294,262,294,4dup(330)

dw294,294,330,294,262,0

time2dw6dup(4),8

dw2dup(4,4,8)

dw12dup(4),16

freq3dw330,294,262,294,330,330,330

dw294,294,294,330,392,392

dw330,294,262,294,330,330,330,330

dw294,294,330,294,262,0

time3dw4,4,4,4,4,4,8,4,4,8,4,4,8

dw12dup(4),16

freq4dw392,523,440,523,392,330,392,294,330,392,330,392,440,523,392,440,392,330,392,262,330,294,330,294,262,294,330,440,392,330,392,440,392,523,440,392,330,392,294,392,294,330,294,262,0

time4dw8,8,4,4,8,4,4,4,4,16,4,4,4,4,4,4,4,4,4,8,4,16,4,4,4,4,16,4,4,4,4,16,4,4,4,4,4,4,8,4,4,4,4,16

freq5dw262,262,294,262,349,294

dw262,262,294,262,349,294

dw262,523,440,349,330,294

dw466,266,440,349,392,349,0

time5dw4,4,8,8,8,16,4,4,8,8,8,16

dw4,4,8,8,8,16,4,4,8,8,8,16

old_segdw?

old_offdw?

dataends

codesegment

assumecs:

code,ds:

data,ss:

sstack

start:

starprocfar;程序开始

movax,data

movds,ax

movax,sstack

movss,ax

pushdi;寄存器压栈

pushsi

pushbp

pushbx

moval,90h;8255初始化

movdx,303h

outdx,al

moval,0ch;关闭8253的T2计数器(8255的PC6=0)

movdx,303h

outdx,al

moval,00h;关闭喇叭(8255的PC0=0)

movdx,303h

outdx,al

moval,0b6h;8253初始化

movdx,307h

outdx,al

movdx,offsetbg;显示提示信息

movah,9

int21h

movah,01h

int21h

cmpal,'1';判断按键来选择不同歌曲

jemusic1

cmpal,'2'

jemusic2

cmpal,'3'

jemusic3

cmpal,'4'

jemusic4

cmpal,'5'

jemusic5

cmpal,'0'

jeend_sing

music1:

movsi,offsetfreq1;设置频率指针→si

movbp,offsettime1;设置延时指针→bp

jmppp

music2:

movsi,offsetfreq2

movbp,offsettime2

jmppp

music3:

movsi,offsetfreq3

movbp,offsettime3

jmppp

music4:

movsi,offsetfreq4

movbp,offsettime4

jmppp

music5:

movsi,offsetfreq5

movbp,offsettime5

jmppp

pp:

movah,0bh;检测是否有任意键按下?

int21h

cmpal,00

jnestart;若按下则跳转至程序开始

movdi,[si];检测是否是乐曲结尾

cmpdi,0

jeend_sing;为0的话,演奏结束

movdx,12h

movax,34dch;计算音符的频率所对应的8253计数初值

divdi

movdx,306h;向8253装入计数初值

outdx,al;先装低字节

moval,ah

outdx,al;再装高字节

movdx,303h;打开喇叭(8255的PC0=1)

moval,01h

outdx,al

moval,0dh;打开8253的T2(PC6=1),开始发声

outdx,al

movbx,ds:

[bp];取1个音符的延时次数→bx

calltime_delay;调用延时子程序

movdx,303h;关闭8253的T2(PC6=0)

moval,0ch

outdx,al

moval,00h;关闭喇叭(PC0=0)

outdx,al

addsi,2;取下1个音符的频率

addbp,2;取下1个音符的延时次数

jmppp;继续

end_sing:

movdx,303h;关闭8253的T2

moval,0ch

outdx,al

moval,00h;关闭喇叭

outdx,al

popbx;寄存器出栈

popbp

popsi

popdi

movax,4c00h;返回DOS

int21h

starendp

new_intrproc;新中断服务程序

decbx;该服务程序只将延时次数-1

iret

new_intrendp

time_delayprocnear;延时子程序

Pushf;压栈

pushds

pushes

pushbx

movah,35h;取原中断(INT1CH)的向量,并保存

moval,1ch

int21h

movold_off,bx

movbx,es

movold_seg,bx

popbx

popes

pushds

movah,25h;设置新中断服务程序的向量

moval,1ch

movdx,segnew_intr

movds,dx

leadx,new_intr

int21h

popds

TD:

cmpbx,0h;延时次数已到?

jnzTD;未到,则继续

movah,25h;已到,则恢复原中断向量

moval,1ch

movdx,old_seg

pushdx

movdx,old_off

popds

int21h

popds

popf

ret

time_delayendp

codeends

endstar;程序结束

三、整个系统实现功能

连接好硬件,运行程序后如下:

图(5)程序运行后图示

当按下1键时,发生器唱第一首曲子;当按下2键时,唱第二首曲子;当按下3键时,唱第三首曲子;当按下4键时,唱第4首曲子;当按下5键时,唱第5首曲子。

四、总结

本设计报告主要介绍了用8253实现音乐发声器的设计方法,系统的介绍了该电路的硬件构成和软件工作过程,主要采用中断控制系统,结合所学的知识,实现系统的功能要求。

设计中很好的使软件,硬件相结合,基本上达到了设计的要求。

通过这次毕业设计,使我对8253有了一定了解,对课本上的知识有了近一步掌握,也深刻明白了自己的不足。

完成本次课程设计,是一个从无到有的过程,经历了兴奋,自信,失落,奋发,所悟。

课程设计时,自习阅读设计的题目和要求,以为设计没什么困难,所用的知识书上都有。

可是当我开始动手时才发现,其中的算法是那么的难。

经过一天的努力,毫无结果,失落的心情悠然而生。

于是,再到图书馆和网上查找资料,在经过借鉴很多书籍后,总算是有点眉目了。

埋头苦干的过程是痛苦的,尤其是在思考算法和程序框架时,迷茫,烦躁,特别是当苦思出来一个结果,又被自己推翻,心痛的感觉无言以绘,在这不断的循环中,终于完成了程序。

中间的煎熬时很痛苦的,深刻明白攻克自己未知领域的困难。

但当课程设计完成时,那感觉很爽,很舒服,俗话说,没有耕耘,就没有收获。

这次课程设计,让我学到了很多书本上学不到的东西,学到了十几应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。

最大的收获是:

对按键,显示器,汇编语言的应用有了深刻的了解。

参考文献

[1]柴欣,李然,李煦,VisualBasic程序设计基础[M],第1版,中国铁道出版社,2003年

[2]石柯,阳富民,胡贯荣,基于UML的嵌入式系统模型验证机制的研究[J],计算机工程与应用,2001年

[3]罗加奇,《〈微机原理与接口技术〉学生实验指导书》,扬州大学,2002年

[4]胡刚,《微机原理及应用》,机械工业出版社,2003年

[5]SaschaKonrad,BettyH.C.Cheng,LauraA.Campbell.ObjectAnalysisPatternsforEmbeddedSystems[J].IEEETRANSACTIONSONSOFTWAREENGINEERING,2004年

 

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

当前位置:首页 > 高等教育 > 军事

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

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