1、基于单片机的音乐播放器设计课设论文毕业设计(论文)基于单片机的MP3播放器设计学生姓名学院名称专业名称指导教师年月日 摘要因为单片机编写的MP3播放器具有执行效率高、频率输出稳定、易于修改、高可靠性、高性价比、低电压、低功耗等,使单片机近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、数据采集系统、智能化仪器仪表、及通讯设备、日常消费类产品、玩具等 1 。利用单片机设计的MP3播放器具有硬件电路简单,软件运行可靠等特点。本文介绍了一种以 AT89S52 单片机为控制核心的MP3。该设计采用2*16个点阵液晶模块LCD1602作为显示界面,蜂鸣器作为发声元件,并利用定时器进行中断控制。本文
2、分析了基于单片机的MP3播放器的工作原理,详细介绍了MP3播放器的功能及其硬件设计和软件设计的方法,给出了基于MCS-51单片机的MP3播放器的具体实现方案并重点讲述了其硬件实现与软件编写,实现了单片机MP3播放器对音乐的演奏。关键词:MP3播放器;AT89S52;LCD16021绪论目前单片机的应用渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单
3、片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。本课题即是在这种背景下,对基于MCS51单片机的MP3播放器的设计与实现进行了硬件及软件的设计,并给出了一套完整的解决方案,实现了单片机MP3播放器对音乐的演奏。基于单片机的MP3播放器可应用于MP3,MP4,扩音器等很多方面,并可作为很多系统的辅助功能,作为单片机的重要硬件资源之一,利用定时器可以产生各种固定频率的方波信号,也可以产生包括Do、Re、Me-等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。基于这个思想,我设计了一款特殊的MP3播放器,本播放器可实现播放、暂停、选曲等功能。由于时间及条件限
4、制,本设计实现了一种简单的MP3播放器,其核心器件采用AT89S52单片机,本播放器具有电路简单,功能强大,易于拓展等特点。在此基础上,可以添加按键,LED显示屏等模块,实现切换歌曲,歌名显示,动感音乐屏等功能2。2设计综述2.1单片机工作原理2.1.1 单片机概述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。AT89S52是一种低功耗、高性能CMO
5、S8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。2.1.2 单片机的应用领域及发展趋势单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分为如下几个范畴:一、在智能仪器仪表的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应
6、用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计、示波器、各种分析仪)。 二、在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。三、在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级
7、控制系统等。 四、在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机的发展趋势现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过
8、程,可以预示单片机的发展趋势,大致有:一、微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多
9、种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。二、低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要
10、途径。2.2 单片机产生音调的方法MP3播放器是利用单片机产生乐曲音符,再把乐曲音符翻译成计算机音乐语言,用单片机进行信息处理,再通过蜂鸣器或喇叭放出音乐。音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音。要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的I/O口反相,然后重复计时此半周期时间再对I/O口反相,这样就能在此I/O口上得到此频率的脉冲。通常,利用单片机的内部定时器0,工作在方式1下,改变计数初值TH0和TL0来产生不同频率。对于音乐的节拍,每个音
11、符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍。如果1拍为0.4S,1/4拍为0.1S,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,那么1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数。总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单片机辅以相应的接口来设计MP3播放器。2.3 KEIL开发系统使用Keil软件建立一个工程:Keil是
12、目前进行51单片机开发最常用的编译软件。关于Keil的使用,有很多的资料介绍,这里只介绍其整个编译过程。在Keil里,每一个完整的程序,都是以一个工程的形式建立的。一个工程里可以有一个或多个*.c文件和*.h文件,但只可以有一个main()函数。一般的做法是将包含main()函数的C文件加入到工程中,其他文件以#include头文件的形式加到这个C文件里。这样,在编译的时候,其他的文件会被自动的导入到工程里来。打开Keil软件后,出现(图2-3-1)所示界面。当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。图2-3-1 Keil软件主界面首先点击Proje
13、ct-New Project(Project-Open Project为打开一个已经存在的工程),如图2-3-2所示。图2-3-2 Keil软件打开新工程界面点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图2-3-3所示)界面。在此界面上选择电路板上所用的单片机型号:Atmel AT89S51(或者是AT89S52,视开发板上具体型号而定),单击“确定”。图2-3-3 选择电路板上所用的单片机型号设置完成后,软件会提示“是否将8051上电初始化程序添加入工程?”如图2-3-4所示,这个一般选择“否”。(关于STARTUP.A51的相关内容可查阅相应资料)图2-3-4 是否将
14、8051上电初始化程序添加入工程这样,就建立了一个空的51工程。接下来的事,就是在这个工程里面加入自己的程序代码。点击,或者File-New,便建立了一个空的文本框。现在,就可以开始在里面输入你的代码了。保存时注意:如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。下一步就是将写完的程序添加到工程里面,如图2-3-5所示,在左边Project Workspace里的Source Group 1上右击,选择Add Files to Grou
15、p Source Group 1。在打开的对话框中,选择刚存的文件路径和对应的文件名。图2-3-5 添加文件到工程中下一步,就开始编译刚输入进去的代码。点击工具栏中的按钮。接着,Keil会打出下面的提示:Build target Target 1assembling led.asm.linking.Program Size: data=8.0 xdata=0 code=100first - 0 Error(s), 0 Warning(s).其中“first - 0 Error(s), 0 Warning(s).”说明现在的工程编译通过,0个错误和0个警告。建立工程的时候,默认是不生成HEX文件
16、的,得在编译做如下设置:单击,或者在Project Workspace里Target 1上右击,选择“Options for Target Target 1”。出现如图2-3-6所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。现在再点击重新编译,系统提示:“creating hex file from first.”。便会在工程所在文件夹里生成HEX文件。图2-3-6 生成HEX文件2.4 PROTEUS的操作1.硬件电路图的接法操作3(1)放置选择(删除)元器件(2)移动元器件(3)缩放视图(4)连接导线(5)仿真,调试2. 单片机系统PROTEUS设计与仿真过程
17、4 Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改进手段之一。全部过程都是在计算机上通过Proteus来完成的。其过程一般也可分为三步:(1)在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等。简称Proteus电路设计。(2)在Keil平台上进行单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件(*.hex)。简称Proteus源程序设计和生成目标代码文件。(3)在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。简称Proteus
18、仿真。3硬件设计3.1总体方案设计以AT89S52为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动蜂鸣器发声。要产生音频脉冲,只需算出某一音频的周期(1/音频),然后取半周期的时间定时。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲。当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。同时在LCD显示歌曲序号和歌曲名称5。总体如图3-1所示:图3-1 总体方案图3.2 单片机最小系统电路3.2.1 AT89S52芯片性能介绍AT89S52是低电压,高性能C
19、MOS八位单片机,片内含8K字节的可反复擦写的只读程序存储器和256字节的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失存储技术生产与标准MCS-51指令系统及8052产品引脚兼容,片内置通用八位中央处理器和Flash存储单元,功能强大适合于许多较复杂控制应用场合6。AT89S52主要性能参数: 与MCS-51产品指令和引脚完全兼容 8K字节可重复擦写Flash闪速存储器 1000次擦写周期 全静态操作:0Hz33MHz 三级加密程序存储器 2568字节内部RAM 32个可编程I/O口线 3个16位定时/计数器 8个中断源 全双工可编程串行UART通道 低功耗空闲和掉电模式 掉电后
20、中断可唤醒 看门狗定时器 双数据指针 掉电标识符 快速编程周期 灵活ISP编程(字节和模式)芯片如图3-2-1所示:图3-2-1 AT89S52引脚图功能特性概述:AT89S52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器。一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时AT89S52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬
21、件复位。而本毕业设计中用到了, AT89S52的各个口, P1口接RZ-1602液晶显示电路,P2口接按键,P3口接晶振,蜂鸣器,工作指示灯,复位等电路。AT89S52使一个功能强大的芯片,各个口由以下功能7:P0口是一组8位漏极开路型双向 I/O 口,即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 P1口是一个带内部上拉电阻的 8 位双向 I/O 口,P1的输出缓冲级可驱动(吸收或输出电流)4个
22、TTL 逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,1 不同之处是,P1.0 和 P1.1 还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。IL与 AT89S5.1/T2EX)。表3-2-1 P1.0和P1.1的第二功能表引脚号功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX(定时/计数2捕获/重装载触发和方向控制)P2口是一个带有内部上拉电阻的8位双向 I/O,P2的输出缓冲级可驱动吸(收或输出电流4个TTL逻辑门电路。对端口
23、 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I )。IL在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时,P2口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时,P2口输出P2 锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。 P3口是一组带有内部上拉电阻的8位双向 I/O 口。P3口输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3口写入“1”时,它们被内部上
24、拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。表3-2-2 P3口第二功能表端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外中断0)P3.3(外中断1 )P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)RST:复位输入,当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字
25、节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次 PSEN信号。EA/VPP:外部访问允
26、许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH),EA 端必须保持低电平。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA端状态。如 EA端为高电平,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2: 振荡器反相放大器的输出。 3.2.2 电源电路系统直流9V或者12V电池供电,由一片LM7805将9V/12V电源稳压在5V上。5V电源给所有芯片和电路供电。在电源电路中我们使用了两个
27、滤波电容,使用滤波电容主要目的是为了消除电源波动对系统的干扰,提高系统的抗干扰能力,其中104电容是用来滤高频杂波干扰,220uF电容是用来滤低频杂波干扰。如图3-2-2所示: 图3-2-2 电源电路图3.2.3 时钟振荡电路AT89S52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自激振荡器。片外石英晶体或者陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。这里我们采用电容30pF,晶振采用12MHZ。电路图如图3-2-3所示: 图3-2-3 时钟振荡电路3
28、.2.4 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。 复位电路采用RC充电电路组成上电复位单片机电路,当系统上电时,在上电初期,电容C充电,使复位脚持续高电平,当C充电到达一定程度复位脚电位会慢慢变低,最后被电阻R完全拉低,高电平复位的时间由充电的时间决定,充电时间又由R与C的阻值和容值之积决定。一旦单片机复位脚拉低后就一直都低电平,只有下电后再上电才重新开始复位过程。电路图如图3-2-4所示: 图3-2-4 复位电路3.3 键盘扫描模块本
29、方案采用独立式按键接口设计,各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下。键盘工作方式采用定时扫描方式,采用定时器T0定时,通过读取输出数据,识别按键工作状态。键盘按键所用开关为机械弹性开关,利用了机械触点的合断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为10100ms。电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的
30、影响。按键的消抖通常有软件和硬件两种消除方法。如果按键较多,硬件消抖将无法胜任,常采用软件消抖。本设计虽然按键少但还是采用常规的软件延时的方法:在第一次检测到有键按下时,执行一段延时子程序后,再确认电平是否仍保持闭电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。判断键盘程序流程如图3-3所示:图3-3 键盘判断程序流程图3.4 显示模块常见的基于单片机设计的MP3播放器基本不能显示歌曲。该音乐播放系统设计上增加液晶显示器,可为使用者提供曲目信息。由于LED数码管只能显示数字而无法显示其他中英文字符,并对成本及功能考虑,因此从设计的成本及功能的角度考虑,采用L
31、CD-1602显示模块,它可以显示每首曲目的英文名字。LCD-1602驱动电路简单,可以由单片机直接输出命令驱动。LCD各引脚功能如图表3-4所示:表3-4 LCD引脚功能编号符号引脚说明编号符号引脚说明1VSS电源地9D2双向数据口2VDD电源正极10D3双向数据口3VL对比度调节11D4双向数据口4RS数据/命令选择12D5双向数据口5R/W读/写选择13D6双向数据口6E模块使能端14D7双向数据口7D0双向数据口15BLK背光源地08D1双向数据口16BLA背光源正极 VDD:电源正极,4.55.5V,通常使用5V电压。VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,但对
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1