基于AT89C51单片机音乐盒课程设计

  • 格式:doc
  • 大小:565.00 KB
  • 文档页数:19

下载文档原格式

  / 19
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理及应用》课程设计说明书

设计题目:基于AT89C52单片机的音乐盒的设计

学院:

专业班级:

设计者:

学号:

指导老师:

目录

摘要 (4)

第1章概述 (5)

第2章音乐盒的发音原理 (6)

2.1 播放音乐的原理 (6)

2.2 音符频率的产生 (6)

2.3 节拍频率的产生 (8)

第3章硬件电路设计 (9)

3.1 硬件电路 (9)

3.2 整体硬件电路 (10)

3.3 原理说明 (10)

3.4 键盘按键 (10)

第4章软件设计 (11)

4.1 程序设计流程 (11)

4.2 设计源程序代码 (12)

第5章仿真及调试 (16)

5.1 调试 (16)

5.2 仿真 (16)

5.3 程序调试中出现的问题及解决的办法 (17)

第6章设计小结 (18)

附录元件清单 (19)

基于AT89C52单片机的音乐盒的设计

【摘要】:随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。

【关键词】:音乐盒;单片机

第1章概述

传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。

本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富,如图1-1所示。

图1-1 单片机音乐盒功能框图

第2章音乐盒的发音原理

2.1 播放音乐的原理

发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。

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

2.2 音符频率的产生

音符及定时器初始值:

μ

例如:中音1(do)的音频=523HZ,周期T=1/523s=1912s

定时器/计数器0的定时时间为:T/2=1912/2sμ=956sμ

定时器956sμ的计数值=定时时间/机器周期=956sμ/1sμ=956(时钟频率=12MHZ)

装入T0计数器初值为65536-956=64580

将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO (523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表2-1是C调各音符频率与计数初值T 的对照表:

表2-1 C调各音符频率与计数初值T的对照表

音符、音符编码及定时器初始值:

为了产生音符,必须求出音符低音5—高音5的计数初值。例如C调的低1DO 的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。

表2-2 音符编码表

2.3 节拍频率的产生

节拍的产生与编码:

音乐中的节拍用延时时间产生。例如,1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表2-3和表2-4所示。

表2-3 节拍数编码表

表2-4 乐谱节拍编程时的时间延时表

音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。

第3章硬件电路设计

3.1 硬件电路

设计中用到了AT89C52单片机,3*3键盘,蜂鸣器等硬件电路常用元器件。3.1.1 时钟复位电路

时钟电路由单片机XTAL1、XTAL2引脚外接晶振(12MHz)及起振电容C1、C2(均为30pf)组成。如图3-1所示:

图3-1 时钟复位电路

3.1.2 按键输入电路

按键输入电路由3*3矩阵键盘组成,P3口作为输入控制按键,其中P3.4~P3.6扫描行,P3.0~P1.2扫描列。

图3-2 按键输入电路