当前位置:文档之家› 基于单片机STC89C52的数字音乐盒设计

基于单片机STC89C52的数字音乐盒设计

基于单片机STC89C52的数字音乐盒设计一、引言1.1设计的目的通过课程设计,让学生熟悉单片机微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤。

对学生进行基本技能训练,例如:组成系统、编程、调试、查阅资料、焊接电路板等。

使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。

1.2 设计的基本要求(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏不同的乐曲(至少3首歌曲);(2)采用七段数码管显示当前播放的歌曲序号;(3)可通过功能键选择乐曲,暂停,播放,上一首,下一首;扩展功能:利用一个循环跟每一个音调同步,每改变一个音调就变换一下彩灯,从而实现音乐控制彩灯的功能。

二、总体设计2.1基本工作原理1、播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。

首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。

对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。

另外,音符的频率有所不同。

基于上面的内容,这样就对发音的原理有了一些初步的了解。

音符的发音主要靠不同的音频脉冲。

利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对I/O 反相,就可在I/O 脚上得到此频率的脉冲。

2、音符频率的产生 音符及定时器的初值:例如:中音1(DO )的音频=523HZ,周期T=1/523s=1912s μ 定时器/计数器0的定时时间为:T/2=1912/2s μ=956s μ定时器956s μ的计数值=定时时间/机器周期=956s μ/1s μ=956(时钟频率=12MHZ)计算得到定时器0的初值为65536-956=64580,将初值装入T0的寄存器里,启动T0后,每计数956次后就溢出中断,进入中断服务程序后,只要将I/O 口的输出值取反,就可以得到中音1(DO )的音符音频。

只要改变计数初值,就能得到不同频率的音符。

表(1)是C 调各音符频率与计数初值的对照表:音符、音符编码及定时器初始值:为了产生音符必须求出低音到高音的计数初值,而为了便于写谱,必须进行简单的编码,在编程时,根据音符编码查找对应的计数初值,比如说音乐是C调的,低音5(SO)直接写为编码1,低音6(LA)直接写为编码2。

表(2)是音符编码表:3、节拍频率的产生音乐中的节拍是利用延时产生的。

例如:1拍=0.4s,1/4拍=0.1s。

如此类推,可得到其他节拍的时间。

为了便于写谱,也将节拍进行编码。

表(3)是节拍数编码表,表(4)是乐谱节拍编程时间延时表:在音符编码和节拍编码完成后,编程时,每个音符占一个字节,高4位是音符编码,低4位是节拍编码。

2.2硬件总体设计本设计是由五部分电路组成的,分别是时钟复位电路、单片机系统、按键电路、显示电路和音频输出电路。

硬件的总体框图如图(1)所示:图(1)根据系统框图,使用Proteus软件绘制总原理图,总原理图如图(2)所示:图(2)原理说明:(1)当键盘有键按下时,判断键值,启动定时器0,产生一定的频率,驱动蜂鸣器,播放歌曲,启动定时器1,显示歌曲序号;(2)用P0口控制七段数码管,P1口控制彩灯变化,P2.0控制喇叭,输出音频信号;(3)电路采用12MHz的晶振工作,起振电路中C1和C2为22pF的电容。

2.3软件总体设计本设计采用Keil软件进行编写程序并进行编译,采用Proteus软件进行仿真调试。

在编写程序之前,首先应该画出该程序的流程图,这样编程起来会比较简单一点,不会那么复杂。

音乐盒设计的总程序流程图如图(3)所示:图(3)按照主程序的流程图用Keil软件编写系统的主程序。

程序清单如附录所示。

三、硬件设计3.1单片机芯片的引脚及部分功能本设计采用的单片机型号是STC89C52,其引脚图如图(4)所示:图(4)跟51单片机一样STC89C52单片机也是8位的单片机,有32个准双向的I/O口,存储单元也分为了2种,程序存储器和数据存储器,其中数据存储器是256KB 的,可以扩展到64KB,而程序存储器是4KB的,也可以扩展到64KB。

STC89C52单片机的中断系统里有5个中断请求源,4个用于中断控制的寄存器IE、IP、TCON和SCON,用来控制中断的类型、中断的开/关和各种中断源的优先级别,而引脚31,当接低电平时,单片机直接访问外部程序存储器,接高电平时,单片机访问片内程序存储器,当程序计数器PC的值超过4KB时,单片机也自动访问片外程序存储器。

引脚9是单片机的复位端,当接高电平时,单片机就会复位,而单片机32个I/O口中,P3口具有第二功能,可以实现串行和并行通信的数据接收和发送,也可以控制单片机的中断类型。

3.2 各个模块的硬件电路设计1、时钟复位电路时钟电路是由12MHz的晶振和2个22pF的电容组成,给单片机系统提供外部时钟信号源,以保证单片机内部定时器的正常工作。

而复位电路采用上电复位的接法,由一个10k的电阻和10uF的电容组成,在加电的瞬间电容通过充电,使RST端出现正脉冲,从而使单片机复位。

时钟复位电路如图(5)所示:图(5)2、按键输入电路本设计采用三个按键来控制音乐的播放,其中按键S1是控制音乐盒播放下一首歌曲,按键S2是控制音乐盒播放上一首歌曲,而按键S3则是控制音乐播放和暂停,按键电路的接法如图(6)所示:图(6)3、显示电路本设计采用七段共阴数码管来显示当前播放歌曲的序号,其中a、b、c、d、e、f、g分别接到P0.0-P0.6口,而公共端接地,由于P0口里面没有接上拉电阻,在外部电路里还得接上上拉电阻,以保证P0口电平的正常输出。

显示电路的接法如图(7)所示:图(7)4、音频输出电路本设计采用喇叭作为音乐盒的音频输出,但是只有一个喇叭就构成整个音频输出电路的话,播放音乐的声音就会太小声,甚至有时小到连声音都听不到,为了增大喇叭的声音,才用一个放大电路使通过喇叭的电流增大,从而增大喇叭的输出功率。

放大电路是采用一个PNP型的三极管和两个电阻,其中一个作为反馈回路。

音频输出电路如图(8)所示:图(8)5、彩灯控制电路彩灯控制电路为本设计的扩展功能,通过音乐的播放,节拍的变化来控制彩灯的循环变化,彩灯电路有8个发光二极管和8个200欧的电阻组成,接到P1口,通过变化P1口的输出电平,控制彩灯的亮灭。

彩灯控制电路如图(9)所示:图(9)四、软件设计4.1本设计可以实现课程设计的基本要求,可以播放6首歌,并通过按键控制播放、暂停等功能。

主要的子程序框图如图(10)、(11)、(12)所示:音乐播放程序框图图(10)中断程序框图图(11)系统各主要程序的程序清单可见于附录编写完程序后,用Keil软件进行编译,看是否有错,如果有错应立刻修改,直到编译正确为止。

五、仿真、调试电路在Proteus软件绘制完原理图和编译完源程续后,将Keil软件编译完生成的Hex文件加载到Proteus软件绘制出的原理图里德单片机里,就可以进行仿真,验证是否能实现课程设计的基本功能。

当仿真成功后,就可以购买元器件,开始焊接电路板了,焊完电路板后,利用单片机开发板将程序下载到单片机芯片上进行调试,看是否焊接成功,如果没有同仿真时的结果一样,就得检查一下电路,看哪里出错了,再进行调整,达到预期的要求。

六、存在问题和解决方法在设计过程中,虽然在音频输出电路中加了放大电路,来增大输出的电流,但是在调试过程中喇叭的声音还是有点小声,我认为不要采用单个三极管作为放大电路,而应该采用集成运算放大器,因为集成运放里面已经是由多个三极管组成的多级放大电路了,在外部适当的添加一些电阻和电容就能实现功率的放大。

七、总结与体会通过这次课程设计,从整体上我对单片机微机应用系统开发、研制过程软硬件设计的工作方法、工作内容、工作步骤更加了解。

不仅熟练地掌握了Keil软件和Proteus软件的使用方法,而且提高了我的动手能力和分析问题、解决问题的能力。

我觉得这次单片机课程设计是一个综合性的设计平台,除了熟练掌握了一些软件的使用和进行了基本技能的锻炼之外,还巩固了我的单片机知识,在编程方面,我也更加的熟练。

而且通过查阅资料,还拓展了我的知识视野,加强了我查阅资料的能力。

但是这次单片机课程设计也不是一帆风顺的,在编程和仿真过程中倒是没有出现太大的问题,而在焊接完电路板,进行电路调试时却发现整个电路都不工作。

我们检查了两天都没发现什么问题。

当我正想放弃时,我突然想起爱迪生说过的一句话“无论什么时候,不管遇到什么情况,我绝不允许自己有一点点灰心丧气。

”于是,我决定重新买器件再焊过一块电路板,老天还是很眷顾我的,第二块电路板调试最终成功了,我非常开心,我觉得第一块电路板里可能是电容或晶振坏了,但我又不知道怎么检查电容和晶振。

因此果断焊过第二块。

总而言之,这次课程设计我获益匪浅。

不仅锻炼了我各方面的能力,在人生哲理上,我也更加成熟。

我更加深刻地认识到:在人生的道路上,路并不是一直平坦的,会有无数的荆棘、无数的高墙挡在你的前面,但是只有坚持不懈,才能斩断挡在你面前的荆棘,退到你面前的高墙,开辟一条新的道路,只有这样才能跨越自己的极限,走到像《桃花源记》里面所说的世外桃源一样,最终你的梦想也将实现。

八、参考文献[1]单片机原理与接口技术,李朝青编著,北京航空航天大学出版社,2005年10月;[2]单片机课程设计指导,楼然苗、李光飞编著,北京航空航天大学出版社,2007年7月;[3]单片机控制实习与专题制作,蔡朝洋,北京航空航天大学出版社;[4]图书馆相关书籍;[5]网上资料;元件清单:附录源程序:OUT BIT P2.0 ;定义音频输出端口,p2.0N EQU 6 ;歌曲总数OUT_NUM EQU P0 ;数码管显视当前所放歌曲曲数ORG 0000HK2: AJMP MAINORG 0003HAJMP LAST_SONG ;外部中断0用于接上一曲歌按键ORG 000BHAJMP F_T0 ;定时器0用于定时,作音符发生器用ORG 0013Hq4: AJMP NEXT_SONG ;外部中断1接下一曲歌按键ORG 001BHAJMP START_PAUSE ;定时器1用计数,这里用作中断,接开始/暂停键,初值为0ffH,方式2ORG 0030HMAIN: MOV 50H,#00HMOV SP,#60HMOV DPTR,#TABLE ;DPRT指向每首歌曲的入口地址的地址。

相关主题