电子音乐盒地设计.docx

上传人:b****4 文档编号:27212325 上传时间:2023-06-28 格式:DOCX 页数:31 大小:197.18KB
下载 相关 举报
电子音乐盒地设计.docx_第1页
第1页 / 共31页
电子音乐盒地设计.docx_第2页
第2页 / 共31页
电子音乐盒地设计.docx_第3页
第3页 / 共31页
电子音乐盒地设计.docx_第4页
第4页 / 共31页
电子音乐盒地设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

电子音乐盒地设计.docx

《电子音乐盒地设计.docx》由会员分享,可在线阅读,更多相关《电子音乐盒地设计.docx(31页珍藏版)》请在冰豆网上搜索。

电子音乐盒地设计.docx

电子音乐盒地设计

电气信息学院

微机与单片机综合课程设计报告

 

课题名称电子音乐盒的设计

专业班级13电气3班

学号

学生姓名

指导教师

评分

 

2015年12月14日至12月20日

课程设计的任务要求

一、课程设计选题:

从以下课题中任选一题进行,各课题具体要求详见“微机与单片机综合课程设计题目汇总”文档。

并在课程设计报告的正文中详细说明。

1.彩灯控制器的设计

2.电子时钟的设计

3.现代交通灯的设计

4.多路抢答器的设计

5.波形发生器的设计

6.点阵广告牌的设计

7.篮球记分器的设计

8.数字式温度计的设计

9.步进电机的控制

10.电子音乐盒的设计

11.电风扇模拟控制系统设计

12.洗衣机人机界面的设计

13.秒表系统的设计

14.多机串行通信的设计

15.电子密码锁的设计

16.4位数加法计算器的设计

17.数字频率计

18.数字电压表

二、选题说明:

一人一题,一个教学班级同一题不能被选超过两次。

鼓励同学们将各设计中的基本任务完成后,选做部分发挥项。

题中带*和#符号的任务,属于发挥部分。

三、设计时间及进度安排:

第16周,12.14~12.20

12.14题目分析,文献查阅

12.15设计方案

12.16~12.17元器件选型,硬件电路设计

12.18~12.19软件设计,系统调试

12.20课程设计说明书(报告)撰写

四、设计作品提交:

(1)课程设计说明书(纸质版,用于存档);

(2)课程设计说明书(电子版),单片机源程序文件(电子版);

(3)Proteus仿真程序或实物。

五、设计考核评定:

教师评分:

80%,答辩成绩:

20%

答辩记录

1、例举设计过程中遇到的主要问题及其解决方法。

(1)问题说明:

编写好程序之后用keil调试没有错误,但将源程序导入到protues中去并进行仿真时,音乐盒并不能放歌。

将问题一解决后再次进行调试时,音乐盒只能播放一首歌曲。

(2)解决方法:

针对问题一,首先检查硬件电路,发现单片机的RST接口始终都是高电平,于是修改复位电路,并联一个接地的电阻,终于使单片机在工作时RST接口为低电平。

更正之后还是不能放歌,于是检查软件程序。

发现主程序中令count2=0,而count2是跳出播放音乐子程序的,于是将count2=0改为count2=1,于是可以放第一首歌。

针对问题二,在播放音乐子程序中加入了if语句,当k1=0时,count2=1,播放第一首歌曲;当k2=0时,count2=2,播放第二首歌曲;当k3=0时,count2=3,播放第三首歌曲;当k4=0时,暂停歌曲。

2、教师现场提的问题记录在此(不少于2个问题)。

问:

蜂鸣器的发声原理?

答:

用单片机的定时器产生不同频率的方波,方波驱动定时器发声。

驱动方波频率越高,音调就越高;驱动方波频率越低,音调越低。

问:

单片机的时钟频率和机器周期各是多少?

答:

时钟频率为12MHZ,机器周期为1us。

问:

如何用proteus改变单片机的时钟周期?

答:

在proteus界面左边有个激励源模式,里面有各种激励源。

里面的DCLOCK就是可以产生时钟信号的(也就是方波),在属性里面设置不同的频率就可以得到不同的时钟信号。

 

课程设计量化评分标准

 

指标

分值

评分要点

得分

方案设计

20

方案选择合理,分析、设计正确,原理清楚,电路、程序流程图清晰,结构合理,程序简洁、正确。

 

 

设计报告

20

报告结构严谨,逻辑严密,论述层次清晰,语言流畅,表达准确,重点突出,报告完全符合规范化要求,用计算机打印成文。

 

调试与结果

20

过程清晰,调试方案设计合理,测试点选择适当,程序编写正确,调试步骤清楚。

电路及程序运行结果正确,达到预期效果。

 

工作态度

20

工作量饱满程度,题目难度;工作态度,按时完成设计任务,是否独立完成等。

 

