带液晶显示的音乐播放器Word文档下载推荐.docx
- 文档编号:20260691
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:26
- 大小:540.29KB
带液晶显示的音乐播放器Word文档下载推荐.docx
《带液晶显示的音乐播放器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《带液晶显示的音乐播放器Word文档下载推荐.docx(26页珍藏版)》请在冰豆网上搜索。
1.1课题背景和意义
随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。
当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。
音乐盒有着300多年的发展历史,是人类文明发展的历史见证。
传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。
但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。
水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。
另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。
1.2课题研究
本课题即使在这种背景下,对带液晶显示的音乐播放器的设计与实现进行了软硬件的设计,实现了单片机音乐播放器的音乐演奏。
与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。
电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。
基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。
根据存储容量的大小,可以尽可能多的存储歌曲。
另外,可以设计类似心电图的音乐播放节拍,使音乐盒的功能更加丰富。
利用定时器可以产生各种固定频率的方波信号,可以产生包括"
Do"
、"
Re"
Me"
--等音阶在内的各种频率声音。
将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。
基于这个思想,我设计了一款特殊的"
音乐播放器"
,本播放器可实现播放、暂停和上一曲下一曲的切换。
尤其是LCD显示屏模块,实现切换歌曲,歌名显示。
由于时间及条件限制,本设计实现了一种简单的音乐播放器,其核心器件采用液晶显示器1602和AT89C51单片机,本播放器具有电路简单,功能强大,易于拓展等特点。
在此基础上,为了体现乐曲播放过程中的动态效果,可以增加显示类似心电图的音乐播放节拍指示旋律的节奏,还可以增加无线遥控模块进行控制以达到更加智能化的效果。
2系统的总体设计
2.1系统实现的功能
本设计是主要控制模块为基础,外部加上1602液晶显示电路、放音电路和按键电路。
1602液晶显示电路是用来显示设计者姓名、歌曲曲目和曲目名。
放音电路,实现音乐的放大播放。
按键电路,通过按键控制音乐的上一首、下一首、开始和暂停的切换。
并且可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。
对于不同型号的单片机只需要相应的改变一下地址即可。
该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。
2.2主要技术参数要求
LM386供电范围宽:
4~12V或者8~18V;
低静态电流消耗:
4mA;
电压增益范围:
20~200V。
2.3系统模块设计
该系统设计可以分为硬件部分和软件部分。
其中,硬件部分可以分为单片机控制模块、音乐放大模块、键盘控制模块和LCD显示模块。
软件部分可以分为音乐放大子程序、键盘控制子程序、LCD显示子程序。
2.4模块方案选择
2.4.1音频放大电路的选择
方案一:
甲类功放。
甲类功放的功率管在输入信号一周内都是导通的(放大区,即导通角为360°
)。
甲类功放最大的缺点是效率低。
图2.1是将扬声器负载RL直接接在音频放大器发射极的甲类功放电路,这种连接称为负载直接耦合甲类功放。
若工作点安排在最大动态范围点——负载线中点(负载直接耦合交直流负载线相同),且不计饱和压降,则RL上信号电压振幅等于电源电压VCC的一半如图2.2,所以:
最大输出功率
P0=12Vom2RL=18Vcc2RL
电源消耗的功率
Pcc=IcVcc=12Vcc2RL
故负载直接耦合甲类功放的最大效率只有25%。
此外,有一种使用变压器实现阻抗变换的甲类功放,其理论效率能达到50%。
但是由于低频变压器功率消耗大,频率特性也差,现在已较少使用。
图2.1负载直接耦合甲类功放电路
图2.2
甲类功放工作图解
方案二:
乙类功放。
晶体管只有半周期工作在放大区(导通),另外半周期截止,即导通角为180°
的工作状态。
电阻作为负载的乙类功放必须采用双管,让其轮流导通半周期,才能在负载RL上合成完整的输出电压,因此称为“推挽”电路。
乙类功放在静态时电源不消耗功率,因此效率较甲类功放大大提高,理论上可达78.5%。
方案三:
甲乙类功放。
乙类功放的效率虽然高于甲类功放,但非线性失真却比甲类功放大。
尤其是输入信号较小时,乙类功放的非线性失真严重。
这是因为BJT的发射结存在导通电压所致。
为了解决这一问题,可对推挽功率管设置一定的放大偏置,使功率管工作时导通时间在半周期以上(导通角大于180°
),这类功放称为甲乙类功放,其失真小于乙类功放,当然效率也低于乙类功放。
方案四:
丙类功放。
功率管导通时间小于半周期的功放。
丙类功放只有用具有选频特性的原件作负载才能克服非线性失真。
它主要用于射频载波信号的放大。
综上,本设计的音频放大将采用乙类功放。
特别是,在美国国家半导体公司生产的芯片中有一款主要应用于低电压消费类产品的音频功率放器LM386。
LM386的第三级放大采用的正是乙类功放推挽电路。
LM386为使外围元件最少,电压增益内置为20。
若在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。
2.4.2键盘控制模块
采用独立式键盘。
键盘按键少,且键盘中各个按键的工作互不干扰。
采用行列式键盘。
行列式键盘适合于按键多的情况,可以节省接口。
综上,本设计采用独立式键盘。
2.4.3显示电路模块
采用LED显示。
LED使用寿命长、成本低、设计简单方便、画面清晰、接口较少。
采用LCD显示。
LCD零辐射、低耗能、散热小、纤薄轻巧、精确还原图像、显示文字锐利。
综上,本设计采用LCD显示。
3系统硬件的设计
3.1系统硬件总体设计
图3.1电路设计原理图
在这系统的硬件设计中,首先通过电源电路接通电源,LCD初始显示制作者姓名和第一首歌曲曲目和曲目名。
通过键控电路,实现曲目上一首下一首的选择,实现歌曲播放的开始和暂停。
通过音频放大电路,实现了音频的20倍放大,音乐通过喇叭播放出音乐。
硬件结构框图如上图3.1所示。
整体硬件接线图如下图3.2所示。
图3.2总体电路图
3.2控制模块设计
本设计控制模块由单片机芯片89C51,配以必要的外部器件构成单片机。
单片机具有较强的外部扩展、通信能力,能方便地扩展至应用系统所要求的规模。
当使用带ROM或EPROM的MCS-51系列单片机时,只要一个芯片即可构成一个单片机的最小系统。
选用80C51或8051或AT89C51单片机作为主机,它们都具有4K片内ROM,128字节片内RAM,片外ROM寻址范围达64K,片外RAM寻址范围达64K,2个16位计数器,5个中断源,4个并行口,1个串行口。
简易自动乐曲播放器采用单片机最小系统足以满足系统设计要求,同时要设计单片机最小系统的晶振和复位电路。
注意:
EA/VP(31脚)接+5V。
3.2.1电源电路
向单片机供电,单片机电源:
AT89C51单片机的工作电压范围:
4.0V—5.5V,所以通常给单片机外接5V直流电源。
连接方式为VCC(40脚)接电源+5V端,VSS(20脚)接电源地端。
3.2.2时钟电路
振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号。
AT89C51单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;
也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。
这里我们所用的是内部时钟模式。
单片机工作的时间基准,决定单片机工作速度。
时钟电路就是振荡电路,向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。
AT89C51单片机与其他51系列单片机一样,其内部包含一个高增益的单机反相放大器,引脚XTAL1和XTAL2分别为片内反相放大器的输入端口和输出端口,其时钟工作频率范围:
0—33MHz。
3.2.3复位电路
确定单片机工作的起始状态,完成单片机的启动过程。
单片机的复位是非常重要的,通常在单片机工作出现混乱或“死机”时,使用手动复位可实现单片机“重启”。
单片机接通电源时产生复位信号,完成单片机启动,确定单片机起始工作状态。
手动按键产生复位信号,完成单片机启动,确定单片机的初始状态。
单片机复位的原理是,在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。
在复位期间,单片机的ALE引脚和/PSEN引脚均输出高电平。
当RST引脚从高电平跳变为低电平后,单片机开始执行程序。
3.3音乐放大模块设计
LM386是专为低损耗电源所设计的功率放大器。
1脚和8脚是增益调整引脚,其内部为一个约为1.35K的电阻,1、8脚开路的时候,增益最小约为20倍(26db),当1、8脚交流短路,增益最大,达到200倍(46db),在1、8之间串联电阻,可调整增益在20倍到200倍之间变化。
LM386可使用电池为供应电源,输入电压范围可由4V~12V,无动作时仅消耗4mA电流,且失真低。
LM386的接脚图及內部方块如图3.3、图3.4所示,表3.1为其电子特性。
图3.3引脚图图3.4內部方块图
表3.1LM386电子特性
项目
测试环境
规格
工作电压
4V~5V
输入电压
-0.4V~+0.4V
输入阻抗
50kΩ
静电流
Vs=6V,Vin=0V
4mA~8mA
OutputPower
Vs=6V,RL=8Ω,THD=10%
Min=250Mw
Typ=325mW
VoltageGain
脚1脚8开路
脚1脚8以10uF连接
26db
46db
频宽
脚1脚8开路
300kHz
60kHZ
图3.3的应用电路为增益20的情形,于1脚及8脚间加一个10µ
F的电容即可使增益变成200,如图3.4所示。
图中10kΩ的可变电阻是用来调整扬声器音量大小,若直接将Vin输入即为最音量最大的状态。
图3.3放大器增益=20图3.4放大增益=200
图3.5为将LM386与电容式麦克风结合的应用范例,可在输出接上扬声器或耳机并且调整可变电阻,就会产生类似于助听器的效果。
图3.5应用电路
本设计中音频放大芯片LM386的1脚和8脚是开路的,所以此电路中的音频放大倍数为20倍。
使用的扬声器其型号为0.5W、8Ω,其负极接地,正极通过10uf电容与LM386的5脚相连。
如图3.6音频放大电路由音频芯片LM386连接p2.3接口实现音乐的输入,由控制电路发出操作指令后,单片机调用相应程序,并将音乐信号由LM386的5口输出,通过驱动扬声器发出美妙的音乐。
图3.6LM386音频放大模块
3.4键盘控制模块设计
键盘控制电路如图3.7所示,键一与P2.4相连、键二与P2.5相连、键三与P2.6相连、键四与P2.7相连。
在没有按键按下时,端口电位是高电平,当按键按下时接口接低电平,从而实现对音乐播放器的控制。
键一连通实现上一曲更换,键二连通实现下一曲更换,键三连通实现开始,键四连通实现暂停。
图3.7按键电路
3.51602LCD显示模块设计
本设计中所使用的液晶显示器型号为1602,意思是每行显示16个字符,一共可以显示两行。
此液晶只能显ASCII字符,如数字、大小写字母、各种符号等。
3.5.11602显示电路
图3.81602显示电路
与基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样电路如上图3.8所示,定义如下所示:
液晶1,2端为电源;
15、16为背光电源;
为防止直接加5V电压烧坏背光灯,在15脚串接一个10欧姆电阻用于限流。
液晶3端为液晶对比度调节端,通过一个10K欧姆电位器接地来调节液晶显示对比度。
第一次使用时,在液晶上电状态下,调节至液晶上面一行显示出黑色小格为止。
液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P3.0口。
液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择写状态,我们可以直接将它接地。
但这里我将它接P3.1口,没有任何影响。
液晶6端为使能信号,是操作时必需的信号,接单片机的P3.2口
液晶7-14端为八位数据口,接单片机的P1口。
3.5.21602显示字符的实现
我们知道文本文件中每一个字符都是用一个字节的代码记录的。
一个汉字是用两个字节的代码记录。
在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。
字模就代表了是在点阵屏幕上点亮和熄灭的信息数据。
例如“A”字的字模如下图3.9所示。
01110○■■■○
10001■○○○■
11111■■■■■
10001■○○○■
图3.9A的字模
上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,我们就看到“A”这个字了。
在LCD模块上固化了字模存储器,这就是CGROM和CGRAM。
HD44780内置了192个常用字符的字模,存于字符产生器CGROM中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM。
因为1602识别的是ASCII码,我们也可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如‘A’。
4系统软件的设计
4.1总体方案的软件设计
否
是
图4.1总体流程图
根据上图4.1所示,主程序首先对系统初始化,实现对系统进行初始化后,液晶菜单显示初始状态,进入按键扫描检测程序,当有按键按下时,对应的端口由高电平变为低电平,单片机检测到端口低电平后,进入曲目识别子程序,进行歌曲曲目判断。
确定歌曲曲目后,液晶显示屏再进行显示。
然后,对子程序对是否播放进行判断,得到播放中断的指令后再进行播放。
执行播放后,调用查表子程序进行播放音乐。
在播放音乐的过程中,查表子程序循环判断音乐是否结束。
当音乐结束时,程序跳转回曲目识别子程序。
4.2音乐放大模块的子程序设计
4.2.1单片机音阶代码实现
我们知道,声音的频谱范围约在十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或“低”电平,则在该口线上就能产生一定频率的波形,接上扬声器就能发出一定频率的声音,若在利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。
音符的节拍,我们可以用定时器T0来控制,送入不同的初值,产生不同的定时时间。
便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。
但是,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。
我们可以用T0来产生10毫秒的时间为基准,然后设置一个中断计数器,通过判断中断计数器的值来控制节拍时间的长短。
一个乐曲是由多个音符组成的。
每个音符对应着一个确定的音符,也就是不同频率的声音;
另外每个音符会根据乐曲的要求设定一个确定的节拍,可以控制单片机不同频率不同节拍的脉冲信号。
对于单片机来说,要产生音频脉冲,只要算出某一音频脉冲,然后将此周期除以2,即为半周期的时间,利用定时器记时这个半周期的时间。
每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相。
就可以在此I/O脚上得到此频率的脉冲。
通过控制定时器时间来产生不同频率的方波,驱动扬声器发出不同的声音,再利用延迟来控制发音时间的长短,即可控制音调中的节拍。
把乐谱中的音符和相应的节拍变换成定时常数和延迟常数,作为数据表格存放在存储器中。
用程序查表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。
当延迟时间到时,再查下一个音符定时常数和延迟常数。
依次下去,就可以自动演奏乐曲。
doremifasolasi分别编码为1~7,重音do编为8,重音re编为9,停顿编为0。
播放长度以十六分音符为单位(在本程序中为100ms),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。
音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。
以0xff作为曲谱的结束标志。
举例1:
音调do,发音长度为两拍,即二分音符,将其编码为0x18。
举例2:
音调re,发音长度为半拍,即八分音符,将其编码为0x22
歌曲播放的设计。
先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。
程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作扬声器,得出相应的音调;
接着分离出该数的低4位,得到延时时间,接着调用软件延时。
4.2.3音乐播放的实现
图4.2音乐播放流程图
音乐播放流程图如上图4.2所示,本音乐播放器一共存储四首音乐,分别为生日快乐、朋友、梦的翅膀受了伤、和荷塘月色。
当接通电源后,开始按钮按下,判断音乐曲目,调用音乐子程序,经过LM386放大后,通过扬声器播放音乐。
下面为播放第一首音乐的程序:
voidplaymusic1()
{
uinti=0,j,k;
{
while(song1_long[i]!
=0||song1_tone[i]!
=0)
//播放各个音符,song_long为拍子长度
for(j=0;
j<
song1_long[i]*20;
j++)
{
if(S1==0)break;
P1_0=~P1_0;
//song_tone延时表决定每个音符的频率;
for(k=0;
k<
song1_tone[i]/3;
k++);
}
delayms(100);
//下一个音符的索引
i++;
}
4.3按键控制模块的子程序设计
本方案采用独立式按键接口设计,各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。
因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下。
键盘工作方式采用定时扫描方式,采用定时器T0定时,通过读取输出数据,识别按键工作状态。
键盘按键所用开关为机械弹性开关,利用了机械触点的合断作用。
由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动。
抖动时间的长短由按键的机械特性决定,一般为10~100ms。
电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。
为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。
按键的消抖通常有软件和硬件两种消除方法。
如果按键较多,硬件消抖将无法胜任,常采用软件消抖。
本设计虽然按键少但还是采用常规的软件延时的方法:
在第一次检测到有键按下时,执行一段延时子程序后,再确认电平是否仍保持闭电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。
图4.3按键流程图
上图4.3为按键模块的程序流程图。
电路通电后,开始单片机扫描是否有中断信号出现,若没有则循环进行扫描,当发现中断信号后,延时10mS,去除抖动,再进行判断是否是之前接收到的按键按下信息,若不是则返回扫描中断信号部分,若是则执行此按键相应的操作。
4.3.1播放暂停子程序
播放暂停在程序运行类似,以播放键K3为例,利用内部中断T0口。
将T0口设为计数中断并工作在方式1下。
当按键K3产生中断信号时,播放器由暂停状态进入播放状态。
如下图4.4所示。
图4.4播放子程序流程图
4.3.2曲目选择子程序
图4.5曲目选择子程序流程图
曲目选择子程序分为上一曲子程序和下一曲子程序,流程图如上图4.5所示。
上一曲和下一曲功能实现方式类似,下面以实现上一曲功能为例:
首先设置标识符初始值为0。
当按键产生中断信号,上一曲中断子程序改变标识符值并改变曲目的值。
播放子程序判断出标识符改变后,先将标识符赋值为初值后,然后跳转到曲目识别子程序。
4.41602LCD显示模块的子程序设计
1602液晶显示器的子程序实现流程图如下图4.6所示。
接通电源后,初始化液晶显示器,显示姓名和第一首歌曲名字,按上一首与下一首按键是显示上一首下一首的歌曲曲目和曲名。
图4.6液晶显示流程图
那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶显示 音乐 播放
![提示](https://static.bdocx.com/images/bang_tan.gif)