单片机课程设计数字音乐盒的设计_第1页
单片机课程设计数字音乐盒的设计_第2页
单片机课程设计数字音乐盒的设计_第3页
单片机课程设计数字音乐盒的设计_第4页
单片机课程设计数字音乐盒的设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告 题目: 数 字 音 乐 盒 设 计 学生: 指导老师: 赵 国 库 专业: 自 动 化 1 班 学号: 2015年7月数字音乐盒的设计摘要:本次课设是基于at89c51单片机的可控数字音乐盒的程序设计。该音乐盒是一个依据单片机技术原理,通过proteus仿真软件对硬件电路进行仿真制作以及利用keil软件对音乐盒源程序进行c语言编译,而设计制作出的一个多功能数字音乐盒。该音乐盒通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。该程序通过把乐谱转化成相应的定时常数来驱动发音设备演奏出悦耳动听的音乐。本音乐盒一共设计了三首歌曲,同时还设计了lcd歌曲的显示。在

2、按下启动键后,音乐盒开始播放音乐,同时还设计了上一曲下一曲和暂停键,使音乐盒能够播放出美妙的音乐。关键词:数字音乐盒;at89c51;proteus;kell;lcd1. 背景介绍音乐盒的起源可以追溯到欧洲文艺复兴时期,当时为教会的钟塔报时,而将大小的机械装置称为可“发声音的组钟”。进入20世纪,随着日本sankyo在音乐盒市场的突起,音乐盒开始受到国人的关注,尤其是年轻学生。每个时期的音乐盒都是一面镜子,折射出社会的心态和文明程度。2. 音乐盒的总体设计2.1设计的基本要求1. 利用i/o口产生一定频率的方波,驱动蜂鸣器,发出不同音调,从而演奏音乐(最少三首音乐,每首不少于30s);2. 采

3、用lcd显示:1) 开机时有英文欢迎提示字符,播放时显示歌曲名称;2) 可以通过按键选择歌曲,上一曲,下一曲,暂停;3) 具有循环播放的功能。2.2硬件结构at89c51芯片:主控制器;lcd显示屏:显示播放歌曲的名称及序号;晶振:给单片机正常工作提供稳定的时钟信号,电路为12mhz晶振频率工作,起振电路中c1、c2均为30pf。电容:保持一个恒定的偏执电压供给;喇叭:发出声音,p3.7控制喇叭电源:供电;电阻;控制电路;开关:控制音乐,p2.7控制lcd显示屏的切换,p1.0 ,p1.2控制音乐的切换,p1.2歌曲暂停。3. 3.音乐盒总体设计3.1 音乐盒的主体结构该音乐盒主要是通过控制单

4、片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐,程序设计的主要部分包括简谱音调,计时及键盘扫描。如图:at89c51喇叭晶振复位电路 本设计是一个基于at89c51系列单片机的数字音乐盒,一共设计了三首不同风格的歌曲,在播放歌曲同时lcd显示屏随着歌曲的切换变化而变化。一共设计了四个开关,一个总开关按钮,一个上一曲按钮,一个下一曲按钮,一个暂停按钮。3.2音乐盒总设计框图at89c51通过前面的介绍,本文的设计思路已经基本清晰,总设计框图如下:开关键lcd显示屏晶振复位电路歌曲控制按键喇叭3.3各部分硬件的作用硬件除了at89c51芯片外,主要的就是时钟振荡电路、lcd显示器

5、的设计。3.3.1时钟振荡电路at89c51中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal1和xtal2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容c1、c2接在放大器的反馈回路中构成并联振荡电路。对外接电容c1,c2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易、程序及温度稳定性1。振荡器电路图如下:3.3.2 lcd显示屏的设计图开始取第一首歌字符串写(x,y)字符=0?查忙写上一个字符串写下一个字符串结束写字符串 4. 音调和节拍的设计一般说来,单片

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

7、cd、de、fg、ga、ab两音之间隔着一个黑键,他们之间的距离就是全音;ef、bc两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成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)的一倍。

8、利用at89c51的内部定时器使其工作在计数器模式mode1下,改变计数值th0及tl0以产生不同频率的方法。此外结束符和休止符7可以分别用代码00h和ffh来表示,若查表结果为00h,则表示曲子终了;若查表结果为ffh,则产生相应的停顿效果。在简谱中,数字上面带一个点就是高8度,两个点代表高16度。数字下面带一个点就是低8度,两个点代表低16度。若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少秒,并没有严

9、格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。根据节拍表编定所需节拍代码。5.设计流程图总体初始化显示欢迎界面 根据歌曲序号显示歌曲歌曲1歌曲2歌曲3歌曲结束符休止符 ny歌曲号加1时间清零设定时器初值yn延时取音调,节拍指针指向下一组音调每次到设定时间p1.2取反一次,产生音调歌曲3n指向下一组音调节拍=r7?按键处理lcd显示歌曲名歌曲设为1 y6.proteus仿真图像7主程序:#include #include player.h#include lcd.hvoid mai

10、n()sounder=0;lcdinit();lcd_display(welcome!,);delay_ms(2000);playerinit();while(1)if(btn_next=0)+i;i%=3;pointer=0;cnt=0;th0=(65536-50000)/256;tl0=(65536-50000)%256;if(status=0)disp_cnt+;status_display();delay_ms(600);else if(btn_last=0)if(i=0)i=2;else -i;pointer=0;cnt=0;th0=(65536-50000)/256;tl0=(65

11、536-50000)%256;if(status=0)disp_cnt+;status_display();delay_ms(600);else if(btn_pause=0)ispause=!ispause;if(ispause=1 & et0=1) sounder=0; et0=0; tr0=0; et1=0; tr1=0; status=0;else if(ispause=0 & et0=0)et0=1;tr0=1;et1=1;tr1=1;status=1;disp_cnt+;status_display();delay_ms(600);status_display();7.1音乐程序#

