基于51单片机的音乐播放器设计
基于51单片机的简易音乐播放器

基于单片机的电子琴课程设计一:课程目的以及要求用51单片机作为主控电路设计一个电子琴,实现能通过切换不同的键盘按键来切换歌曲。
二:课程设计背景:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要容是用STC89C52单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块。
本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。
利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。
并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。
三:系统硬件设计3.1系统框图3.2 51单片机产生音符原理MCS-5l单片机有两个定时器/计数器。
系统使用定时器/计数器0产生方波。
定时器/计数器l刖用于记录音符的时长,即按键持续的时问。
定时器/计数器0的工作方式是l,即为16位定时器/计数器。
16位定时器/计数器被赋予一个初值,并开始记数。
当记数溢出,产生中断后,中断服务程序将与蜂鸣器连接的引脚电平置反,并且对定时器/计数器再赋初值,重新开始记效。
之后产生中断,引脚电平再被置反,如此周而复始,在引脚上就能产生一个频率与定时初值有关的方波信号。
而定时初值与音符频率有关,相应频率的确定,可参照12平均律,相邻两个半音A和B的频率之间的关系为:A=B√12[1]。
定时器/计数器l的作用为记录音符的时长,工作方式为l,即16位定时器/计数器。
在12MHZ的晶体振荡器F,单片机的机器周期为l“S。
本系统中,定时器/计数器l以10ms的时长为l定时单位,记录音符持续了多少个定时单位,如此,使用一个unmgnedchar型变量既可以记录2.55s的时长,这在用于记录一般弹奏的音符时是足够的。
基于51单片机音乐播放器的设计

本科毕业论文(设计)题目:基于51单片机音乐播放器的设计学院:班级:姓名:指导教师:王振义职称:副教授完成日期:2015年5月20日基于51单片机音乐播放器设计摘要:在当今这个繁杂的社会,随着生活节奏的加快,人们从事长期的工作和面对学习过大的压力导致我们处于紧绷的状态,因此音乐对于调节压力不言而喻的十分重要。
校园里的上下课的铃声,广场中爷爷奶奶伴随着音乐进行锻炼身体。
此设备为人们目前压力过大的生活带来了乐趣。
本文是利用51单片机原理设计音乐演奏的硬件电路,并运用C语言进行程序部分的设计。
经过51单片机来产生频率不同的波,这些波经过单片机输出和放大电路的放大驱使喇叭发出不一样的音调,延迟系统有可控制音符发音长短。
把音乐转化成可以从发音设备中发出的悦耳动听的音乐。
关键字:单片机;音乐播放器;C语言Design based on 51 SCM music player Abstract:In today's complex society, with the accelerating rhythm of life, the people in the long-term work and face learning too much pressure lead to us is in a state of tension, so the music is very important for regulating pressure self-evident.The ringing of a campus of adding and dropping classes, grandma and grandpa accompanied by music in the square to exercise.This device at present stress for people brought joy of life.This paper is the use of 51 single chip microcomputer hardware circuit design of music playing, and part using C language program design.After 51 single chip microcomputer to produce different frequency of wave, the wave through single chip microcomputer output and amplifying circuit amplifier drives the horn a different tone, length of the delay system with control pronunciation notes.Can put the music into sweet music from pronunciation in the device.Keywords : Single-chip processor; Music player; C programming language目录1 引言 (1)2 51单片机的结构与原理 (2)2.1 51单片机的基本结构 (2)2.1.1 8051单片机的基本组成及主要性能 (2)2.1.2 8051单片机的外部引脚说明 (4)2.1.3并行输入/输出口电路结构 (5)2.1.4时钟电路 (6)2.2 51单片机的微处理器 (6)2.2.1 运算器 (6)2.2.2 控制器 (6)2.3 51单片机的存储器 (7)2.3.1 内部数据存储器 (7)2.3.2 内部程序存储器 (7)3 硬件电路设计 (8)3.1 总体设计框图 (8)3.2原理图 (8)3.3 焊接实物图 (9)3.4 时钟电路 (9)3.7 音频发生及放大电路 (9)4软件程序设计 (10)4.1单片机发声原理 (10)4.2 程序流程图 (11)4.3 程序代码 (12)5 调试与故障分析 (12)5.1 软件程序调试 (12)5.2 硬件电路调试 (13)6 总结与展望 (13)7参考文献 (14)8致谢 (15)1、引言单片机又被人家称为微控制器,是一种大规模构成的电路模块,其特点是功能实用、体积又小、性能优秀、价格优惠,适用大多数人群。
基于51单片机的音乐播放器设计