答辩成绩

20

思路清晰;语言表达准确,概念清楚,论点正确;分析归纳合理,结论严谨;回答问题有理论根据,基本概念清楚。

 

总评成绩

 

指导老师评语:

 

                      指导教师签字:

                     

2015年  月  日

 

摘要

本次课程设计是设计一个基于51单片机的音乐盒,该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。

本音乐盒共有三首歌曲,用4个按键控制。

其中K1,k2,k3用于选择歌曲。

按下按键k1时,播放第一首歌曲;按下按键k2时,播放第二首歌曲;按下按键k3时,播放第三首歌曲。

k4用于暂停歌曲,暂停后重新选歌即可再播放。

播放歌曲时,定时器产生不同频率的方波,使蜂鸣器发出不同音调的声音,并通过延时控制音乐的节拍。

本设计利用KEIL编程软件对音乐盒源程序进行编程和调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。

关键字:

51单片机;按键;蜂鸣器;音调;节拍

 

 

I

Abstract

ThiscurriculumdesignistodesignamusicboxbasedonAT89C51singlechip.Thismusicboxismainlyconsistofkeycircuit,resetcircuit,clockcircuitandbuzzer.Therearethreesongsinthemusicbox.Theyarecontroledbyfourkeys.k1,k2andk3areusedtochoosesongs.Whenwepushk1,themusicboxisplayingthefirstsong.Whenwepushk2,itisplayingthesecondsong.Whenwepushk3,itisplayingthethirdsong.k4isusedtopausethesongs.Onlyifwepushotherkeystochoosemusic,canthemisicboxplayagain.Thetimerproducessquarewavesofdifferentfrequencywhichletthebuzzermakesoundofdifferenttones.Anditcontrolsthemusicbeatbydelayfunction.Keilisusedtoprogrammeanddebugthesourceprogram.Protuescandebugandemulatethehardware.Bothsoftwarescanhelpustosavetime.

Keywords:

AT89C51;key;buzzer;tone;beat

 

II

 

 

III

1设计任务

1.1基本任务

(1)查阅资料,了解单片机控制单音喇叭发声原理。

(2)设计基于单片机的电子音乐盒。

(3)通过按钮可选择不同的音乐。

1.2设计目的

(1)通过设计,查阅相关资料,掌握如何利用单片机设计产品,同时了解单片机有关的软件模拟器的使用。

(2)通过本课程设计巩固并扩展单片机课程的基本概念、基本理论、分析方法和实现方法。

结合protues和keil软件等,学习单片机产品的设计方法,有效地将理论和实际紧密结合,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。

(3)学习protues软件,掌握protues中各种芯片的功能以及灵活性,提供了实验室在数量、质量上难以比拟的虚拟仪器、仪表,因而也提供了培养实践精神,创造精神的平台。

1.3设计要求

