单片机课程设计 音乐发生器.docx
- 文档编号:24109861
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:25
- 大小:211.65KB
单片机课程设计 音乐发生器.docx
《单片机课程设计 音乐发生器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 音乐发生器.docx(25页珍藏版)》请在冰豆网上搜索。
单片机课程设计音乐发生器
1.1.1利用AT89C51、74LS373锁存器和27512外部扩展组成的音乐播放器
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
当今,利用单片机控制音乐播放多不胜举,音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。
它有功能多﹑价格优﹑外围电路简单的特点,很受音乐爱好者及音乐芯片制造商的青昧。
本文中,用单片机芯片及少数外围电路控制音乐播放。
本设计是以单片机AT89C51为核心数据处理器件,由数码管显示调整歌曲的曲号和播放中,显示歌曲的曲号,四个数据输入按键组成七功能分别是对歌曲曲号进行加一设置、对歌曲曲号进行减一设置、对歌曲曲号进行复位、对在播放中的歌曲进行暂停;元件以低耗、高能、耐用、精确、易于操作等为优先考虑因素。
采用独立式输入按钮,用作对歌曲播放的设置,通过按键将单片机I/0口的电平拉低,单片机检测到I/O口电平为0时,在下一曲按钮中,自动将歌曲的编号加一;在播放/暂停按钮中,自动将歌曲暂停、播放;在上一曲按钮中自动将歌曲的编号减一。
当播放歌曲时,会在数码管上显示该歌曲的序号。
在显示时使用的是由一个七段数码管显示,在本设计中根据实际情况采用的是动态显示方法。并通过查表法,将其在数码管上显示出来,P1口低7位为字选段输入端。
通过查表将字型码送给7段数码管显示数字。
软件去抖动功能,如果“开始键”按下就向下执行,否者跳到开始。
AT89C51单片机的内存较小,就用了一个74LS373锁存器和27512外部扩展芯片对该单片机进行了内存的扩充,增大了它的存储空间,让他可以存储足够多的歌曲。
该音乐发生器的论文详细介绍了其硬件结构和设计方法,整个设计简单实用,功能完整。
绪论
1.1研究的目的和意义
音乐电声的一个重要内容就是电子音乐。
电子琴的出现,开辟了音乐的一个新天地。
但是自从电子合成器问世以来,电子音乐就又进入了一个更高的阶段。
目前,由于电子音乐的普及,电子合成器(合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。
可以事先制作伴奏音乐或背景音乐,而不需要乐队,或者部分代替乐队。
由于音乐合成器制作和修改方便,成本低,音乐丰满,所以市场需求量很大,因此,世界许多国家的厂商都不断地在发展并推出新的型号,每年都要更新换代。
当前的发展趋势是不断的采用先进技术,例如有的合成器有“跟随”功能,即经预置,每一个音后可以跟随一个二度或三度音,“重叠”功能,轻奏或重奏时可以发不同音调或音色;另外,合成器还向轻便、使用操作方便等方向发展。
电脑音乐也许不会成为今后音乐的主流,但它在整个人类音乐史上的地位已经不容置疑地确立了,相信它会越来越深入地浸透到音乐创作和欣赏的领域中,并且将在一定程度上影响人们对音乐的理解和诠释。
用单片机制作的音乐发生器也会越来越多,这将必然成为一种趋势。
1.2国内外研究的现状及发展趋势
1.2.1国内外研究的现状
随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、计算机音乐早期的大力发展,国际上许多国家纷纷开始引入电子音乐研究与创作。
因此,电子音乐创作作为音乐科技领域发展的重要标志,在风格上也体现出比以往任何时代都鲜明的个性化特征。
六十年代,美国物理学家RobertMoog研制出了小型实用的电子合成器。
从此,首先在欧美地区,合成器作为新型的乐器被音乐家尤其是流行音乐家所采用并飞快的流行开来。
由于美国雄厚的经济和科技基础,在早期计算机音乐获得巨大成功后,越来越多的音乐家和科学家步入到计算机音乐的研究与开发的领域中来,他们一起工作、共同开展研究,许多新产品和新设计不断涌现。
1.3音乐发生器的扩展
熟练的运用89C51单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,按下单键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏中,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律,可以扩充其功能如下:
1.设计三个按键操作来更改歌曲的序号;
2.可以按照歌曲的序号来播放歌曲;
3.可以显示播放中歌曲的序号;
4.可以存储多首歌曲;
第1章设计方案
1.1设计方案论证
1.1.1利用AT89C51、74LS373锁存器和27512外部扩展组成的音乐播放器
(1)功能特色
对内存进行了扩展,可以播放三首以上的歌曲。
(2)硬件设计
电路以AT89C51为主控制器,74LS373和27512进行外部程序存储器的扩展,播放/暂停键为播放/暂停歌曲,下一曲键和上一曲键分别为调整歌曲的下一曲和上一曲选择键的按钮。
晶振采用12MHz,音乐信号由P3.0口输出,经喇叭发声而播放歌曲如图1-2所示框架图。
图1-2方案二框架图
(3)软件设计
程序中根据音选取的是C调三个8度内的音符,共16个音。
每个音符对应频率由定时器T0产生。
为了程序调用方便,每个音符都对应一个编码,占用一个字节。
在程序中以查表的方式加载计数初值。
当值为00H时表示空拍,与节拍码配合完成节拍发音。
节拍码也占一个字节,其总时间长度等于基本时间乘以节拍码的值。
节拍码值为01H时,表示当前乐曲结束,为00H时,表示全部乐曲结束。
为了编码简单,一般节拍码高半字节表示整拍,低半字节表示分数,只要基本延时设定恰当即可并且在按开始按钮后,可以播放歌曲。
第2章硬件设计
2.1电路组成及工作原理
2.1.1电路组成
音乐发生器的电路设计方框图如图2-1所示,电路原理图见附录1所示,主要由单片机控制系统、调整歌曲序号、显示歌曲序号、内存外部扩充电路、复位电路等组成。
单片机AT89C51是本系统的核心,它主要负责控制各个部分协调工作。
在其外围接上:
复位电路、数码管、按钮及扬声器。
元件为:
晶振X1、电容、电阻、与非门、非门、数码管、扬声器、四个按键、74LS373锁存器、27512外部程序存储器扩展。
其中,四个按键分别是上一曲、下一曲、暂停/播放、复位。
P1.0-P1.6是位选口,P3.2、P3.6、P3.7共同为上、下歌曲的调整口,实现对歌曲的调整操作,并且加减调整歌曲的曲号,P3.3口为歌曲的暂停/播放按钮,可对播放中的歌曲进行暂停/播放,P3.0为蜂鸣器的控制口。
2.1.2电路工作原理
本音乐发生器是用单片机来设计制作完成,其功能的实现主要通过软件编程来完成,AT89C51单片机片内带有4KB和外部程序存储器扩展的256K的内存,并且允许在系统内改写或用编程器编程。
该音乐发生器的效率较高,其误差主要由晶振自身的误差所造成。
存储歌曲是采用的外部扩展,更改歌曲号是通过下一曲和上一曲来实现的,按键将单片机I/0口的电平拉低,单片机检测到I/O口电平为0时,自动改变显示的数,实现更改的功能。
显示是使用一个的七段共阴极数码管显示,设计中根据实际情况采用的是动态显示方法,其中通过查表将字型码送给7段数码管显示的数字。
当播放歌曲时,会在数码管上显示该歌曲的编号提示现在正在播放的歌曲的序号。
软件去抖动,如果“开始键”按下就向下执行,否者跳到开始。
采用延时程序进行对歌曲的播放。
2.2AT89C51的简介
2.2.1AT89C51功能概述
自从1971年微型计算机问世以来,随着大规模集成电路技术的进一步发展,导致微型计算机正向两个主要方向发展:
一是高速度、高性能、大容量的高档微型机及其系列化向大、中型计算机的挑战;另一个是稳定可靠、小而廉、能适应各种控制领域需要的单片机。
MCS—51系列是Intel公司在1980年推出的高档8位单片机,具有性能价格比高、品种多、兼容性强、开发用的仿真机较完善等优点,所以在国际上和国内的占有率相当高。
它拥有8位微处理器和控制器,内含一个一位布尔运算处理器,可直接对数据的位进行操作和运算,特别适用于逻辑控制。
内部含有4KB的程序ROM并且在外部扩展了256K的存储空间,2个16位的计数/定时器。
本次采用的是AT89C51单片机,其电路如2-2所示,它的中断功能比较强,有5个中断源,即外部中断2个,定时器中断2个,串行中断1个,有2个中断优先级。
中断控制电路主要包括用于中断控制的四个寄存器:
定时器控制寄存器TCON,串行口控制寄存器SCON,中断允许控制寄存器IE,中断优先级控制寄存器IP等。
内部时钟振荡器,全双工方式的串行接口(UART),两极中断优先权的6个中断源/5个中断矢量的中断逻辑。
哈佛结构的存储器组织,支持高达64K为单周期指令,支持六种寻址方式。
最高时钟振荡频率可达12MHZ,大部分指令执行时间为1µs,乘、除指令为4µs。
2.2.2AT89C51的管脚图
MCS-51系列单片机采用40引脚双列直插式封装(DIP),其引脚排列和逻辑符号如图2-3所示,4个并行口共有32根引脚,可分别作地址线、数据线和I/O线;2根电源线;2根时钟振荡电路引脚和4根控制线。
2.2.3AT89C51单片机的引脚介绍
AT89C51单片机是高性能单片机,因为受引脚数目的限制,所以有许多引脚具有第二功能,各引脚功能说明如下:
(1)输入/输出口线
A.
口8位双向口线
B.
口8位双向口线
C.
口8位双向口线
D.
口8位双向口线
(2)ALE地址锁存控制信号
在系统扩展时,ALE用于控制把
口输出的底8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。
此外由于ALE是以六分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。
(3)
外部程序存储器读选通信号
在读外部ROM时
有效(低电平),以实现外部ROM单元的读操作。
(4)
访问程序存储器控制信号
当
信号为低电平时,对ROM的读操作限定在外部程序存储器;而当
信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。
(5)RST复位信号
当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。
(6)XTAL1和XTAL2外接晶体引线端
当使用芯片内部时钟时,这两个引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
(7)电源、地线GND
VCC、GND。
VCC一般接+5V电源,GND接地。
2.4晶振电路
MCS-51片内有一个高增益的反相放大器,其输入端为引脚XTAL1和输出端为引脚为XTAL2,用于外接石英晶体振荡器和微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路,如图2-3所示。
电容C1和C2对频率有微调作用,电容一般取20pF左右。
晶体振荡频率范围是1.2MHz~12MHz,一般情况下,选用振荡频率为12MHz的石英晶体。
振荡脉冲信号经过内部时钟发生器进行二分频之后,才成为单片机的时钟信号。
2.3扬声器电路
本设计是采用蜂鸣器用来发出声音,当你按下播放按钮时,单片机就开始运行程序,蜂鸣器开始读程序而播放你所要播放的歌曲,电路如图2-4所示。
2.4显示电路
本设计显示是采用一个七段共阴极LED显示,当片选信号为0时,数码就会点亮,主要是用来显示播放中歌曲的序号、选择歌曲来播放等信息。
其分别利用单片机的P1.0口至P1.7口与数码管相连接,完成字段码显示歌曲的号数。
数码管的另一引脚接低电平(接地)。
电路如图2-5所示。
2.5更换歌曲电路
采用3个按钮作为更换歌曲按键,上一曲、下一曲和播放/暂停按键分别是歌曲的序号的加、减和对歌曲进行暂停/播放。
利用三个上拉电阻和与非门、非门来实现歌曲的选择和暂停,单片机的P3.2口至P3.7口始终是高电平,当没有按键按下时,就会一直的播放歌曲。
电路如图2-6所示。
2.6复位电路
AT89C51的复位是由外部的复位电路来实现的。
复位引脚RST通过一个施密特触发器用来抑制噪声,施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
图2-7复位电路
本设计是采用上电自动复位,上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
时钟频率用12MHZ时C取20PF。
2.7程序存储器外部扩展电路
本设计是采用了一个74LS373锁存器和一个27512程序存储器外部扩展组成,其主要的功能就是为了在外部扩展单片机内存,使它有足够的空间存放系统中的程序,而达到使它实现所要得到的功能和应用的领域。
第3章软件系统设计
3.1软件流程设计
主要程序流程有:
主程序、显示子程序、发声子程序、更改歌曲曲号子程序。
软件实现的基本原理是,当单片机P3.0口为0时,软件去抖动功能,如果“开始键”按下就向下执行,否者跳到开始。
主程序流程图校验键,歌曲曲号显示,发声程序等功能子程序组成,系统完成初始化后循环检查各个功能当用户使用某个功能时,按下相应的按钮(或开关)单片机进入相应的功能处理。
主程序流程图如图3-1所示。
而外来脉冲是通过按键产生的,因此实际上单步执行就是按一次键执行一条指令。
主程序为:
ORG0000H
LJMPSTART
ORG001BH
MOVTH1,R1
MOVTL1,R0
CPLP1.0
RETI
ORG0100H
START:
MOVTMOD,#10H
MOVIE,88H
MOVDPTR,#TAB
LOOP:
CLRA
MOVCA,@A+DPTR
MOVR1,A
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVR0,A
ORLA,R1
JZNEXT0
MOVA,R0
ANLA,R1
CJNEA,#0FFH,NEXT
SJMPSTART
NEXT:
MOVTH1,R1
MOVTL1,R1
SETBTR1
SJMPNEXT1
NEXT0:
CLRTR1
NEXT1:
CLRA
INCDPTR
MOVCA,@A+DPTR
MOVR2,A
LOOP:
LCALLD200
DJNZR2,LOOP1
INCDPTR
AJMPLOOP
D200:
MOVR4,#81H
D200B:
MOVA,#0FFH
D200A:
DECA
JNZD200A
DECR4
CJNZR4,#00H,D200B
RET
TAB:
DB0FEH,25H,02H,0FEH,25H,02H,0FEH,25H,04H
DB0FDH,80H,04H,0FEH,84H,02H,0FEH,84H,02H
DB0FEH,84H,04H,0FEH,25H,04H,0FEH,25H,02H
DB0FEH,84H,02H,OFEH,0C0H,04H,0FEH,OCOH,04H
DB0FEH,98H,02H,0FEH,84H,02H,0FEH,57H,04H
DB00H,00H,04H,0FFH,0FFH
END
第4章系统调试
调试是一个必不可少的环节,它将会验证你的成果,是否实现了所要完成的功能。
系统调试仿真时先要使用KeilC编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时还要进行PROTEUS仿真,查看功能是否能够实现。
下面就将仿真将会用到的软件进行简单的介绍,并对仿真过程予以简介。
4.1常用调试工具
4.1.1KeilC软件
KeilC软件是集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。
树状结构显示,一目了然,支持ASM(汇编)、C语言,多语言多模块源程序混合调试,在线直接修改、编译、调试源程序,错误指令定位。
功能很强大。
用于对程序的调试和编辑。
KeilC软件界面如图4-1所示。
4.1.2PROTEUS软件
系统仿真还用到了PROTEUS软件,可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助。
首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。
接着把各个器件放到合适的位置都要放到蓝色框内。
然后根据自己的设计要求连线。
把所有的元件都连接好,做出完整的电路图。
4.2系统调试及性能分析
系统的调试开始是把伟福编译生成的无错误后缀名为.HEX的文件加载到AT89C51单片机中,方法是双击单片机弹出一个对话框,在programfile后选择要添加文件,文件要求必须是HEX文件。
然后可以点击运行观察现象,当出现错误时,大多都是软件出了问题,经过不断的改进调试。
对按键检测、加减歌曲序号与按键之间产生的不一致、歌曲调用子程序等软件的修改后,系统基本实现了所要设计的功能。
在进行系统的测试过程中。
当调节歌曲的序号时,程序是给了一个初始值“1”,假如调节歌曲的序号后,歌曲播放的就是显示屏上显示的歌曲序号的歌曲。
如按下复位键后时间会回到初始时间,即从头开始。
数码管也跟随显示歌曲的序号为“1”,同时蜂鸣器发出了声响,为第一首歌曲。
通过调试系统达到设计的任务要求。
心得体会
本设计报告主要介绍了用单片机实现的音乐发生器的设计方法。
系统介绍了该电路的硬件构成和软件工作过程,系统以AT89C51为核心,主要采用中断控制系统,结合所学的单片机的知识,实现系统的功能要求。
设计中很好的使软、硬件相结合,基本上达到了设计的要求。
通过这次单片机课程设计,使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。
完成本次课程设计的过程,是一个从无到有的过程,经历了兴奋、自信、失落、奋发、所悟、完成几个过程。
课程设计时,仔细阅读设计的题目和要求,以为没什么困难的,所用的知识书上都有。
可是当我动手开始做的时候,才发现其中的算法,设计是那么繁琐。
经过一天的努力,毫无结果。
失落的心情油然而生。
于是,再到图书馆和网上查找资料,在经过借鉴很多类似的资料,文献后,总算是有点眉目了。
埋头苦干的过程是痛苦的,尤其是在思考算法和程序框架时,迷茫,烦躁,特别是当苦思出来一个结果,又被自己推翻,心痛的无法言绘,在这不断循环中,终于最后完善了程序。
其中的煎熬是很痛苦的,深刻明白攻克自己“未知领域”的困难。
但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,不懂付出怎么能知道回报的快乐,一分耕耘一分收获,有付出才会有回报,就在这样的痛与快乐的交换中,我学到了知识,学到了做人的道理。
通过这短短两个星期的制作,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距。
很多元器件根本不知道有什么功效,在仿真仪器中是什么代码。
有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。
我遇到了不少问题,花费了很多的时间。
这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。
理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。
这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到完美。
最大的收获是:
对按键,显示器,单片机汇编语言的应用有了深刻的了解。
最后感谢老师细心、仔细、认真的指导,使我学到了很多。
参考文献
[1]樊明龙.任丽静编.单片机原理与应用[M].化学工业出版社,2005.
[2]徐爱卿编.单片微型计算机应用和开发系统[M].北京航空航天大学出版社,1998.
[3]戴梅芳编.微型计算机技术及应用[M].清华大学出版社,1996.
[4]李广弟,朱月秀,王秀山编.单片机基础[M].北京航空航天大学出版社,2001.
[5]吴金戌编.8051单片机实践与应用[M].清华大学出版社,2003.
附录
附录1音乐发生器电路原理图
附录2元件明细表
序号
名称
型号规格
标号
数量
1
电阻
10K
R1-R11
11个
2
电容
20pf
C1、C2
各1个
3
电容
10uf
C3
1个
4
单片机
AT89C51
U1
1个
5
数码管
LED
7SEG-COM-CATHODE
1个
6
扬声器
Sounder
S1
1个
7
按键
Button
1-4
4个
8
晶振
CRYSTAL
X1
1个
9
锁存器
74LS373
U2
1个
10
程序存储器
27512
U3
1个
11
与非门
74LS00
U4
1个
12
非门
74LS04
U5
1个
附录3源程序代码
/*******************************************************************
SOUNDPLAYFOR51MCU
/****************************说**********明*************************
曲谱存贮格式unsignedcharcodeMusicName{音高,音长,音高,音长....,0,0};末尾:
0,0表示结束(Important)
*******************************************************************/
#ifndef__SOUNDPLAY_H_REVISION_FIRST__
#define__SOUNDPLAY_H_REVISION_FIRST__
//******************************************************************
#defineSYSTEM_OSC12000000//定义晶振频率12000000HZ
#defineSOUND_SPACE4/5//定义普通音符演奏的长度分率,//每4分音符间隔
sbitBeepIO=P3^0;//定义输出管脚
sbitkey_int0=P3^3;
sbitkey_add=P3^6;
sbitkey_dec=P3^7;
sbitkey_led=P3^1;
unsignedcharcodetable[]={0x06,0x5b,0x4f};
unsignedintcodeFreTab[12]={262,277,294,311,330,349,369,392,415,440,466,494};//原始频率表
unsignedcharcodeSignTab[7]={0,2,4,5,7,9,11};//1~7在频率表中的位置
unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64};unsignedcharSound_Temp_TH0,Sound_Temp_TL0;//音符定时器初值暂存
unsignedcharSound_Temp_TH1,Sound_Temp_TL1;//音长定时器初值暂存
unsignedcharcnt=0;
unsignedchartemp=0;
unsignedcharflag=1;
void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 音乐发生器 单片机 课程设计 音乐 发生器