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

更新时间:2023-11-18 20:02:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计

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

学生所在学院 电气信息学院 专 业 电子信息工程 学 号 000000000 学 生 姓 名 XXXXXX

指 导 教 师 XXXXXXXXXX 助理指导教师 XXXXXXXXXX

起 止 日 期 2013.3.10-2013.5.15

目录

目录 ........................................................................................................................................................... 2 摘 要 ....................................................................................................................................................... 1 1概述 ........................................................................................................................................................ 3 1.1 课题意义 ............................................................................................................................................ 3 1.2设计任务和要求 ................................................................................................................................. 3 1.3应用软件介绍 ..................................................................................................................................... 4 1.3.1 Proteus软件简介.............................................................................................................................. 4 1.3.2 KEIL简介 ........................................................................................................................................ 4 2设计方案 ................................................................................................................................................ 5 3时钟电路 ................................................................................................................................................ 6 4 复位电路 ............................................................................................................................................... 7 4.1上电复位 ............................................................................................................................................. 7 4.2按键复位 ............................................................................................................................................. 7 5 硬件设计 ............................................................................................................................................... 8 5.1 按键模块设计 .................................................................................................................................... 8 5.2 发音电路及数码显示电路设计 ......................................................................................................... 9 5.3 Proteus 仿真电路图.......................................................................................................................... 10 6 软件设计 ............................................................................................................................................. 10 6.1音调、节拍以及编码的确定方法 ..................................................................................................... 10 6.1.1 音调的确定 ................................................................................................................................... 10 6.1.2 节拍的确定 ................................................................................................................................... 12 6.1.3 编码 ............................................................................................................................................... 13 6.2 暂停与播放 ...................................................................................................................................... 13 6.3上一曲程序设计 ............................................................................................................................... 14 6.4下一曲程序设计 ............................................................................................................................... 16 6.4.1 程序源代码(见附录A) ............................................................................................................ 20 7调试 ...................................................................................................................................................... 20 7.1 检查硬件连接 .................................................................................................................................. 20 7.2 检查软件系统 .................................................................................................................................. 20 7.3 测试结果 .......................................................................................................................................... 20 7.3.1总体运行图 .................................................................................................................................... 21 8总结 ...................................................................................................................................................... 22 致谢 ......................................................................................................................................................... 23 参考文献 ................................................................................................................................................. 24 附录A 程序源代码 ................................................................................................................................ 25

摘 要

本设计是一个基于AT89C52系列单片机的音乐盒,依据单片机技术原理,通过

硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。该音乐盒主要由按键电路、复位电路、内部振荡器、数码管显示、中断控制电路以及蜂鸣器电路组成。使用三个按键控制音乐盒,两个用来切换歌曲,且数码管显示当前曲目。另一个用来控制开始\\暂停。播放歌曲时,蜂鸣器发出某个音调,数码管显示与之对应的曲目。本设计利用Keil编程软件对音乐盒源程序进行编程并调试,配合Proteus仿真软件对硬件进行仿真调试,节约了设计时间。

关键字:音乐盒 AT89C52单片机 Keil Proteus

1

1引言

二十世纪九十年代以来计算机、信息、电子、控制、通信等技术得到迅速发展促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质、功能、品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。而品质的提高功能的更新、可靠性的增强、品种的变化无不与产品的核心控制部分水平的提高密不可分。家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分、执行部分与人机界面三部分组成。而最为重要的控制部分一般是由单片机来执行完成的。这就必将导致和促进单片机在音乐领域应用的发展。现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。例如:就目前市场上的MP3的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。但这些音乐播放器也或多或少的存在着一些问题。解决这些问题,非智能化的单片机莫属。本设计由硬件电路设计和软件程序设计两大部分组成。整个硬件电路是由中心控制、播放、按键、和数码显示模块组成。中心控制模块采用AT89S52单片机,播放模块是由蜂鸣器组成,显示模块是由七段显示数码管LED灯组成,按键模块由3个按键组成,其中1个作为开始/暂停切换,另外2个作为曲目切换按键。软件程序运用汇编语言编程实现。

2

1概述

本设计是以AT89C52芯片的电路为基础,加上外部按键及放音设备,以此来实现音乐盒的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。该系统具有很好的通用性,很高的实际使用价值。 1.1 课题意义