(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(共有3首歌曲)。

(2)可通过功能键进行选择歌曲和暂停操作。

 

2设计方案

2.1任务分析

本设计是以AT89C51芯片的电路为基础,外部加上放音设备,从而来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美的音乐。

该软,硬件系统具有很好的通用性,很高的实际使用价值。

2.2方案设计

1.硬件方案

根据设计的要求可知,系统的硬件原理框图如图2.1所示。

图2.1系统的硬件原理框图

以AT89C51为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。

要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。

利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器发声,放出歌曲。

2.软件方案

(1)主程序流程图

主程序流程如下:

首先对系统进行初始化,单片机扫描键盘得到键值,若得到的键值为1,即count2=1时,蜂鸣器播放第一首歌曲;若得到的键值为2,即count2=2时,蜂鸣器播放第二首歌曲;若得到的键值为3,即count2=3时,蜂鸣器播放第三首歌曲。

在播放歌曲的过程中继续扫描键盘,若按下暂停键,则count2=0,蜂鸣器停止播放歌曲。

图2.2主程序流程图

 

(2)音乐播放程序流程图

音乐播放流程如下:

选定了歌曲后,蜂鸣器便要播放音乐了,首先创建频率表,计算歌曲长度,读音符,求出发音长度,定时器控制蜂鸣器发声,在发声的过程中判断音符是否读完或暂停键是否按下。

若没有读完或者暂停键没有按下,继续读音符;若音符读完或者暂停键按下,蜂鸣器停止发声。

图2.3音乐播放程序流程图

3系统硬件设计

3.1整体电路设计

图3.1电子音乐盒整体电路

AT89C51为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。

要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期时间定时。

利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间,再对I/O口反相,就可在I/O脚上得到此频率的脉冲。

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器发声,放出歌曲。

 

3.2时钟电路设计

图3.2单片机时钟电路

 

单片机需要一个时间基准来为各种操作提供秩序,此电路叫时钟电路,采用不同的接线方式可以获得不同时钟电路,有内部时钟电路和外部时钟电路。

如上图所示,外部时钟电路会使电路复杂,故采用的是内部时钟电路。

时钟电路在单片机的外部通过XTAL1,XTAL2

这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器。

本系统采用的为12MHz的

晶振,一个机器周期为1us,C1,C2为30uF。

3.3复位电路设计

图3.3单片机复位电路

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

 

复位电路分为上电自动复位和按键手动复位,如图所示。

RST引脚是复位信号的输入端,复位信号是高电平有效.这次采用的是手动复位,复位通过电容C3和电阻R1来实现,按键手动复位是图中复位键来实现的。

 

3.4键盘电路设计

图3.4单片机键盘电路

 

键盘是由一组按压式或触摸式开关构成的阵列,是一种常用的输入设备。

键盘可分为编码式键盘和非编码式键盘两种。

编码键盘通过硬件电路产生被按按键的键码,这种键盘所需程序简单,但硬件电路复杂、价格昂贵通常不被单片机系统采用。

非编码键盘常用一些按键排列成行列矩阵,其硬件逻辑与按键编码不存在严格的对应关系,而要由所用的程序来决定。

非编码键盘的硬件接口简单,但是要占用较多的CPU时间,通常采用可编程键盘管理芯片来克服这个缺点。

本设计使用两种按键,一种是按键式非编码键盘和轻触式非编码开关。

3.5蜂鸣器电路设计

图3.5蜂鸣器电路

一般所指的蜂鸣器是以压电陶瓷为主要元件的。

压电陶瓷是一类有将压力与电流相互转换能力的特殊陶瓷。

这种能力缘于其特殊的晶体结构。

当压电陶瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在内部产生一个电流,并且电流的变化与压力的变化密切相关。

反之亦然。

所以利用这一特性,在压电陶瓷上通过一定频率的电流,就会引起压电陶瓷微小形变,这一形变带动空气发生振动,如果频率适当,就可以被人耳所听见,也就是产生了蜂鸣声。

4系统软件设计

4.1音调,节拍以及编码的确定

1.音调的确定

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同的频率组合,加以与拍数对应的延时,构成音乐。

了解音乐的一些基础知识,我们可以产生不同频率的音频脉冲即能产生音乐。

对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。

因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

2.节拍的确定

每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍。

如果1拍为0.4秒,1/4拍就是0.1秒,只要设定延迟时间就可得到节拍时间。

假设1/4拍为1delay,则1拍应为4delay,以此类推。

所以只要求得1/4拍的delay时间,其余的节拍就是它的倍数。

3.编码的确定

Do,re,mi,fa,so,la,xi分别编码为1-7,重音do编为8,重音re编为9,停顿编为0。

播放长度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。

音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。

以0xff作为曲谱的结束标志。

4.2主要部分软件程序分析

1.延时165ms,即十六分音符子函数

void delay1(uint z)

{

//延时165ms,十六分音符子函数,即十六分之一拍。

uint x,y;

for(x=z;x>0;x--)

for(y=19000;y>0;y--);

}

2.延时1ms子函数

void delay2(uint z) 

 

uint x,y;  

for(x=z;x>0;x--) 

for(y=110;y>0;y--);

}

3.定时器0中断子函数

void t0() interrupt 1 

TH0=a; 

TL0=b; 

BEEP=~BEEP; 

4.播放音乐子函数

void song() 

{

uint temp; 

uchar aa;//aa是简谱

 c=0; 

while

(1) 

 { 

//若按下k1,k1=0,扫描键盘后得到键值count2=1,则放第一首歌曲;若按下k2,k2=0,扫描键盘后得到键值count2=2,则放第二首歌曲;若按下k3,k3=0,扫描键盘后得到键值count2=3,则放第三首歌曲。

 if(k1==0)

{count2=1;}

if(k2==0)

{count2=2;}

if(k3==0)

{count2=3;}

if(count2==0) 

 {  break;  }  

if(count2==1)//选曲

 temp=table1[c];

if(count2==2) 

 temp=table2[c]; 

 if(count2==3) 

 temp=table3[c];

if(count2==4) 

 temp=table4[c]; 

 if(temp==0xff) 

break; 

 aa=temp/16; //取数的高4位

 

 if(aa!

=0) 

 { 

a=cuzhi[aa*2]; 

b=cuzhi[aa*2+1]; 

 } 

 else 

 { 

TR1=0; 

 BEEP=1;//关蜂鸣器

 } 

 delay1(temp%16); //取数的低4位

 TR1=0; //唱完一个音停10ms

BEEP=1;

delay2(10); 

TR1=1; 

 c++; 

 } 

 TR1=0; 

 BEEP=1; 

}

