数字音乐盒设计.doc_第1页
数字音乐盒设计.doc_第2页
数字音乐盒设计.doc_第3页
数字音乐盒设计.doc_第4页
数字音乐盒设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

文理学院综合课程设计(一)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(xuchar 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 1lcd部分程序(显示歌曲状态为暂停)while(1)if(key1= = 0)delayms(10);if (key1= =0) lcd部分程序break;void int0_time()interrupt 0keyscan();按键部分(上曲/下曲)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(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?key3?nnyn曲 目 3 播 放/曲目3继续播放有键被按?曲3播完?nnkey1?暂停key1?key2?key3?nnyn4程序调试与结果分析4.1程序调试 在程序没有写完之前,如果前面声明了子函数,但是后面没有用到的话,会出现警告。只有程序写完整了警告才会不再出现;还有其中key=1和key= =1的意义不同,编译之后系统也判为警告,但实际上只能写作key= =1,写程序时应注意。4.2结果分析 在程序只完成了音乐部分和按键部分时(即没有加入显示部分时),用proteus仿真时反应速度较理想。在加入显示部分后,播放第一曲时按下“下一曲”键会过几秒才调到第二曲;播放曲目时按下“播放/暂停”键大概超过半秒才会暂停,而从暂停到继续播放时快速点击按键即可。上述情况仍存在,但不影响音乐盒基本功能。5设计体会通过这次对数字音乐盒的设计与制作,我大概明白了设计一个具有一定功能的产品的部分基本步骤,了解到自己才刚起步,还有许多东西等着我去学习,我会在不断学习与实践中累积经验,向更高的目标迈进。参考文献(至少5篇)1新概念51单片机c语言教程(郭天祥著)2互联网3老师、同学的指导 附件完整程序(分段显示程序)#include#define uchar unsigned char#define uint unsigned intuchar 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=p27;sbit key1=p20;sbit key2=p21;sbit key3=p22;sbit lcden=p34;sbit lcdrs=p35;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;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)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);/低amusicalnotea(9,238);/低bmusicalnotea(18,198);/ddelayus(1000);x=0;musicalnotea(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(18,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;musicalnotea(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);/gmusicalnotea(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,133);/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);/dmusicalnotea(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);/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);/emusicalnotea(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);/emusicalnotea(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);/#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,133);/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);/高cdelayms(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);/#cmusicalnoteb(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);/emusicalnoteb(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(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=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);/dmusicalnoteb(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);/bmusicalnoteb(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);/高emusicalnoteb(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,105);/高#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;musicalnoteb(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);/amusicalnotec(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,133);/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,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);/amusicalnotec(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(n

温馨提示

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

评论

0/150

提交评论