目录摘要 (1)Abstract (1)引言 (1)1系统主要功能 (2)2设计原理 (2)2.1STC89C51单片机的介绍 (2)2.2音乐发生器设计流程及思路 (2)2.3音频脉冲和音乐节拍的实现 (3)2.4音频功放 (5)3系统设计 (5)3.1硬件电路设计 (5)3.2软件设计 (6)3.3系统仿真 (7)结论 (8)参考文献 (8)基于51单片机的音乐播放器设计学生姓名:张家义学号:20095044005学院:物理电子工程学院专业:电子科学与技术指导教师:仓玉萍职称:讲师摘要:本音乐播放器是利用STC89C51单片机结合内部定时系统及数码管显示,设计一个简易的微电脑音乐盒。
本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程,包括数据处理子程序的设计、显示子程序的设计,最后针对仿真过程遇到的现象进行了具体的分析与说明。
关键词:STC89C51;音乐播放;中断51 Microcontroller-based Music Player DesignAbstract: The music player is the use of STC89C51 with combination of single-chip timing system and the digital display, design a simple microcomputer music box. This article analyses the music player based on 51 single chip computer hardware circuit and software specific to the design process, including the design of data processing programs and display , And at last, explaining the simulation process for analysis and description of the specific phenomenon encountered.Key words: STC89C51 ; music player; interrupt引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
基于51单片机音乐播放器课程设计报告