5.主函数

void main() 

TMOD=0x10;

 TH1=0; 

 TL1=0; 

 ET1=1; 

 EA=1;//开总中断

 EX1=1;//开外部中断

IT1=1;//下降沿时触发中断

 EX0=1;//开外部中断0 

 IT0=1;//下降沿时触发中断

while

(1)//大循环

 { 

 song(); 

 } 

 } 

 

5仿真与性能分析

5.1系统仿真过程

将用keil编写的源程序导入到protues中,当上电仿真时,单片机,蜂鸣器通电,待按下功能键选择歌曲后,蜂鸣器便可发声。

图5.1电子音乐盒仿真图

 

5.2仿真结果与分析

结果:

上电后,当按下k1键时,count2=1,蜂鸣器演奏第一首歌曲;当按下k2键时,count2=2,蜂鸣器演奏第二首歌曲;当按下k3键时,count2=3,蜂鸣器演奏第三首歌曲。

在演唱过程中,按下k4键时,音乐暂停,再次重新选择歌曲即可播放。

分析:

当按下k1键,产生外部中断,扫描键盘,得到键值count2=1,所以蜂鸣器演奏第一首乐曲,演奏其他乐曲时道理相同。

演奏乐曲时,单片机读音符,高四位用于产生不同频率的方波,不同频率的方波通过蜂鸣器发出不同的音调;低四位用于控制发音长度,定时器通过低四位计算出延时时间,即可控制发音长度。

 

6心得体会

这次单片机课程设计历时两个星期的时间,在这两个星期里我们体验了从设计、画板、编程、仿真到调试的整个过程,让我们体验了一次工程师的感觉。

首先我先到图书馆和网上查阅了大量有关蜂蜜器发声原理的资料,然后开始设计自己的方案,为了设计任务要求和抱着巩固知识的想法,我选择已经学习过的AT89C51单片机。

整天抱着电脑查资料、看资料是一件很痛苦的事情,一天下来眼都花了,但每学会一点新知识还是挺高兴的,有的时候知识遗忘了或者有很难理解的地方,就会向同学求助,他们都会毫无保留的帮助我。

设计完电路以后我便开始编写源程序,起初觉得无从下手,于是开始在网上搜集各种资料,研究和比较了各种源程序,选择了一种比较完整和易懂的源程序作为模板进行研究和校正。

几天的反复研究,终于弄懂了程序的各个模块,对照自己的设计任务对程序进行修改,终于没有了错误。

然后进行仿真调试,刚开始仿真时,蜂鸣器通电了但并不能发声,对按键进行任何操作都没有作用。

仔细对比和研究,在硬件电路和软件程序中均找到了不恰当的地方,又经过反复修改,最终蜂鸣器终于可以发声了。

但是仅仅只是k1键有效,其它按键无效。

猜想肯定是音乐播放程序有问题,仔细研究,才发现程序中没有涉及功能键的选择,于是自己编写了if程序,若有按下对应按键,则改变count2的值,进而选择不同歌曲。

最后,终于成功了!

这两周的时间说轻松也不轻松,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通让我高兴不已,当卡在某处时也确实是让人抓狂。

总之通过这次课设,我们不但复习了过去所学,并且学到了一些新东西。

更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。

通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。

而这些才是我们作为一名工科学生最宝贵的财富。

参考文献

[1]郭天祥.新概念51单片机C语言教程[M].北京:

电子工业出版社,2009.

[2]秦实宏,徐春辉MCS-51单片机原理及应用[M].武汉:

华中科技大学出版社,2010.6.

[3]李群芳,张士军,黄建.单片机微型计算机与接口技术[J].北京:

电子工业出版社,2008.

[4]李群芳单片机原理接口与应用[J].北京:

清华大学出版社,2005.

[5]高峰单片机微机应用系统设计及使用技术[M].北京:

机械工业出版社,1999.

[6]彭伟单片机C语言程序设计实例基于protues仿真[M].北京:

电子工业出版社,2007.

[7]张迎新单片机微型计算机原理、应用及接口技术[M].北京:

国防工业出版社,1999.

 

附录1系统原理图

附录2程序清单

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

sbitBEEP=P2^7;

sbitk1=P1^0;

sbitk2=P1^1;

sbitk3=P1^2;

sbitk4=P1^3;

charcount2;

uchara,b,c,aa,num;

ucharnum1,num2;

ucharcodetable1[]={

0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,

0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,

0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,

0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,

0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,

0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,

0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,

0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,

0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,

0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,

0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,

0x42,0x63,0x83,0x83,0x91,0x91,

0x61,0x71,0x82,0x71,0x62,0x0A2,0x71,0x76,

0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,

0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0x62,0x53,

0x42,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1