收藏 分销(赏)

智能仪表课程设计与制作实训项目之二.doc

上传人:仙人****88 文档编号:7593645 上传时间:2025-01-10 格式:DOC 页数:19 大小:158KB 下载积分:10 金币
下载 相关 举报
智能仪表课程设计与制作实训项目之二.doc_第1页
第1页 / 共19页
智能仪表课程设计与制作实训项目之二.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
智能仪表课程设计与制作实训项目之二 简易WAVE音乐播放器 一、设计要求 用单片机设计并制作一个可以播放WAVE格式的音乐播放器。要求: 1.在单片机内部内置4首WAVE格式音乐; 2.用4个不同按键代表播放不同的音乐,当某个音乐播放的时候,按其他音乐按键没有任何效果; 3.当音乐开始播放后,按停止按键可以终止当前的音乐播放; 4.在音乐播放的同时,用8个LED灯表示音乐播放的音节。 二、电路原理 音节显示LED电路原理可参考图1-1。 图1-1 音节显示LED原理图 音乐播放部分电路图可以参考图1-2。 图1-2 音乐播放部分电路参考原理图 按键部分电路图可以参考图1-3。 图1-3 按键部分电路参考原理图 核心部分原理图可以参考图1-4。 图1-4 核心部分原理图 电路也可自行设计。 三、程序的设计 1.misuc_code.h。WAVE音乐文件 //*****************************Music************************************** uchar code song[][15]={"The Fairy Tale","Coral Sea","Meet","Love Transfer"}; //爱情呼叫转移 uchar code Love[]={ 0x0F,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x67, 0x15,0x0E, 0x15,0x03, 0x10,0x03, 0x15,0x67, 0x16,0x0E, 0x16,0x03, 0x17,0x03, 0x17,0x66, 0x0F,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x67, 0x16,0x0E, 0x16,0x03, 0x16,0x03, 0x16,0x67, 0x15,0x0E, 0x15,0x03, 0x10,0x03, 0x16,0x66, 0x0F,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x03, 0x19,0x0D, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x03, 0x1A,0x0D, 0x1A,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x67, 0x15,0x0E, 0x15,0x03, 0x10,0x03, 0x15,0x67, 0x16,0x0E, 0x16,0x03, 0x17,0x03, 0x19,0x66, 0x0F,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x1A,0x0D, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x67, 0x16,0x0E, 0x16,0x03, 0x16,0x03, 0x16,0x67, 0x15,0x0E, 0x15,0x03, 0x10,0x03, 0x15,0x66, 0x15,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1A,0x03, 0x1F,0x67, 0x1A,0x0E, 0x1A,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x0D, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x67, 0x1A,0x0E, 0x1A,0x03, 0x1A,0x03, 0x1A,0x67, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x0D, 0x17,0x16, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x1A,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x15,0x03, 0x15,0x03, 0x15,0x03, 0x1F,0x67, 0x1F,0x0E, 0x1F,0x03, 0x1F,0x03, 0x1F,0x67, 0x1A,0x0E, 0x1A,0x03, 0x1F,0x03, 0x1A,0x66, 0x19,0x0D, 0x19,0x03, 0x15,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x0D, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x67, 0x1A,0x0E, 0x1A,0x03, 0x1A,0x03, 0x1A,0x67, 0x19,0x0E, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x0D, 0x17,0x16, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0D, 0x15,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x1A,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x1F,0x15, 0x1F,0x03, 0x1A,0x03, 0x1F,0x03, 0x1A,0x03, 0x19,0x0D, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x03, 0x16,0x0D, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x15,0x03, 0x16,0x03, 0x15,0x00, 0x15,0x0B, 0x15,0x03, 0x1F,0x03, 0x1A,0x03, 0x1F,0x03, 0x20,0x03, 0x1F,0x0D, 0x1F,0x03, 0x1F,0x03, 0x20,0x03, 0x1F,0x03, 0x1A,0x03, 0x1F,0x03, 0x21,0x03, 0x20,0x0D, 0x20,0x03, 0x1F,0x03, 0x1A,0x03, 0x1F,0x03, 0x20,0x02, 0x15,0x00, 0x00,0x00 }; //遇见 uchar code Meet[]={ 0x19,0x03, 0x17,0x0D, 0x17,0x02, 0x19,0x03, 0x16,0x0D, 0x16,0x02, 0x17,0x03, 0x16,0x0D, 0x16,0x03, 0x15,0x0D, 0x15,0x01, 0x15,0x03, 0x11,0x03, 0x10,0x03, 0x11,0x03, 0x15,0x03, 0x11,0x0D, 0x15,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x00, 0x19,0x03, 0x17,0x0D, 0x17,0x02, 0x19,0x03, 0x16,0x0D, 0x16,0x02, 0x17,0x03, 0x16,0x0D, 0x16,0x03, 0x15,0x0D, 0x15,0x01, 0x15,0x03, 0x11,0x03, 0x10,0x03, 0x11,0x03, 0x15,0x03, 0x11,0x0D, 0x11,0x03, 0x15,0x03, 0x15,0x0D, 0x16,0x03, 0x15,0x15, 0x19,0x03, 0x17,0x0D, 0x17,0x02, 0x19,0x03, 0x16,0x0D, 0x16,0x02, 0x17,0x03, 0x16,0x0D, 0x16,0x03, 0x15,0x0D, 0x15,0x01, 0x15,0x03, 0x11,0x03, 0x10,0x03, 0x11,0x03, 0x15,0x03, 0x11,0x0D, 0x11,0x03, 0x15,0x0D, 0x15,0x03, 0x16,0x03, 0x17,0x00, 0x19,0x03, 0x17,0x0D, 0x17,0x02, 0x19,0x03, 0x20,0x0D, 0x20,0x02, 0x1F,0x03, 0x1B,0x0D, 0x1B,0x03, 0x1F,0x0D, 0x1F,0x01, 0x15,0x03, 0x11,0x03, 0x10,0x03, 0x11,0x03, 0x15,0x03, 0x11,0x0D, 0x11,0x03, 0x15,0x03, 0x15,0x0D, 0x16,0x03, 0x15,0x15, 0x19,0x03, 0x1A,0x03, 0x1B,0x03, 0x1F,0x02, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x0D, 0x1A,0x03, 0x19,0x0D, 0x19,0x0C, 0x19,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x03, 0x17,0x0D, 0x17,0x16, 0x19,0x03, 0x1A,0x03, 0x1B,0x03, 0x1F,0x02, 0x1B,0x03, 0x1F,0x03, 0x20,0x03, 0x1F,0x03, 0x20,0x03, 0x21,0x0D, 0x21,0x03, 0x19,0x0D, 0x19,0x0C, 0x19,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x16,0x0D, 0x16,0x03, 0x15,0x03, 0x11,0x03, 0x15,0x0D, 0x15,0x01, 0x00,0x00 }; //童话 uchar code tale[]={ 0x0F,0x67, 0x19,0x03, 0x18,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x04, 0x17,0x0E, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x16,0x04, 0x15,0x18, 0x15,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x03, 0x1A,0x04, 0x19,0x0E, 0x19,0x03, 0x16,0x03, 0x16,0x03, 0x18,0x04, 0x17,0x0E, 0x17,0x15, 0x15,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x03, 0x1A,0x04, 0x19,0x0E, 0x19,0x03, 0x16,0x03, 0x16,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x16,0x04, 0x15,0x0E, 0x15,0x02, 0x16,0x03, 0x17,0x03, 0x10,0x02, 0x10,0x03, 0x15,0x03, 0x15,0x02, 0x11,0x02, 0x15,0x14, 0x16,0x03, 0x17,0x03, 0x10,0x02, 0x10,0x03, 0x15,0x03, 0x15,0x0D, 0x11,0x03, 0x11,0x0D, 0x15,0x03, 0x15,0x00, 0x00,0x00 }; //珊瑚海 uchar code coral[]={ 0x15,0x03, 0x15,0x03, 0x15,0x03, 0x11,0x03, 0x10,0x03, 0x11,0x03, 0x10,0x03, 0x0F,0x0D, 0x0F,0x0C, 0x0F,0x16, 0x15,0x03, 0x15,0x03, 0x15,0x03, 0x15,0x03, 0x16,0x03, 0x16,0x03, 0x0F,0x03, 0x18,0x67, 0x17,0x0E, 0x17,0x16, 0x17,0x03, 0x19,0x03, 0x19,0x67, 0x15,0x0E, 0x15,0x16, 0x15,0x03, 0x17,0x03, 0x17,0x03, 0x10,0x0D, 0x10,0x16, 0x10,0x03, 0x15,0x03, 0x16,0x16, 0x17,0x03, 0x18,0x66, 0x17,0x03, 0x16,0x15, 0x1F,0x03, 0x1F,0x03, 0x1F,0x03, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x0D, 0x19,0x03, 0x0F,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x16, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x03, 0x17,0x16, 0x17,0x03, 0x16,0x03, 0x16,0x67, 0x17,0x0E, 0x17,0x16, 0x0F,0x03, 0x17,0x03, 0x16,0x03, 0x16,0x0E, 0x17,0x03, 0x17,0x0E, 0x17,0x16, 0x0F,0x03, 0x16,0x03, 0x17,0x66, 0x18,0x03, 0x19,0x66, 0x17,0x03, 0x18,0x15, 0x0F,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x15,0x03, 0x1A,0x0E, 0x19,0x03, 0x19,0x0E, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x03, 0x20,0x03, 0x20,0x03, 0x1F,0x0D, 0x1F,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x03, 0x1A,0x0E, 0x19,0x03, 0x19,0x0E, 0x19,0x16, 0x19,0x67, 0x1B,0x03, 0x1B,0x03, 0x1F,0x0D, 0x1F,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x03, 0x1A,0x0E, 0x19,0x03, 0x19,0x0E, 0x19,0x16, 0x17,0x67, 0x1A,0x03, 0x1A,0x03, 0x15,0x0D, 0x15,0x02, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x1A,0x03, 0x1A,0x0C, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x0F,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x0D, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x15,0x03, 0x1A,0x04, 0x19,0x03, 0x19,0x0E, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x03, 0x20,0x03, 0x20,0x03, 0x1F,0x0D, 0x1F,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x03, 0x1A,0x0E, 0x19,0x03, 0x19,0x0E, 0x19,0x16, 0x19,0x67, 0x1B,0x03, 0x1B,0x03, 0x1F,0x0D, 0x1F,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x03, 0x1B,0x03, 0x1A,0x0E, 0x19,0x03, 0x19,0x0E, 0x19,0x16, 0x17,0x67, 0x1A,0x03, 0x1A,0x03, 0x15,0x0D, 0x15,0x02, 0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x17,0x03, 0x17,0x0E, 0x16,0x03, 0x16,0x0E, 0x16,0x02, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x16,0x03, 0x16,0x04, 0x15,0x03, 0x15,0x0E, 0x15,0x0C, 0x15,0x15, 0x00,0x00 }; //*********************************************************************** 2.soundplay.h。播放音乐 #ifndef __SOUNDPLAY_H_REVISION_FIRST__ #define __SOUNDPLAY_H_REVISION_FIRST__ #include<dds.h> #include<intrins.h> #include<lcd.h> sfr T2MOD = 0xC9; #define SYSTEM_OSC 12000000 #define SOUND_SPACE 4/5 sbit BeepIO = P3^5; sbit esc=P1^3; sbit pause=P1^2; uint code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; uchar code SignTab[7] = { 0,2,4,5,7,9,11 }; uchar code LengthTab[7]= { 1,2,4,8,16,32,64 }; uchar Sound_Temp_TH0,Sound_Temp_TL0; uchar Sound_Temp_TH1,Sound_Temp_TL1; uchar temp1=0xfe; uchar bee,change; void InitialSound(void) { BeepIO = 0; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD |= 0x11; ET0 = 1; ET1 = 0; TR0 = 0; TR1 = 0; EA = 1; T2MOD = 0xfd; CP_RL2 = 0; TL2 = 0xf0; TH2 = 0xd8; RCAP2L = 0xf0; RCAP2H = 0xd8; C_T2 = 0; TR2 = 1; ET2 = 1; } void BeepTimer0(void) interrupt 1 { BeepIO = !BeepIO; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0; } void timer2() interrupt 5 { TF2=0; bee++; if(esc==0) flag=4; if(pause==0) flag=3; if(bee==100) { bee=0; change++; if(change<9) { P0=temp1; temp1=_crol_(temp1,1); } if(change>=9&&change<17) { temp1=_cror_(temp1,1); P0=temp1; } if(change>=17&&change<25) { temp1=temp1<<1; P0=temp1; } if(change>=25&&change<32) { P0=~P0; } if(change==32) { change=0; temp1=0xfe; } } } void Play(uchar *Sound,uchar Signature,uchar Octachord,uint Speed) { uint NewFreTab[12]; uchar i,j; uint Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; uchar Tone,Length,SL,SH,SM,SLen,XG,FD; for(i=0;i<12;i++) { j = i + Signature; if(j > 11) { j = j-12; NewFreTab[i] = FreTab[j]*2; } else NewFreTab[i] = FreTab[j]; if(Octachord == 1) NewFreTab[i]>>=2; else if(Octachord == 3) NewFreTab[i]<<=2; } SoundLength = 0; while(Sound[SoundLength] != 0x00) { SoundLength+=2; } Point = 0; Tone = Sound[Point]; Length = Sound[Point+1]; LDiv0 = 12000/Speed; LDiv4 = LDiv0/4; LDiv4 = LDiv4-LDiv4*SOUND_SPACE; TR0 = 0; TR1 = 1; while(Point < SoundLength) { SL=Tone%10; SM=Tone/10%10; SH=Tone/100; CurrentFre = NewFreTab[SignTab[SL-1]+SH]; if(SL!=0) { if (SM==1) CurrentFre >>= 2; if (SM==3) CurrentFre <<= 2; Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC); Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%256; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0 + 12; } SLen=LengthTab[Length%10]; XG=Length/10%10; FD=Length/100; LDiv=LDiv0/SLen; if (FD==1) LDiv=LDiv+LDiv/2; if(XG!=1) if(XG==0) if (SLen<=4) LDiv1=LDiv-LDiv4; else LDiv1=LDiv*SOUND_SPACE; else LDiv1=LDiv/2; else LDiv1=LDiv; if(SL==0) LDiv1=0; LDiv2=LDiv-LDiv1; if (SL!=0) { TR0=1; for(i=LDiv1;i>0;i--) { while(TF1==0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; } } if(LDiv2!=0) { TR0=0; BeepIO=0; for(i=LDiv2;i>0;i--) { while(TF1==0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; } } if(flag==3) { EA=0; TR2=0; TR1=0; while(!pause); EA=1; TR2=1; TR1=1; flag=0; } if(flag==4) { flag=0; Point=SoundLength; } else { Point+=2; } Tone=Sound[Point]; Length=Sound[Point+1]; } flag=0; BeepIO = 0; temp1=0xfe; P0=0xff; bee=0; change=0; TR2 = 0; ET2 = 0; EA=0; ET0=0; ET1=0; TR0=0; TR1=0; } #endif 3.main.c。主函数 #include<reg52.h> #include<music_code.h> #include<SoundPlay.h> #include<dds.h> //按键检测 void detect() { uchar temp; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { switch(temp) { case 0x0e: while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } if(key==0) { key=4; } key--; flag=1; break; case 0x0d: while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } key++; flag=2; if(key==4) { key=0; } break; case 0x0b: while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } flag=3; break; case 0x07: while(temp!=0x0f) { temp=P1; temp=temp&0x0f; } flag=4; break; } } } void main() { while(1) { detect(); InitialSound(); switch(key) { case 0:Play(tale,0,3,300);break; case 1:Play(coral,0,3,300);break; case 2:Play(Meet,0,3,300);break; case 3:Play(Love,0,3,340);break; } } } 四、设计与制作报告 1.设计任务 2.硬件电路设计及描述 对硬件电路分模块进行介绍,并介绍元件选择的依据。 3.软件设计流程及描述 程序分模块进行介绍,要有流程图及流程图的文字说明。 4.源程序代码(要有注释) 5.调试过程中出现的问题及解决方法 先介绍你的调试过程,再介绍调试过程中出现的问题及解决方法。 6.总结 包括测试结果(电路所具有的功能和现象)、硬件操作说明(各数码管的意义,各按键的功能及操作)、心得体会等内容。 7.参考文献。 (注:元器件查阅参考网址:, 单片机学习资料网址: 元件库存情况查询校园网。)
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服