数字音乐盒设计.doc

上传人:仙人指路1688 文档编号:2359652 上传时间:2023-02-15 格式:DOC 页数:25 大小:481KB
返回 下载 相关 举报
数字音乐盒设计.doc_第1页
第1页 / 共25页
数字音乐盒设计.doc_第2页
第2页 / 共25页
数字音乐盒设计.doc_第3页
第3页 / 共25页
数字音乐盒设计.doc_第4页
第4页 / 共25页
数字音乐盒设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数字音乐盒设计.doc》由会员分享,可在线阅读,更多相关《数字音乐盒设计.doc(25页珍藏版)》请在三一办公上搜索。

1、文理学院综合课程设计(一)Integrated Curriculum Design(1)所在院系信息工程系专业名称电子信息工程班级1001题目数字音乐盒设计指导教师成员完成时间2012.12.28 一、设计任务及要求:设计任务:设计一个数字音乐盒程序。要 求: 预写3个曲子可以实现播放/暂停、上一曲/下一曲功能有开机欢迎词,播放曲目时LCD屏幕上显示曲目名称指导教师签名: 2012年12月28日 二、指导教师评语:指导教师签名: 2012年12月 28 日 三、成绩 验收盖章 2012年12月28 日 数字音乐盒的设计1 设计目的(1)熟悉用于单片机C语言的一些用法。(2)掌握单片机的基本功能

2、。(3)了解程序是如何控制硬件。2 设计思路音乐部分用控制I/O口高低电平变化的快慢来改变发出音符的频率(即不同唱名的音)按键部分利用中断来控制播放/暂停、上曲/下曲功能3 设计过程 3.1方案论证该程序总体分为三个部分:音乐部分、按键部分、显示部分。音乐部分实现不用频率不同节拍的音构成完整曲目;按键部分实现播放/暂停(key1)、上曲/下曲功能;(key2/key3)显示部分实现开机问候语和曲目播放中曲名的显示;3.2程序设计音符部分:while(xuchar a)/此处uchar a填的数决定音符响的时长,uint b填的数决定音符频率 speaker=1; delayus(uint b)

3、; speaker=0; delayus(uint b)x=0;按键部分(播放/暂停)void keyscan()if(key1= =0)delayms(10);if(key1= =0)ET0=ET0;/通过控制中断开关ET0来实现播放暂停上一曲/下一曲 部分void T0_time()interrupt 1LCD部分程序(显示歌曲状态为暂停)while(1)if(key1= = 0)delayms(10);if (key1= =0) LCD部分程序break;void INT0_time()interrupt 0keyscan();按键部分(上曲/下曲)key1 部分if(key2= =0)

4、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(xuchar 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?YNNYNY曲 目 2 播 放/曲目2继续播放YN有键被按?曲2播完?NNNkey1?暂停key1?key2?

5、key3?NNYN曲 目 3 播 放/曲目3继续播放有键被按?曲3播完?NNkey1?暂停key1?key2?key3?NNYN4程序调试与结果分析4.1程序调试 在程序没有写完之前,如果前面声明了子函数,但是后面没有用到的话,会出现警告。只有程序写完整了警告才会不再出现;还有其中key=1和key= =1的意义不同,编译之后系统也判为警告,但实际上只能写作key= =1,写程序时应注意。4.2结果分析 在程序只完成了音乐部分和按键部分时(即没有加入显示部分时),用proteus仿真时反应速度较理想。在加入显示部分后,播放第一曲时按下“下一曲”键会过几秒才调到第二曲;播放曲目时按下“播放/暂停

6、”键大概超过半秒才会暂停,而从暂停到继续播放时快速点击按键即可。上述情况仍存在,但不影响音乐盒基本功能。5设计体会通过这次对数字音乐盒的设计与制作,我大概明白了设计一个具有一定功能的产品的部分基本步骤,了解到自己才刚起步,还有许多东西等着我去学习,我会在不断学习与实践中累积经验,向更高的目标迈进。参考文献(至少5篇)1新概念51单片机C语言教程(郭天祥著)2互联网3老师、同学的指导 附件完整程序(分段显示程序)#include#define uchar unsigned char#define uint unsigned intuchar code table=WELCOME;uchar co

7、de 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=P27;sbit key1=P20;sbit key2=P21;sbit key3=P22;sbit lcden=P34;sbit lcdrs=P35;uchar x,a,n=1,num,f,com;

8、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); lc

9、den=0;void clean2() write_com(0x80+0x40); for(num=0;num16;num+) write_data(table4num); delayms(5); void clean1() write_com(0x80); for(num=0;num16;num+) write_data(table4num); 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)del