基于51 单片机音乐播放器课程设计报告课程设计课程设计名称:单片机课程设计专业班级电科0901 学生姓名:学号:200948360118指导教师:课程设计时间:2012-9-20〜2012-9-28 电子信息科学与技术专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文) 首页一设计任务及要求利用单片机定时器完成控制音乐的频率,每个音调响的时长,来达到播放出音乐。
并且实时监测红外接收管是否触发中断,来判断是否遥控器按下了播放/ 暂停键、上一首、下一首,进而实时处理。
并把信息显示在1602 液晶上。
音高与频率的对应关系下表:二设计原理图单片机与1602 液晶、红外接收管SM0038 接线图单片机驱动蜂鸣器电路及红外遥控器键码本次实验所用按键及对应编码:( 1 )上一首07 (2) 下一首15 (3)播放/暂停09三程序设计框图Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256;装入的初值(10ms 的初装值)Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; 装入的初值TH1 = Sound_Temp_TH1;TL1 = Sound_Temp_TL1;TMOD |= 0x11;ET0 = 1;ET1 = 0;PT0 = 0;TR0 = 0;TR1 = 0;EA = 1;void write_cmd(uchar cmd)//1602 lcd_rs=0; lcd_w=0;P0=cmd;delay(7);lcd_en=1;delay(6);lcd_en=0;void write_date(uchar date)//1602lcd_rs=1;lcd_w=0;P0=date;delay(7);lcd_en=1;delay(6);lcd_en=0;void init_1602()// 初始化1602lcd_en=0;write_cmd(1);write_cmd(0x84);write_cmd(0x38); write_cmd(0x0f); write_cmd(0x06);void inte1_init()// 红外中断 // 计算 TL1 应 // 计算 TH1 应 IT1 = 1;// 外部中断,下降沿中断EX1 = 1;// 开外部中断PX1 = 1;//EA = 1;// 开总中断IRIN=1; // 读引脚前,先置高void jiema() // 红外解码uchar i,j; for(j=0;j<4;j++)irma[j]=0;// 清除上次的码for(i=0;i<8;i++)irma[j]=irma[j]>>1;// 右移 1 位while(!IRIN);// 等待 0.56ms 低电平结束 time2_init();// 启动定时, 0.8ms while(!TF2);// 等到 0.8ms 时间到TR2=0;// 关定时器TF2=0;// 清标志位if(IRIN)// 发送是 1,其高电平时间长,大于 0.565ms irma[j]|=0x80;// 把最高位置 1 while(IRIN);// 等待高电平结束,以便于进入下一位的解码 } void Lcd_displays(uchar add,char *s)//1602 显示字符串uchar i;write_cmd(add);for(i=0;i<strlen(s);i++)write_date(s[i]);void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int 写命令写数据Speed)// 播放歌曲函数unsigned int NewFreTab[12]; // 新的频率表unsigned char i,j;unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsigned char 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;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; // 算出 1 分音符的长度(几个10ms)LDiv4 = LDiv0/4; // 算出 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; // 加12 是对中断延时的补偿}SLen=LengthTab[Length%10]; // 算出是几分音符XG=Length/10%10; // 算出音符类型(0 普通 1 连音 2 顿音) FD=Length/100;LDiv=LDiv0/SLen; // 算出连音音符演奏的长度(多少个10ms) if (FD==1)LDiv=LDiv+LDiv/2;if(XG!=1)if(XG==0) // 算出普通音符的演奏长度if (SLen<=4)LDiv1=LDiv-LDiv4;LDiv1=LDiv*SOUND_SPACE;LDiv1=LDiv/2; // 算出顿音的演奏长度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) void BeepTimer0(void) interrupt 1 // 音符发生中断BeepIO = !BeepIO;TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0;void inte1inte() interrupt 2 // 红外中断,外部中断 1 uchar k=10;EX1 = 0;// 关外部中断while(k--)〃循环十次,一次0.8ms,十次8ms , time2_init();while(!TF2);TF2 = 0;TR2 = 0;if(IRIN)// 中间如果出现高电平,就说明不是9MS 的引导电平{EX1 = 1;// 则开外部中断,退出中断return;while(!IRIN);// 运行到此,说明是引导电平,等待9MS 引导结束k=3;// 循环 3 次,每次0.8ms ,总共 2.4ms,while(k--)time2_init();while(!TF2);TF2 = 0;TR2 = 0;if(!IRIN)//2.4ms 结束如果变低电平,说明是重码,EX1 = 1;return;// 开中断,退出中断while(IRIN);// 等待 4.5ms 高电平结束,到此说明是正常红外信号jiema();// 解码程序,包括用户码,和按键码// irfenli();if(irma[2]==0x09||irma[2]==0x15||irma[2]==0x07){// 判断按下是哪一个键if(irma[2]==0x09)if(com==0)com=1;com=0; if(com)Lcd_displays(0x80,"START");Lcd_displays(0x80,"PAUSE");else if(irma[2]==0x15) newmusic++;if(newmusic==4)newmusic=1;Lcd_displays(0x80,"NEST "); newmusic--;if(newmusic==0)newmusic=3;Lcd_displays(0x80,"LAST ");switch(newmusic){// 更新1602 显示case 1:Lcd_displays(0x88,"MUSIC1");break; case 2:Lcd_displays(0x88,"MUSIC2");break; case 3:Lcd_displays(0x88,"MUSIC3");break; }// Lcd_display();EX1 = 1;return;三首歌曲的代码:位于music.h 文件内// 挥着翅膀的女孩unsigned char code Music_Girl[]={0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03,0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03, 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02, 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00}; // 同一首歌unsigned char code Music_Same[]={0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C, 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 };// 两只蝴蝶unsigned char code Music_Two[] ={0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01, 0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,课程设计课程设计名称:单片机课程设计专业班级电科0901 学生姓名:学号:200948360118指导教师:课程设计时间:2012-9-20〜2012-9-28电子信息科学与技术专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页一设计任务及要求利用单片机定时器完成控制音乐的频率,每个音调响的时长,来达到播放出音乐。
基于51单片机的音乐播放器设计

