毕业设计论文:基于51单片机的音乐发生器设计

上传人:r****d 文档编号:91395797 上传时间:2022-05-17 格式:DOC 页数:46 大小:540KB
返回 下载 相关 举报
毕业设计论文:基于51单片机的音乐发生器设计_第1页
第1页 / 共46页
毕业设计论文:基于51单片机的音乐发生器设计_第2页
第2页 / 共46页
毕业设计论文:基于51单片机的音乐发生器设计_第3页
第3页 / 共46页
点击查看更多>>
资源描述
本文是应用MCS-51单片机原理和控制理论技术设计音乐发生器的硬件电路,并利用C语言进行软件开发和程序设计。通过控制单片机内部的定时器产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟控制发音时间的长短。把乐谱转化成相应的定时常数,从而到达从发音设备中演奏出悦耳动听的音乐的效果。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化把戏,本音乐盒共有两首歌曲,把戏灯把戏共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。本系统采用C语言进行软件设计。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程。其次阐述了程序的流程和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为根底,来进行各功能模块的编写。关 键 词单片机;音乐;C语言;STC89C51;KEIL;PROTEUSAbstractIn this paper, The music generator and its hardware circuit is designed by MCS-51 single-chip microcomputer principle and control theory, and the Software development and programming are based on C language programming. According to control the MCU internal timer to produce different frequency Square wave to drive the horn sounds of different tones of music, then use the delay to control the length of time. The music Transformationed into the timing constants corresponding so that the sound equipment can play Melodious music.The music box is mainly composed of keypad circuit, reset circuit, clock circuit and a buzzer. Two buttons are used to control the music box, one to switch songs, another is used to switch the 8 LED pattern, the music box has two songs, a total of 3 kinds of pattern light pattern. While the music is playing, the buzzer sounded a tone, and the corresponding LED lights up. The design of programming the music box and debug source code using KEIL programming software, and to save the design time the PROTEUS simulation software is used to simulate the hardware debugging.The system uses C language for software design. Firstly, in the text describes the working principle of the system hardware, and attached to the system block diagram of hardware design to discusse the function and working process of the graduation design and the application of the hardware interface technology and the interface module. Secondly, expound the procedures and processes to achieve process. The main idea of this writing is a combination of software and hardware, on the base of hardware, write to each function module.Key wordsSinglechip; music; C language; STC89C51; KEIL; PROTEUS目 录前 言- 1 -1 概述- 3 -1.1 课题意义- 3 -1.2 国内外研究的现状及开展趋势- 3 -1.3 音乐发生器的扩展- 4 -设计方案- 4 -2 51单片机介绍- 4 -2.1 Intel 51系列单片机- 4 -2.1.1MCS-51单片机简述- 5 -2.1.2 8051与80C51的区别- 5 -2.1.3 8051单片机的引脚功能- 5 -2.2 51单片机内部结构- 8 -2.3 51系列的特性- 8 -2.4 并行I/O口- 8 -2.4.1 P0端口的结构及工作原理- 9 -2.4.2 P1端口的结构及工作原理- 11 -2.4.3 P2端口的结构及工作原理- 11 -2.4.4 P3端口的结构及工作原理- 12 -2.5 驱动能力- 13 -3 系统总体方案介绍- 13 -3.1 系统组成框图- 13 -3.2 音乐发生器的功能结构图- 14 -主要设计软件介绍- 14 -3.3.1 PROTEUS软件简介- 14 -3.3.2 KEIL简介- 14 -4 硬件设计- 15 -4.1 总体设计框图- 15 -各局部硬件设计及其原理- 16 -4.2.1 STC89C51简介- 16 -4.2.2 LED显示电路设计与原理- 16 -4.2.3 时钟振荡电路- 17 -4.3 硬件电路图及功能- 17 -5 软件设计- 18 -音调、节拍以及编码确实定方法- 19 -5.1.1 音调确实定- 19 -5.1.2 节拍确实定- 20 -5.1.3 编码- 21 -5.2 软件程序设计- 23 -5.2.1 程序流程图及相应代码块- 23 -5.2.2 程序源代码见附录A- 27 -6 调试- 27 -6.1 检查硬件连接- 27 -6.2 检查软件系统- 27 -6.3 仿真测试结果- 27 -6.3.1 总体运行图- 27 -6.3.2 把戏灯3种把戏图- 28 -7 总结- 30 -致谢:- 31 -参考文献:- 32 -附录A:- 33 -程序源代码:- 33 -前 言音乐电声的一个重要内容就是电子音乐。电子琴的出现,开辟了音乐的一个新天地。但是自从电子合成器问世以来,电子音乐就又进入了一个更高的阶段。目前,由于电子音乐的普及,电子合成器合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色可以解决相当一局部的歌唱及舞厅的伴奏问题。可以事先制作伴奏音乐或背景音乐,而不需要乐队,或者局部代替乐队。由于音乐合成器制作和修改方便,本钱低,音乐饱满,所以市场需求量很大,因此,世界许多国家的厂商都不断地在开展并推出新的型号,每年都要更新换代。当前的开展趋势是不断的采用先进技术,以取得更多、更好的音色。如扩展容量,这包括扩展槽口,增加软盘驱动器或硬盘,增加最大发音数目,增大存贮量,扩展琴键等;使功能多样化,如一台合成器可以同时发二种、四种甚至八种音色,即一台当作几台使用,或者把鼓机的节奏发生器功能、音序器的编辑功能放入合成器,让合成器代替计算机的主机等;扩展功能,例如有的合成器有“跟随功能,即经预置,每一个音后可以跟随一个二度或三度音,“重叠功能,轻奏或重奏时可以发不同音调或音色;另外,合成器还向轻便、使用操作方便等方向开展。随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、计算机音乐早期的大力开展,国际上许多国家纷纷开始引入电子音乐研究与创作。因此,电子音乐创作作为音乐科技领域开展的重要标志,在风格上也表达出比以往任何时代都鲜明的个性化特征。电脑音乐也许不会成为今后音乐的主流,但它在整个人类音乐史上的地位已经不容置疑地确立了,相信它会越来越深入地浸透到音乐创作和欣赏的领域中,并且将在一定程度上影响人们对音乐的理解和诠释。用单片机制作的音乐发生器也会越来越多,这将必然成为一种趋势。1 概述本设计是以STC89C51芯片的电路为根底,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序控制单片机内部的定时器,把乐谱转化成相应的定时常数,使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要改变相应的地址即可实现功能。本系统的软件编程和硬件系统设计具有很好的通用性,具有一定的实际使用价值,为广阔的音乐爱好者提供了利用单片机实现音乐播放和设计方法和思路提供了较好的借鉴。1.1 课题意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟。音乐盒有着300多年的开展历史,是人类文明开展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比拟大,比拟笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格廉价。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。1.2 国内外研究的现状及开展趋势 随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、计算机音乐早期的大力开展,国际上许多国家纷纷开始引入电子音乐研究与创作。因此,电子音乐创作作为音乐科技领域开展的重要标志,在风格上也表达出比以往任何时代都鲜明的个性化特征。六十年代,美国物理学家Robert Moog 研制出了小型实用的电子合成器。从此,首先在欧美地区,合成器作为新型的乐器被音乐家尤其是流行音乐家所采用并飞快的流行开来。由于美国雄厚的经济和科技根底,在早期计算机音乐获得巨大成功后,越来越多的音乐家和科学家步入到计算机音乐的研究与开发的领域中来,他们一起工作、共同开展研究,许多新产品和新设计不断涌现。1.3 音乐发生器的扩展熟练的运用89C51单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,按下单键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏中,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律,可以扩充其功能如下:1.设计三个按键操作来更改歌曲的序号;2.可以按照歌曲的序号来播放歌曲;3.可以显示播放中歌曲的序号;4.可以存储多首歌曲;1.设计一个基于STC89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。蜂鸣器发出某个音调,与之相对应的LED亮起。使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化把戏。1电路有两种工作模式:演奏音乐模式和把戏灯模式。演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。把戏灯模式:八路LED变化出各种把戏,蜂鸣器随着发出“嘀嘀声2按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。3按下按键2进入把戏灯模式,再按切换LED把戏,共三种把戏。此电路的程序只占用了1K左右,可编制更多的音乐和LED把戏,使系统的功能更加强大。2 51单片机介绍2.1 Intel 51系列单片机MCS-51单片机简述MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的根底上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为 核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就 是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。MCS-51系列单片机分为两大系列,即51子系列与52子系列。51子系列:根本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951;52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952。2.1.2 8051与80C51的区别 80C51单片机是在8051的根底上开展起来的,也就是说在单片机的开展过程中是先有8051,然后才有80C51的。8051单片机与80C51单片机从外形看 是完全一样的,其指令系统、引脚信号、总线等完全一致完全兼容,也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。 8051与80C51单片机的主要差异就在于芯片的制造工艺上。80C51的制造工艺是在8051根底上进行了改良。 8051系列单片机采用的是HMOS工艺:高速度、高密度; 80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗;也就是说80C51单片机是一种低功耗单片机。2.1.3 8051单片机的引脚功能图中给出了40引脚的8051单片机的引脚图,40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。图2.1 8051单片机的引脚图(1)电源 1VCC - 芯片电源,接+5V; 2VSS - 接地端;注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。(2)时钟时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 (3)控制线 1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲。 ALE功能:用来锁存P0口送出的低8位地址。 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。2PSEN:外ROM读选通信号。3RST/VPD:复位/备用电源。 RSTReset功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。4EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM芯片,在EPROM编程期间,施加编程电源Vpp。(4)I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号属控制总线。 P3口第二功能为: P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 INT0 外部中断0低电平有效 P3.3 INT1 外部中断1低电平有效 P3.4 T0 定时计数器0 P3.5 T1 定时计数器1 P3.6 WR 外部数据存储器写选通低电平有效P3.7 RD 外部数据存储器读选通低电平有效2.2 51单片机内部结构振荡器及定时器电路CPU4K程序存储器128B数据存储器2个16位定时/计数器64K总线扩展控制可编程I/O可编程串行口中断系统图2.2 51单片机内部结构图从内部结构简图可以看出,51单片机内部有以下主要局部:1) CPU51 2) 振荡器及定时电路3)4KB程序存储器 4) 128B数据存储器5) 2个16位定时/计数器 6) 64KB总线扩展控制7) 可编程I/O 8) 可编程串行口9) 中断系统 2.3 51系列的特性1)片内存储器容量较小,一般内部ROM:8KB以下,内部RAM:256KB以下2)可靠性高3)易扩展4)控制功能强5)易于开发2.4 并行I/O口51单片机有四个并行I/O口:P0,P1,P2,P3。2.4.1 P0端口的结构及工作原理P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及V1、V2场效应管驱动电路构成。在P0口中,有两个三态的缓冲器,在其的输出端可以是高电平、低电平,同时还有一种就是高阻状态或称为禁止状态,上面一个是读锁存器的缓冲器,下面一个是读引脚的缓冲器,读取P0.X引脚上的数据,要使这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。在51单片机的32根I/O口线中都是用一个D触发器来构成锁存器的。D端是数据输入端,CP是控制端也就是时序控制信号输入端,Q是输出端,Q非是反向输出端。在51单片机中,不需要外扩展存储器时,P0口可以作为通用的输入输出端口即I/O使用,对于8031内部没有ROM的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为地址/数据总线使用。这个多路选择开关就是用于选择是做为普通I/O口使用还是作为数据/地址总线使用的选择开关了。当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为地址/数据总线使用的。P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。P0口作为I/O端口使用时,多路开关的控制信号为0低电平,V1管截止,多路开关是与锁存器的Q非端相接的即P0口作为I/O口线使用。作为地址/数据线使用时,多路开关的控制信号为1,V1管由地址/数据线决定,多路开关与地址/数据线连接。输出过程:当写锁存器信号CP有效,数据总线的信号锁存器的输入端D锁存器的反向输出Q非端多路开关V2管的栅极V2的漏极到输出端P0.X。这时多路开关的控制信号为低电平0,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。地址输出过程时,控制信号为1,地址信号为0时,与门输出低电平,V1管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。反之,控制信号为0、地址信号为1,“与门输出为高电平,V1管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。可见,在输出“地址/数据信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。作为数据总线的输出过程时,如果该指令是输出数据,如MOVX DPTR,A将累加器的内容通过P0口数据总线传送到外部RAM中,那么多路开关“控制信号为1,“与门解锁,与输出地址信号的工作流程类似,数据据由“地址/数据线反相器V2场效应管栅极V2漏极输出。输入过程:读芯片引脚上的数据时,读引脚缓冲器翻开,通过内部数据总线输入。通过翻开读锁存器三态缓冲器,读取锁存器输出端Q的状态。作为数据总线使用时,在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码输入。在取指令期间,“控制信号为“0,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH11111111,即向D锁存器写入一个高电平1写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线,这个过程和I/O读引脚过程是一样的。在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q0,Q非1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q1,Q非0,场效应管T2截止。如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。为此,8031单片机在对端口P0-P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令那么从端口引脚线上读入信号。读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以防止因外部电路的原因而使原端口的状态被读错。当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能再作为通用的I/O端口。在系统设计时务必注意,即程序中不能再含有以P0口作为操作数包含源操作数和目的操作数的指令。2.4.2 P1端口的结构及工作原理P1端口与P0端口的主要差异在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1-P3端口线输出过0,那么再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,P1端口也有读锁存器与读引脚之分。2.4.3 P2端口的结构及工作原理P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。 对于8031单片机必须外接程序存储器才能构成应用电路或者我们的应用电路扩展了外部存储器,而P2端口就是用来周期性地输出从外存中取指令的地址(高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往也是一种地址,只不过是外部RAM的高8位地址。 在输入功能方面,P2端口与P0和H端口相同,有读引脚和读锁存器之分,并且P2端口也是准双向口。 可见,P2端口的主要特点包括: 1不能输出静态的数据; 2自身输出外部程序存储器的高8位地址; 3执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址端口。P2作为I/O端口使用时的工作过程:当没有外部程序存储器或虽然有外部数据存储器,但容易不大于256B,即不需要高8位地址时在这种情况下,不能通过数据地址存放器DPTR读写外部数据存储器,P2口可以I/O口使用。这时,控制信号为“0,多路开关转向锁存器同相输出端Q,输出信号经内部总线锁存器同相输出端Q反相器V2管栅极V2管9漏极输出。由于V2漏极带有上拉电阻,可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1,使反相器输出低电平,V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后,输入信息经读引脚三态门电路到内部数据总线。P2作为地址总线使用时的工作过程:P2口作为地址总线时,“控制信号为1,多路开关车向地址线即向上接通,地址信息经反相器V2管栅极漏极输出。由于P2口输出高8位地址,与P0口不同,无须分时使用,因此P2口上的地址信息程序存储器上的A15A8功数据地址存放器高8位DPH保存时间长,无须锁存。2.4.4 P3端口的结构及工作原理P3口是一个多功能口,它除了可以作为I/O口外,还具有第二功能P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。使P3端口各线处于第二功能的条件是:1串行I/O处于运行状态(RXD,TXD);2翻开了处部中断(INT0,INT1);3定时器/计数器处于外部计数状态(T0,T1)4执行读写外部RAM的指令(RD,WR)在应用中,如不设定P3端口各位的第二功能,那么P3端口线自动处于第一功能状态,也就是静态IO端口的工作状态。在更多的场合是根据应用的需要,把几条端口线设置为第二功能,而另外几条端口线处于第一功能运行状态。在这种情况下,不宜对P3端口作字节操作,需采用位操作的形式。2.5 驱动能力P0端口能驱动8个LSTTL负载。如需增加负载能力,可在P0总线上增加总线驱动器。P1,P2,P3端口各能驱动4个LSTTL负载。由于P0-P3端口已映射成特殊功能存放器中的P0-P3端口存放器,所以对这些端口存放器的读写就实现了信息从相应端口的输入输出。3 系统总体方案介绍3.1 系统组成框图音乐盒的系统结构以STC89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐把戏灯的显示样式以及蜂鸣器发音。系统组成框图如图2.1所示。图3.1 系统组成框图3.2 音乐发生器的功能结构图音乐盒的功能结构如图2.2所示。Key1负责切换播放歌曲,播放歌曲共2首,分别是挥着翅膀的女孩和寂寞沙洲冷。Key2负责切换LED显示把戏,显示把戏共3种,第一种顺序显示,第二种由两边向中间移动然后向两边移动,第三种循环显示。图3.2 音乐盒功能结构图本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,两种软件的简介如下:3.3.1 PROTEUS软件简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件该软件中国总代理为广州风标电子技术。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2021年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 3.3.2 KEIL简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断开展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断开展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。4 硬件设计4.1 总体设计框图图4.1总体设计框图4.2各局部硬件设计及其原理4 STC89C51简介STC89C51是一种带4K字节闪存的低电压高性能的可编程可擦除只读存储器FPEROMFlash Programmable and Erasable Read Only Memory,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C51是一种高效微控制器。STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下图:图4.2 STC89C51系列单片机4 LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,假设为低电平,可使LED亮起。发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。4 时钟振荡电路STC89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反应元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反应回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的上下、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF 10PF,而如果使用陶瓷振荡器建议选择40PF 10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2那么悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下:图4.3 单片机内部、外部振荡电路4.3 硬件电路图及功能1) 电路中用控制按键。2) 控制LED。3) 控制蜂鸣器。4) 电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。硬件电路图如下图:图4.4 硬件电路图5 软件设计在本程序中设置了两个标志count1和count2,分别初始化为1和0。按键1使得count1在1和2之间切换,按键2使得count2在14之间切换。程序检测count1的值,count1等于1时播放第一首歌曲,等于2时播放第二首。另一方面根据count2的值来切换LED的把戏。count1和count2的值是互斥的,设置count1等于1、2时,count2同时设置为0;设置count2等于14时,count1也同时设置为0。5.1音调、节拍以及编码确实定方法一般说来,单片机演奏音乐根本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调和节拍表示一个音符唱多长的时间。.1 音调确实定不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西的读音,这是唱曲时乐音的发音,所以叫“音调,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音。两个音之间的距离有两个“半音,就叫“全音。在钢琴等键盘乐器上,CD、DE、FG、GA、AB两音之间隔着一个黑键,他们之间的距离就是全音;EF、BC两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上号或者b号的叫变化音。叫升记号,表示把音在原来的根底上升高半音,b叫降记音,表示在原来的根底上降低半音。例如高音DO的频率1046Hz刚好是中音DO的频率523Hz的一倍,中音DO的频率523Hz刚好是低音DO频率266 Hz的一倍;同样的,高音RE的频率1175Hz刚好是中音RE的频率587Hz的一倍,中音RE的频率587Hz刚好是低音RE频率294 Hz的一倍。1要产生音频脉冲,只要算出某一音频的周期1/频率,然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。2利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。此外结束符和休止符可以分别用代码00H和FFH来表示,假设查表结果为00H,那么表示曲子终了;假设查表结果为FFH,那么产生相应的停顿效果。3例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次技术956次时将I/O反相,就可得到中音DO523Hz。计数脉冲值与频率的关系公式如下:N=Fi2FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz;4其计数值的求法如下:T=65536-N=65536-Fi2Fr例如:设K=65536,F=1000000=Fi=1MHz,球低音DO261Hz。中音DO523Hz。高音的DO1046Hz的计算值T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627低音DO的T=65536-500000/523=64580低音DO的T=65536-500000/1047=650595C调各音符频率与计数值T的对照表如表4.1所示。表5.1 C调各音符频率与计数值T的对照表低音频率T参数中音频率T参数高音频率T参数Do2621908229Do523956115Do10465757Do2771805217Do554903108Do11095454Re2941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18653232Si4941012121Si98850661Si19763030.2 节拍确实定假设要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律固定的律动,而且可以调节各个音的快满度。“节拍,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。假设1拍实0.5s,那么1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大局部人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些根底知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。表5.2节拍与节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每个音符使用1个字节,字节的高4位代表音符的上下,低4位代表音符的节拍,图为节拍码的对照。如果1拍为秒,1/4拍实秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,那么1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图为1/4和1/8节拍的时间设定。表5.3 1/4和1/8节拍的时间设定曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒.3 编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位在本程序中为165ms,一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后别离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着别离出该数的低4位,得到延时时间,接着调用软件延时。表5.4 简谱对应的简谱码、T值、节拍数简谱发音简谱码T值节拍码节拍数5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF65217 软件程序设计.1 主程序流程图及相应代码块主程序流程图如下图:图5.1 主程序流程图主程序代码:main()uchar x;count1=0;/流水灯无把戏 count2=1;/唱第一首歌 P34=0;/选取矩阵键盘的一列 EA=1;/开总中断EX0=1;/开外部中断0 IT0=1;/外部中断0下降沿触发方式 EX1=1;/开外部中断1 IT1=1;/外部中断1下降沿触发方式 TMOD=0x01;/定时器0工作在方式1 TH0=0;TL0=0;ET0=1;while(1)if(count1!=0) /音乐停止,把戏灯开始按照把戏闪烁switch(count1) case 1:for(x=0;x14;x+)P1=huayang1x;beep();delay1(300);if(count1!=1)break;break;case 2:for(x=0;x14;x+)P1=huayang2x;beep();delay1(300);if(count1!=2)break;break;case 3:for(x=0;x16;x+)P1=huayang3x;beep();delay1(300);if(count1!=3)break;break;elsesong();delay1(1000);播放音乐子程序流程图图5.2 播放音乐子程序流程图播放音乐子程序代码:void song()uint temp;uchar jp;/jp是简谱i=0;while(1)if(count2=0)break;if(count2=1)/选曲 temp=qnzli; / 播放千年之恋if(count2=2)temp=jmszli; / 播放寂寞沙洲冷if(temp=0xff)/结束标志break;jp=temp/16; /取数的高4位duan=1;P1=yinyuejp;duan=0;if(jp!=0)timeh=cuzhijp*2;timel=cuzhijp*2+1;elseTR0=0;fm=1;/关蜂鸣器delay(temp%16); /取数的低4位TR0=0; /唱完一个音停10MSfm=1;delay1(10); TR0=1;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!