基于单片机音乐播放器设计_第1页
基于单片机音乐播放器设计_第2页
基于单片机音乐播放器设计_第3页
基于单片机音乐播放器设计_第4页
基于单片机音乐播放器设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

片机设计的MP3播放器具有硬件电路简单,软件运行可靠等特点。本文介绍了一种以MP3MP3MP3关键词:MP3目录摘 绪目录摘 绪 设计综 单片机工作原 单片机概 单片机的应用领域及发展趋 单片机产生音调的方 KEIL开发系 PROTEUS的操 硬件设 总体方案设 单片机最小系统电 AT89S52芯片性能介 电源电 时钟振荡电 键盘扫描模 显示模 播放模 系统软件设 编程原理及流程 调试与仿真结 软件调 测试LED显示模 测试键盘控制模 测试P3.0口输 调试中遇到的问题及解 仿真结 结束 致 参考文 附 附录1源程 IC卡,民MP3MP3,MP4,扩音器等很多方面,并可作于这个思想,我设计了一款特殊的"MP3心器件采用AT89S52单片机,本播放器具有电路简单,功能强大,易于拓展等特动感音乐屏等功能[2]转换器等电路AT89S52是一种低功耗、高性能CMOS8位微控制器,具有Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得2.1.2片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单(CPU(RAM(ROMA/DPMW(脉宽调二、低功耗CMOS化2.2音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,口反相,这样就能在此I/O口上得到此频率的脉冲。就可求得节拍的时间1/41DELAY,那14DELAY,以此类推。所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数。2.3KEIL只可以有main()函数。一般的做法是main()函数C文件加入到工程中,其他文件以#includeC2-3-1Keil2-3-1Keil图2-3-3所示)界面。在此界面上选择电路板上所用的单片机型号:AtmelAT89S51(AT89S52,视开发板上具体型号而定WorkspaceGroup1上右AddFilestoWorkspaceGroup1上右AddFilestoGroupGroup1’。在打开的对话框中,选择刚存的文件路径和对应的文件名2-3-5下一步,就开始编译刚输入进去的代码。点击工具栏中Keil会打出下面的提示:Buildtarget'Target1'assemblingled.asm...ProgramSize:data=8.0xdata=0"first"-0Error(s),0其中“"first"0Error(s0Warning(s).”说明现在的工程编译通过0个错误和0个警告。建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:单击,或者在ProjectWorkspace里Target1上右击,选择“OptionsforTarget‘Target12-3-6所示对话框,选择creating"first"...便会在工程所在文件夹里生HEX文件2-3-6生成HEX2.42-3-6生成HEX2.4PROTEUSProteusProteus来完成的。其过程一路和电气检测等。简称Proteus电路设计。(*.hexProteusAT89S52为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动I/OI/OI/O脚上得到此AT89S52为核心,通过单片机的定时器产生一定长度的方波,方波脉冲驱动I/OI/OI/O脚上得到此频率的脉冲。当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉LCD[5]。总体3-13.23.2.1AT89S52芯片性能AT89S52是低电压,高性能CMOS八位单片机,片内含8K字节的可反复擦写256ATMEL公司的高密度、非易失存储技术生产与标准MCS-51指令系统及8052产品引脚兼容,片内置通用八位中央处理器和Flash场92256×8字节内部RAM3-2-3-2-1AT89S528K32I/O口线,3166CPURAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内AT89S52P1RZ-1602,P2键,P3RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内AT89S52P1RZ-1602,P2键,P38TTLP0P18位双向I/O口,P1阻把端口拉到高电平,1P1.0P1.1因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。IL与AT89S5.1/T2EX3-2-1P1.0P1.1P28I/O,P24TTL逻辑门电路。对端口P2写“1引脚被外部信号拉低时会输出一个电流(I)。IL在访问外部程序存储器或16(MOVX@DPTR)时,P288(MOVX@RI时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控动(吸收或输出电流)4TTLP3“1出电流。出电流。输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有FFFFHEAEAEACPU令。Flash+12VVpp,是该器件是使用12V编程电压VppXTAL1:振荡器反相放大器的及内部时钟发生器的输入端XTAL23.2.2源电9V12VLM78059V/12V是该器件是使用12V编程电压VppXTAL1:振荡器反相放大器的及内部时钟发生器的输入端XTAL23.2.2源电9V12VLM78059V/12V C1456321123图3-2-33.2.4位电初期,电容C充电,使复位脚持续高电平,当C充电到达一定程度复位脚电位会R完全拉低,高电平复位的时间由充电的时间决定,充电3-2-1234567893-2-4 图3-2-33.2.4位电初期,电容C充电,使复位脚持续高电平,当C充电到达一定程度复位脚电位会R完全拉低,高电平复位的时间由充电的时间决定,充电3-2-1234567893-2-4 RD 3.3T03.3T0有键按3.4常见的基于单片机设计的MP3LED数码管只能显示数字而无LCD-1602LCD-1602驱动电路简单,可以由单片机直接输出命令驱动。LCD3-43.4常见的基于单片机设计的MP3LED数码管只能显示数字而无LCD-1602LCD-1602驱动电路简单,可以由单片机直接输出命令驱动。LCD3-41234567读/写选择9VDD:电源正极,4.5-5.5V,通常使5V电压RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RSE:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8BLALED,BLAVDD,BLK地,实测该模块的背光电流为50mA左右。3.5100mA123456783.5100mA12345678 293-54音乐发声设计原理4音乐发声设计原理I/O脚上得到此频率的脉冲。利用单片机内部定时器使其工作在计数器模式MODE1下,改变计数值例如,频率为523Hz,其周期天/523S=1912uS,因此只要令计数器计时DO(532HzT=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-DOT=65536-500000/262=63628DOT=65536-500000/523=645804)144位代表音符节1/41DELAY,14DELAY,1/4实际11/4511/4C3拍22/4611/2F33/433/48241A21/2频率5低音16低音27低音T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-DOT=65536-500000/262=63628DOT=65536-500000/523=645804)144位代表音符节1/41DELAY,14DELAY,1/4实际11/4511/4C3拍22/4611/2F33/433/48241A21/2频率5低音16低音27低音31中音42中音53中音64中音75中音86中音97中音A1高音B2高音C3高音D4高音E5高音F0程序的简谱编码表里。FDH80HTH0,TL0。3)程序中的节拍控制是通过调用延时子程序DELAY的次数来实现,1拍为DELAY4-14-2所示,开始播放自定义音乐程序时,指针指向乐谱第一个字节,将第即为音符中节拍对应的1/404-14-2所示,开始播放自定义音乐程序时,指针指向乐谱第一个字节,将第即为音符中节拍对应的1/40工作在方式1,由次数得到节拍,再读取下一个乐谱字节,循环下去则演奏出美妙和谐的乐曲[9]55.155.1软件仿真器即可;后者一般需要仿真系统的支持。在本次设计中利用的是KEILC51软件仿真器,其评估版本可以免费获取,只是有2KB代码限制。5.1.1LED示模1 MOV5.1.1LED示模1 MOVTMOD,MOVTH1,MOVTL1,#0B0HMOVMOV0SETBTR15.1.2测试键盘控制模5.1.2测试键盘控制模SA:JBP1.0,SBLCALLDELAY2JBP1.0,SAJNBP1.0,MOVP2,#10001000B显AMOVR5,#10001000BMOVA,#0FFHMOVB,#0AH5.1.3P3.0输SP,TMOD,CLRTL0,TH0,21HTL0,TH0,21H5.2RET返回指令一定LJMP,我们就遇31MP3器的播放性能不稳定(有时候能工作,有时候却工作不了,当接一高电平以两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器13,250us,CPU5.3在单片机中加载.hex文件仿真中遇到了以下几个问题。5-图5-35-图5-3设计也要考虑到性能和价格之比,和它驱动起来比较简单。同时在设计的过程致谢[1][1]黄振杰,卢小冰.基于AT89S52的多功能音乐播放器[J].广东:电子设计工程,2009年吴迅.用单片机设计音乐播放器[J].山东:电子侯玉宝,陈忠平,,李成群.Proteus51系列单片机设计与仿真.[M]何何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,[M]李华.MCS-51系列单片机应用接口技术.北京航空航天大学出版,[M]1993张义和,王敏男等.例说51单片机[M].北京:人民邮电出版社,2008.4陈明荧.8051单片机课程设计实训教材[M](第一版).北京:清华大学出版社1#defineucharunsignedchar#defineucharunsignedchar#defineuintunsignedintLCDPORTucharcodetab[]="Presskey";ucharcodetab1[]="Selectsong";ucharcodetab2[]="FirstSong";ucharcodetab3[]="butterfly";ucharcodetab4[]="SecondSong";ucharcodetab5[]="Jinglebell";ucharcodetab6[]="ThirdSong";ucharcodetab7[]="Yesterday";ucharcodetab8[]="ForthSong";LCDPORTucharcodetab[]="Presskey";ucharcodetab1[]="Selectsong";ucharcodetab2[]="FirstSong";ucharcodetab3[]="butterfly";ucharcodetab4[]="SecondSong";ucharcodetab5[]="Jinglebell";ucharcodetab6[]="ThirdSong";ucharcodetab7[]="Yesterday";ucharcodetab8[]="ForthSong";sbitLCDE=P2^2;sbit#defineSYSTEM_OSC#define4/5//定义普通音符演奏的长度分率,//4P3^7;// =262,277,294,311,330,349,369,392,415,440,466,494unsignedcharcode置={0,2,4,5,7,9,11//1~7在频率表中的位unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64unsignedcharSound_Temp_TH1,Sound_Temp_TL1;unsignedcharcode{0x1B,0x02,0x1A,0x02,0x1B,0x02,0x19,0x66,0x1A,0x03,0x18,0x02,0x17,0x02,0x16,0x0D,0x17,0x03,0x17,0x03,0x19,0x66,0x17,0x03,0x16,0x0D,0x19,0x0D,0x16,0x03,0x17,0x0D,0x18,0x03,0x16,0x03,0x15,0x00,0x19,0x02,0x11,0x02,0x10,0x02,0x15,0x02,0x0F,0x00,0x10,0x03,0x0F,0x00,0x0D,0x01,0x0F,0x66,0x10,0x03,0x16,0x03,0x10,0x0D,0x15,0x03,0x0F,0x03,0x1F,0x03,0x1A,0x0D,0x19,0x03,0x17,0x03,0x16,0x00,0x16,0x66,0x17,0x03,0x11,0x0C,0x19,0x66,0x10,0x03,0x15,0x02,0x16,0x02,0x15,0x02,0x10,0x0D,0x0F,0x03,0x10,0x0D,0x0F,0x00,0x17,0x66,0x19,0x03,0x11,0x02,0x10,0x0D,0x15,0x03,0x0F,0x15,0x0D,0x03,0x0D,0x03,0x0F,0x0D,0x10,0x03,0x11,0x0D,0x10,0x00,0x0F,0x0D,0x10,0x03,0x15,0x66,0x19,0x02,0x17,0x02,0x16,0x02,0x17,0x0D,0x15,0x02,0x10,0x0D,0x0F,0x03,0x0D,0x01,0x10,0x03,0x15,0x04,0x10,0x0D,0x10,0x03,0x15,0x04,0x10,0x0D,0x0F,0x03,0x0F,0x03,0x10,0x0D,0x15,0x03,0x0F,0x00,0x19,0x03,0x16,0x0D,0x17,0x03,0x16,0x0D,0x11,0x02,0x10,0x02,0x0F,0x00,0x00,0x00unsignedcharcode0x0F,0x03,0x0F,0x03,0x17,0x03,0x16,0x03,0x0F,0x66,0x19,0x04,0x19,0x04,0x0F,0x03,0x16,0x03,0x15,0x03,0x10,0x02,0x10,0x03,0x18,0x03,0x17,0x03,0x16,0x03,0x10,0x66,0x19,0x03,0x19,0x03,0x18,0x03,0x16,0x03,0x15,0x03,0x0F,0x03,0x0F,0x03,0x17,0x03,0x15,0x03,0x0F,0x66,0x0F,0x03,0x0F,0x03,0x16,0x03,0x15,0x03,0x10,0x66,0x10,0x03,0x18,0x03,0x17,0x03,0x16,0x03,0x19,0x03,0x19,0x03,0x19,0x03,0x1A,0x03,0x19,0x03,0x16,0x03,0x15,0x66,0x17,0x03,0x17,0x03,0x17,0x03,0x17,0x03,0x17,0x02,0x17,0x03,0x15,0x03,0x16,0x03,0x17,0x01,0x18,0x03,0x18,0x67,0x18,0x04,0x18,0x03,0x17,0x03,0x17,0x04,0x17,0x04,0x17,0x03,0x16,0x03,0x15,0x03,0x16,0x03,0x19,0x66,0x19,0x03,0x18,0x03,0x16,0x03,0x15,0x02,unsignedcharcodeMusic_Two[]0x17,0x03,0x16,0x03,0x17,0x01,0x16,0x03,0x16,0x03,0x15,0x01,0x10,0x03,0x15,0x03,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x0E,0x15,0x04,0x0F,0x01,0x17,0x03,0x17,0x01,0x16,0x03,0x17,0x03,0x16,0x03,0x10,0x03,0x15,0x03,0x16,0x02,0x16,0x0D,0x16,0x03,0x15,0x03,0x10,0x03,0x15,0x03,0x17,0x03,0x16,0x03,0x17,0x01,0x16,0x03,0x16,0x03,0x15,0x01,0x10,0x03,0x15,0x03,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x0E,0x15,0x04,0x0F,0x01,0x17,0x03,0x19,0x01,0x19,0x03,0x1A,0x03,0x19,0x03,0x16,0x03,0x16,0x03,0x16,0x02,0x16,0x0D,0x16,0x03,0x15,0x03,0x10,0x03,0x10,0x0D,0x19,0x03,0x19,0x03,0x1A,0x03,0x1F,0x03,0x1B,0x03,0x1A,0x03,0x17,0x0D,0x16,0x03,0x16,0x0D,0x17,0x01,0x17,0x03,0x17,0x03,0x1A,0x02,0x1A,0x02,0x10,0x03,0x17,0x0D,0x16,0x01,0x17,0x03,0x19,0x03,0x19,0x03,0x19,0x02,0x1F,0x02,0x1B,0x03,0x1A,0x03,0x1B,0x04,0x17,0x02,0x1A,0x03,0x1A,0x03,0x1B,0x04,0x1A,0x03,0x19,0x03,0x17,0x03,0x1B,0x04,0x1A,0x03,0x19,0x03,0x17,0x03,0x17,0x0D,0x16,0x03,0x17,0x03,0x19,0x01,0x19,0x03,0x1A,0x03,0x1F,0x03,0x1B,0x03,0x1A,0x03,0x17,0x0D,0x16,0x03,0x16,0x03,0x17,0x01,0x17,0x03,0x17,0x03,0x19,0x03,0x1A,0x02,0x10,0x03,0x17,0x0D,0x16,0x03,0x17,0x03,0x19,0x03,0x19,0x03,0x17,0x03,0x1F,0x02,0x1B,0x03,0x1A,0x03,0x1A,0x0E,0x17,0x02,0x1A,0x03,0x1A,0x03,0x1A,0x0E,0x17,0x16,0x1A,0x03,0x1A,0x03,0x1A,0x0E,0x1A,0x03,0x19,0x03,0x17,0x03,0x16,0x03,0x10,0x03,0x15,0x00,0x00,0x00unsignedcharcode0x15,0x03,0x15,0x03,0x16,0x03,0x17,0x02,0x19,0x03,0x17,0x03,0x19,0x03,0x17,0x03,0x19,0x66,0x17,0x02,0x17,0x03,0x19,0x03,0x16,0x02,0x17,0x03,0x19,0x02,0x1A,0x15,0x19,0x03,0x1A,0x02,0x21,0x02,0x20,0x03,0x1B,0x03,0x1B,0x66,0x19,0x03,0x17,0x03,0x17,0x02,0x16,0x14,0x15,0x03,0x15,0x03,0x17,0x03,0x19,0x02,0x19,0x03,0x19,0x03,0x19,0x03,0x17,0x03,0x1A,0x03,0x19,0x02,0x17,0x02,0x17,0x03,0x19,0x03,0x1A,0x02,0x17,0x03,0x19,0x02,0x1A,0x03,0x1A,0x01,0x20,0x02,0x1F,0x03,0x1B,0x03,0x1A,0x66,0x1F,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x02,0x1A,0x03,0x1B,0x03,0x1F,0x02,0x1F,0x02,0x1F,0x02,0x20,0x03,0x20,0x16,0x1F,0x02,0x21,0x03,0x21,0x03,0x21,0x03,0x21,0x02,0x1F,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x03,0x17,0x03,0x19,0x03,0x19,0x14,0x1F,0x03,0x21,0x03,0x21,0x03,0x21,0x03,0x21,0x03,0x20,0x03,0x1F,0x03,0x1F,0x03,0x1B,0x03,0x17,0x03,0x19,0x03,0x19,0x14,0x1A,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x03,0x20,0x66,0x1F,0x03,0x1B,0x03,0x1F,0x03,0x1F,0x03,0x20,0x66,0x1F,0x03,0x20,0x03,0x21,0x02,0x20,0x03,0x1F,0x02,0x1A,0x03,0x17,0x02,0x17,0x03,0x1A,0x03,0x17,0x03,0x19,0x14,0x17,0x03,0x17,0x03,0x16,0x04,0x15,0x03,0x16,0x03,0x17,0x01,0x17,0x03,0x16,0x03,0x16,0x14,0x17,0x03,0x17,0x03,0x18,0x02,0x16,0x03,0x16,0x16,0x15,0x03,0x17,0x03,0x16,0x01,0x1F,0x02,0x20,0x02,0x21,0x03,0x21,0x03,0x21,0x02,0x20,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x03,0x1A,0x03,0x17,0x03,0x19,0x03,0x19,0x14,0x1F,0x02,0x21,0x03,0x21,0x03,0x21,0x02,0x20,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x03,0x1A,0x03,0x17,0x03,0x19,0x03,0x19,0x14,0x1F,0x02,0x21,0x03,0x21,0x03,0x21,0x03,0x21,0x66,0x1F,0x03,0x1B,0x03,0x1F,0x03,0x1B,0x03,0x17,0x03,0x19,0x03,0x19,0x00,0x00,0x00ucharvoiddelay1(void){uchari,j;for(j=248;j>0;j--}voidGetch) {delay1();{switch(Z{case0xf9:k=0;break;对键值赋值case0xf5:k=1;break;case0xfa:k=2;break;case0xf6:k=3;}}}}void{uintuiCount;}voidWriteCMD(ucharCommond)//LCD{ voidWriteCMD(ucharCommond)//LCD{ }{Delay();}void{}voidmydelay(int{inti,j;for(j=255;j>0;j--}void{BeepIO=初值(10ms的初装值TL1Sound_Temp_TL1(65535-(1/1200)*SYSTEM_OSC)%256;计算TH1应装入的TH1=TL1=}|======TL1=}|======{BeepIO=}==Octachord,unsignedint{unsignedchari,j;unsignedcharTone,Length,SL,SH,SM,SLen,XG,FD;{j=i+Signature;if(j>11){j=j-//NewFreTab[i]=}NewFreTab[i]=if(Octachord==1)elseif(Octachord==3)}SoundLength=while(Sound[SoundLength]!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论