基于AT89C51音乐播放器Word下载.docx
- 文档编号:7761543
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:15
- 大小:159.90KB
基于AT89C51音乐播放器Word下载.docx
《基于AT89C51音乐播放器Word下载.docx》由会员分享,可在线阅读,更多相关《基于AT89C51音乐播放器Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
2013年9月1日
基于单片机的音乐播放器设计
摘要
随着我国现代化技术建设的发展,电子产品多种多样,但同类电子产品工作原理基本相同,只不过在硬件电路的是实现上有所不同。
例如我们我们平时所用的MP3音乐播放器,就可以用单片机和一些电子元件来实现它的基本功能。
我的设计是以89C51单片机作为核心工作元件的音乐播放器,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
它在实现音乐播放功能上简单易行,在制作硬件电路上也不困难。
因此,此次课程设计,我除了完成了系统的软件设计和实物电路仿真外,利用空余时间制作出了实物。
关键字音乐播放器,AT89C51单片机,KEIL,PROTEUS。
1引言
1.1设计目的
此次制作的音乐播放器,只需将音乐编码导入C语言程序,经过KEIL软件运行生成HEX文件,经BDM下载器导入单片机中即可。
可以同时生成多首歌曲的音乐编码,再次我选择了两首歌的音乐编码。
学生自己动手就可以制作属于自己的个性化的音乐播放器,通过自己动手将所学的单片机知识应用到实践中。
1.2设计要求
设计一个基于AT89C51的音乐播放器,利用软件编程和相应的硬件电路实现不同歌曲的播放,先利用KEIL软件编程,再用PROTEUS仿真实现,生成可执行的HEX文件,最后焊接实物电路。
1.3设计方法
采用AT89C51单片机、蜂鸣器,晶体振荡器,晶体管2N2905,复位开关为主要硬件。
PROTEUS仿真软件设计和C语言编程方法实现播放器的模拟,用AT89C51实现音乐编码的处理,用晶体管2N2905对电路中电流放大,进而驱动蜂鸣器播放音乐。
2设计方案及原理
按照系统设计要求,将系统分为主控模块,电源电路复位电路、晶振电路、功率放大电路,蜂鸣器发声电路等模块。
系统框图如图1所示。
图1系统组成框图
AT89C51简介
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机外形及引脚排列如图2所示。
图2AT89C51单片机引脚图
3硬件设计
3.1晶振电路
晶振电路,对于单片机系统而言是必须的,因为单片机部是由各种各样的数字逻辑器件构成,而这些器件又必须按时间顺序完成。
所以在管脚的XTAL1和XTAL2引脚外接石英晶体和俩个谐振电容,电容采用2个30pf电容,采用12M的石英晶体。
这样就可以构成单片机的基本时钟电路,时钟频率为12M。
如图2所示
图2晶振电路
3.2复位电路
复位电路是对单片机进行初始化操作,使单片机处于一个确定的初始状态。
而要AT89S51复位得在RESET引脚上加5V的高电平信号就可以了。
复位电路参数为30U的电解电容和1kΩ的电阻。
如图3为单片机的复位电路。
图3复位电路
3.3功率放大电路
功率放大电路对工作电流进行放大,因为单片机电路本身的电流不足以带动蜂鸣器发生,加一个三极管放大器2N2905可以带动蜂鸣器发生。
图4功率放大电路
3.4晶振、复位、功放之间连线电路
图5复位电路、晶振电路与单片机之间的连线图
3.4系统连接图
整体硬件连接图如图6所示。
图6系统连接图
4软件设计
4.1主程序设计
主程序流程图如图6所示。
图7主程序流程图
5系统仿真及调试
软件调试,先编写显示程序并进行硬件的正确性检验,然后分别进行主程序,音乐播放程序和定时程序的编译和调试;
硬件调试,仔细检查电路有没有漏接或是错接的地方,再接一个电压表检查供给蜂鸣器的电压是否合适,调节电阻的阻值以调节工作电路的阻值。
并且外接了一个数字滤波器检测P1.7引脚的电平高低。
如果不理想,继续调整程序和硬件电路,直到得到正确结果。
仿真图详见第4图6。
6总结
通过此次基于单片机的音乐播放器的设计,使我进一步加深了对课堂上知识的理解,对单片机的寻址方式及定时中断的理解更加深刻,熟悉了单片机应用系统设计的各主要环节的设计,了解了三极管2N2905的参数,及使用方法,蜂鸣器的正常工作条件,示波器在PROTEUS中的使用方法,使用外部晶体振荡器如何选取电容,及晶体振频率。
但是动手制作实物的过程的,动手焊接能力还是不行,容易把引脚焊接在一起,因此,在以后的学习要加强自己实践能力的锻炼。
软件调试,先编写显示程序并进行硬件的正确性检验,然后分别进行主程序,A/D转换程序和LED显示器程序编译和调试;
硬件调试,仔细检查电路有没有漏接或是错接的地方,再接一个电压表检查LED显示器显示的数值是否和电压表的示数一致,如果不理想,继续调整程序,直到得到正确结果。
附录1音乐播放器源程序
//音乐播放器代码
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharCount;
sbitSpeak=P1^7;
//蜂鸣器器控制脚
/*以下数组是音符编码*/
unsignedcharcodeSONG[]={//祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
//路边的野华不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,
};
/********************************************************************
*名称:
Time0_Init()
*功能:
定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms
*输入:
无
*输出:
***********************************************************************/
voidTime0_Init()
{
TMOD=0x01;
IE=0x82;
TH0=0xDC;
TL0=0x00;
}
Time0_Int()
定时器中断,中断中实现Count加一
voidTime0_Int()interrupt1
Count++;
//长度加1
Delay_xMs()
延时子程序,经过软件调试,测得延时程序大概为55us.
x
voidDelay_xMs(uintx)
uinti,j;
for(i=0;
i<
x;
i++)
{
for(j=0;
j<
3;
j++);
}
Play_Song()
播放蜂鸣器控制程序
i(选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”
voidPlay_Song(uchari)
ucharTemp1,Temp2;
uintAddr;
Count=0;
//中断计数器清0
Addr=i*217;
while
(1)
Temp1=SONG[Addr++];
if(Temp1==0xFF)//休止符
TR0=0;
Delay_xMs(100);
elseif(Temp1==0x00)//歌曲结束符
return;
else
Temp2=SONG[Addr++];
TR0=1;
while
(1)
{
Speak=~Speak;
Delay_xMs(Temp1);
if(Temp2==Count)
Count=0;
break;
}
}
Main()
主函数
voidMain()
Time0_Init();
//定时器0中断初始化
Play_Song(0);
//Play_Song(0)为祝你平安Play_Song
(1)为路边的野花你不要采
}
附录2完整仿真图和实物图
音乐播放器的仿真图及实物图,分别如图8、图9所示。
图7音乐播放器仿真图
图8音乐播放器实物图
参考文献
[1]建忠.单片机原理及应用[M],电子科技大学,2008.2.
[2]黄智伟.全国大学生电子设计竞赛系统设计[M],:
航空航天大学,2006.6.
[3]黄智伟.凌阳单片机课程设计指导[M],:
航空航天大学,2006.11.
[4]广弟,朱月秀,王秀山.单片机基础[M],:
航空航天大学,2001.7.
[5]康华光.模拟电子技术基础(第四版)[M],:
华中理工大学,1999.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 音乐 播放