数字音乐盒设计说明.docx
- 文档编号:17878378
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:35
- 大小:93.80KB
数字音乐盒设计说明.docx
《数字音乐盒设计说明.docx》由会员分享,可在线阅读,更多相关《数字音乐盒设计说明.docx(35页珍藏版)》请在冰点文库上搜索。
数字音乐盒设计说明
文理学院
综合课程设计
(一)
IntegratedCurriculumDesign
(1)
所在院系
信息工程系
专业名称
电子信息工程
班级
1001
题目
数字音乐盒设计
指导教师
成员
完成时间
2012.12.28
一、设计任务及要求:
设计任务:
设计一个数字音乐盒程序。
要求:
预写3个曲子
可以实现播放/暂停、上一曲/下一曲功能
有开机欢迎词,播放曲目时LCD屏幕上显示曲目名称
指导教师签名:
2012年12月28日
二、指导教师评语:
指导教师签名:
2012年12月28日
三、成绩
验收盖章
2012年12月28日
数字音乐盒的设计
1设计目的
(1)熟悉用于单片机C语言的一些用法。
(2)掌握单片机的基本功能。
(3)了解程序是如何控制硬件。
2设计思路
音乐部分用控制I/O口高低电平变化的快慢来改变发出音符的频率(即不同唱名的音)
按键部分利用中断来控制播放/暂停、上曲/下曲功能
3设计过程
3.1方案论证
该程序总体分为三个部分:
音乐部分、按键部分、显示部分。
音乐部分实现不用频率不同节拍的音构成完整曲目;
按键部分实现播放/暂停(key1)、上曲/下曲功能;(key2/key3)
显示部分实现开机问候语和曲目播放中曲名的显示;
3.2程序设计
音符部分:
while(x { speaker=1; delayus(uintb); speaker=0; delayus(uintb) } x=0; 按键部分(播放/暂停) voidkeyscan() { if(key1==0) { delayms(10); if(key1==0) { ET0=~ET0;//通过控制中断开关ET0来实现播放暂停 } } 上一曲/下一曲部分 } voidT0_time()interrupt1 { LCD部分程序(显示歌曲状态为暂停) while (1) {if(key1==0) { delayms(10); if(key1==0) } LCD 部分程序 break; } } voidINT0_time()interrupt0 { keyscan(); } 按键部分(上曲/下曲) { key1部分 if(key2==0) { delayms(10); if(key2==0) { n--; if(n==0) n=3;}} if(key3==0) { delayms(10); if(key3==0) { n++; if(n==4) n=1;}} } while(x { speaker=1; delayus(uintb); if(n! =c)//c填的是曲目序号 break; speaker=0; delayus(uintb); if(n! =c) break; } 4程序调试与结果分析 4.1程序调试 在程序没有写完之前,如果前面声明了子函数,但是后面没有用到的话,会出现警告。 只有程序写完整了警告才会不再出现;还有其中key=1和key==1的意义不同,编译之后系统也判为警告,但实际上只能写作key==1,写程序时应注意。 4.2结果分析 在程序只完成了音乐部分和按键部分时(即没有加入显示部分时),用proteus仿真时反应速度较理想。 在加入显示部分后,播放第一曲时按下“下一曲”键会过几秒才调到第二曲;播放曲目时按下“播放/暂停”键大概超过半秒才会暂停,而从暂停到继续播放时快速点击按键即可。 上述情况仍存在,但不影响音乐盒基本功能。 5设计体会 通过这次对数字音乐盒的设计与制作,我大概明白了设计一个具有一定功能的产品的部分基本步骤,了解到自己才刚起步,还有许多东西等着我去学习,我会在不断学习与实践中累积经验,向更高的目标迈进。 参考文献(至少5篇) [1]新概念51单片机C语言教程(郭天祥著) [2]互联网.baidu. [3]老师、同学的指导 附件 完整程序(分段显示程序) #include #defineucharunsignedchar #defineuintunsignedint ucharcodetable[]="WELCOME"; ucharcodetable1[]="THEMUSICBOX"; ucharcodetable2[]="STATE: ON"; ucharcodetable3[]="STATE: STOP"; ucharcodetable4[]=""; ucharcodetable5[]="MUSICNO.1"; ucharcodetable6[]="MUSICNO.2"; ucharcodetable7[]="MUSICNO.3"; sbitspeaker=P2^7; sbitkey1=P2^0; sbitkey2=P2^1; sbitkey3=P2^2; sbitlcden=P3^4; sbitlcdrs=P3^5; ucharx,a,n=1,num,f,; uinty; voiddelayus(uint); voiddelayms(uint); voidmusicalnotea(uchar,uint); voidmusicalnoteb(uchar,uint); voidmusicalnotec(uchar,uint); voidwrite_(uchar) { lcdrs=0; P1=; delayms(5); lcden=1; delayms(5); lcden=0; } voidwrite_data(uchardate) { lcdrs=1; P1=date; delayms(5); lcden=1; delayms(5); lcden=0; } voidclean2() { write_(0x80+0x40); for(num=0;num<16;num++) { write_data(table4[num]); delayms(5); } } voidclean1() { write_(0x80); for(num=0;num<16;num++) { write_data(table4[num]); delayms(5); } } voidkeyscan() { if(key1==0) { delayms(10); if(key1==0) { ET0=~ET0; } } if(key2==0) { delayms(10); if(key2==0) { n--; if(n==0) n=3; } } if(key3==0) { delayms(10); if(key3==0) { n++; if(n==4) n=1; } } } voidinit() {lcden=0; write_(0x38); write_(0x0c); write_(0x06); write_(0x01); TMOD=0x11; EA=1; ET1=1; TR1=1; ET0=0; TR0=1; IT0=1; EX0=1; x=0; } voidinternationalsong() { musicalnotea(3,269);//低A musicalnotea(9,238);//低B musicalnotea(18,198);//D delayus(1000); x=0; musicalnotea(6,198);//D musicalnotea(12,223);//C musicalnotea(12,238);//低B musicalnotea(18,269);//低A musicalnotea(6,238);//低B delayus(1000); x=0; musicalnotea(3,238);//低B musicalnotea(15,223);//C musicalnotea(3,238);//低B musicalnotea(3,223);//C musicalnotea(18,238);//低B delayus(1000); x=0; musicalnotea(6,238);//低B musicalnotea(18,269);//低A delayus(1000); x=0; musicalnotea(6,269);//低A musicalnotea(24,298);//低G delayms(600); x=0; musicalnotea(12,198);//D musicalnotea(18,148);//G musicalnotea(6,158);//#F musicalnotea(6,133);//A musicalnotea(6,148);//G musicalnotea(6,198);//D musicalnotea(6,238);//低B musicalnotea(18,178);//E delayus(1000); x=0; musicalnotea(6,178);//E musicalnotea(12,223);//C delayms(300); x=0; musicalnotea(6,178);//E musicalnotea(18,133);//A musicalnotea(6,148);//G musicalnotea(6,158);//#F musicalnotea(6,178);//E musicalnotea(6,198);//D musicalnotea(6,223);//C musicalnotea(24,238);//低B delayms(600); x=0; musicalnotea(12,198);//D musicalnotea(18,148);//G musicalnotea(6,158);//#F musicalnotea(6,133);//A musicalnotea(6,148);//G musicalnotea(6,198);//D musicalnotea(6,238);//低B musicalnotea(18,178);//E delayus(1000); x=0; musicalnotea(6,178);//E musicalnotea(6,223);//C musicalnotea(6,178);//E musicalnotea(6,133);//A musicalnotea(6,148);//G musicalnotea(12,158);//#F musicalnotea(12,133);//A musicalnotea(12,111);//高C musicalnotea(12,158);//#F musicalnotea(30,148);//G delayms(300); x=0; musicalnotea(9,118);//B musicalnotea(3,133);//A musicalnotea(24,158);//#F musicalnotea(6,178);//E musicalnotea(6,158);//#F musicalnotea(6,148);//G musicalnotea(6,178);//E musicalnotea(24,158);//#F musicalnotea(12,198);//D musicalnotea(6,210);//#C musicalnotea(6,198);//D musicalnotea(18,178);//E delayus(1000); x=0; musicalnotea(6,178);//E musicalnotea(18,133);//A musicalnotea(6,148);//G musicalnotea(30,158);//#F delayms(300); x=0; musicalnotea(12,133);//A delayus(1000); x=0; musicalnotea(18,133);//A musicalnotea(6,158);//#F musicalnotea(6,198);//D delayus(1000); x=0; musicalnotea(6,198);//D musicalnotea(6,210);//#C musicalnotea(6,198);//D musicalnotea(24,118);//B musicalnotea(6,148);//G musicalnotea(6,178);//E musicalnotea(6,158);//#F musicalnotea(6,148);//G musicalnotea(12,158);//#F musicalnotea(12,133);//A musicalnotea(12,148);//G musicalnotea(12,178);//E musicalnotea(30,198);//D delayms(300); x=0; musicalnotea(9,118);//B musicalnotea(3,133);//A musicalnotea(24,148);//G musicalnotea(18,198);//D musicalnotea(6,238);//低B musicalnotea(24,178);//E musicalnotea(6,223);//C delayms(300); x=0; musicalnotea(9,133);//A musicalnotea(3,148);//G musicalnotea(24,158);//#F musicalnotea(12,178);//E musicalnotea(12,198);//D delayus(1000); x=0; musicalnotea(30,198);//D delayms(300); x=0; musicalnotea(12,198);//D musicalnotea(24,118);//B musicalnotea(12,133);//A musicalnotea(12,198);//D musicalnotea(24,148);//G musicalnotea(18,158);//#F delayus(1000); x=0; musicalnotea(6,158);//#F musicalnotea(18,178);//E musicalnotea(6,188);//#D musicalnotea(12,178);//E musicalnotea(12,133);//A delayus(1000); x=0; musicalnotea(30,133);//A delayms(300); x=0; musicalnotea(9,118);//B musicalnotea(3,133);//A musicalnotea(24,148);//G musicalnotea(18,198);//D musicalnotea(6,238);//低B musicalnotea(24,178);//E musicalnotea(6,223);//C delayms(300); x=0; musicalnotea(9,133);//A musicalnotea(3,148);//G musicalnotea(24,158);//#F musicalnotea(12,178);//E musicalnotea(12,198);//D musicalnotea(36,118);//B delayus(1000); x=0; musicalnotea(12,118);//B musicalnotea(24,99);//高D musicalnotea(12,111);//高C musicalnotea(12,118);//B musicalnotea(18,133);//A musicalnotea(6,118);//B musicalnotea(12,111);//高C delayms(300); x=0; musicalnotea(6,111);//高C musicalnotea(18,118);//B delayus(1000); x=0; musicalnotea(6,118);//B musicalnotea(18,133);//A delayus(1000); x=0; musicalnotea(6,133);//A while(x<24)//G { speaker=1; delayus(148); if(n! =1) break; speaker=0; delayus(148); if(n! =1) break; } if(n>1) n--; if(n<1) n++; x=0; n++; } voidicegirl() { delayms(800); x=0; musicalnoteb(6,210);//#C musicalnoteb(6,238);//B musicalnoteb(4,210);//#C musicalnoteb(16,178);//E musicalnoteb(4,423);//低#C musicalnoteb(4,210);//#C musicalnoteb(4,238);//B musicalnoteb(4,210);//#C musicalnoteb(4,178);//E musicalnoteb(4,158);//#F musicalnoteb(4,210);//#C musicalnoteb(4,238);//B musicalnoteb(6,210);//#C musicalnoteb(6,238);//B musicalnoteb(4,210);//#C musicalnoteb(16,178);//E musicalnoteb(4,423);//低#C musicalnoteb(4,210);//#C musicalnoteb(4,238);//B musicalnoteb(4,210);//#C musicalnoteb(8,140);//#G musicalnoteb(8,158);//#F musicalnoteb(6,210);//#C musicalnoteb(6,238);//B musicalnoteb(4,210);//#C musicalnoteb(16,178);//E musicalnoteb(4,538);//低低A musicalnoteb(4,210);//#C musicalnoteb(4,238);//B musicalnoteb(4,210);//#C musicalnoteb(4,178);//E musicalnoteb(4,158);//#F musicalnoteb(4,210);//#C musicalnoteb(4,238);//B musicalnoteb(6,210);//#C musicalnoteb(6,238);//B musicalnoteb(4,210);//#C musicalnoteb(12,178);//E musicalnoteb(4,210);//#C musicalnoteb(4,538);//低低A musicalnoteb(4,210);//#C musicalnoteb(6,140);//#G delayus(1000); x=0; musicalnoteb(6,140);//#G musicalnoteb(4,158);//#F musicalnoteb(2,269);//低A musicalnoteb(2,238);//低B musicalnoteb(2,223);//C musicalnoteb(2,198);//D musicalnoteb(4,448);//低C musicalnoteb(4,198);//D musicalnoteb(4,178);//E musicalnoteb(8,398);//低D musicalnoteb(4,148);//G musicalnoteb(4,158);//#F musicalnoteb(4,198);//D musicalnoteb(8,178);//E musicalnoteb(4,358);//低E musicalnoteb(4,198);//D musicalnoteb(4,398);//低D musicalnoteb(4,178);//E musicalnoteb(4,158);//#F musicalnoteb(4,148);//G musicalnoteb(12,118);//B delayus(1000); x=0; musicalnoteb(4,118);//B musicalnoteb(4,148);//G delayus(1000); x=0; musicalnoteb(2,148);//G musicalnoteb(2,118);//B musicalnoteb(4,148);//G musicalnoteb(4,158);//F musicalnoteb(20,178);//E delayus(1000); x=0; musicalnoteb(4,178);//E musicalnoteb(4,148);//G musicalnoteb(4,118);//B musicalnoteb(12,89);//高E delayus(1000); x=0; musicalnoteb(4,89);//高E musicalnoteb(4,99);//D delayus(1000); x=0; musicalnoteb(2,99);//高D musicalnoteb(2,89);//高E musicalnoteb(4,99);//高D musicalnoteb(4,133);//A musicalnoteb(24,118);//B musicalnoteb(8,79);//高#F musicalnoteb(12,74);//高G delayus(1000); x=0; musicalnoteb(4,74);//高G musicalnot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 音乐盒 设计 说明