数字音乐盒设计.docx
- 文档编号:11975110
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:36
- 大小:96.14KB
数字音乐盒设计.docx
《数字音乐盒设计.docx》由会员分享,可在线阅读,更多相关《数字音乐盒设计.docx(36页珍藏版)》请在冰豆网上搜索。
数字音乐盒设计
文理学院
综合课程设计
(一)
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]互联网 [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,com。 uinty。 voiddelayus(uint)。 voiddelayms(uint)。 voidmusicalnotea(uchar,uint)。 voidmusicalnoteb(uchar,uint)。 voidmusicalnotec(uchar,uint)。 voidwrite_com(ucharcom) { lcdrs=0。 P1=com。 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_com(0x80+0x40)。 for(num=0。 num<16。 num++) { write_data(table4[num])。 delayms(5)。 } } voidclean1() { write_com(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_com(0x38)。 write_com(0x0c)。 write_com(0x06)。 write_com(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 musicalnoteb(4,79)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 音乐盒 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)