为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

简易音乐播放器设计

2017-10-12 18页 doc 118KB 23阅读

用户头像

is_594905

暂无简介

举报
简易音乐播放器设计简易音乐播放器设计 单片机实践含Protel课程综合设计说明书 一、设计目的: 单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作的音乐播放器,该音乐播放器具有可播放多首音乐、通过按键来选择播放的音乐、选择音乐时显示音乐名称、可暂停等功能。 通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能...
简易音乐播放器设计
简易音乐播放器设计 单片机实践含Protel课程综合设计说明书 一、设计目的: 单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作的音乐播放器,该音乐播放器具有可播放多首音乐、通过按键来选择播放的音乐、选择音乐时显示音乐名称、可暂停等功能。 通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。 二、设计要求: 1、可播放多首音乐,且通过按键来选择播放的音乐; 2、选择音乐时,显示音乐名称; 3、可暂停; 4、可实现循环播放功能。 三、设计任务和内容: 利用单片机(AT89S51)、蜂鸣器、1602液晶等实现具有可播放多首音乐、可通过按键(上一首、下一首)来选择播放的音乐、选择音乐时(1602液晶)显示歌名、可暂停、可循环播放功能的一个音乐播放器。 四、系统框图和原理分析: 1602液晶显示歌名 蜂鸣器,播放音乐, AT89S51 晶振复位设置模块,独 电路 电路 立按键, - 1 - 单片机实践含Protel课程综合设计说明书 此音乐播放器由复位电路、时钟电路、独立按键、AT89S51单片机、蜂鸣器和1602液晶组成,设计课题的总如上图所示。 硬件系统各模块功能介绍: 本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块,输出模块,电源模块。 1、单片机最小系统模块;包括AT89S51芯片一片,复位电路,晶振电路。本模块以AT89S51为系统控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容,这样就构成了一个稳定的自激振荡器。硬件模块如图一所示: U1VCC 140P1.0VCCP1.1239P1.1P0.0(AD0)P0338P1.2P0.1(AD1)P1S1C3437P1.3P0.2(AD2)P222u536P1.4P0.3(AD3)P3635P1.5(MOSI)P0.4(AD4)P4734P1.6(MISO)P0.5(AD5)P5R1833P1.7(SCK)P0.6(AD6)P6932200RSTP0.7(AD7)P71031R2P3.0(RXD)EA(VPP)1130200P3.1(TXD)ALE(PROG)P3.21229P3.2(INT0)PSENP3.31328P3.3(INT1)P2.7(A15)1427P3.4(T0)P2.6(A14)GNDC120p1526P3.5(T1)P2.5(A13)1625P3.6(WR)P2.4(A12)17242GNDP3.7(RO)P2.3(A11)18231XTAL2P2.2(A10)Y1922XTAL1P2.1(A9)20211GNDP2.0(A8)11.0592MHzC220p AT89S51 GND 图一 单片机最小系统 2、输入模块:本模块共用到了三个按键,一个复位键,单片机运行期间,利用按键完成复位操作。其余两个按键的功能分别为,暂停/播放键控制音乐是播放还是暂停;下一首按键选择所播放的音乐。这些键分别与单片机的输入接口相连,属于独立按键,可以独立实现相应的音乐播放器的功能。硬件模块如图二所示: - 2 - 单片机实践含Protel课程综合设计说明书 P3.3S2 P3.2S3 GND 图二 按键输入模块 3、输出模块:本设计在音乐播放器播放音乐时用1602液晶显示歌曲名称、歌曲播 放时间,用蜂鸣器作为声音输出装置,当按下播放键时,可以听到不同频率音符组成的 歌曲。硬件模块分别入图三、四所示: 图三 1602液晶显示模块 GND LS1 SpeakerR3Q1P1.1 1K VCC 图四 声音输出模块 - 3 - 单片机实践含Protel课程综合设计说明书 五、程序图 开始 1、主程序流程图 系统初始化 调用判键子程序 Y N 执行其功能 暂停 下一首 Y N 执行其功能 连接好电路,接通电源后,系统便开始执行主程序,首先进行系统初始化,然后开 暂停/播放键 按下时,始播放系统默认的第一首歌曲,同时调用判键子程序。当判断到 系统便执行其相应的功能(暂停当前音乐的播放,进入等待状态。/继续播放当前已暂停的音乐。)当判断到 下一首键 按下时,系统便执行其相应的功能(立即停止当前歌曲的播放,并进入下一首歌曲的播放。)如果没有键按下,系统便继续执行原程序,继续播放当前音乐并继续调用判键子程序。 - 4 - 单片机实践含Protel课程综合设计说明书 2、暂停/播放键程序流程图 开始 主程序 判键 N 暂停/播放键 是否按下, Y 等待、停播 N Y 暂停/播放键 是否按下, 连接好电路,接通电源后,系统便开始执行主程序,首先进行系统初始化,然后开始播放系统默认的第一首歌曲,同时调用判键子程序。当第一次判断到 暂停/播放键 按下时,系统便暂停当前音乐的播放,进入等待状态;当 暂停/播放键 键没有按下时,系统便继续播放当前音乐并继续调用判键子程序。当再次判断到 暂停/播放键 按下时,系统便继续播放刚才停播的音乐。 - 5 - 单片机实践含Protel课程综合设计说明书 3、下一首键程序流程图 开始 主程序 判键 N 下一首键是 否按下, Y 播放下一首歌 曲 连接好电路,接通电源后,系统便开始执行主程序,首先进行系统初始化,然后开 下一首键 按下时,始播放系统默认的第一首歌曲,同时调用判键子程序。当系统判断到 系统便停止当前音乐的播放,立即进入下一首歌曲的播放;当 下一首键 没有按下时,系统便继续播放当前音乐并继续调用判键子程序。 六、设计总结 这次单片机综合设计,我有很多,有关于单片机方面的,也有关于人与人关系方面的。 通过本次综合设计,我深刻体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。同时自己也懂得了要想把这门功课学好,需要的不仅仅是书本上的知识,关键还要自己亲手实践锻炼自己的动手能力,只有在实践中经历一个从不知道到知道的过程,才能够学到更多东西。我认为,知识是课本理论与实践相结合的产物,我们只有把理论更好的运用到实践中,学到的才是真正的知识。 经过这两周,我知道了书本和实际操作还是有很大差距的,而且自己的动手能力还 - 6 - 单片机实践含Protel课程综合设计说明书 不是很强,而且这门学科对细心和耐心也有很高的要求,在这两周暴露出来很多自己的不足,所以以后我还要多加练习,多锻炼自己这方面的能力。 通过本次综合设计,我也感觉到了团队合作的重要性——“一个人的强大不是真正的强大,一个团队的强大才是真正的强大,依靠团队的力量是可以战胜一切困难的”。同时,在此感谢刘强老师、段纯爽老师对我们的辛勤指导。最后,也对给过我帮助的所有老师和同学再次示衷心的感谢。 附录 参考文献 (1)周润景——基于PROTEUS的51单片机设计与仿真; (2)ATMEL公司AT89S51单片机中文PDF; (3)1602液晶中文PDF资料; (4)李群芳、张士军——单片微型计算机与接口技术(第三版); (5)张富——C及C++程序设计(第三版). 附录1 ---电路图和PCB图 本设计电路原理图如下: 图五 原理图 - 7 - 单片机实践含Protel课程综合设计说明书 本设计PCB图如下: 11401212239233383443745536512663567734781328338921932910103112111130121212291312132814121427151526211616252211724211823 21 31922图六 PCB图 1220211 图七 PCB 3D效果图 - 8 - 单片机实践含Protel课程综合设计说明书 附录2 ---源程序(汇编或C语言) #include //添加头文件 0xC8,0xF3, //00294HZ ,4 //5 #define uchar unsigned char 0x73,0xF4, //00311HZ ,4# //6 #define uint unsigned int 0x1E,0xF5, //00330HZ ,5 //7 sbit BEEP=P1^1; //喇叭输出脚 0xB6,0xF5, //00349HZ ,5# //8 sbit rs=P2^1; 0x4C,0xF6, //00370HZ ,6 //9 sbit lcden=P2^0; 0xD7,0xF6, //00392HZ ,6# //10 uchar th0_f,tl0_f; //在中断中装载的 0x5A,0xF7, //00415HZ ,7 //11 T0的值高、低8位 0xD8,0xF7, //00440HZ 1 //12 uchar sec,min; 0x4D,0xF8, //00466HZ 1# //13 uchar flag=0,m,aa; 0xBD,0xF8, //00494HZ 2 //14 uchar code table[]=" Welcoom "; 0x24,0xF9, //00523HZ 2# //15 uchar code table0[]=" Music Player"; 0x87,0xF9, //00554HZ 3 //16 uchar code table1[]=" Bei Jing Huan"; 0xE4,0xF9, //00587HZ 4 //17 uchar code table2[]=" Ying Ni 00:00"; 0x3D,0xFA, //00622HZ 4# //18 uchar code table3[]=" Yin Xing De"; 0x90,0xFA, //00659HZ 5 //19 uchar code table4[]=" Chi Bang 00:00"; 0xDE,0xFA, //00698HZ 5# //20 uchar code table5[]=" Thanks Goodbye"; 0x29,0xFB, //00740HZ 6 //21 uchar code table6[]="Form Chen Fu lin "; 0x6F,0xFB, //00784HZ 6# //22 void write_smh(uchar add,uchar date); 0xB1,0xFB, //00831HZ 7 //23 void write_com(uchar com); 0xEF,0xFB, //00880HZ `1 //24 void write_date(uchar date); 0x2A,0xFC, //00932HZ `1# //25 void init(); 0x62,0xFC, //00988HZ `2 //26 void init0(); 0x95,0xFC, //01046HZ `2# //27 void init1(); 0xC7,0xFC, //01109HZ `3 //28 void init2(); 0xF6,0xFC, //01175HZ `4 //29 void init3(); 0x22,0xFD, //01244HZ `4# //30 /***************** 延时 1ms 0x4B,0xFD, //01318HZ `5 //31 *******************/ 0x73,0xFD, //01397HZ `5# //32 void delay_1ms(unsigned int t) 0x98,0xFD, //01480HZ `6 //33 { 0xBB,0xFD, //01568HZ `6# //34 unsigned char i,j; 0xDC,0xFD, //01661HZ `7 //35 for(t;t>0;t--) }; { for(i=34;i>0;i--) for(j=13;j>0;j--); uchar code music1[336] = { // 《北京欢 } 迎你》 } 16,16,19,19,16,16,14,14,16,16,14,14,16,1 6,16,36, //迎接另一个晨曦 //T0的值,及输出频率对照表 16,16,14,14,9,9,12,12,16,16,14,14,14,14,static code freq[36][2] = { 14,36, //带来全新空气 0xA9,0xEF, //00220HZ ,1 //0 14,14,12,12,9,9,12,12,14,14,16,16,19,19, 0x93,0xF0, //00233HZ ,1# //1 14,14, //气息改变情味不变 0x73,0xF1, //00247HZ ,2 //2 16,16,21,21,19,19,9,9,14,14,12,12,12,12, 0x49,0xF2, //00262HZ ,2# //3 12,36, //茶香飘满情谊 0x07,0xF3, //00277HZ ,3 //4 - 9 - 单片机实践含Protel课程综合设计说明书 16,16,19,19,16,16,14,14,16,16,14,14,16,14,12,12, //次都在徘徊 6,16,36, //我家大门常打开 12,12,12,12,12,12,9,9,8,8,8,36,9,9,12,12, 16,16,14,14,9,9,12,12,16,16,14,14,14,14,//孤单中坚强 每一 14,36, //开放怀抱等你 16,16,16,16,16,16,19,19,19,19,19,19,21,214,14,12,12,9,9,12,12,14,14,16,16,19,19,1,19,19, //次就算很受伤 14,14, //拥抱过就有了默契 19,19,16,16,14,14,12,12,14,14,14,36,21,2 1,19,19, //也不闪泪光 我知 16,16,21,21,19,19,9,9,14,14,12,12,12,12, 12,36, //你会爱上这里 16,16,16,16,16,16,19,19,19,19,19,19,21,214,14,12,12,9,9,12,12,14,14,16,16,19,19,1,19,19, //道我一直有双 14,14, //不管远近都是客人 16,16,14,14,12,12,14,14,9,9,9,36,8,8,9,9, 16,16,21,21,19,19,19,19,16,16,16,16,16,1//隐形的翅膀 带我 6,16,36, //请不用客气 12,12,12,12,12,12,16,16,14,14,14,14,16,114,14,16,16,14,14,12,12,19,19,21,21,14,14,14,14, //飞 飞过绝 4,14,36, //相约好了在一起 12,12,12,12,12,12,12,12,12,12,12,36,8,8, 9,9,16,16,14,14,14,14,12,12,12,12,12,12,12,12, //望 不去 12,36, //我们欢迎你 16,16,16,16,16,16,19,19,16,16,16,16,14,136,36,36,36,36,36,36,36,16,16,16,16,19,14,12,12, //想他们拥有 9,19,19, //北京 12,12,12,12,12,12,9,9,8,8,8,36,8,8,12,12, 24,24,19,19,21,21,21,21,36,36,21,21,19,1//美丽的太阳 我看 9,16,16, //欢迎你 为你开 16,16,16,16,16,16,19,19,19,19,19,19,21,216,16,19,19,19,19,19,19,19,19,19,36,16,11,19,19, //见每天的夕阳 6,19,19, //天辟地 流动 19,19,16,16,14,14,12,12,14,14,14,36,21,2 1,19,19, //也会有变化 我知 21,21,24,24,26,26,24,24,19,19,16,16,14,1 4,19,19, //中的魅力充满着朝 16,16,16,16,16,16,19,19,19,19,19,19,21,2 1,19,19, //道我一直有双 16,16,16,16,16,16,16,16,16,16,16,36,16,1 6,19,19, //气 北京 16,16,14,14,12,12,14,14,9,9,9,36,8,8,9,9, //隐形的翅膀 带我 24,24,19,19,21,21,21,21,36,36,24,24,26,2 6,24,24, //欢迎你 在太阳 12,12,12,12,12,12,14,16,14,14,14,14,16,1 6,12,12, //飞 给我希 19,19,16,16,19,19,23,23,21,21,21,21,36,3 6,16,16, //下分享呼吸 在 12,12,12,12,12,12,12,12,12,12,12,36,16,1 6,19,19, //望 我终 14,14,16,16,19,19,28,28,26,26,26,26,26,2 6,23,23, //黄土地刷新成 24,24,24,24,24,36,24,24,24,24,24,24,21,224,24,24,24,24,24,24,24,24,24,24,24,24,21,19,19, //于看到所有 4,36,36, //绩 }; 21,21,24,24,16,16,14,14,12,12,12,36,12,1 uchar code music2[464] = { // 《隐形2,12,12, //梦想都开花 追逐 的翅膀》 36,36,36,36,36,36,36,36,36,36,36,36,8,8,12,12,24,24,24,24,21,21,19,19,16,16,14,112,12, //每一 4,12,12, //的年轻歌声多嘹 16,16,16,16,16,16,19,19,16,16,16,16,14,1 - 10 - 单片机实践含Protel课程综合设计说明书 14,14,14,14,14,14,14,14,14,14,14,36,16,1} 6,19,19, //亮 我终 void yanshi(uchar z) { 24,24,24,24,24,36,24,24,24,24,24,24,21,2 uchar i,j; 1,19,19, //于翱翔用心 for(i=z;i>0;i--) for(j=110;j>0;j--);//z=1的时候延时21,21,24,24,16,16,14,14,12,12,12,36,12,11ms 2,12,12, //凝望不害怕 哪里 } 12,12,24,24,24,24,21,21,19,19,16,16,14,1timer1() interrupt 3 4,12,12, //会有风就飞多远 { TH1=(65536-46080)/256; 12,12,12,12,12,12,12,12,12,12,36,36,16,1 TL1=(65536-46080)%256; 6,19,19, //吧 隐形 m++; if(m==20) 24,24,24,24,24,36,24,24,23,23,23,23,21,2 { 1,19,19, //的翅膀让梦 m=0; sec++; 21,21,24,24,16,16,14,14,12,12,12,36,12,1 if(sec==60) 2,12,12, //恒久比天长 留一 { sec=0; 12,12,24,24,24,24,21,21,19,19,16,16,14,1 min++; 4,14,14, //个愿望让自己 write_smh(11,min); } 14,14,14,14,12,12,12,12,12,12,12,12,12,1 write_smh(14,sec); 2,12,36, //想象... ... } }; } //定时中断0,用于产生唱歌频率 void write_com(uchar com) timer0() interrupt 1 { { rs=0; TL0=tl0_f; lcden=0; TH0=th0_f; //调入预定时值 P0=com; BEEP=~BEEP; //取反音乐输出IO yanshi(5); } lcden=1; yanshi(5); int0() interrupt 0 lcden=0; { } TR0=!TR0; void write_smh(uchar add,uchar date) TR1=!TR1; { flag=!flag; uchar shi,ge; } shi=date/10; int1() interrupt 2 ge=date%10; { write_com(0x80+0x40+add); aa++; write_date(0x30+shi); if(aa==3) write_date(0x30+ge); aa=0; } - 11 - 单片机实践含Protel课程综合设计说明书 void write_date(uchar date) for(num=0;num<16;num++) { { rs=1; write_date(table2[num]); lcden=0; yanshi(5); P0=date; } yanshi(5); } lcden=1; void init2() yanshi(5); { lcden=0; uchar num; } init(); void init() for(num=0;num<14;num++) { { TH1=(65536-46080)/256; write_date(table3[num]); TL1=(65536-46080)%256; yanshi(5); lcden=0; } write_com(0x38); write_com(0x80+0x40); write_com(0x0c); for(num=0;num<16;num++) write_com(0x06); { write_com(0x01); write_date(table4[num]); write_com(0x80); yanshi(5); } } void init0() } { void init3() uchar num; { init(); uchar num; for(num=0;num<16;num++) init(); { for(num=0;num<16;num++) write_date(table[num]); { yanshi(5); write_date(table5[num]); } yanshi(5); write_com(0x80+0x40); } for(num=0;num<16;num++) write_com(0x80+0x40); { for(num=0;num<16;num++) write_date(table0[num]); { yanshi(5); write_date(table6[num]); } yanshi(5); } } void init1() } { uchar num; //音阶声音自动输出试验 init(); void main(void) // 主程序 for(num=0;num<15;num++) { { uint i,j; write_date(table1[num]); TMOD = 0x11; //使用定时器0的16 yanshi(5); 位工作模式 } TCON=0x55; write_com(0x80+0x40); IE=0X8f; - 12 - 单片机实践含Protel课程综合设计说明书 PX1=1; while(1) init2(); { TR0=1; TR1=0; TR1=1; init0(); sec=0; delay_1ms(3000); for(i=0;i<464;i++) //播放音乐 { init1(); if(aa==2) TR0=1; i=463; TR1=1; if(!flag) sec=0; j=i; delay_1ms(3000); if(flag) for(i=0;i<336;i++) //播放音乐 i=j+1; { if(music2[i]==36&&!flag) // if(aa==1) 空音 i=335; { if(!flag) TR0 = 0; j=i; delay_1ms(200); if(flag) TR0 = 1; i=j+1; } if(music1[i]==36&&!flag) // else 空音 { { tl0_f=freq[music2[i]][0]; TR0 = 0; //置一个音符的值 delay_1ms(200); TR0 = 1; th0_f=freq[music2[i]][1]; } delay_1ms(200); else } { } tl0_f=freq[music1[i]][0]; TR0=0; //置一个音符的值 TR1=0; delay_1ms(3000); th0_f=freq[music1[i]][1]; delay_1ms(200); init3(); } delay_1ms(6000); } } TR0=0; } TR1=0; delay_1ms(3000); - 13 -
/
本文档为【简易音乐播放器设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索