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

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

1

《单片机原理及应用》

课程设计说明书

设计题目:基于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)

2

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)

3

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

【摘要】:随着人类社会的发展,人们对视觉、听觉方面

的享受提出了越来越高的要求。小小的音乐盒可以给人们带

来美好的回忆,提高人们的精神文化享受。传统的音乐盒多

是机械型的,体积笨重,发音单调,不能实现批量生产。本

文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体

积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以

批量生产,具有一定的商业价值。

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

4

5

第1章 概述

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

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

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

6

第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 的对照表:

7

表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 音符编码表

8

2.3 节拍频率的产生

节拍的产生与编码:

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

表2-3 节拍数编码表

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

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

相关文档
最新文档