基于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单片机的音乐播放器设计
目录摘要 (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]
目录一、概述:_____________________________________________________________ 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单片机的音乐播放器制作讲解
II
目录Βιβλιοθήκη 目录第 1 章 引言................................................................................................................. 1 1.1 选题背景 ................................................................................................................... 1 1.2 设计原理 ................................................................................................................... 1 1.3 单片机简介 ............................................................................................................... 2 1.4 单片机的发展历史 ................................................................................................... 2 1.5 单片机的应用领域及发展趋势 ............................................................................... 2 第 2 章 方案论证......................................................................................................... 5 2.1 设计要求 ................................................................................................................... 5 2.2 系统描述 ................................................................................................................... 5 2.3 设计方案 ................................................................................................................... 6 2.3.1 集成电路 ................................................................................................................ 6 2.3.2 单片机最小系统 .................................................................................................. 10 2.3.3 结论 ...................................................................................................................... 12 第 3 章 硬件设计....................................................................................................... 13 3.1 硬件结构 ................................................................................................................. 13 3.2 中心控制模块 ......................................................................................................... 13 3.3 电源模块 ................................................................................................................. 16 3.4 控制电路 ................................................................................................................. 17 3.5 复位电路 ................................................................................................................. 17 3.6 电路设计所需要的器件 ......................................................................................... 19 第 4 章 软件设计....................................................................................................... 20 4.1 音乐发声设计原理 ................................................................................................. 20 4.1.1 发声原理 .............................................................................................................. 20 4.1.2 单片机产生不同频率脉冲信号的原理 .............................................................. 20 4.1.3 键控子程序 .......................................................................................................... 23 4.1.4 播放/暂停子程序 ................................................................................................. 24 4.1.5 曲目选择子程序 .................................................................................................. 24 4.2 音乐播放程序设计 ................................................................................................. 25
基于AT89C51单片机的音乐播放器课程设计
五、总 结
通过本次设计,我对单片机这门课有了更进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89C52单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。
基于AT89C51单片机的音乐播放器课程设计
一、设计任务与要求
基于单片机的音乐播放器可应用于mp3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的"音乐播放器",本播放器可实现播放、暂停、复位等功能。为了体现乐曲播放过程中的动态效果,增加了1只LED,作随机闪烁以指示旋律的节奏。由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用AT89C51单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
总体原理:乐曲中不同的音符,实质就是不同频率的声音。通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
仿真图: 实物图:
歌曲《军港之夜》
实物图波形:仿Βιβλιοθήκη 图波形:暂停仿真及实物图实物图波形:仿真图波形:
基于51单片机的音乐播放器
基于51单片机的音乐播放器制作一、设计原理乐曲中有不音符,实质就是不同频率的声音。
通过单片机产生不同的频率的脉冲信号,经过放大电路,由蜂鸣器放出,就产生了美妙和谐的乐曲。
二、AT89C51简介AT89C51:是一种4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AAT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要功能特性:1)与MCS-51兼容;2)4K字节可编程FLASH存储器;3)全静态工作:0Hz-24MHz;4)128×8位内部RAM;5)两个16位定时器/计数器;6)5个中断源;7)可编程串行通道;8)低功耗的闲置和掉电模式;9)片内振荡器和时钟电路。
三、硬件结构下图是以AT89C51单片机为核心的音乐播放器系统硬件设计结构图。
该系统主要是由复位电路、按键电路、时钟电路、中心模块、扬声器驱动等组成。
其工作原理为:此音乐播放器,有三个按键及控制按钮:播放/暂停、下一曲、上一曲;通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。
三、简易仿真原理图四、音乐发声设计原理4.1发声原理一首乐曲是由多个音符构成的。
每个音符都对应着一个确定的频率,乐曲中不同的音符,实质就是不同频率的声音;另外每个音符会根据乐曲的要求设定一个确定的节拍。
可以控制单片机不同频率不同节拍的脉冲信号,蜂鸣器发出就产生了美妙和谐的乐曲。
4.2单片机产生不同频率脉冲信号的原理1、要产生音频脉冲,只要算出来某一个音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这半周期的时间,每当计时到后就降输出脉冲I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O 脚上得到此频率的脉冲。
基于C51单片机的MP3播放器设计
基于C51单片机的MP3播放器设计一、引言随着科技的不断发展,人们对音乐的需求也越来越高。
MP3播放器作为一种便携式的音乐播放设备,已经成为人们日常生活中不可缺少的一部分。
本文将介绍一种基于C51单片机的MP3播放器设计。
二、硬件设计1.主控芯片:选择C51单片机作为主控芯片,因为它具有较低的成本、较好的性能和广泛的应用。
2.存储器:通过串口与单片机连接一个外部闪存芯片作为存储设备,用于存储MP3文件。
闪存芯片的容量可以根据需求进行选择,一般选择4GB以上的容量。
3.音频解码芯片:为了解码MP3文件并输出音频信号,需要选择一个音频解码芯片。
常用的音频解码芯片有VS10XX系列芯片,可以通过SPI接口与单片机通信。
4.音频输出电路:为了使音频信号能够输出到扬声器或耳机上,需要设计一个音频输出电路。
这个电路一般包括运放、耳机插座等组件。
5.控制界面:为了方便用户对MP3播放器的控制,需要设计一个控制界面。
可以选择使用按键、旋钮、触摸屏等方式进行控制。
6.电源电路:为了给MP3播放器提供电源,需要设计一个电源电路。
可以选择使用直流电池或者USB供电。
三、软件设计1.系统初始化:在系统启动时,需要进行一系列的初始化操作,包括初始化串口、外部存储器、音频解码芯片等。
2.文件读取:通过串口从外部存储器读取MP3文件,并将其存储到内存中。
3.解码与播放:将MP3文件解码,并通过音频解码芯片输出音频信号。
可以通过SPI接口与音频解码芯片进行通信,控制解码过程和音频输出。
4.控制界面处理:根据用户的操作,通过控制界面进行相应的处理。
例如,用户可以通过按键或旋钮控制音量、切换歌曲等。
5.电源管理:对于电源供应方面,需要设计合适的电源管理模块。
例如,在电池电量过低时,需要提醒用户充电或自动关闭设备。
6.其他功能:根据实际需求,可以添加其他功能。
例如,可以设计一个定时关闭功能,让播放器在一定时间后自动关闭。
四、总结本文介绍了一种基于C51单片机的MP3播放器设计。
基于51单片机音乐播放器设计
基于51单片机音乐播放器设计音乐播放器是一种可以播放音频文件的设备,广泛应用于日常生活中。
本文将基于51单片机设计一个简单的音乐播放器。
一、设计目标本音乐播放器设计的主要目标是实现以下功能:1.支持播放多种格式的音频文件,如MP3、WAV等;2.支持音量调节和音频文件选择功能;3.具备简单的界面和易于理解的操作方式;4.能够适应不同的音频文件大小和音乐时长。
二、硬件设计2. 存储器:选择外接Flash存储器作为音频文件的存放介质,具备较大的存储容量和较高的读写速度,能够满足音频文件的多样性需求。
3.音频解码芯片:选择支持MP3和WAV格式音频解码的芯片,能够将音频文件翻译成能够被音频输出部分播放的信号。
4.音频输出部分:选择合适的音频输出部分,如耳机接口或喇叭接口,将解码后的音频信号输出为声音。
三、软件设计1.系统初始化:在开机时进行系统初始化,包括对主控芯片、存储器和音频解码芯片的初始化。
2.文件系统管理:设计一个简单的文件系统,能够以目录结构的形式管理存储器中的音频文件。
3.音频解码:根据选择的音频文件格式,进行相应的解码操作,将解码后的音频数据传输给音频输出部分。
4.播放控制:实现音量调节和音频文件选择功能,能够暂停、播放、停止等操作。
5.用户界面:设计一个简单直观的用户界面,通过按键或显示屏等方式进行操作反馈和信息显示。
四、系统流程1.开机初始化:对主控芯片、存储器和音频解码芯片进行初始化。
2.文件系统管理:读取存储器中的文件目录,生成文件列表供用户选择。
3.用户操作:用户通过按键或其他方式进行音量调节和音频文件选择操作。
4.音频解码:根据用户选择的音频文件,进行相应的解码操作。
5.播放控制:根据用户的操作,进行音频的暂停、播放、停止等操作。
6.操作反馈:在用户界面上显示操作反馈和信息。
五、总结本文基于51单片机设计了一个简单的音乐播放器,实现了支持多种格式音频文件的播放、音量调节和文件选择功能,并提供了简单的用户界面。
基于AT89C51和弦音乐播放器设计
基于AT89C51和弦音乐播放器设计引言:弦乐器在音乐中扮演着重要的角色,其音色独特,能够创造出美妙的音乐效果。
为了能够方便地播放弦乐曲目,我们设计了一个基于AT89C51单片机的弦音乐播放器。
该播放器具有简单、方便的操作界面,能够存储和播放多种弦乐曲目,为音乐爱好者们提供更多的选择和享受。
一、硬件设计1.AT89C51单片机我们选择AT89C51作为音乐播放器的控制芯片。
AT89C51是一款具有多个I/O端口、定时器/计数器、串行通信接口等功能的8位微控制器。
它的存储容量为4KB,适用于小规模的应用。
2.存储芯片为了能够存储多首弦乐曲目,我们选择了一个SPI接口的Flash存储芯片。
该存储芯片具有较大的存储容量和快速的读取速度,能够满足音乐播放器的需求。
3.LCD显示屏我们选用了一个16x2字符LCD显示屏,用于显示播放器的状态、曲目列表等信息。
LCD显示屏能够提供清晰、易读的显示效果,方便用户操作。
4.电源管理模块为了满足音乐播放器的电源需求,我们设计了一个电源管理模块。
该模块包括电池、电源滤波电路、稳压电路等元件,能够为音乐播放器提供稳定的电源。
5.按钮和旋钮我们在音乐播放器上布置了一些按键和旋钮,以便用户进行曲目选择、音量调整和播放控制等操作。
这些按键和旋钮通过GPIO接口与单片机相连接,实现对播放器功能的控制。
二、软件设计1.弦乐曲目存储我们设计了一个简单的文件系统,将弦乐曲目以二进制格式存储在Flash存储芯片中。
每个曲目包含其名称和相应的音频数据。
根据用户选择的曲目,播放器通过Flash读取相应的数据并进行解码。
2.播放控制播放器具有基本的播放控制功能,如播放、暂停、停止、上一首和下一首等。
用户可以通过按键来控制播放器的功能,通过LCD显示屏来显示播放器的状态。
3.音量调节为了提供方便的音量调节功能,我们设计了一个ADC接口的电位器电路,用于实时读取用户调节的音量大小。
在音乐播放过程中,单片机根据读取的音量数据来调节输出音频信号的幅度,从而实现音量的调节。
基于51单片机简易音乐播放器设计
赣南师院物理与电子信息学院数字电路课程设计报告书姓名:班级:1001电子信息工程学号:时间:基于51单片机音乐播放器设计1绪论1.1 单片机概述单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:(1)、在智能仪器仪表的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
(2)、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
(3)、在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
51单片机毕业课程设计音乐播放器
51单片机毕业课程设计音乐播放器本文档旨在提供关于51单片机毕业课程设计的音乐播放器的详细内容。
音乐播放器是一种通过使用51单片机来实现的设备,它可以播放音乐文件并提供一些基本的控制功能。
设计概述功能要求音乐播放器的主要功能要求包括:1. 播放音乐文件:能够读取存储器中的音乐文件,并将其播放出来。
2. 控制功能:提供基本的控制功能,如播放、暂停、下一曲和音量调节等。
3. 显示功能:在显示屏上显示当前播放的音乐信息,如歌曲名、艺术家和播放进度等。
硬件组成音乐播放器的硬件组成包括:1. 51单片机:作为主控芯片,负责控制整个系统。
2. 存储器:用于存放音乐文件。
3. 音频模块:用于将数字音频信号转换为模拟音频信号输出。
4. 控制模块:包括按钮、旋钮等,用于用户控制音乐播放器的操作。
5. 显示屏:用于显示当前播放的音乐信息。
软件实现音乐播放器的软件实现包括以下几个方面:1. 文件系统:实现对存储器中音乐文件的读取和管理。
2. 音频解码:将读取的音乐文件进行解码,并将解码后的音频数据传递给音频模块输出。
3. 用户界面:通过用户界面与用户进行交互,接受用户的控制指令。
4. 显示管理:管理显示屏的内容,实时显示当前播放的音乐信息。
设计步骤1. 硬件搭建:按照硬件组成部分的描述,搭建音乐播放器的硬件平台。
2. 软件编写:实现音乐播放器的软件功能,包括文件系统、音频解码、用户界面和显示管理等。
3. 调试测试:进行软硬件的调试和测试,确保音乐播放器的各项功能正常运行。
4. 完善优化:在实际测试中发现问题,进一步完善和优化音乐播放器的功能和性能。
5. 文档撰写:完成毕业课程设计文档的撰写,详细描述音乐播放器的设计思路、实现过程和测试结果。
总结通过本文档,你可以了解到51单片机毕业课程设计音乐播放器的完整设计内容,包括设计概述、硬件组成、软件实现和设计步骤等方面的内容。
这将帮助你更好地理解音乐播放器的原理和实现方法,为你的毕业课程设计提供一定的参考和指导。
基于51单片机的音乐播放器的软件设计
本科生毕业设计(论文)学院:电子与电气工程学院专业:自动化**理工学院本科生毕业设计(论文)基于51单片机的音乐播放器的软件设计Software Design of Music Player Based on 51 MCU总计: 33 页表格: 3 个插图: 15 幅** 理工学院本科毕业设计(论文)基于51单片机的音乐播放器的软件设计Software Design of Music Player Based on 51 MCU学院:电子与电气工程学院专业:自动化学生姓名: ***学号: ***指导教师(职称):***评阅教师:完成日期:**理工学院Nanyang Institute of Technology目录1 引言 (1)1.1 设计背景 (1)1.2 设计意义 (1)1.3 理论分析与方案论证 (1)1.3.1 理论分析 (1)1.3.2 设计方案论证 (2)2 系统硬件原理及概述 (3)2.1 STC12C5A60S2处理器介绍 (3)2.2 系统硬件电路综述 (3)2.2.1 硬件系统总体设计方案 (3)2.2.2 USB总线的通用接口芯片CH375电路 (4)2.2.3 LCD12864显示电路 (5)2.2.4 按键控制电路 (5)2.2.5 音频解码芯片VS1003电路 (5)3 系统软件设计 (6)3.1 软件开发平台 (6)3.2 系统的软件设计 (7)3.2.1 软件总体分析 (7)3.2.2 CH375软件系统设计 (10)3.2.3 CH375模块的U盘数据读取程序设计 (11)3.2.4 VS1003模块的MP3文件播放程序设计 (12)3.3 系统流程图 (14)4 系统调试结果及分析 (15)结束语 (17)参考文献 (18)附录 (19)致谢 (20)1 引言1.1 设计背景随着电子技术的发展,MP3播放器向大容量、高音质、小巧便携不断发展。
虽然播放器与存储器的一体化设计,使MP3播放器便于携带,但与此同时他也带来了很多新的问题,比如存储容量固定。
基于51单片机的音乐播放设计
基于51单片机的音乐播放设计摘要为方便人们的日常生活,优化学校、机关等单位的计时系统,采用以单片机为基础设计了一种的自动音乐播放器。
本设计利用单片机AT89S52的定时和计数功能,来完成时间的显示和定时功能。
并且,通过对定时器初值的设定来产生不同频率的声音,利用定时器中断来完成对音乐节拍长度的控制。
通过音频功率放大器,将单片机输出的信号放大,再通过喇叭播放乐曲。
通过MAX232型芯片,可以转换PC机上的电压和单片机的电源电压,再通过串口接入PC机,这样就能从PC机上将用C语言编写的程序下载到单片机上。
最后可在数码管上显示时间,当定时时间到后,喇叭自动播放一段连续的音乐。
此设计摆脱了传统闹钟的刺耳声音,取而代之的是美妙的音乐,能为人们的日常生活提供准确的计时,且成本低廉,值得推广。
关键词:音乐播放;音频转换;时间显示;ULN2003Music playback design based on 51 single chip microcomputerAbstractFor the convenience of People's Daily lives, to optimize the timing system schools, agencies and other units, on the basis of the single chip microcomputer was adopted to design a kind of automatic music player.This design using the single chip microcomputer AT89S52 timing and counting functions, to complete the time display and timing functions.And, by the setting of the initial value of timer to generate different frequencies of sound, using a timer interrupt to complete control of the beat of the music length.Through the audio power amplifier, MCU output signal amplification, then play the music over the loudspeaker.Through MAX232 chip, can convert the voltage of power supply voltage of PC and microcontroller, through a serial port connected to the PC, so you can from the PC will be written in C language program downloaded to the microcontroller.Finally on the digital tube display time, when the time to regularly, speakers play a continuous music automatically.This design to get rid of the traditional alarm clock sharp voice, instead, the wonderful music, can offer the accurate timing for People's Daily lives, and low cost, is worth promoting.Key words:Music playback;Audio conversion;Time display;ULN2003目录1 总体设计 (1)2 硬件设计 (2)2.1 AT89S52型单片机介绍 (2)2.2 ULN2003及外围电路的设计 (2)2.3 串行通信和MAX232芯片 (3)2.4 AT89S52的定时/计数器概述 (3)2.5 LED显示 (5)3 软件设计 (6)3.1 音乐编程原理及其流程图 (6)3.1.1 产生声音信号 (6)3.1.2 产生节拍信号 (6)3.1.3 音频转换 (7)3.2 时间显示程序设计 (8)4 仿真及调试过程 (9)4.1 硬件调试过程 (9)4.2 软件仿真过程 (9)5 结束语 (11)参考文献 (12)1 总体设计在基于单片机的自动音乐播放器中,采用AT89C52RC型单片机为硬件基础,通过C语言对芯片进行编程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
赣南师院物理与电子信息学院数字电路课程设计报告书姓名:班级:1001电子信息工程学号:时间:基于51单片机音乐播放器设计1绪论1.1 单片机概述单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
DP-51S单片机仿真实验仪是由广州致远电子有限公司设计的DP系列单片机仿真实验仪之一,是一种功能强大的单片机应用技术学习、调试。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:(1)、在智能仪器仪表的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
(2)、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
(3)、在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:(1)、微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW (脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
(2)低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
1.2 课题概述基于单片机的音乐播放器可应用于mp3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括"Do"、"Re"、"Me"--等音阶在内的各种频率声音。
将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。
基于这个思想,我设计了一款特殊的"音乐播放器",本播放器可实现播放、切换、复位等功能。
由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用STC89C52单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
在此基础上,可以添加按键,LED显示屏等模块,实现切换歌曲,歌名显示,动感音乐屏等功能。
2 硬件电路设计2.1设计目的设计一个音乐播放器,有五个按键及控制按钮:播放、切换、复位,通过控制按钮控制单片机,播放所要求的音乐,并通过放大电路和喇叭输出声音。
同时一曲演奏结束时,LED灯亮,并显示出一个心形的形状。
图1 电路设计原理图2.3总原理图图2 总原理图3.系统软件设计3.1主程序流程图图3 主程序流程图3.2 音调的产生3.2.1 音符频率的产生:音符及定时器初始值:例如:中音1(do)的音频=523hz,周期T=1/523s=1912us定时器/计数器0的定时时间为:T/2=1912/2=956us定时器956us的计数值=定时时间/机器周期(12mhz晶振)=956us/1us=956装入T0计数器初始值为65536-956=64580(0xFC44)将0xFC44装入T0寄存器中(TH0装高八位即TH0=0XFC;TL0装低八位即TL=44),启动T0工作后,每技术956次将产生溢出中断,进入中断服务,每次对P1.0引脚的输出取反,就可得到中音do(523hz)的音符频率。
依此产生其他的不同音符以下给出四个八度的28个频率数据频率-半周期数据表高八位0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音12345670xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567频率-半周期数据表低八位0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音12345670x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16 //超高音 12345673.2.2 节拍的产生音乐中的节拍用延时时间产生。
例如:1拍=0.4s,1/2=0.2s,以此类推。
只要求出1/2拍的延时时间,其余节拍是他的倍数就行了。
得到音符并加上起对应的节拍就可得到音调。
以此将音调连起来就可获得曲子。
3.3 程序设计3.3.1 音乐库程序“music.h”库#ifndef _MUSIC_H#define _MUSIC_Hunsigned int code tone[12]={1012,956,852,759,716,638,568,506,478,426,379,1136}; // T1定时的时间unsigned char code song1[]={3,6,6,3, 5,6,5,6, 6,3,6,6,5, 3, 11,2,2,11,1,2,1,2, 2,11,1,2,1, 11, 3,6,7,6,5,5, 6,5,6,8,7,6,5,3, 6,3,5, 6,8,7,6,5, 3,6,7, 8,7,6,5,3, 6,3,5,6,8,9,8,7,6, 7, 7,3, 8,7,6,5,3, 6,5,4,3,1,2, 3,6,5,6,5,6,3, 8,7,6,5,3, 6,5,4,3,1,2, 3,6,5,6,5, 6, 15};//风中有朵雨做的云的简谱unsigned char code beat1[]={8,8,8,8, 8,4,4,16, 8,8,8,4,4, 32, 8,8,8,8,8,4,4,16, 8,8,8,4,4, 32, 8,8,4,4,4,4, 24,4,4, 8,8,4,8,8,24,4,4, 8,8,4,4,8, 24,4,4, 8,4,4,8,8, 24,4,4, 8,8,4,4,4,4, 32,24,8, 8,4,4,8,8, 8,4,4,8,4,4, 8,8,8,4,4, 24,8,8,4,4,8,8, 8,4,4,8,4,4, 8,8,8,4,4, 32};//风中有朵雨做的云的节拍unsigned char song2[]={11,3,3,1, 2,3,2,3, 3,12,11, 1, 3,5,5,3, 6,5,3,3,3,2,1, 2, 3,0,11, 12,0,12,1, 0,3,3,0,12,0,12, 0,3,3,0, 0,12,0,12, 2,12,1,0,12, 11, 15};//军港之夜的简谱unsigned char code beat2[]={8,8,8,8, 4,4,16,8, 16,8,8, 32, 8,8,8,8, 8,16,8,16,4,4,8, 32,16,8,8, 4,4,16,8, 8,8,8,8, 4,4,24,8,8,8,8, 8,4,4,16, 8,4,4,8,8, 32};//军港之夜的节拍unsigned char code song3[]={1,1,2,1, 4,3, 1,1,2,1, 5,4, 1,1,8,6, 4,3,2,7,7,6,4, 5,4, 15};//生日快乐歌的简谱unsigned char code beat3[]={4,4,8,8, 8,16,4,4,8,8, 8,16,4,4,8,8, 8,8,8, 4,4,8,8, 8,16};//生日快乐歌的节拍unsigned char code song4[]={6,3,3,5,5,6,6, 5,6,7,6, 3,3,3,5,6,6,6,5,5,3,3,5,3, 3,3,3,5,6,6,5, 3,5,3, 2,2,2,3,5,5,5,2,3,2,1,7,7, 6,3,3,5,6,6,6,6, 5,6,7,6,3,3,3,5,6,6,6,5, 3,3,3,5,3, 3,3,3,5,6,6,5,3,5,3, 2,2,2,3,5,5,5, 2,3,2,1,0,0, 15};unsigned char code beat4[]={8,8,8,8,8,8,16, 8,8,16,32, 8,8,8,8,8,8,8,8,8,8,8,8,32, 8,8,8,8,16,8,8, 24,8,32, 8,8,8,8,8,8,16, 8,8,8,8,16,16, 8,8,8,8,8,8,8,8, 8,8,16,32, 8,8,8,8,8,8,8,8,8,8,8,8,32, 8,8,8,8,16,8,8, 24,8,32,8,8,8,8,8,8,16,8,8,8,8,16,16};#endif//如果要添加歌曲可以在此库中添加即可3.3.2 播放器程序#include <reg52.h>#include <intrins.h>#include <music.h>#define uchar unsigned char#define uint unsigned intsbit beep=P2^0;sbit key1=P3^0; //选择第一首歌的按键sbit key2=P3^1; //选择第二首歌的按键sbit key3=P3^2; //选第三首歌的按键sbit key4=P3^3; //选第四首歌的按键uchar code led[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};uchar code led1[]={0x01,0x83,0xc7,0xef,0xff};uchar tone_H, tone_L, times, i=0, j, temp, x;uchar beat_H=(65536-62500)/256;//产生1/8拍的定时初值uchar beat_L=(65536-62500)%256;bit flag,flag1; //标志位void play(uchar *song,uchar *beat);void display_led();void delay(uint m) //延时函数{while(--m);}void init() //初始化函数{flag1=1;beep=0;EA=1;ET0=1;ET1=1;TMOD=0x11;}void main(){init();while(1){if(flag1){if(key1==0){delay(3000);play(song1,beat1);}elseif(key2==0){delay(3000);play(song2,beat2);}elseif(key3==0){delay(3000);play(song3,beat3);}elseif(key4==0){delay(3000);play(song4,beat4);}}elsedisplay_led();}}void play(uchar *song,uchar *beat) //播放音乐函数{while(song[i]!=15){P0=0xff;times=beat[i];flag=0;tone_H=(65536-tone[song[i]]-6)/256; //减去6us左右的进入tone_L=(65536-tone[song[i]]-6)%256; 中断的时间TH0=tone_H;TL0=tone_L;TH1=beat_H;TL1=beat_L;TR0=1; //开启定时器T0、T1 TR1=1;while(flag==0); //等待一个音符唱完i++;TR0=0; //关闭定时器T0、T1TR1=0;flag1=0; //flag1清零,LED显示打开}}void display_led() //LED显示函数{for(x=0;x<2;x++){for(j=0;j<8;j++){P1=led[j];delay(50000);}delay(5000);for(j=0;j<5;j++){P1=led1[j];delay(50000);}delay(5000);for(j=0;j<5;j++){P1=led1[4-j];delay(50000);}delay(10000);for(j=0;j<6;j++){P1=0x00;delay(20000);P1=0xff;delay(20000);}}P1=0x00;delay(50000);flag1=1; //LED显示完毕,flag1置位}void timer0() interrupt 1 //T0产生音符频率{TH0=tone_H;TL0=tone_L;if(flag==1)TR0=0;elsebeep=~beep;}void timer1() interrupt 3 //T1产生节拍{TH1=beat_H;TL1=beat_L;if(times==0){flag=1;TR1=0;}times--;}4 测试结果音乐播放器的选择歌曲、复位、LED显示心形的功能达到了所设计的要求,音质可能不是很好。