题目:音乐播放器课程设计(论文)任务书课程设计(论文)题目:音乐播发器基本内容:利用单片机的定时器产生各种频率的方波,信号经过放大后送到喇叭从而产生各种音调。
自行定义键盘,每按一键,可选择一首歌曲进行演奏,至少能够存储并播放十首歌曲,在LCD上显示演奏歌曲的名称并滚动显示歌词,单片机可连续播放这首歌曲,演奏可通过按键停止。
课程设计(论文)专题部分:题目:音乐播放器基本内容:通过单片机设计可以播放十首歌曲的音乐播放器,同步显示歌曲名称和歌词。
学生接受毕业设计(论文)题目日期第19 周指导教师签字:2009年7月摘要随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。
音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。
目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。
单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。
它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。
而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。
随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。
作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。
基于51单片机的音乐播放器[1]
![基于51单片机的音乐播放器[1]](https://img.taocdn.com/s3/m/f35ed64d3b3567ec102d8a20.png)
目录一、概述:_____________________________________________________________ 1二、实验目的:_________________________________________________________ 1三、实验设计:_________________________________________________________ 1四、调试与仿真:_______________________________________________________ 5五、板子外观:________________________________________________________ 15六、设计及调试中的体会:______________________________________________ 16一、概述:现当今,单片机的应用无处不在。
利用单片机控制的万年历也多不胜举。
时钟芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。
它有功能多﹑价格优﹑外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧。
本实验,用80C51单电机及少数外围实现音乐播放器功能,并伴有彩灯闪烁。
C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。
此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。
因此,使用C语言进行程序设计已成为软件开发的一个主流。
C 语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可靠性,便于改进和扩展,从而研制出规模更大、性能更完备的系统。
因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。
设计时采用Keil C软件编程,用protues软件仿真,核心器件采用灵活性高且价格低廉的A T89C51芯片。
设计完成后系统可播放自编歌曲,同时发光二极管随着歌曲的不同而闪烁。
基于51单片机音乐播放器设计毕业设计

学生毕业设计报告设计题目:基于51单片机音乐播放器设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:毕业设计任务书专业班级姓名一、课题名称:基于51单片机的音乐播放器设计二、主要技术指标:1、AT89c51的输入电压:DC+5V2、4k字节在系统编程(ISP) Flash 闪速存储器3、128*8字节内部RAM4、32个可编程I/O口线5、2个16位定时/计数器三、工作内容和要求:1、播放时显示歌曲序号(或名称)2、利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,演奏乐曲。
3、可通过功能键选择乐曲,暂停,播放4、按顺序从头至尾自动循环播放全部设置的乐曲5、按规范要求写出论文说明书四、主要参考文献:[1]胡汉才. 单片机原理及其接口技术(第2版)[M]. 北京:清华大学出版社,2003[2]孙涵芳.MCS-51系列单片机原理及应用[M].北京:北京航空航天大学出版社,1996.4[3]阎石.数字电子技术基础(第三版)[M].北京:高等教育出版社,1989[4]王晓君,安国臣.MCS-51及兼容单片机原理与选型[M] .北京:电子工业出版社,2003[5]马家辰,孙玉德,张颖.MCS-51单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,2001[6]林凌,李刚,丁茹,李小霞. 新型单片机接口器件与技术[M]. 西安:西安电子科技大学出版社,2005学生(签名)年月日指导教师(签名)年月日教研室主任(签名)年月日系主任(签名)年月日毕业设计开题报告设计(论文)题目基于51单片机的液晶显示器控制电路设计一、选题的背景和意义:随着科技的不断发展,目前市场上出现了许许多多的音乐播放器,人们对播放器的需求也越来越广泛,对其要求也越来越高。
基于51单片机音乐播放器设计

for (j =0; j < time; j++) //每个循环 约 3ms
{
for(i =0; i < 363; i++)
{;}
}
}
4 测试结果
音乐播放器的选择歌曲 、复位、LED显示的功能达到了所设计的要求,音质可能不是很好。
此设计的不足之处:播放完一首歌并显示完LED后,选择其他歌曲的时候会出现乱码,必须先要按复位键后才能选取其他的歌曲。产生的原因:是程序不是很完善,还要做适当的修改,应该要在LED的显示过程中让定时器保持关闭状态。
// 4_ 3_ 2 -
0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFF,0xFF,0xFF,
// 2_ 3_ 4 4
0xFC,0xAC,0x7F, 0xFD,0x23,0x7F, 0xFD,0x34,0xFF, 0xFD,0x34,0xFF,
// .7_ 2_ 1 -
0xFC,0x0C,0x7F, 0xFC,0xAC,0x7F, 0xFC,0x44,0xFF, 0xFF,0xFF,0xFF,
0x00//结束
};
voidInit(void); //初始化函数
voidDelayMs(unsignedinttime); //毫秒级延时函数
voidmain()
5 心得体会
在设计和完成的整个过程加深了对专业知识的理解和加深,也达到了预定的期望,对此很有成就感,提高了自己的动手能力。
社会实践报告
系 别:
班 级:
学 号:
姓 名:
作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的音乐播放器设计
基于51单片机的音乐播放器设计
【摘要】本音乐播放器是利用STC89C51单片机结合内部定时系统及数码管显示,设计一个简易的微电脑音乐盒。
本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程,包括数据处理子程序的设计、显示子程序的设计,最后针对仿真过程及结果进行了具体的分析与说明。
【关键词】单片机音乐播放器
一、前言
单片机又称单片微控制器,它不是完成某一逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
利用单片机实现音乐播放有很多优点,例如外部电路简单,控制方便、成本低等。
本文分析了基于51单片机的音乐播放器的硬件电路和软件的设计的具体过程,运用89C51单片机定时器产生固定频率的方波信号,驱动喇叭发出旋律,按下按键可以演奏预先设置的歌曲旋律,最重要的是还可以通过程序设计输入特定
歌曲来演奏。
二、硬件设计
该音乐播放器的硬件电路设计方框图和硬件总体电路图如图1和图1所示:
通过TXAL1 与TXAL2输入时钟信号,通过p1.0~p1.7输出控制现实控制信号的显示,有p3.2、p3.3与p3.5分别作为上一曲、下一曲和开始暂停的控制输入。
显示电路是一个8位共阴极LED数码管。
单片机的P0.0-P0.7分别与数码管的A、B、C、D、E、F、G、DP相连接。
晶振电路由两个30pF的电容和一个6Mhz的晶体振荡器组成。
节点1与单片机的XTAL2相连接,节点2与单片机的XTAL1相连接,从而为单片机提供时间信号,为音乐的播放节拍控制提供基本时间单位:当晶体振荡频率为6.MHz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X:1/(f×2)=(216-X)×12/(6×106)
控制电路,键一与p3.2相连、键二与p3.3相连、键3与p3.5相连。
当电键按下时接口接低电平,从而实现对音乐播放器的控制。
键一联通实现上一曲更换,键二联通实现下一曲更换,键三联通实现开始暂停操作。
发声电路由数字扬声器连接p2.0接口实现音乐的输出,由控制电路发出操作指令后,单片机调用相应程序,并将音乐信号由p2.0口输出,通过驱动扬声器发出美妙的音乐。
图1 硬件电路设计方框图
图2 硬件总体电路图
三、软件设计
软件设计是产生音乐的重要部分,音乐各音符所对应的频率和音乐的节拍都是通过软件的设计来实现的,软件设计的好坏直接决定了产生的音乐是否正确。
软件设计流程图如图3所示。
主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。
确定歌曲曲目后,数码管再进行显示。
然后,子程序对是否播放进行循环判断,得到播放中断的指令后再进行播放。
执行播放后,关闭数码管显示并调用查表子程序进行播放音乐。
在播放音乐的过程中,查表子程序循环判断音乐是否结束。
当音乐结束时,程序跳转回曲目识别子程序。
图3 软件设计流程图
四、系统仿真分析
仿真很好的实现了程序的主要功能,音效良好,说明电路的设计和程序的设计达到了要求。
音乐播放器很好的实现了播放/暂停、上一曲、下一曲的功能,并满足了数码管显示的特殊要求。
51系列单片机,体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好。
本设计以51单片机为主控系统,实现了单片机控制音乐播放的功能。
功能多样,设计简单,性能稳定,具有很强的应用价值。
本论文得到大学生创新创业训练项目基金支持。
参考文献:
[1]何立民.MCS-51系列单片机应用系统设计[M].北京:北京航天航空大学出版社,2001.
[2]赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2012,02.
[3]李朝清.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2011,01.
------------最新【精品】范文。