基于单片机音乐播放器节拍显示毕业论文分解.docx
《基于单片机音乐播放器节拍显示毕业论文分解.docx》由会员分享,可在线阅读,更多相关《基于单片机音乐播放器节拍显示毕业论文分解.docx(19页珍藏版)》请在冰点文库上搜索。
基于单片机音乐播放器节拍显示毕业论文分解
毕业设计(论文)
题目:
基于单片机音乐播放器节拍显示设计
院(系):
机电工程系
专业:
电气自动化技术
姓名:
王倩
学号:
5802021001038
指导教师:
刘静
二〇一三年三月十四日
毕业设计(论文)任务书
学生姓名
王倩
学号
5802021001038
专业
电气自动化技术
院(系)
机电工程系
毕业设计(论文)题目
基于单片机音乐播放器自动节拍显示设计
任务与要求
任务:
本设计是采用AT89C51单片机为核心设计的数字音乐播放器,实现彩灯伴奏,按键弹奏,显示音乐节拍的功能。
要求:
(1)彩灯伴奏模块则是LED通过控制模块的控制伴随音乐节拍闪亮。
(2)按键模块是由8个按键组成,其中1个键用于实现播放器自动播放和自行弹奏两模式间的转换,其余7个键作为音符的输入或音乐的播放选择。
(3)显示音乐节拍是音乐播放系统设计上增加液晶显示器,采用的是LCD1602显示模块,为使用者提供曲目信息。
完成时间段
2012年11月26日至2013年3月18日共16周
指导教师单位
重庆科创职业学院
职称
讲师
院(系)审核意见
毕业设计(论文)进度计划表
日期
工作内容
执行情况
指导教师
签字
2012.11.26-2012.12.7
查找资料,选题
2012.12.8-2012.12.30
完成论文的初稿
2012.12.31-2012.1.20
完成论文二稿的写作
2013.1.21-2013.2.15
完成论文的终稿及格式修改
2013.2.16.-2013.3.4
定稿,打印论文,做好答辩的准备
2011.3.5-3.18
论文答辩
教师对进度计划
实施情况总评
签名
年月日
本表作评定学生平时成绩的依据之一
毕业设计(论文)中期检查记录表
学生填写
毕业设计(论文)题目:
基于单片机音乐播放器节拍自动显示设计
学生姓名:
王倩
学号:
5802021001038
专业:
电气自动化
指导教师姓名:
刘静
职称:
讲师
检查
教师填写
毕业设计(论文)题目工作量
饱满
一般
不够
毕业设计(论文)题目难度
大
适中
不够
毕业设计(论文)题目涉及知识点
丰富
比较丰富
较少
毕业设计(论文)题目价值
很有价值
一般
价值不大
学生是否按计划进度独立完成工作任务
学生毕业设计(论文)工作进度填写情况
指导次数
学生工作态度
认真
一般
较差
其他检查内容:
存在问题及采取措施:
检查教师签字:
年月日
院(系)意见
(加盖公章):
年月日
摘要
目前流行的MP3播放器的音质已相当好,但略感遗憾的是除了选择歌曲和显示歌名外,绝大部分播放器没有诸如随意弹奏乐曲、乐曲节奏跳动等功能。
而随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一。
要为现代人工作、生活提供更好的更方便的服务就需要从单片机技术着手,一切向着数字化控制、智能化控制方向发展。
本设计是采用单片机为核心设计的数字音乐播放器。
本设计在实现音乐的播放及歌曲名显示等基本功能的基础上进行了扩展,添加了彩灯伴奏、按键弹奏、显示音乐节拍等功能。
本论文给出了系统方案的建立、硬件电路的详细设计及软件的程序实现。
并通过软硬件的联立调试,验证了设计方案的可行性。
关键词:
多功能MP3音乐播放器单片机按键弹奏
Abstract
ThecurrentpopularMP3playersoundhasbeenquitegood,butfeelregretfulslightlyisinadditiontothechoiceofsongsanddisplaythesongname,mostplayerswithoutsuchasrandomplaymusicrhythm,musicandotherfunctions.Butaspeoplelivingstandardriseceaselessly,SCMcontrolisoneofthegoalsthatpeoplepursue.Forthemodernlifeofwork,toprovidebetterandmoreconvenientserviceneedsfromproceedtowardtheSCMtechnology,alldigitalcontrol,intelligentcontroldirection.
Thisdesignistheuseofsingle-chipmicrocomputerasthecoredesignofthedigitalmusicplayer.Thedesignintheimplementationofmusicplayingandthesongnamedisplayandotherbasicfunctionsbasedontheexpansion,addinglightsaccompaniment,playbutton,displaythebeatofthemusicandotherfunctions.
Thispapergivesasystemscheme,hardwareestablishmentdetailedcircuitdesignandsoftwareprogram.Andthroughthesoftwareandhardwareofsimultaneousdebugging,verifythefeasibilityofthedesignscheme.
KEYWORD:
multifunctionMP3musicplayersinglechipmicrocomputerplaybutton
第一章绪言
二十世纪九十年代以来,计算机、信息、电子、控制、通信等技术得到迅速发展,促使了社会生产力的提高,也使人们的生产方式和生活方式产生了日新月异的变化。
随着人们生活水平的提高及对音乐的喜爱,对音乐播放器的品质,功能,品种等提出了越来越多的要求,表现在对控制系统性能、可靠性等要求越来越高。
而品质的提高,功能的更新,可靠性的增强,品种的变化无不与产品的核心控制部分水平的提高密不可分。
家用音乐播放器产品及其它有关消费电器产品都是一些开环或闭环控制系统,都由核心控制部分,执行部分与人机界面三部分组成。
而最为重要的控制部分一般是由单片机来执行完成的,这就必将导致和促进单片机在音乐领域应用的发展。
现在这些由单片机实现的音乐播放器的功能越来越强、费用越来越低。
例如,就目前市场上的MP3的功能越来越强大体积却越来越小,价格也逐渐便宜,被大多数人所能接受。
但这些音乐播放器也或多或少的存在着一些问题,解决这些问题,非智能化的单片机莫属。
本设计由硬件电路设计和软件程序设计两大部分组成。
整个硬件电路是由中心控制、播放、选曲、显示、按键和彩灯等模块组成,中心控制模块采用AT89C51单片机,播放模块是由8050NPN三极管和电磁蜂鸣器组成,采用LCD1602显示模块,按键设有8个按键,其中7个作为音符输入,另外1个作为模式转换按键,实现用户自弹作曲。
软件程序运用C语言编程实现。
第二章硬件设计
第一节硬件电路的设计框图
硬件电路如图2.1所示由控制模块、按键模块、LCD显示模块、扬声器播放模块、彩灯伴奏模块组成。
按键模块共由8个按键组成,其中1个键用于实现播放器自动播放和自行弹奏两模式间的转换,其余7个键作为音符的输入或音乐的播放选择。
LCD显示模块利用LCD1602对当前播放的歌曲名称进行显示。
彩灯伴奏模块则是LED通过控制模块的控制伴随音乐节奏闪亮。
扬声器播放模块由三极管及无源蜂鸣器组成,通过控制模块的控制对当前音乐进行播放。
第二节硬件电路设计模块的选定
一、中心模块
51系列的单片机优点之一在于,它从内部硬件到软件有着一套完整的按位操作系统,即位处理器,也称布尔处理器,它的处理对象不是字或字节,而是位,这就意味着它不仅能对片内某些特殊功能寄存器的某位进行处理,例如传送、置位、清零、测试等,还能进行位的逻辑运算,这一点使其他种类单片机很难实现的。
51系列的单片机的另一个优点便是具备了乘法和除法指令,其中八位除以八位的除法指令商为八位,精度显得有些不足,因此在应用方面不是很多,但八位乘以八位的乘法指令积为十六位,这样的精度已经足以满足大部分应用的要求了,更为重要的是,直接具备了乘法与除法指令,这就使得在实际应用时,使用者不必额外编写相应的子程序以备调用,与其他系列单片机相比,51系列的单片机在编程操作方面的简便与实用性无疑上了一个新台阶。
而同属指令系统规范完整这一范畴所带来的便利还包括了二进制—十进制调整指令DA,可将二进制变为BCD码,这使得十进制的计量更为快捷简便,省去了其他系列单片机还需要编写调用相应子程序的冗余过程,节省了大量的劳动力和时间。
所以,从本系统设计的功能需求及成本考虑,51单片机性价比更高,AT89C51是拥有2个外部中断,2个16位定时器,2个可编程串行UART的单片机。
中心控制模块采用AT89C51单片机已完全满足设计需要,实现整个系统控制。
二、播放模块
播放模块是由8050NPN三极管和电磁蜂鸣器组成。
AT89C51输出高电平控制信号,启动8050NPN三极管使信号放大,从而启动电磁蜂鸣器。
与LM386和喇叭的组合相比较,该播放模块存在一定噪声,音响效果较差。
但由于所需驱动功率较小,驱动器件要求不高,并能降低设计成本。
因此,必须选用8050NPN三极管和电磁蜂鸣器则能满足系统要求。
三、显示模块
LED数码管是一种数显器件。
我们知道,发光二极管(英文缩写为LED)是由半导体材料制成的、能将电信号转换成光信号的结型电致发光器件。
如果把发光二极管制成条状,再按照一定方式连接,组成数字“8”,就构成LED数码管,简称LED。
使用时按规定使某些笔段上的发光二极管发光,即可组成0~9的一系列数字。
液晶显示器,简称LCD(LiquidCrystalDisplay),是一种液晶利用光调制的受光型显示器件。
LCD的特点是体积小、形状薄、重量轻、耗能少(1~10微瓦/平方厘米)、低发热、工作电压低(1.5~6伏)、无污染,无辐射、无静电感应,尤其是视域宽、显示信息量大、无闪烁,并能直接与CMOS集成电路相匹配,同时还是真正的“平板”式显示设备。
常见的基于单片机设计的音乐播放器基本不能显示歌曲信息。
该音乐播放系统设计上增加液晶显示器,可为使用者提供曲目信息。
由于LED数码管只能显示数字而无法显示其他中英文字符,从设计的成本及功能的角度考虑,采用LCD1602显示模块,它可以显示每首曲目的英文名字。
LCD1602驱动电路简单,可以由单片机直接输出命令驱动。
四、按键模块
按键设有8个按键,其中7个作为音符输入,另外1个作为模式转换按键,实现用户自弹作曲。
7个按键分别代表7个音符,包括中音段的全部音符。
通过软硬件设计,模式转换按键触发外部中断,中断使程序跳转,实现模式转换,启动按键。
然后通过查询按键所按下的按键,读取按键输入状态,跳转到对应的程序人口,实现自编歌曲。
当需要取消按键编曲功能时,再次按下模式转换按键引起外部中断.即可退出按键功能而返回到原来音乐播放处。
第三节各硬件电路的具体设计
一、AT89C51控制模块的设计
AT89C51控制模块如图2.2所示,由核心芯片AT89C51单片机、单片机复位电路及外接晶振组成。
如图2.2所示,电容C1、C2和12M晶振与单片机引脚XTAL1和XTAL2相连构成外接晶振电路。
AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入和输出端。
在XTAL1和XTAL2两端跨接晶体就构成了稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路,为单片机的工作提供时序。
而XTAL1端和XTAL2端将电容C1和C2与内部的反相放大器连接起来组成并联谐振电路,C1、C2取31pF,对频率有微调作用。
AT89C51单片机有一个复位引脚,复位条件是:
在时钟电路工作后,当外部电路在RST引脚施加持续2个机器周期以上的高电平时,使系统复位。
一般只要保持正脉冲的宽度为10微秒,就可是单片机安全复位。
本系统采用按键手动复位,在上电瞬间,RST引脚电位与VCC相同,随着电容上充电电压的增加,RST引脚电位逐渐下降。
在单片机运行期间,按下按键电容瞬间放电,RST引脚电位与VCC相同,系统复位;随着按键的断开,电容又开始充电,RST引脚电位电位逐渐下降,系统开始正常工作。
图2.2AT89C51最小系统
二、按键模块的设计
键盘在系统中作用在于手动切换播放器模式、音乐弹奏时音符的输入以及曲目的选择。
因在本系统中需要的按键并不多,单片机的I/O数完全可以满足,所以采用了独立式键盘设计,如图2.3所示。
如图示,按键均低电平有效。
此外,上拉电阻保证了按键断开时,I/O口线有确定的高电平。
在设计键盘的时候,还要考虑去抖问题。
常见的去抖的方法有两种:
硬件方法和软件方法。
单片机中常用软件法,因此在硬件方面将不做处理。
如图2.3所示,键盘输入电路中共用到八个按键,S1键用于播放器模式的切换,在软件中计算S1键按下的次数,一次为播放模式,二次为自行弹奏模式;S2~S8键在播放器为自动播放模式时为曲目选择键,即七个按键依次对应一首歌曲,按下其中一个键就播放对应的歌曲。
而在播放器为自行弹奏模式时,七个键就对应着七个音符,即按下某一按键,播放器就发出对应音符的节奏。
三、扬声器播放模块的设计
扬声器播放模块是由8050NPN三极管和无源蜂鸣器组成,无源蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
无源蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此设计过程中增加一个由8050NPN三极管组成的电流放大电路。
蜂鸣器的负极直接接地,蜂鸣器的正极接到三极管的发射极E上,三极管的基级B经过限流电阻R9后由单片机的P22引脚控制,当P22输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当P22输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P22脚的电平来使蜂鸣器发出声音和关闭。
四、LCD显示电路的设计
LCD显示电路由单片机P0及P3.0-P3.2端口控制。
我们选用的是工业字符型液晶显示屏LCD1602,能同时显示16*2即32个字符(16列2行)。
硬件连接如图2.4所示。
其中变位器是为调节LCD对比度而设计。
LCD的显示驱动在软件中完成,硬件中不做处理。
五、彩灯伴奏电路的设计
根据设计要求,本设计中设计了彩灯伴奏电路,彩灯采用普通发光二级管。
播放器工作时,发光二级管根据音乐节拍闪亮。
当播放器发出duo音时,D1亮;当播放器发出ruai音时,D2亮;当播放器发出mi音时,D3亮;当播放器发出fa音时,D4亮;当播放器发出suo音时,D1、D4亮;当播放器发出la音时,D2、D3亮;当播放器发出xi音时,D3、D4亮。
在程序执行过程中,单片机对发出的音符进行检测,再输出对应的彩灯信号。
硬件电路较简单,如图2.5所示。
第三章软件设计
第一节单片机发声的基本原理
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的高电平或低电平,则在该口线上就能产生一定频率形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制高、低电平的持续时间,就能改变输出频率,从而改变音调。
音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。
便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。
但是,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。
我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。
例如对1/4拍音符,定时时间为0.16秒,相应的时间常数为16(即10H);对3拍音符,定时时间为1.92秒,相应时间长数为192(即C0H)。
我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。
此外,结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。
第二节设计的相关音乐说明
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期时间。
利用半周期时间定时这个半周期时间,每当计时到后就将输出的I/O反向,然后重复计时此半周期再对I/O反向,就可以在I/O脚上得到此频率的脉冲。
记数脉冲值与频率的关系公式如:
N=Fi/2/Fr。
N:
记数值;Fi:
内部计时依次为1us,故其频率为1MHZ;Fr:
要产生的频率。
其记数值的求法如:
T=65536-N=65536-Fi/2/Fr。
例:
设K=65536,F=1000000=Fi=1MHZ。
求低音DO(26HZ),中音DO(523HZ),高音DO(1046HZ)的记数值。
每个音符使用1个音节,字节的高四位代表音符的高低,低四位代表音符的节拍。
如果1拍为0.4秒,1/4拍为0.1秒,假设1/4拍为DELAY,则1拍为4DELAY。
第三节音乐播放器软件程序设计
一、按键扫描子程序设计
本设计中采用的独立式键盘,按键的闭合与否直接反应在口线的电平上,即口线的电平是呈现的高电平还是低电平。
因此可以通过口线的电平高、低状态检测,来确认按键是否按下。
但如果在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误的认为是多次操作,为克服按键点机械抖动所致的检测错误,确保CPU对一次按键动作只确认一次按键,必须采取去抖动的措施。
软件中去抖动的措施即在第一次检测到有键按下时,执行一段延时10ms的子程序,然后再次检测该键的电平状态,如果该键电平仍保持闭合状态电平,则确认为真正有键按下。
一般把按键扫描程序设计成子程序,以便其他程序调用。
二、1ms延时程序设计
延时程序一般是通过一层或多层循环实现,整个过程延时的时间是程序执行的指令总条数乘以执行每条指令所用的时间。
由于该系统的晶振选用的是12M,所以执行每条指令所所用时间为2us。
程序如下:
voiddelay_ms(uintxms)//延时函数,有参函数
{
uintx,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
三、LCD显示子程序设计
本设计中利用LCD1602显示当前播放曲目名称以及弹奏时的音符。
LCD开始工作是靠软件来实现的。
程序如下:
voidlcd_display()
{
WriteCMD(0x80);
for(y=0;y<7;y++)
{WriteData(name[y]);mydelay(5);
}
mydelay
(2);
WriteCMD(0x80+0x40);
for(z=0;z<12;z++)
{WriteData(num[z]);mydelay(5);
}
for(x=0;x<19;x++)
{WriteCMD(0x18);mydelay(5);
}}
四、函数初始化子程序设计
函数初始化程序即把在主函数内对某些参数和标记位赋初值编写成一个函数,这样使程序更具有条理化,清晰易懂。
由于整个程序要用到定时器0和定时器1,所以初始化程序主要是对定时器相关内容作说明。
程序如下:
voidInitialSound(void)
{
Sound_Temp_TH1=(65536-(1/1200)*SYSTEM_OSC)/256;//计算TL1应装入的初值(10ms的初装值)
Sound_Temp_TL1=(65536-(1/1200)*SYSTEM_OSC)%256;//计算TH1应装入的初值
TH1=Sound_Temp_TH1;
TL1=Sound_Temp_TL1;
TMOD=0x11;
ET0=1;ET1=0;TR0=0;TR1=0;EA=1;
}
五、系统主程序设计
播放器工作时,程序工作流程图如图3.1所示,
图3.1系统主程序框图
先对在程序过程中所需的各种标记位及参数进行初始化赋值,再执行按键扫描子程序并计算及保存键值,根据其中的模式转换键的按键次数进行模式判断,按键次数为1时播放器处于自动播放模式,扬声器播放模块开始工作,同时彩灯伴奏模块随着单片机端口高低电平的变换闪烁达到伴奏的效果,另一方面显示模块进入工作状态对当前曲目的曲目名进行显示;按键次数为2时播放器处于手动弹奏模式,再次对按键进行扫描,对按下的键值进行分析,单片机输出相应的音符,彩灯伴奏模块也伴随音符闪亮,同时LCD显示模块对当前音符进行显示。
结论
本设计以MSC-51系列单片机为核心,充分利用了AT89C51芯片的I/O引脚,以独立式键盘作为琴键输入及曲目的选择键,采用LCD1602对当前曲目及音符进行显示,并利用发光二级管进行音乐伴奏。
本文从理论上分析了该设计方案的可行性,并预计能达到设计要求,主要体现在:
a.拥有彩灯伴奏功能;
b.具有音频D/A转换功能,可以输出音频模拟信号并能播放音频文件;
c.显示歌曲信息功能;
d.播放器具有手动弹奏和自动播放两个模式。
在做此毕业设计中遇到不少的难点,有的原理,根本就不知道怎样去实现。
最后通过自己仔细查资料,一点一点的就慢慢懂了。
在实验中发现,其实再难编写的程序都是由一些基础程序模块构成的,很多的基础模块前人就已经做好了,只要我们拼凑就行了,当然拼凑的工作也不是很简单,最重要的还是要自己的基础扎实,同时,自己的思路要非常的清晰。
设计完后,感觉到平时掌握的东西实在太少了,要真正实现学有所成、学有所用还有很长的路要走。
现在电子信息技术发展迅速,我们现在学的东西在社会上也许已经或即将被淘汰。
因此在学校要学的不仅是书本上的东西,更重要的是自学的能力、独立思考的能力和动手的能力。
要想在竞争异常激烈的现代社会立足,就必须有实力。
在学校的时间是最好的学习机会,一定要珍惜好这有限的时间,多学知识,尽量充实自己,为以后进入社会多做准备。
致谢
衷心感