《毕业设计论文:基于51单片机的音乐发生器设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文:基于51单片机的音乐发生器设计.doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本文是应用MCS-51单片机原理和控制理论技术设计音乐发生器的硬件电路,并利用C语言进行软件开发和程序设计。通过控制单片机内部的定时器产生不同频率的方波,驱动喇叭发出不同音调的音乐,再利用延迟控制发音时间的长短。把乐谱转化成相应的定时常数,从而达到从发音设备中演奏出悦耳动听的音乐的效果。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软
2、件对硬件进行仿真调试,节约了设计时间。本系统采用C语言进行软件设计。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程。其次阐述了程序的流程和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。关 键 词单片机;音乐;C语言;STC89C51;KEIL;PROTEUSAbstractIn this paper, The music generator and its hardware circuit is designed by MCS-51 single-chip microcom
3、puter 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
4、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
5、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, an
6、d 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 th
7、e 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 hardwa
8、re, 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 -1.3.1设计方案- 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单片机内部结构
9、- 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 -3.3主要设计软件介绍- 14 -3.3.1 PROTEUS软件简介- 14 -3.3.2 KEIL简介- 14 -4 硬件设计- 15 -4.1 总体设计框图- 15 -4.2各部分硬件设计及其原理-
10、16 -4.2.1 STC89C51简介- 16 -4.2.2 LED显示电路设计与原理- 16 -4.2.3 时钟振荡电路- 17 -4.3 硬件电路图及功能- 17 -5 软件设计- 18 -5.1音调、节拍以及编码的确定方法- 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 总体运行图
11、- 27 -6.3.2 花样灯3种花样图- 28 -7 总结- 30 -致谢:- 31 -参考文献:- 32 -附录A:- 33 -程序源代码:- 33 -前 言音乐电声的一个重要内容就是电子音乐。电子琴的出现,开辟了音乐的一个新天地。但是自从电子合成器问世以来,电子音乐就又进入了一个更高的阶段。目前,由于电子音乐的普及,电子合成器(合成器实际上是一台声音的频率合成仪,可以制作各种声音,改变各种音色)可以解决相当一部分的歌唱及舞厅的伴奏问题。可以事先制作伴奏音乐或背景音乐,而不需要乐队,或者部分代替乐队。由于音乐合成器制作和修改方便,成本低,音乐丰满,所以市场需求量很大,因此,世界许多国家的厂
12、商都不断地在发展并推出新的型号,每年都要更新换代。当前的发展趋势是不断的采用先进技术,以取得更多、更好的音色。如扩展容量,这包括扩展槽口,增加软盘驱动器或硬盘,增加最大发音数目,增大存贮量,扩展琴键等;使功能多样化,如一台合成器可以同时发二种、四种甚至八种音色,即一台当作几台使用,或者把鼓机的节奏发生器功能、音序器的编辑功能放入合成器,让合成器代替计算机的主机等;扩展功能,例如有的合成器有“跟随”功能,即经预置,每一个音后可以跟随一个二度或三度音,“重叠”功能,轻奏或重奏时可以发不同音调或音色;另外,合成器还向轻便、使用操作方便等方向发展。随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、
13、计算机音乐早期的大力发展,国际上许多国家纷纷开始引入电子音乐研究与创作。因此,电子音乐创作作为音乐科技领域发展的重要标志,在风格上也体现出比以往任何时代都鲜明的个性化特征。电脑音乐也许不会成为今后音乐的主流,但它在整个人类音乐史上的地位已经不容置疑地确立了,相信它会越来越深入地浸透到音乐创作和欣赏的领域中,并且将在一定程度上影响人们对音乐的理解和诠释。用单片机制作的音乐发生器也会越来越多,这将必然成为一种趋势。- 2 -1 概述本设计是以STC89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序控制单片机内部的定时器,把乐谱转化成相应的定时常数,使其演
14、奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要改变相应的地址即可实现功能。本系统的软件编程和硬件系统设计具有很好的通用性,具有一定的实际使用价值,为广大的音乐爱好者提供了利用单片机实现音乐播放和设计方法和思路提供了较好的借鉴。1.1 课题意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴
15、键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。1.2 国内外研究的现
16、状及发展趋势 随着以法、德、意为代表的欧洲和以美国为代表的电子音乐、计算机音乐早期的大力发展,国际上许多国家纷纷开始引入电子音乐研究与创作。因此,电子音乐创作作为音乐科技领域发展的重要标志,在风格上也体现出比以往任何时代都鲜明的个性化特征。六十年代,美国物理学家Robert Moog 研制出了小型实用的电子合成器。从此,首先在欧美地区,合成器作为新型的乐器被音乐家尤其是流行音乐家所采用并飞快的流行开来。由于美国雄厚的经济和科技基础,在早期计算机音乐获得巨大成功后,越来越多的音乐家和科学家步入到计算机音乐的研究与开发的领域中来,他们一起工作、共同开展研究,许多新产品和新设计不断涌现。1.3 音乐
17、发生器的扩展熟练的运用89C51单片机定时器产生固定频率的方波信号,推动喇叭发出旋律,按下单键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏中,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律,可以扩充其功能如下:1.设计三个按键操作来更改歌曲的序号;2.可以按照歌曲的序号来播放歌曲;3.可以显示播放中歌曲的序号;4.可以存储多首歌曲;1.3.1设计方案设计一个基于STC89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。蜂鸣器发出某个音调,与之相对应的LED亮起。使用两个按键,一个用来切换歌曲,另一个切换八路LED的变化花样。1)电路有两种工作
18、模式:演奏音乐模式和花样灯模式。演奏音乐模式:演奏完整的一首的歌曲,八路LED随着音乐变化。花样灯模式:八路LED变化出各种花样,蜂鸣器随着发出“嘀嘀”声2)按下按键1进入演奏音乐模式,再按切换歌曲,共两首歌曲。3)按下按键2进入花样灯模式,再按切换LED花样,共三种花样。此电路的程序只占用了1K左右,可编制更多的音乐和LED花样,使系统的功能更加强大。2 51单片机介绍2.1 Intel 51系列单片机2.1.1MCS-51单片机简述MCS-51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中
19、8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为 核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就 是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。MCS-51系列单片机分为两大系列,即51子系列与52子系列。51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、875
20、1、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的制造工艺是在80
21、51基础上进行了改进。 8051系列单片机采用的是HMOS工艺:高速度、高密度; 80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗;也就是说80C51单片机是一种低功耗单片机。2.1.3 8051单片机的引脚功能图中给出了40引脚的8051单片机的引脚图,40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。图2.1 8051单片机的引脚图(1)电源 1)VCC - 芯片电源,接+5V; 2)VSS - 接地端;注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其
22、实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。(2)时钟时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 (3)控制线 1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲。 ALE功能:用来锁存P0口送出的低8位地址。 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。2)PSEN:外ROM读选通信号。3)RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。4)EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外R
23、OM选择端。 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
24、单片机内部结构振荡器及定时器电路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单片机
25、有四个并行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单片机中,不
26、需要外扩展存储器时,P0口可以作为通用的输入输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机或者编写的程序超过了单片机内部的存储器容量,需要外扩存储器时,P0口就作为地址/数据总线使用。这个多路选择开关就是用于选择是做为普通I/O口使用还是作为数据/地址总线使用的选择开关了。当多路开关与下面接通时,P0口是作为普通的I/O口使用的,当多路开关是与上面接通时,P0口是作为地址/数据总线使用的。P0口的输出是由两个MOS管组成的推拉式结构,也就是说,这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时,V1截止。P0口作为I/O端口使用时,多路开关的控制信号为0(
27、低电平),V1管截止,多路开关是与锁存器的Q非端相接的(即P0口作为I/O口线使用)。作为地址/数据线使用时,多路开关的控制信号为1,V1管由地址/数据线决定,多路开关与地址/数据线连接。输出过程:当写锁存器信号CP有效,数据总线的信号锁存器的输入端D锁存器的反向输出Q非端多路开关V2管的栅极V2的漏极到输出端P0.X。这时多路开关的控制信号为低电平0,V1管是截止的,所以作为输出口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要外接上拉电阻。地址输出过程时,控制信号为1,地址信号为0时,与门输出低电平,V1管截止;反相器输出高电平,V2管导通,输出引脚的地址信号为低电平。反之
28、,控制信号为0、地址信号为1,“与门”输出为高电平,V1管导通;反相器输出低电平,V2管截止,输出引脚的地址信号为高电平。可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连,无须增加总线驱动器。作为数据总线的输出过程时,如果该指令是输出数据,如MOVX DPTR,A(将累加器的内容通过P0口数据总线传送到外部RAM中),则多路开关“控制”信号为1,“与门”解锁,与输出地址信号的工作流程类似,数据据由“地址/数据”线反相器V2场效应管栅极V2漏极输出。输入过程:读芯片引脚上的数据时,读引脚缓冲器打开,通过内部数据总线输入。通过打开读锁存器三态缓冲器
29、,读取锁存器输出端Q的状态。作为数据总线使用时,在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH(11111111,即向D锁存器写入一个高电平1)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线,这个过程和I/O读引脚过程是一样的。在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q0,Q非1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上
30、外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q1,Q非0,场效应管T2截止。如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。为此,8031单片机在对端口P0-P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。这样安排的原因在于读-修改-写指令需要得到端口原输出的状态,修改后再输出,读锁存器而不是读引脚,可以避免因外部电
31、路的原因而使原端口的状态被读错。当P0作为地址/数据总线使用时,在读指令码或输入数据前,CPU自动向P0口锁存器写入0FFH,破坏了P0口原来的状态。因此,不能再作为通用的I/O端口。在系统设计时务必注意,即程序中不能再含有以P0口作为操作数(包含源操作数和目的操作数)的指令。2.4.2 P1端口的结构及工作原理P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输
32、入的信息确定引脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。8051单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1-P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,P1端口也有读锁存器与读引脚之分。2.4.3 P2端口的结构及工作原理P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在功能上兼有P0端口
33、和P1端口的特点。这主要表现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。 对于8031单片机必须外接程序存储器才能构成应用电路(或者我们的应用电路扩展了外部存储器),而P2端口就是用来周期性地输出从外存中取指令的地址(高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往也是一种地址,只不过是外部
34、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,输出信号经内部总线锁存器同相输出
35、端Q反相器V2管栅极V2管9漏极输出。由于V2漏极带有上拉电阻,可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1”,使反相器输出低电平,V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后,输入信息经读引脚三态门电路到内部数据总线。P2作为地址总线使用时的工作过程:P2口作为地址总线时,“控制”信号为1,多路开关车向地址线(即向上接通),地址信息经反相器V2管栅极漏极输出。由于P2口输出高8位地址,与P0口不同,无须分时使用,因此P2口上的地址信息(程序存储器上的A15A8)功数据地址寄存器高8位DPH保存时间长,无须锁存。2.4.
36、4 P3端口的结构及工作原理P3口是一个多功能口,它除了可以作为I/O口外,还具有第二功能P3端口和Pl端口的结构相似,区别仅在于P3端口的各端口线有两种功能选择。当处于第一功能时,第二输出功能线为1,此时,内部总线信号经锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O端口。当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功能读入片内的特定第二功能信号。由于输出信号锁存并且有双重功能,故P3端口为静态双功能端口。使P3端口各线处于第二功能的条件是:1)串行I/O处于运行状态(RXD,TX
37、D);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
38、端口寄存器,所以对这些端口寄存器的读写就实现了信息从相应端口的输入输出。3 系统总体方案介绍3.1 系统组成框图音乐盒的系统结构以STC89C51单片机位控制核心,加上2个按键、时钟复位电路、蜂鸣器、LED模块组成。单片机负责接收按键的输入,根据输入控制音乐播放曲目和音乐花样灯的显示样式以及蜂鸣器发音。系统组成框图如图2.1所示。图3.1 系统组成框图3.2 音乐发生器的功能结构图音乐盒的功能结构如图2.2所示。Key1负责切换播放歌曲,播放歌曲共2首,分别是挥着翅膀的女孩和寂寞沙洲冷。Key2负责切换LED显示花样,显示花样共3种,第一种顺序显示,第二种由两边向中间移动然后向两边移动,第三种
39、循环显示。图3.2 音乐盒功能结构图3.3主要设计软件介绍本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,两种软件的简介如下:3.3.1 PROTEUS软件简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的ED
40、A工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 3.3.2 KEIL简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的
41、机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,1
42、6MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4 硬件设计4.1 总体设计框图图4.1总体设计框图4.2各部分硬件设计及其原理4.2.
43、1 STC89C51简介STC89C51是一种带4K字节闪存的低电压高性能的可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory),俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C51是一种高效微控制器。STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3.2所示:图4.2 STC89C51系列单片机4.2.2
44、LED显示电路设计与原理LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。4.2.3 时钟振荡电路STC89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会
45、轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF 10PF,而如果使用陶瓷振荡器建议选择40PF 10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下:图4.3 单片机内部、外部振荡电路4.3 硬件电路图及功能总体硬件电路实现功能如下,如图3.4所示1)
46、电路中用P3.2、P3.3控制按键。2) P1.0P1.7控制LED。3) P2.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音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。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,相当于汉字“