12、include player.h#include lcd.h#include static u16 code note=0,63628,63835,64021,64103,64260,64400,64524,0,64580,64684,64777,64820,64898,64968,65030;u8 code littlestar=0,0,0,0,0,0,0,0,011,0,011,0,015,0,015,0,016,0,016,0,015,015,0,0,014,0,014,0,013,0,013,0,012,0,012,0,011,011,0,0,015,0,015,0,014,0,014

13、,0,013,0,013,0,012,012,0,0,015,0,015,0,014,0,014,0,013,0,013,0,012,012,0,0,011,0,011,0,015,0,015,0,016,0,016,0,015,015,0,0,014,0,014,0,013,0,013,0,012,0,012,0,011,011,0,0,;u8 code hoshinoarika=0,0,0,0,0,0,0,0,011,011,07,07,011,011,013,013,07,07,07,07,0,0,0,0,06,06,05,05,06,06,011,011,05,05,05,05,0,0

14、,0,0,04,04,03,03,04,04,011,011,07,07,07,07,05,05,0,0,06,06,07,07,011,011,013,013,012,012,012,012,0,0,0,0,011,011,07,07,011,011,013,013,07,07,0,0,05,05,0,0,06,06,07,07,011,011,012,012,013,013,0,0,013,013,0,0,014,014,013,013,012,012,011,011,07,07,013,013,05,05,07,07,06,06,06,06,0,0,0,0;u8 code littlea

15、pple=0,0,0,0,0,0,0,0,011,0,011,0,011,0,011,0,011,0,011,0,011,0,0,0,011,0,011,0,011,0,011,0,011,0,011,0,011,0,0,0,05,0,05,0,05,0,05,0,05,0,06,0,05,0,06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,011,0,011,0,011,0,011,0,011,0,011,0,011,0,0,0,011,0,011,0,011,0,011,0,011,0,011,0,011,0,0,0,05,0,05,0,05,0,05,0

16、,05,0,06,0,05,0,06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,06,0,06,0,06,0,07,0,011,0,013,0,012,0,011,0,07,0,07,0,07,0,06,0,07,0,0,0,0,0,0,0,05,0,05,0,05,0,06,0,07,0,012,0,011,0,07,0,06,0,06,0,06,0,05,0,06,0,0,0,0,0,0,0,06,0,06,0,06,0,07,0,011,0,013,0,012,0,011,0,07,0,07,0,07,0,06,0,07,0,0,0,0,0,0,0,05

17、,0,05,0,05,0,06,0,07,0,012,0,011,0,07,0,06,0,0,0,06,0,0,0,06,0,0,0,06,0,0,0,013,0,0,0, 011,0,0,0, 012,0,0,0, 06,0,0,0, 013,0,0,012,011,0,012,0,06,0,0,0,0,0,0,0,013,0,0,0, 011,0,0,0, 012,0,0,0, 012,0,013,0, 015,0,012,0,07,0,0,0,011,0,0,0,011,0,07,0,06,0,0,0,07,0,011,0,012,0,0,0,05,0,0,0,016,0,015,0,0

18、13,0,0,0,013,0,0,0,0,0,012,0,011,0,0,0,013,0,0,0,012,0,013,0,012,0,015,0,0,0,0,0,015,0,015,0,015,0,015,0,015,0,0,0,013,0,0,0, 011,0,0,0, 012,0,0,0, 06,0,0,0, 013,0,012,0,011,0,012,0,06,0,0,0,0,0,0,0,013,0,0,0, 011,0,0,0, 012,0,0,0, 012,0,013,0, 015,0,012,0,07,0,0,0,011,0,0,0,011,0,07,0,06,0,0,0,07,0

19、,011,0,012,0,0,0,05,0,0,0,016,0,015,0,013,0,0,0,013,0,0,0,0,0,012,0,011,0,0,0,013,0,0,0,012,0,0,0,05,0,0,0,06,0,0,0,06,0,0,011,06,0,0,0,0,0,0,0;static u16 syllable=0;u8 i=2;u16 pointer=0;u8 cnt=0;u8 ispause=0;song songs3;void playerinit()tmod=0x11;th0=(65536-50000)/256;tl0=(65536-50000)%256;th1=syll

20、able/256;tl1=syllable%256;ea=1;et0=1;et1=0;tr0=1;tr1=0;songs0.buff=littlestar;songs0.len=sizeof(littlestar)/sizeof(u8);songs0.rythm=2;strcpy(songs0.name,littlestar);songs1.buff=hoshinoarika;songs1.len=sizeof(hoshinoarika)/sizeof(u8);songs1.rythm=4;strcpy(songs1.name,hoshinoarika);songs2.buff=littleapple;songs2.len=sizeof(littleapple)/sizeof(u8);songs2.rythm=1;strcpy(songs2.name,littleapple);void t0handler() interrupt 1th0=(65536-50000)/256;tl0=(65536-50000)%256;if(cnt0) disp_cnt-;else return;lcd_display(songsi.name,_statusstatus);8. 总结8.1系统总结1. 本次设计对音乐盒的历史有了了解,音乐盒300多年前都出现了,不过是机械的不是数字的,而随着历史

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论