收藏 分销(赏)

数字音乐盒设计毕设论文.doc

上传人:可**** 文档编号:3103098 上传时间:2024-06-18 格式:DOC 页数:25 大小:518.54KB 下载积分:10 金币
下载 相关 举报
数字音乐盒设计毕设论文.doc_第1页
第1页 / 共25页
数字音乐盒设计毕设论文.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
文理学院 综合课程设计 (一) Integrated Curriculum Design(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<uchar a)//此处uchar a填的数决定音符响的时长,uint b填的数决定音符频率 { speaker=1; delayus(uint b); speaker=0; delayus(uint b) } x=0; 按键部分(播放/暂停) void keyscan() { if(key1= =0) { delayms(10); if(key1= =0) { ET0=~ET0;//通过控制中断开关ET0来实现播放暂停 } } 上一曲/下一曲 部分 } void T0_time()interrupt 1 { LCD部分程序(显示歌曲状态为暂停) while(1) {if(key1= = 0) { delayms(10); if (key1= =0) } LCD 部分程序 break; } } void INT0_time()interrupt 0 { 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<uchar a) { speaker=1; delayus(uint b); if(n!=c)//c填的是曲目序号 break; speaker=0; delayus(uint b); if(n!=c) break; } 曲 目 1播 放 / 曲目1继续播放 有键被按? 曲1播完? key1? 暂停 key1? key2? key3? Y N N Y N Y 曲 目 2 播 放 / 曲目2继续播放 Y N 有键被按? 曲2播完? N N N key1? 暂停 key1? key2? key3? N N Y N 曲 目 3 播 放 / 曲目3继续播放 有键被按? 曲3播完? N N key1? 暂停 key1? key2? key3? N N Y N 4程序调试与结果分析 4.1程序调试 在程序没有写完之前,如果前面声明了子函数,但是后面没有用到的话,会出现警告。只有程序写完整了警告才会不再出现;还有其中key=1和key= =1的意义不同,编译之后系统也判为警告,但实际上只能写作key= =1,写程序时应注意。 4.2结果分析 在程序只完成了音乐部分和按键部分时(即没有加入显示部分时),用proteus仿真时反应速度较理想。在加入显示部分后,播放第一曲时按下“下一曲”键会过几秒才调到第二曲;播放曲目时按下“播放/暂停”键大概超过半秒才会暂停,而从暂停到继续播放时快速点击按键即可。上述情况仍存在,但不影响音乐盒基本功能。 5设计体会 通过这次对数字音乐盒的设计与制作,我大概明白了设计一个具有一定功能的产品的部分基本步骤,了解到自己才刚起步,还有许多东西等着我去学习,我会在不断学习与实践中累积经验,向更高的目标迈进。 参考文献(至少5篇) [1]新概念51单片机C语言教程(郭天祥著) [2]互联网 [3]老师、同学的指导 附件 完整程序(分段显示程序) #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[]="WELCOME"; uchar code table1[]="THE MUSIC BOX"; uchar code table2[]="STATE:ON"; uchar code table3[]="STATE:STOP"; uchar code table4[]=" "; uchar code table5[]="MUSIC NO.1"; uchar code table6[]="MUSIC NO.2"; uchar code table7[]="MUSIC NO.3"; sbit speaker=P2^7; sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2; sbit lcden=P3^4; sbit lcdrs=P3^5; uchar x,a,n=1,num,f,com; uint y; void delayus(uint); void delayms(uint); void musicalnotea(uchar,uint); void musicalnoteb(uchar,uint); void musicalnotec(uchar,uint); void write_com(uchar com) { lcdrs=0; P1=com; delayms(5); lcden=1; delayms(5); lcden=0; } void write_data(uchar date) { lcdrs=1; P1=date; delayms(5); lcden=1; delayms(5); lcden=0; } void clean2() { write_com(0x80+0x40); for(num=0;num<16;num++) { write_data(table4[num]); delayms(5); } } void clean1() { write_com(0x80); for(num=0;num<16;num++) { write_data(table4[num]); delayms(5); } } void keyscan() { 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; } } } void init() { 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; } void internationalsong() { 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++; } void icegirl() { 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);//高#F musicalnoteb(4,74);//高G musicalnoteb(4,59);//高B musicalnoteb(4,79);//高#F musicalnoteb(4,67);//高A musicalnoteb(4,89);//高E musicalnoteb(4,105);//高#C musicalnoteb(4,67);//高A musicalnoteb(4,89);//高E musicalnoteb(4,105);//高#C musicalnoteb(8,79);//高#F musicalnoteb(4,74);//高G musicalnoteb(4,89);//高E musicalnoteb(4,118);//高低B musicalnoteb(4,74);//高G musicalnoteb(4,79);//高#F musicalnoteb(4,99);//高D musicalnoteb(4,133);//高低A musicalnoteb(4,79);//高#F delayus(1000); x=0; musicalnoteb(12,79);//高#F musicalnoteb(4,89);//高E delayus(1000); x=0; while(x<14) { speaker=1; delayus(89); if(n!=2) break; speaker=0; delayus(89); if(n!=2) break; } if(n>2) n--; if(n==2) n++; x=0; } void unknown() { x=0; musicalnotec(7,223);//C musicalnotec(7,167);//F musicalnotec(21,133);//A delayus(1800); x=0; musicalnotec(7,133);//A delayus(1800); x=0; musicalnotec(14,133);//A musicalnotec(7,148);//G musicalnotec(7,133);//A musicalnotec(7,148);//G musicalnotec(14,167);//F delayus(1800); x=0; musicalnotec(7,167);//F delayus(1800); x=0; musicalnotec(14,167);//F musicalnotec(7,223);//C musicalnotec(7,167);//F musicalnotec(14,133);//A musicalnotec(7,167);//F musicalnotec(7,133);//A musicalnotec(14,111);//高C musicalnotec(7,126);//#A musicalnotec(7,133);//A musicalnotec(21,148);//G delayus(1800); x=0; musicalnotec(7,148);//G delayus(1800); x=0; musicalnotec(14,148);//G musicalnotec(7,111);//高C musicalnotec(7,126);//#A musicalnotec(14,133);//A delayus(1800); x=0; musicalnotec(7,133);//A musicalnotec(7,148);//G musicalnotec(14,167);//F musicalnotec(7,148);//G musicalnotec(7,133);//A musicalnotec(7,111);//高C musicalnotec(14,126);//#A delayus(1800); x=0; musicalnotec(7,126);//#A delayus(1800); x=0; musicalnotec(14,126);//#A musicalnotec(7,198);//D musicalnotec(7,210);//#C musicalnotec(14,223);//C musicalnotec(7,178);//E musicalnotec(7,167);//F musicalnotec(14,148);//G musicalnotec(7,133);//A musicalnotec(7,148);//G while(x<42) { speaker=1; delayus(167); if(n!=3) break; speaker=0; delayus(167); if(n!=3) break; } if(n==3) {n=1; ET0=1;} x=0; } void main() { init(); write_com(0x90); for(num=0;num<7;num++) { write_data(table[num]); delayms(5); } write_com(0x90+0x40); for(num=0;num<13;num++) { write_data(table1[num]); delayms(5); } for(num=0;num<16;num++) { write_com(0x1c); delayms(100); } write_com(0x01); ET0=1; while(1) { while(n==1) { clean1(); write_com(0x80); for(num=0;num<10;num++) { write_data(table5[num]); delayms(5); } internationalsong(); } while(n==2) { clean1(); write_com(0x80); for(num=0;num<10;num++) { write_data(table6[num]); delayms(5); } icegirl(); } while(n==3) { clean1(); write_com(0x80); for(num=0;num<10;num++) { write_data(table7[num]); delayms(5); } unknown(); } } } void musicalnotea(uchar a,uint y) { while(x<a) { speaker=1; delayus(y); if(n!=1) break; speaker=0; delayus(y); if(n!=1) break; } x=0; } void musicalnoteb(uchar a,uint y) { while(x<a) { speaker=1; delayus(y); if(n!=2) break; speaker=0; delayus(y); if(n!=2) break; } x=0; } void musicalnotec(uchar a,uint y) { while(x<a) { speaker=1; delayus(y); if(n!=3) break; speaker=0; delayus(y); if(n!=3) break; } x=0; } void delayus(uint y) { while(y>0) { y--; } } void delayms(uint yms) { uint i,j; for(i=yms;i>0;i--) for(j=110;j>0;j--); } void T0_time()interrupt 1 { clean2(); write_com(0x80+0x40); for(num=0;num<10;num++) { write_data(table3[num]); delayms(5); } while(1) { if(key1==0) { delayms(10); if(key1==0) { clean2(); write_com(0x80+0x40); for(num=0;num<8;num++) { write_data(table2[num]); delayms(5); } break;} } if(key2==0) { n--; if(n==0) n=3; } if(key3==0) { n++; if(n==4) n=1; } } } void T1_time()interrupt 3 { TH1=(65535-45872)/256; TL1=(65535-45872)%256; x++; } void INT0_time()interrupt 0 { keyscan(); } 1. 80196单片机IP研究与实现,TN914.42 2. AT89S52单片机实验系统的开发与应用,TG155.1 F406 3. 基于单片机的LED三维动态信息显示系统,O536 TG174.444 4. 基于单片机的IGBT光伏充电控制器的研究,TV732.1 TV312 5. 基于89C52单片机的印刷品色彩质量检测系统的研究,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服