音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且曲目单一。容易受水、灰尘等外在因素,使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,能演奏多个曲目且携带方便。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,且价格便宜。基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。 1.2设计任务和要求

利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存五首乐曲)。采用七段数码管显示当前播放的歌曲序号。可通过按键选择乐曲,暂停\\播放,上一曲,下一曲。

3

1.3应用软件介绍

本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,两种软件的简介如下: 1.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等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 1.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系列单片机的爱

4

好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

2设计方案

本文提出了一种基于AT89C52单片机的音乐盒设计方案,实现对蜂鸣器发音控制。AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

本方案以AT89C52单片机与按键组成核心主控制模块。在主控模块上设有3个按键;根据用户需要可以编写出曲目代码并有数码显示对应曲目序号,利用其内部定时器T0实现定时中断。本方案中应用定时计数器T0、T1,计数器0工作于方式1,计数器1以计数方式,工作于方式2。

本次系统中应用中断指令。当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时启动定时器T1,显示歌曲号。

单片机音乐盒的系统结构框图

5

蜂鸣器电路 89C52 内部振荡电路 复位电路 数码管显示 中断控制电路

3时钟电路

单片机内有时钟电路,与振荡器共同产生单片机工作所需要的时钟信号。它使单片机在唯一的时钟信号控制下,严格地按一定的节拍进行工作(按一定的时序进行工作)。

振荡器可由单片机内振荡元件外接振荡元件实现,构成内部时钟方式,即在XTAL1和XTAL2引脚跨接振荡器元件(如晶振),则可构成一个稳定的自激振荡器。如果振荡器元件是晶振,则在晶振两个引脚上接上两个电容。电容主要是起频率微调和稳定的作用。电容容量一般为20-40pf基本都可以。本系统选择12MHZ的晶体振荡器,30pf电容。如图3所示。

图3

6

4 复位电路

复位是令单片机初始化的操作,其主要功能是初始化单片机的工作状态。例如,把程序计数器PC的值初始化为0000H,这样单片机在复位后就从程序存储器ROM的0000H单元开始执行程序。另外,当程序运行出错或因操作错误而使系统处于死锁状态时,按复位键来重新初始化单片机。RST引脚是复位信号的输入端。实现复位操作,必须使RST引脚至少保持两个机器周期的高电平(一般用手按下去再放开,都能达到两个机器周期),再从高电平变为低电平,完成复位。复位后,单片机从ROM中的0000H单元开始执行程序。复位操作有上电自动复位、按键复位等方式。 4.1上电复位

是通过外部复位电容充电来实现复位。由于电容通交流隔直流,在上电瞬间可等效交流电,在这一瞬间RST引脚的电位与VCC的电位一样。由于电容两端电压差不断增大,则RST端的电压逐渐变小,直至电容充电完毕。电容的充电时间必须大于两个机器周期。如图4-1。

图4-1

4.2按键复位

是通过按键接通的瞬间,使RST为高电平,实现复位功能。有些单片机内部设置RST接收低电平时,实现复位功能RST是高电平还是低电平时复位,要根据单片机的类型而定。如图4-2。

7

图4-2

本系统选择上电复位。其中电容为10uf,复位电阻为10k。

5 硬件设计

音乐盒控制系统包括2大部分,即音乐盒控制模板(AT89C52主控模块)和音乐

盒发音模块(数码管显示模块)。前者是主控模块,具有按键功能,并利用AT89C52的P3口输出控制信号;后者是受控模块,利用AT89C52的P1、P2口输入控制信号,上面焊有蜂鸣器和数码显示器。 5.1 按键模块设计

主控模块主要设计器件有AT89C2,3个按键。通过软件设计,使单片机p3口作为蜂鸣器和数码管的信号输出口。其中k1接p3.2,作为上一曲的按键;k2接p3.3,作为下一曲的按键;k3接p3.5,作为开始/暂停的按键。如图5-1。

图5-1

通过K1,K2,K3三个按键,分别实现上一曲,下一曲和开始/暂停的切换。

8

5.2 发音电路及数码显示电路设计

发音块设计主要器件是蜂鸣器。根据实际需要,使其与AT89C52的p2.0口相接,另一引脚接地,实现演奏曲目的功能。

图5-2-1

数码显示电路设计主要器件是数码管。使其与AT89C52的p1口相接,另一引脚