10、ayms(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);/低Amusicalnotea(9,238);/低Bmusicalnotea(18,198);/Ddelayus(1000);x=0;musi

11、calnotea(6,198);/Dmusicalnotea(12,223);/Cmusicalnotea(12,238);/低Bmusicalnotea(18,269);/低Amusicalnotea(6,238);/低Bdelayus(1000);x=0;musicalnotea(3,238);/低Bmusicalnotea(15,223);/Cmusicalnotea(3,238);/低Bmusicalnotea(3,223);/Cmusicalnotea(18,238);/低Bdelayus(1000);x=0;musicalnotea(6,238);/低Bmusicalnotea(1

12、8,269);/低Adelayus(1000);x=0;musicalnotea(6,269);/低Amusicalnotea(24,298);/低Gdelayms(600);x=0;musicalnotea(12,198);/Dmusicalnotea(18,148);/Gmusicalnotea(6,158);/#Fmusicalnotea(6,133);/Amusicalnotea(6,148);/Gmusicalnotea(6,198);/Dmusicalnotea(6,238);/低Bmusicalnotea(18,178);/Edelayus(1000);x=0;musicalno

13、tea(6,178);/Emusicalnotea(12,223);/Cdelayms(300);x=0;musicalnotea(6,178);/Emusicalnotea(18,133);/Amusicalnotea(6,148);/Gmusicalnotea(6,158);/#Fmusicalnotea(6,178);/Emusicalnotea(6,198);/Dmusicalnotea(6,223);/Cmusicalnotea(24,238);/低Bdelayms(600);x=0;musicalnotea(12,198);/Dmusicalnotea(18,148);/Gmusi

14、calnotea(6,158);/#Fmusicalnotea(6,133);/Amusicalnotea(6,148);/Gmusicalnotea(6,198);/Dmusicalnotea(6,238);/低Bmusicalnotea(18,178);/Edelayus(1000);x=0;musicalnotea(6,178);/Emusicalnotea(6,223);/Cmusicalnotea(6,178);/Emusicalnotea(6,133);/Amusicalnotea(6,148);/Gmusicalnotea(12,158);/#Fmusicalnotea(12,1

15、33);/Amusicalnotea(12,111);/高Cmusicalnotea(12,158);/#Fmusicalnotea(30,148);/Gdelayms(300);x=0;musicalnotea(9,118);/Bmusicalnotea(3,133);/Amusicalnotea(24,158);/#Fmusicalnotea(6,178);/Emusicalnotea(6,158);/#Fmusicalnotea(6,148);/Gmusicalnotea(6,178);/Emusicalnotea(24,158);/#Fmusicalnotea(12,198);/Dmu

16、sicalnotea(6,210);/#Cmusicalnotea(6,198);/Dmusicalnotea(18,178);/Edelayus(1000);x=0;musicalnotea(6,178);/Emusicalnotea(18,133);/Amusicalnotea(6,148);/Gmusicalnotea(30,158);/#Fdelayms(300);x=0;musicalnotea(12,133);/Adelayus(1000);x=0;musicalnotea(18,133);/Amusicalnotea(6,158);/#Fmusicalnotea(6,198);/

17、Ddelayus(1000);x=0;musicalnotea(6,198);/Dmusicalnotea(6,210);/#Cmusicalnotea(6,198);/Dmusicalnotea(24,118);/Bmusicalnotea(6,148);/Gmusicalnotea(6,178);/Emusicalnotea(6,158);/#Fmusicalnotea(6,148);/Gmusicalnotea(12,158);/#Fmusicalnotea(12,133);/Amusicalnotea(12,148);/Gmusicalnotea(12,178);/Emusicalno

18、tea(30,198);/Ddelayms(300);x=0;musicalnotea(9,118);/Bmusicalnotea(3,133);/Amusicalnotea(24,148);/Gmusicalnotea(18,198);/Dmusicalnotea(6,238);/低Bmusicalnotea(24,178);/Emusicalnotea(6,223);/Cdelayms(300);x=0;musicalnotea(9,133);/Amusicalnotea(3,148);/Gmusicalnotea(24,158);/#Fmusicalnotea(12,178);/Emus

19、icalnotea(12,198);/Ddelayus(1000);x=0;musicalnotea(30,198);/Ddelayms(300);x=0;musicalnotea(12,198);/Dmusicalnotea(24,118);/Bmusicalnotea(12,133);/Amusicalnotea(12,198);/Dmusicalnotea(24,148);/Gmusicalnotea(18,158);/#Fdelayus(1000);x=0;musicalnotea(6,158);/#Fmusicalnotea(18,178);/Emusicalnotea(6,188)

