单片机课程设计报告-数字音乐盒精品.doc_第1页
单片机课程设计报告-数字音乐盒精品.doc_第2页
免费预览已结束,剩余33页可下载查看

下载本文档

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

文档简介

沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:单片机系统综合课程设计单片机系统综合课程设计 课程设计题目:数字音乐盒的设计与实现数字音乐盒的设计与实现 院(系):计算机学院 专 业: 班 级: 学 号: 姓 名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。不予通过。报告和电子数据必须作为实验现象重复的关键依据。 沈阳航空航天大学课程设计报告 i 学术诚信声明 本人声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指 导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别 加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表 或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一 同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明 并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本 教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后 果。 本人签名: 日期: 年 月 日 沈阳航空航天大学课程设计报告 ii 沈阳航空航天大学沈阳航空航天大学 课课程程设设计计任任务务书书 课程设计名称xxxx 课课程程设设计计专业 学生姓名班级学号 题目名称 起止日期年月日起至年月日止 课设内容和要求: 参考资料: 教教研研室室审审核核意意见见: 教教研研室室主主任任签签字字: 指导教师(签名)指导教师(签名) 年月日 学学 生(签名)生(签名)年月日 沈阳航空航天大学课程设计报告 iii 课程设计总结:课程设计总结: 在不知不觉中两个星期过去了,回想起来,真是一言难尽,期间既有无奈辛酸, 又有成功的喜悦。学了一学期的单片机,对单片机的硬件设计,软件设计掌握的 掌握程度远远不够,但经过这段时间努力,在老师的耐心指导下,从设计、论证、 修改到编程、调试,终于使我的设计完成了。使我无论在理论基础知识还是在实 际的操作能力上都有了较大的提高,更让我懂得了一分耕耘一分收获的道理。 通过本次音乐盒的设计,极大地激发了我对单片机的学习兴趣,同时也让我 学习到了很多新的东西,比如单片机的定时器功能,led 的数码显示,功能键盘 的设计等,这些都让我受益匪浅。这其中有以前书本上学习过的知识,也有很多 未曾注意到得新知识,比如如何将乐谱转换成机器能识别的代码,并让机器演奏 音乐这一点,课本上并未涉及,但通过查找资料,让我学会了如何实现,我认为 更主要的是让我明白了如何主动学习。这些曾使我的设计出错的问题,通过自己 的努力,老师指导和同学的帮助,终于被我一个一个的克服了,顺利把硬件实物 顺利做好,把软件调试完成了。 通过此次课程设计,让我明白了很多,不光让我明白了很多新的知识,更让 我懂得了如何学习,让我知道了如何做人,这一点主要感谢我的课设指导老师, 是他一直在教导我,鼓励我,才让我顺利完成了任务,在这里我表示衷心的感谢。 一分耕耘一分收获,只要真心付出了,就一定会有所回报。我愿在未来的学 习和研究过程中,以更加丰厚的成果来答谢曾经帮助过我的老师,同学和朋友. 沈阳航空航天大学课程设计报告 iv 目目 录录 1 概述概述.1 1.1 数字音乐盒简介 .1 1.2 发声原理介绍 .1 2 音乐盒总体设计音乐盒总体设计.4 2.1 设计要求 .4 2.2 方案论证与设计 .4 2.2.1 总体方案设计.4 2.2.2 led 驱动模块设计 5 2.2.3 系统总体结构框图5 3 系统硬件设计系统硬件设计.6 3.1 管脚说明 .6 3.2 振荡器特性 .7 3.3 led 显示器的结构 8 3.4 led 显示器工作原理 8 3.5 键盘.9 3.6 时钟电路模块.9 3.7 音频输出部分 .11 3.8 整体电路设计 .12 4 子函数描述子函数描述.13 4.1 定时器中断设计: .13 4.2 数码管显示模块设计: .13 4.3 键盘控制模块设计: .14 4.4 蜂鸣器演奏子函数模块设计: .16 4.5 整体流程图设计: .18 5 调试与结果分析调试与结果分析.19 5.1 调试步骤及方法 .19 5.2 实验结果 .19 参考文献参考文献.20 附附 录(关键部分程序清单)录(关键部分程序清单).21 沈阳航空航天大学课程设计报告 1 1 概述 1.1 数字音乐盒简介数字音乐盒简介 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟 塔报时,而将大小的钟表上机械装置,被称为 “可发出声音的组钟 ”。 音乐盒 300 多年的产品发展,同时也是人类文明300 多年发 展的历史 鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发 展现状,它也成了时代的一面镜子。 现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏 一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念 ,或为了居室的美化,等等,而得到众多品位人士的追求。 音乐盒的分类 : 18 音,30 音,这些是代表音乐盒机芯的音数,其实也就是机芯里面,那 一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富, 曲子也就是越好听,同时曲子的播放时间也相应长一点。一般18 音的曲子 为 25 秒左右,30 音的曲子为 35 秒左右。50 音的差不多有 60 秒。目前来说, 一般市面上卖的 “爱丽丝”都是 18 音的,其次是 30 音,50 音。 此次设计的目的就是运用单片机来设计一套控制系统,来完成音乐播放的控 制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。 1.2 发声原理介绍发声原理介绍 首先介绍蜂鸣器的发声原理。众所周知, 音调和音调的时长 是音符的主 要特征,通过产生不同的音调和音调的时长可以奏出不同的音符来。然后一个 个音符串联在一起就可以产生美妙的音乐来了。 音调主要由声音的频率决定 , 通过单片机给蜂鸣器不同的音频脉冲来产生不同的音调。要产生音频脉冲,只 要算出某一音频的周期(周期 =1/频率),然后将此周期除以 2 即为半周期 的时间。利用单片机的定时器工作在计数模式mode1 下,设定 th0 和 tl0 的 沈阳航空航天大学课程设计报告 2 值以产生这半个周期,每当计时到达时就将输出脉冲的i/o(即接蜂鸣器的 那个管脚)反相,然后重复计时此半个周期再对i/o 反相,就可以在 i/o 引 脚上得到此频率的脉冲。 下面附上不同音调所对应的频率表: 音符频率(hz)/初值( s )音符频率(hz)/初值( s ) 低 1do262/63627中 1do 523/64580 高 1do1042/65056低 2re 294/63835 中 2re589/64687高 2re 1245/65134 低 3m330/64021中 3m 661/64780 高 3m1318/65157低 4fa 350/64107 中 4fa700/64822高 4fa 1397/65178 低 5so393/64264中 5so 786/64900 高 5so1568/65217低 6la 441/64402 中 6la882/64969高 6la 1760/65252 低 7si495/64526中 7si 990/65031 表表 1.1 c 调各音符频率与计数初值调各音符频率与计数初值 t 的对照表的对照表 节拍的产生: 音乐中的节拍用延时时间产生。例如, 1 拍=0.4s,1/4 拍=0.1s,以此 类推。假设 1/4 拍执行一次延时程序,则 1/2 拍就执行两次延时程序,所以 只要求出 1/4 拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也 进行了编码,并且计算了乐谱节拍编程时的延时时间。 按 1/4 拍为一个延时时间的节拍编码与节 拍对应的表 按 1/8 拍为一个延时时间的节拍编码与节 拍对应的表 节拍编码节拍节拍编码节拍节拍编码节拍节拍编码节拍 11/466/411/866/8 22/488/422/888/8 33/4a10/433/8a10/8 44/4c12/444/8c12/8 55/4f15/455/8 表表 1.2 节拍数编码表节拍数编码表 沈阳航空航天大学课程设计报告 3 乐谱节拍1/4 拍的延时时间乐谱节拍1/8 拍的延时时间 4/4125 ms4/462 ms 3/4187 ms3/494 ms 2/4250 ms2/4125 ms 表表 1.3 乐谱节拍编程时的时间延时表乐谱节拍编程时的时间延时表 如果没有必要进行精确的计时,可以用for 循环空语句来粗略计时即可 (本次课设选用此法)。当单片机使用11.0592mhz 的晶振时, for(i=0;i= 1; / 显示下一位 4.3 键盘控制模块设计:键盘控制模块设计: 此模块主要由键盘扫描程序组成,在主函数中通过 switch()语句根据键盘 扫描函数的返回值来进入相应的功能函数中。 扫描程序具体为先扫描列找出按键所在的列再扫描行找出按键所在的行,列 为高四位行为低四位,因此有键值=列*4+行,然后等待键位释放,最后根据相应 的键码值返回按键对应的值,若无按键则返回 0xff。 流程图如下: 沈阳航空航天大学课程设计报告 15 开始 扫描列 有低电平 扫描行 是 计算键值 结束 返回键 值 下一列 图图 4.24.2 键盘扫描流程图键盘扫描流程图 函数代码如下: unsigned char getkey() unsigned char pos; unsigned char i; unsigned char k; i = 6; pos = 0x20; / 找出键所在列 do 沈阳航空航天大学课程设计报告 16 outbit = pos; pos = 1; k = in while (-i != 0) / 键值 = 列 x 4 + 行 if (k != 0) i *= 4; if (k else if (k else if (k outbit = 0; do delay(1); while (testkey(); / 等键释放 return(keytablei); / 取出键码 else return(0xff); 4.4 蜂鸣器演奏子函数模块设计:蜂鸣器演奏子函数模块设计: 本模块通过循环获取频率和节拍数组来使蜂鸣器发出不同的音调以及延时音调时 间,子函数如下: void yanzou(unsigned char pinlv,unsigned int jiepai)/播放乐曲 unsigned char pl; unsigned int jp; 沈阳航空航天大学课程设计报告 17 for(jp=0;jp xdata unsigned char outbit _at_ 0x8002; / 位控制口 xdata unsigned char outseg _at_ 0x8004; / 段控制口 xdata unsigned char in _at_ 0x8001; / 键盘读入口 sbit buzzer=p10; /蜂鸣器 unsigned char displaydata10; /数码管显示码 unsigned char code ledmap = / 共阴极八段管显示码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71; unsigned char code wema= 0x20,0x10,0x08,0x04,0x02,0x01 ;/位选,0-5 位数码管 code unsigned char keytable = / 键码定义 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05, 0x08, 0x00, 0x01, 0x04, 0x07 ; unsigned char code pinlv1=131,110,98, 87, 73, 87, 110,98, 131,0,110,98, 87, 73, 73, 65, 98, 87,87,87,73,65,73,65,55,58,65,73,65,87,110,98,87,73,110,131,110,98,87,65,73,73,0,87, 65,65,73,82,87,98,87,73,131,110,98,0,110,98,87,73,65,55,58,65,73,87,65,65,; unsigned int code 沈阳航空航天大学课程设计报告 22 jiepai1=110,131,147,494,196,165,131,294,440,1,131,147,165,588,196,440,294,660,3 30,165,196,880,588,220,262,124,110,196,220,330,131,147,495,196,262,220,131,147,1 65,22,0,784,392,2,660,660,220,196,175,330,588,495,196,110,131,147,2,131,147,330,3 92,440,524,247,220,196,165,880,880; unsigned char code pinlv2=66 ,55 ,44, 55, 49, 65, 55, 44, 37, 37, 65, 37, 41, 44, 41, 37, 29, 33, 44, 58, 65, 44; unsigned int code jiepai2=220,262,350,262,587,262,247,660,587,880,262,330,392,440,392,349,2640,6 98,784,492,440,660; unsigned int num=0; /计数到 1s unsigned int s=0,i=0; unsigned char flag=0; unsigned char keyvalue=0; unsigned char key; unsigned char k=0; unsigned char t=0; unsigned char pos=0x04; void delay(unsigned char cnt);/延时函数 void digdisplay(); /数码管显示函数 void timerconfiguration(); /配置定时器 unsigned char getkey(); /获取键值 unsigned char testkey(); void keydown(); void yanzou(unsigned char pinlv,unsigned int jiepai);/播放音乐 void music_1(); /第一首乐曲 沈阳航空航天大学课程设计报告 23 void music_2(); /第二首乐曲 void main() /主函数 displaydata0=ledmap0; displaydata1=ledmap0; displaydata2=ledmap0; timerconfiguration(); while (1) displaydata1=ledmaps/10; displaydata2=ledmaps%10; digdisplay(); if(testkey() tr0=1; keyvalue=getkey(); displaydata0=ledmapkeyvalue; switch(keyvalue) case 1 : music_1();keyvalue=0;tr0 = 0;break; case 2 : music_2();keyvalue=0;tr0 = 0;break; void yanzou(unsigned char pinlv,unsigned int jiepai)/播放乐曲 沈阳航空航天大学课程设计报告 24 unsigned char pl; unsigned int jp; for(jp=0;jp= 1; / 显示下一位 void music_1() /第一

温馨提示

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

评论

0/150

提交评论