接电源,实现显示当前曲目的功能。

图5-2-2

9

5.3 Proteus 仿真电路图

6 软件设计

在本程序中主要有节拍,音调、节拍以及编码的确定方法、开始/暂停、上一曲、下一曲四个软件模块组成。 6.1 音调、节拍以及编码的确定方法

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。 6.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个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,

10

C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成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反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系公式如下: N=Fi?2?Fr

N:计算值; Fi:内部计时一次为1us,故其频率为1MHz; 4)其计数值的求法如下: T=65536-N=65536-Fi?2?Fr

例如:设K=65536,F=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的计算值

T=65536-N=65536-Fi?2?Fr=65536-1000000?2?Fr=65536-500000/Fr 低音DO的T=65536-500000/262=63627 低音DO的T=65536-500000/523=64580 低音DO的T=65536-500000/1047=65059

5)C调各音符频率与计数值T的对照表如表4.1所示。

表4.1 C调各音符频率与计数值T的对照表

低音 频率 T 参数 中音 频率 T 参数 高音 频率 T 参数 Do 262 1908 229 Do 523 956 115 Do 1046 57 57 Do277 1805 217 Do554 903 108 Do1109 54 54 ﹟ ﹟ ﹟

Re 294 1701 204 Re 587 852 102 Re 1175 51 51 Re311 1608 193 Re622 804 97 Re1245 48 48 ﹟ ﹟ ﹟

Mi 330 1515 182 Mi 659 759 91 Mi 1318 45 45 Fa 349 1433 172 Fa 698 716 86 Fa 1397 43 43 Fa370 1351 162 Fa740 676 81 Fa1480 41 41 ﹟ ﹟ ﹟

So 392 1276 153 So 784 638 77 So 1568 38 38 So415 1205 145 So831 602 72 So1661 36 36 ﹟ ﹟ ﹟

11

La La﹟ Si

440 1136 136 464 1078 129 494 1012 121 La La﹟ Si

880 568 932 536 988 506

68 64 61 La 1760 34 La1865 32 ﹟

Si 1976 30

34 32 30

6.1.2 节拍的确定

若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

表4.2节拍与节拍码对照

节拍码 节拍数 节拍码 节拍数 1 1/4拍 1 1/8拍 2 2/4拍 2 1/4拍 3 3/4拍 3 3/8拍 4 1拍 4 2/1拍 5 1又1/4拍 5 5/8拍 6 1又1/2拍 6 3/4拍 8 2拍 8 1拍 A 2又1/2拍 A 1又1/4拍 C 3拍 C 1又1/2拍 F 3又3/4拍

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为节拍码的对照。如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。

表4.3 1/4和1/8节拍的时间设定

曲调值 DELAY 曲调值 DELAY 调4/4 125毫秒 调4/4 62毫秒 调3/4 187毫秒 调3/4 94毫秒 调2/4 250毫秒 调2/4 125毫秒

12

6.1.3 编码

do re mi fa so la si分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。

举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。 举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22

歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。

表4.4 简谱对应的简谱码、T值、节拍数

简谱 发音 简谱码 T值 节拍码 节拍数 5 低音SO 1 64260 1 1/4拍 6 低音LA 2 64400 2 2/4拍 7 低音TI 3 64524 3 3/4拍 1 中音DO 4 64580 4 1拍 2 中音RE 5 64684 5 1又1/4拍 3 中音MI 6 64777 6 1又1/2拍 4 中音FA 7 64820 8 2拍 5 中音SO 8 64898 A 2又1/2拍 6 中音LA 9 64968 C 3拍 7 中音TI A 65030 F 3又3/4拍 1 高音DO B 65058 2 高音RE C 65110 3 高音MI D 65157 4 高音FA E 65178 5 高音SO F 65217 6.2 暂停与播放

计数器0工作于方式1,计数器1以计数方式,工作于方式2,接开始和暂停 CLR PT0 ;计数器0为低优先级 SETB PT1

;计数器1为高优先级

计数器1以计数方式,工作于方式2,相当于外部中断,将TH1,TL1,都设置为#0FF,利用重载形成循环 MOV TL1,#0FFH。 MOV TH1,#0FFH。

取一个位F0,初始值为0,CLR F0;

13

本文来源:https://www.bwwdw.com/article/bq5v.html

Top