20、;/#Dmusicalnotea(12,178);/Emusicalnotea(12,133);/Adelayus(1000);x=0;musicalnotea(30,133);/Adelayms(300);x=0;musicalnotea(9,118);/Bmusicalnotea(3,133);/Amusicalnotea(24,148);/Gmusicalnotea(18,198);/Dmusicalnotea(6,238);/低Bmusicalnotea(24,178);/Emusicalnotea(6,223);/Cdelayms(300);x=0;musicalnotea(9,13

21、3);/Amusicalnotea(3,148);/Gmusicalnotea(24,158);/#Fmusicalnotea(12,178);/Emusicalnotea(12,198);/Dmusicalnotea(36,118);/Bdelayus(1000);x=0;musicalnotea(12,118);/Bmusicalnotea(24,99);/高Dmusicalnotea(12,111);/高Cmusicalnotea(12,118);/Bmusicalnotea(18,133);/Amusicalnotea(6,118);/Bmusicalnotea(12,111);/高C

22、delayms(300);x=0;musicalnotea(6,111);/高Cmusicalnotea(18,118);/Bdelayus(1000);x=0;musicalnotea(6,118);/Bmusicalnotea(18,133);/Adelayus(1000);x=0;musicalnotea(6,133);/Awhile(x1)n-;if(n1)n+;x=0;n+;void icegirl()delayms(800);x=0;musicalnoteb(6,210);/#Cmusicalnoteb(6,238);/Bmusicalnoteb(4,210);/#Cmusical

23、noteb(16,178);/Emusicalnoteb(4,423);/低#Cmusicalnoteb(4,210);/#Cmusicalnoteb(4,238);/Bmusicalnoteb(4,210);/#Cmusicalnoteb(4,178);/Emusicalnoteb(4,158);/#Fmusicalnoteb(4,210);/#Cmusicalnoteb(4,238);/Bmusicalnoteb(6,210);/#Cmusicalnoteb(6,238);/Bmusicalnoteb(4,210);/#Cmusicalnoteb(16,178);/Emusicalnote

24、b(4,423);/低#Cmusicalnoteb(4,210);/#Cmusicalnoteb(4,238);/Bmusicalnoteb(4,210);/#Cmusicalnoteb(8,140);/#Gmusicalnoteb(8,158);/#Fmusicalnoteb(6,210);/#Cmusicalnoteb(6,238);/Bmusicalnoteb(4,210);/#Cmusicalnoteb(16,178);/Emusicalnoteb(4,538);/低低Amusicalnoteb(4,210);/#Cmusicalnoteb(4,238);/Bmusicalnoteb(

25、4,210);/#Cmusicalnoteb(4,178);/Emusicalnoteb(4,158);/#Fmusicalnoteb(4,210);/#Cmusicalnoteb(4,238);/Bmusicalnoteb(6,210);/#Cmusicalnoteb(6,238);/Bmusicalnoteb(4,210);/#Cmusicalnoteb(12,178);/Emusicalnoteb(4,210);/#Cmusicalnoteb(4,538);/低低Amusicalnoteb(4,210);/#Cmusicalnoteb(6,140);/#Gdelayus(1000);x=

26、0;musicalnoteb(6,140);/#Gmusicalnoteb(4,158);/#Fmusicalnoteb(2,269);/低Amusicalnoteb(2,238);/低Bmusicalnoteb(2,223);/Cmusicalnoteb(2,198);/Dmusicalnoteb(4,448);/低Cmusicalnoteb(4,198);/Dmusicalnoteb(4,178);/Emusicalnoteb(8,398);/低Dmusicalnoteb(4,148);/Gmusicalnoteb(4,158);/#Fmusicalnoteb(4,198);/Dmusic

27、alnoteb(8,178);/Emusicalnoteb(4,358);/低Emusicalnoteb(4,198);/Dmusicalnoteb(4,398);/低Dmusicalnoteb(4,178);/Emusicalnoteb(4,158);/#Fmusicalnoteb(4,148);/Gmusicalnoteb(12,118);/Bdelayus(1000);x=0;musicalnoteb(4,118);/Bmusicalnoteb(4,148);/Gdelayus(1000);x=0;musicalnoteb(2,148);/Gmusicalnoteb(2,118);/Bm

28、usicalnoteb(4,148);/Gmusicalnoteb(4,158);/Fmusicalnoteb(20,178);/Edelayus(1000);x=0;musicalnoteb(4,178);/Emusicalnoteb(4,148);/Gmusicalnoteb(4,118);/Bmusicalnoteb(12,89);/高Edelayus(1000);x=0;musicalnoteb(4,89);/高Emusicalnoteb(4,99);/Ddelayus(1000);x=0;musicalnoteb(2,99);/高Dmusicalnoteb(2,89);/高Emusi

