基于单片机的音乐播放器的设计.docx
《基于单片机的音乐播放器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐播放器的设计.docx(56页珍藏版)》请在冰点文库上搜索。
基于单片机的音乐播放器的设计
引言
关于咱们电子信息工程专业而言,《单片机原理与应用》是一门有效性很强的课程!
在该课程的学习进程中!
让咱们最感爱好的确实是自己动手设计单片机操纵系统。
可是,要将单片机的硬件知识与软件知识融会贯通,设计出有效的系统却是让咱们颇感困难的环节。
许多同窗对此感到无从下手。
其实,关于单片机应用系统的设计仍是有章可循的。
单片机多用于实时工业操纵、通信设备和智能仪表中。
但在某些方面,如有些教学实验中,加进一些音乐,必然会趣味横生。
本文介绍了笔者利用AT89C52型单片机和LM386型音频功率放大器组成了自动音乐播放器。
设计音乐的思想是,选一个输出位,如P1。
0端让其按音乐的转变节拍产生音频脉冲。
要产生音频脉冲,就要算出某一音频的周期(1/频率),将此周期除以2,即半周期的时刻,然后利用单片机计时器计此半周期的时刻。
每当计时到后就将输出脉冲的P1。
0位反相,然后重复计此半周期时刻再对P1。
0反相,如此就能够够在口端取得此频率的脉冲。
计数器工作在模式MODE1下,改变计数值TH0及TL0以产生不同的音频声响。
据网络调查公司JupiterMediaMetrix的统计数据显示:
利用音乐播放器(不论是离线播放器仍是网络播放器)的家庭用户从2000年1月的3320万猛增到2001年1月的4170万。
在工作中利用音乐播放器的专业用户数量也较去年同期上升了%,从2000年1月的1160万增加到2001年1月的1570万。
以单片机为基础的本设计本钱低,成效好,值得推行。
而如车载音乐播放器、能够播放流式音乐的播放器更是咱们要深切的领域。
第1章绪论
本设计系统是基于单片机的音乐播放器的设计,具有必然的实际意义。
因此在设计进程中,设计的系统应该考虑到播放器便利性和稳固性,使设计的系统能够令人们的生活加倍丰硕多彩。
系统的设计是先是通过第2章,方案的论证,确信系统的元器件。
第3章,硬件电路的设计,硬件的设计是通过元器件的功能和利用方式进行的。
第4章,软件程序的设计,系统的软件设计是依照单片机对其它元器件的操纵进行设计的。
以实现系统的搜集功能。
单片机的进展状况
21世纪,电子技术进入了突飞猛进的进展时期。
随着集成电子技术的迅速进展,专门是微型运算机的显现使现代科学研究取得了质的飞跃,那么能够毫无夸张的说,单片机技术的显现那么是给现代工业测控领域带来一次新的技术命。
目前,单片机以其功能强、体积小、靠得住性高、造价低和开发周期短等优势,在工业操纵系统、数据搜集系统、智能化仪器仪表、办公自动化等诸多领域取得极为普遍的应用,并已进入家庭,从洗衣机、微波炉到音响、汽车,处处都可见到单片机的踪迹。
因此,单片机技术开发和应用水平已慢慢成为一个国家工业进展水平的标志之一,单片机的进展时期可分为:
第一时期(1971~1974年):
1971年11月美国Intel公司第一设计成集为
2000只晶体管的4位微处置器Intel4004,而且配有随机存储器ROM和移位寄放器等芯片,组成第一台MCS-4微型运算机。
1972年4月Intel公司又研发成了功能较强的8位微处置器Intel8008,这些微处置器虽说不是单片机,但从此拉开了研发单片机的序幕。
第二时期(1974~1978年):
低级单片机时期。
以Intel公司的MCS-48为代表。
那个系列的单片机内集成有8位CPU、并行I\O串口、8位按时器\计数器,寻址范围不大于4K,且无串行口。
第三时期(1978~1983年):
高性能单片机时期。
这一时期单片机普遍带有串口、多级中断处置系统、16位按时器\计数器。
片内ROM、RAM容量加大,寻址范围到了64K,有的还带有A\D转换接口。
比如Intel公司的MCS-51,Motorola公司的6801等。
这种单片机的应用领域已经及其普遍,这种系列的各类产品是目前国内外产品的主流。
其中MCS-51系列产品,由于其优良的性能价钱比,专门适合我国的国情,MCS-51系列单片机有可能稳固相当一段时期。
此刻国内的MCS-51热正在继续升温,随着我国经济建设步伐的加大,MCS-51系列单片机必将在各个领域大显身手。
第四时期(1983~):
8位单片机巩固进展到16位单片机推出时期。
现在期要紧特点是一方面进展16位单片机及专用单片机;另一方面不断完善高级8位单片机,改善其结构,以知足不同的用户需要。
MCS-51系列属高级单片机,最近几年来,Intel公司在提高该系列产品性能方面做了很多工作,接踵推出了很多新产品:
(1)8052\8752\8032:
将原先8051\8751\8031单片机进行了扩展,片内数据存储器增至256字节,程序存储器增至8K,按时器\计数器增至3个16位计数器,有6个中断源。
(2)低功耗看的CHMOS工艺芯片80C51\87C51\80C31:
这种芯片许诺电源波动范围大,为5V±20%,并有三种功耗操纵方式。
(3)具有高级语言编程的芯片8052AH-BASIC.该芯片在片内固化有MCS-BASIC52说明程序,软件开发比较方便。
另外还能实现BCD码的浮点运算和16进制数和十进制数的转换。
(4)高性能的C52系列:
在8052的基础上,采纳CHMOS工艺,并将MCS-96系列中的一些高速输出、脉宽调制、上\下按时器\计数器移植进来,组成新一代MCS-51产品80C252\87C252\83C252,他们是MCS-51系列中的新产品。
设计的内容
设计的课题是“基于单片机的音乐播放器设计”,它是以单片机AT89C52作为硬件核心操纵部件,结合负脉冲电路和LM386功率放大器,数码管组成典型的显示电路,和其他外围设备组成的音乐播放系统。
依照音乐演奏操纵器所要实现的显示与选曲及音乐产生功能原理,系统包括演奏扬声器、选曲、播放和显示几部份。
其中,S1开关用来选曲,通过显示器显示歌曲序号。
S2按钮用作播放。
所设计的单片机乐曲播放操纵器不仅能够播放悦耳的歌曲,同时设置按钮使所设计的程序能在五首歌曲之间进行选曲,并通过显示器使其显示歌曲序号。
本文设计的音乐演奏操纵器是通过操纵单片机内部的按时器来产生不同频率的方波,驱动喇叭发出不同音节的声音,再利用延迟来操纵发音时刻的长短,即操纵音调中的节拍。
同时设置按钮使所设计的程序能在五首歌曲之间进行选曲、设计显示器使其显示歌曲序号。
第2章方案比较
设计的课题是“基于单片机的音乐播放器设计”,播放器要求方便快捷地进行音乐的播放。
设计要求
具体的设计应该知足以下功能:
硬件方面:
(1)能够通过按键进行曲目的选择;
(2)能够通过按键进行曲目的播放和停止;
(3)CPU能够操纵声音的音节和长短;
(4)音频数据信息记录需要大量非易失性数据存储器实时快速地记录数据。
因此需要具有掉电爱惜功能的大容量存储器;
(5)能够通过显示器明白曲目的序号;
软件方面:
(1)系统中外扩的各器件的初始化工作均在主程序中完成,第二,要设计如何挪用显示子程序和乐曲播放程序。
(2)在实际的操纵进程,常要求有实不时钟,以实现按时或延时操纵,因此需要此类中断效劳程序。
(3)由于按键为机械开关结构,机械触点的弹性及电压突跳等缘故,往往在触点闭合或断开的刹时会显现电压抖动。
为保证键识别的准确,在电压信号抖动的情形下不能进行状态的输入。
为此需要进行去抖动处置的中断效劳程序。
(固然这种问题也能够通过硬件方案解决。
)
方案的提出
方案一:
基于C8051F350单片机和AT45DB642D存储器的音频播放器
音频播放器系统结构如图2-1所示,它要紧由C8051F350单片机、PC机、AT45DB642D存储器、RS232串行通信接口、显示电路、键盘电路和信号放大电路等组成。
系统中单片机是操纵核心,通过UART串口与PC机通信,SPI串口对存储器进行读、写操作。
写操作确实是数据下载进程,即写入存储器的音频文件经PC机里的LabWindows/CVI软件处置,通过RS232串行通信接口传输到单片机,由单片机通过SPI串口写入存储器。
[1]读操作确实是音频信号播放进程,即由键盘选择播放曲目,单片机通过SPI串口读取存储器中的音频代码,以单片机的电流模式DAC输出,再经信号放大电路后音频输出。
键盘用来调剂信号频率、操纵音量和选择曲目,单片机通过扫描方式读取键盘接口命令,并依照查表程序选择相应的操纵命令,执行相应的操作。
液晶显示模块显示曲目序号和相应的播放时刻。
该系统突出特点是合理应用了Flash存储器AT45DB642D,能够依照需要由PC机将音频文件转换为适合音频播放器播放的文本文件,并下载到存储器。
存储在AT45DB642D中的音频信息由单片机读取后播放,用户能够依照爱好调剂播放频率和音量。
图2-1C51F350单片机播放器系统结构图
系统操纵核心器件选用美国Cygnal公司的C8051F350单片机,C8051F350的CIP-8051结构,流水作业执行指令,大大提高指令的运行速度AT45DB642D存储器(FlashRAM)具有宽电源电压、大容量、接口简单、读写速度快等特点。
设计应用中,由于AT45DB642D同时有EPROM的掉电数据不丢失和E2PROM的电可擦写功能,又能像SRAM进行随机快高密度、高靠得住性的存储器。
液晶显示屏采纳定制的段位式液晶,采纳HT1620驱动器驱动,单片机和液晶屏的接口只需3条数据线。
方案二:
基于SPCE061A16位单片机的音乐播放器
音乐播放器的硬件结构如图2-2所示,选用SPCE061A单片机作为嵌入式系统的微处
图2-2 SPCE061A16位单片机音乐播放器硬件结构框
理器,SPCE061A是一款资源丰硕、功能壮大、集成度高的16位结构微操纵器,数字信号处置功能是其特色.它功耗小,系统处于备用状态(睡眠状态)时的耗电仅为2μA/V;内置2K字SRAM和32K的FLASH;2个16位可编程按时器/计数器;2个10位DAC(数/模转换)输出通道;2个16位通用可编程输入/输出端口IOA和IOB;丰硕的中断资源:
按时器A/B中断、时基中断、2个外部中断和触键唤醒中断;7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;具有串行设备接口(SIO);低电压复位功能和低电压检测功能;WatchDog功能等。
[2]
该系统集成了存储器、高速数/模转换器和原驱鸟器芯片功率放大器、键盘4个功能模块,具有对语音信号紧缩、存储、解码和播放的功能,和数字滤波语音信号实时数/模转换和按时播放,并将语音信号输出到功率放大电路。
方案比较
从以上两种方案中能够看出不同的设计方式各有优缺点:
方案一:
基于C8051F350单片机和AT45DB642D存储器的音频播放器采纳AT45DB642D存储器解决了嵌入式系统中大容量数据存储的问题,采纳功能壮大的C8051F350单片机作为操纵核心,减少了系统的外围器件,简化了硬件设计,提高了靠得住性,降低了本钱。
缺点在于信号放大及音频输出系统比较复杂,本钱较高。
播放器模式较多,不够简化。
方案二:
基于SPCE061A16位单片机的音乐播放器利用经常使用的音频形式和紧缩算法,波形编码:
sub-band即SACM-A2000,其特点是高质量、高码率,适于高保真语音/音乐。
声音播放模块决定对存储在语音芯片中的驱鸟声音的挪用方式,并挪用按时模块进行距离播放和随机播放。
.高速和高精度保证了转换后的信号的质量和滑腻性。
缺点是存储器容量不大,声音搜集通道单一。
关于C51单片机,它抗干扰性较强,且集成度高、功能强、指令丰硕等,能够应用的地址较数字电路更多些,普遍应用于工业操纵系统,数据搜集系统、智能化仪器仪表,及通信设备、日常消费类产品、玩具等。
而且单片机已经深切到工业生产的各个环节和人民生活的各层次中,如车间流水线操纵、自动化系统等、智能型家用电器(冰箱、空调、彩电)等,都含有C51单片机操纵器。
通过综合比较咱们不采纳上面的两种方案,我采纳的是基于C51单片机的音乐播放器的设计,该系统操纵性能良好,硬件电路简单、经济实惠,能取得更好的成效。
该系统设计将在下文做详细介绍。
设计的思路
在硬件上是基于单片机AT89C52为核心器件进行操纵及信号的产生,共有两个按键S1和S2,S1开关用来选曲,通过显示器显示歌曲序号。
S2按钮用作播放。
本设计
图2-3C52音乐播放器组成框图
的音乐演奏操纵器是通过操纵单片机内部的按时器来产生不同频率的方波,驱动喇叭发出不同音节的声音。
再利用延迟来操纵发音时刻的长短,即操纵音调中的节拍。
[3]同时设置按钮使所设计的程序能在几首歌曲之间进行选曲,设计显示器使其显示歌曲序号。
关于电路抖动,论文决定用软件方案解决。
而为了不丢失外部中断,笔者选择边沿触发。
第3章硬件电路设计
单片机的选择
在设计中文章选择单片机AT89C52作为播放器的核心操纵部件,缘故是因为AT89C52的功能全部兼容MCS-51,而且还有程序加密等功能,相较而言加倍有效。
AT89C52单片机是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8KB的可反复擦写的只读程序存储器和256字节的随机存取存储器,器件采纳ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处置器(CPU)和Flash存储单元,其壮大的功能更适合较为复杂的操纵应用处合。
其要紧工作特性是:
·片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;
·片内数据存储器内含256字节的RAM;
·具有32根可编程I/O口线;
·具有3个可编程按时器;
·中断系统是具有8个中断源、6个中断矢量、2级优先权的结构;
·串行口是具有一个全双工的可编程串行通信口;
·具有一个数据指针DPTR;
·低功耗工作模式有空闲模式和掉电模式;
·具有可编程的3级程序锁定位;
·AT89C52工作电源电压位5(1±)V,且典型值为5V。
·AT89C52最高工作频率为24MHZ,编程频率为3~24HZ,编程启动电流为1mA。
[4]
引脚排列及功能
AT89C52的引脚排列如图3-1所示:
第一关于I/O口线做一介绍:
·P0口—8位、漏极开路的双向I/O口。
当利用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。
在编程时,P0口可用于接收指令代码字节;在校验时,P0口可输出指令字节(须外加上拉电阻)。
P0口也可做通用I/O口利用,但需加上拉电阻,变成准双向口。
看成为一般输入时,应将输出锁存器置1。
P0口可驱动8个TTL负载。
·P1口—8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户预备的I/O口双向口。
在编程和校验时,可用做输入低8位地址。
用做输入时,应先将输出锁存器置1。
P1口可驱动4个TTL负载。
·P2口—8位、准双向I/O口,具有内部上拉电阻。
当利用片外存储器或外扩I/O口时,P2口输出高8位地址。
在编程/校验时,P2口可接收高字节地址和某些操纵信号。
图3-1AT89C52引脚排列图
P2口也可做一般I/O口利用。
用做输入时,应先将输出锁存器置1。
P1口可驱动4个TTL负载。
·P3口—8位、准双向I/O口,具有内部上拉电阻。
P3口可做一般I/O口利用。
用做输入时,应先将输出锁存器置1。
在编程/校验时,P3口接收某些操纵信号。
它可驱动4个TTL负载。
编程与效验方式
AT89C52的编程、校验、程序锁定位的编程和片擦除等操作与AT89C51相同只是地址空间为0000H~1FFFH。
表3-1AT89C52编程电标志
顶端标志
型号
编程电压VPP=5V
编程电压VPP=12V
AT89C52
AT89C52
AT89C52
XXXX-5
XXXX
YYWW
YYWW
AT89C52的编程电压VPP为12V或5V,在产品封装的顶部印有编程电压标志,如表3-1所列:
晶振电路部份
单片机要想工作必需要在XTAL1和XTAL2端口加晶振电路,单片机工作速度也是由晶振电路决定的。
[5]典型的晶振电路如图3-2所示:
图3-2晶振电路
在晶振电路中,电路中电容C3和C4对振荡频率有微调作用,通常的取值范围30±10pF;石英晶体选择6MHz或12MHz都能够。
其结果只是机械周期时刻不同,阻碍记数器的记数初值和运算速度。
单片机最小系统包括晶振电路、复位电路、电源、接地。
晶振电路已经在上一节介绍了,下面简单介绍下复位电路、电源、接地。
1.复位电路
论文采纳微分型复位电路,电路图如图3-3所示,
图3-3微分型复位电路
工作原理:
高电平为例,电源上电时,VCC能够以为一阶跃信号复位端电压是由于下拉电阻R1在CPU复位端引发的电压值,一样为以下。
但在实际应用中,VCC不可能为理想的阶跃信号。
其要紧缘故有两点:
(1)稳压电源的输出开关特性;
(2)咱们通常在设计电路时,为保证电源电压稳固性,往往在电源的输入端并联一个大电容,从而致使了VCC不可能为阶跃信号特点。
从而阻碍了的复位电压的复位特性。
2.电源、接地
单片机AT89C52所选用的是+5V的电源,可直接由稳压电源提供,接地直接接GND。
3.单片机最小系统
由以上晶振电路、复位电路、电源、接地即可组成单片机最小系统如图3-4所示,
图3-4单片机最小系统
LED显示电路
在播放器的设计中要显示曲目的序号,在那个地址就要用到显示电路。
咱们采纳LED显示电路。
LED显示电路有七段和八段之分,也有共阳和共阴之分,下面笔者做具体的介绍。
LED显示的原理[6]
LED数码管机构简单,价钱廉价。
八段LED显示管由八个发光二极管组成,编号为a,b,c,d,e,f,g和SP,别离与同名管脚相连。
七段LED数码管显示比八段少一只发光管SP,其他与八段LED相同。
八段LED数码显示管原理很简单,是通过同名管脚上所加电平的高低来操纵发光二极管是不是点亮从而显示不同的字形的。
例如,假设在共阴LED管的SP,g,f,e,d,c,b,a管脚上别离加上7FH操纵电平(即SP上为0伏,不亮;其余为TTL高电平,全亮),那么LED显示管显示字符为“8”。
7FH是按SP,g,f,e,d,c,b,a顺序排列后的十六进制编码(0为TTL低电平,1为TTL高电平),长称为字形码。
因此,LED显示的字形不同,相应的字形码也不同。
由于B和8,D和0字形相同,故B和D均以小写字母B和d显示。
关于八段LED管来书所有发光二极管阴极共连后接到引脚G上,G脚为操纵端,用于操纵LED是不是点亮。
假设G脚接地,那么LED被点亮;假设G脚接TTL高电平,那么它被熄灭。
关于共阳八段LED数码显示管来讲,假设所有发光二极管阳极共连后接到G脚。
正常显示时,G脚接+5V,个发光二极管是不是点亮取决于a~SP各引脚上是不是是低电平0伏。
因此,共阴共阳所需的字形码恰好相反。
51系列单片机对LED管的显示分为静态和动态两种。
静态显示的特点是各LED管能够稳固地同时显示各字形;动态显示是指各LED管能够连番一遍一遍地显示各自字符,人由于视觉器官惰性,从而看到的是LED似乎在同时显示不同字形。
且动态显示是采纳软件的方法把欲显示的十六进制数或BCD码转换成相应的形码地址和偏移量,故它通常需要在RAM区成立一个显示缓冲区。
显示缓冲区内包括的存储单元个数常和系统中LED显示器个数相等。
显示缓冲区的起始地址很重要,它决定了显示缓冲区在RAM中的位置。
显示缓冲区中的每一个存储单元用于寄存相应的LED显示管欲显示字符的字形码的地址偏移量,故CPU能够依照那个地址偏移量通过查字形码表找出所显示字符的字形码,以便送到字形口显示。
图a)为八段共阴LED显示管原理图,图b)为八段共阳LED显示管原理图,八段LED数码管的原理图如图3-5所示:
图a)八段共阴LED显示管原理图图b)八段共阳LED显示管原理图
图3-5八段LED显示管原理图[7]
LED显示模块
在单片机系统中,通经常使用LED数码显示器来显示各类数字或符号。
由于它具有显示清楚、亮度高、利用电压低、寿命长的特点,因此利用超级普遍。
这是本次系统设计选用它的缘故。
八段LED显示器由8个发光二极管组成。
基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各类数字及部份英文字母。
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一路的,称之为共阳极LED显示器;另一种是8个发光二极管的阴极都连在一路的,称之为共阴极LED显示器。
八段LED显示器如图3-6所示:
共阴和共阳结构的LED显示器各笔画段名和安排位置是相同的。
当二极管导通时,相应的笔画段发亮,由发亮的笔画段组合而显示的各类字符。
8例如,关于共阴LED显
示器,当公共阴极接地(为零电平),而阳极hgfedcba各段为0111011时,显示器显示"P"字符,即关于共阴极LED显示器,“P”字符的字形码是73H。
若是是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为(8CH)。
图3-6八段LED显示器
LED显示电路的设计[8]
作者选择的是共阳结构的LED显示器,如此只要在公共端接高电平就能够够了,假设用共阴结构的LED显示器还要加驱动芯片,如此不仅增加了本钱,又降低了稳固性。
LED显示有静态扫描和动态扫描两种,在方案比较中已经介绍过,由于论文要显示八位LED,因此选择的是动态扫描方式。
动态扫描显示接口是单片机中应用最为普遍的一种显示方式之一。
其接口电路是把所有显示器的8个笔画段a-h同名端连在一路,而每一个显示器的公共极COM是各自独立地受I/O线操纵。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,那么取决于COM端,而这一端是由I/O操纵的,因此咱们就能够够自行决定何时显示哪一名了。
而所谓动态扫描确实是指采纳分时的方式,连番操纵各个显示器的COM端,使各个显示器连番点亮。
在连番点亮扫描进程中,每位显示器的点亮时刻是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余晖效应,尽管事实上列位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象确实是一组稳固的显示数据,可不能有闪烁感。
播放器显示电路模块设计的电路图如图3-7所示:
设计选用的是八段共阳数码管,在电路中,P0口传送的是显示段码,P2口传送的是显示位码。
设计的关键点:
动态电流的计算,动态扫描周期的确信,所谓动态驱动实际确实是分时点亮不同位置的数码管,由于人眼的惰性,当亮度熄灭的时刻小于1/25秒时,给人们感觉是亮度没变。
每位数码管点亮时刻T=25ms/数码管位数;T=25/8=,在这取2ms。
数码管每段平均电流I=段静态显示的驱动电流*数码管的位数;I=5mA*8位=40mA;每位数码管的平均电流Ia=每段的电流*数码管的段数;Ia=20mA*8段=160mA;R=。
因此在此处R1~R3取2KΩ,组排选择每一个电阻为Ω。
图3-7音乐播放器LED显示电路设计
电源部份
系统工作需要电源,本设计所需电源电压为+5V,而所提供的为+24V电压,因此本文也要对电源电路进行设计,以知足系统的工作要求,LM2575产生的为+5V电压,以下作详细介绍。
人们经常使用7805稳压块产生5V电压。
但7805的一个明显缺点,是当输入电压大于12伏时,发烧会很厉害,最大的输入电压也只能到15伏左右。
缘故在于7805属于线性稳压。
即若是输入12V,就有7V电压是完全