29、calnoteb(4,99);/高Dmusicalnoteb(4,133);/Amusicalnoteb(24,118);/Bmusicalnoteb(8,79);/高#Fmusicalnoteb(12,74);/高Gdelayus(1000);x=0;musicalnoteb(4,74);/高Gmusicalnoteb(4,79);/高#Fmusicalnoteb(4,74);/高Gmusicalnoteb(4,59);/高Bmusicalnoteb(4,79);/高#Fmusicalnoteb(4,67);/高Amusicalnoteb(4,89);/高Emusicalnoteb(4,10

30、5);/高#Cmusicalnoteb(4,67);/高Amusicalnoteb(4,89);/高Emusicalnoteb(4,105);/高#Cmusicalnoteb(8,79);/高#Fmusicalnoteb(4,74);/高Gmusicalnoteb(4,89);/高Emusicalnoteb(4,118);/高低Bmusicalnoteb(4,74);/高Gmusicalnoteb(4,79);/高#Fmusicalnoteb(4,99);/高Dmusicalnoteb(4,133);/高低Amusicalnoteb(4,79);/高#Fdelayus(1000);x=0;mu

31、sicalnoteb(12,79);/高#Fmusicalnoteb(4,89);/高Edelayus(1000);x=0;while(x2)n-;if(n=2)n+;x=0; void unknown()x=0;musicalnotec(7,223);/Cmusicalnotec(7,167);/Fmusicalnotec(21,133);/Adelayus(1800);x=0;musicalnotec(7,133);/Adelayus(1800);x=0;musicalnotec(14,133);/Amusicalnotec(7,148);/Gmusicalnotec(7,133);/Am

32、usicalnotec(7,148);/Gmusicalnotec(14,167);/Fdelayus(1800);x=0;musicalnotec(7,167);/Fdelayus(1800);x=0;musicalnotec(14,167);/Fmusicalnotec(7,223);/Cmusicalnotec(7,167);/Fmusicalnotec(14,133);/Amusicalnotec(7,167);/Fmusicalnotec(7,133);/Amusicalnotec(14,111);/高Cmusicalnotec(7,126);/#Amusicalnotec(7,13

33、3);/Amusicalnotec(21,148);/Gdelayus(1800);x=0;musicalnotec(7,148);/Gdelayus(1800);x=0;musicalnotec(14,148);/Gmusicalnotec(7,111);/高Cmusicalnotec(7,126);/#Amusicalnotec(14,133);/Adelayus(1800);x=0;musicalnotec(7,133);/Amusicalnotec(7,148);/Gmusicalnotec(14,167);/Fmusicalnotec(7,148);/Gmusicalnotec(7,

34、133);/Amusicalnotec(7,111);/高Cmusicalnotec(14,126);/#Adelayus(1800);x=0;musicalnotec(7,126);/#Adelayus(1800);x=0;musicalnotec(14,126);/#Amusicalnotec(7,198);/Dmusicalnotec(7,210);/#Cmusicalnotec(14,223);/Cmusicalnotec(7,178);/Emusicalnotec(7,167);/Fmusicalnotec(14,148);/Gmusicalnotec(7,133);/Amusica

35、lnotec(7,148);/G while(x42)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;num7;num+) write_data(tablenum); delayms(5); write_com(0x90+0x40); for(num=0;num13;num+) write_data(table1num); delayms(5); for(num

36、=0;num16;num+) write_com(0x1c); delayms(100); write_com(0x01); ET0=1; while(1) while(n=1) clean1(); write_com(0x80); for(num=0;num10;num+) write_data(table5num); delayms(5); internationalsong(); while(n=2) clean1(); write_com(0x80); for(num=0;num10;num+) write_data(table6num); delayms(5); icegirl();

37、 while(n=3) clean1(); write_com(0x80); for(num=0;num10;num+) write_data(table7num); delayms(5); unknown(); void musicalnotea(uchar a,uint y)while(xa)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(xa)speaker=1;delayus(y);if(n!=2)break;

38、speaker=0;delayus(y);if(n!=2)break;x=0;void musicalnotec(uchar a,uint y)while(x0) y-; void delayms(uint yms) uint i,j; for(i=yms;i0;i-) for(j=110;j0;j-);void T0_time()interrupt 1 clean2(); write_com(0x80+0x40); for(num=0;num10;num+) write_data(table3num); delayms(5); while(1)if(key1=0) delayms(10); if(key1=0) clean2(); write_com(0x80+0x40); for(num=0;num8;num+) write_data(table2num); 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 3TH1=(65535-45872)/256;TL1=(65535-45872)%256;x+;void INT0_time()interrupt 0keyscan();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号