基于Proteus的音乐播放器仿真实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HEFEI UNIVERSITY
proteus仿真设计报告
作品名称:音乐播放器
申报者信息:
队员1:
队员2:
一.引言
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。在音乐播放方面,利用单片机储存音乐,控制播放也越来越广泛。为了更好的掌握单片机的应用,用单片机设计一个音乐播放器。这样可以有效的将理论知识与实践相结合。
二.设计要求
以单片机为核心,设计一个数字音乐盒:
利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(不少于30s)。
采用LCD显示信息。歌曲的存储选用外部存储器EEPROM
三.硬件电路设计
3.1总体设计方案
本系统以89C51单片机为控制核心,以按键开关作为控制元件,以扬声器作为执行器件,再结合6MHZ的晶振电路,共同构成音乐播放器系统。
图1 系统硬件组成
3.2 单元电路设计
3.2.1 单片机简介
89C51单片机拥有4KB的片内ROM和128B的片内RAM。ROM和RAM的片外寻
址范围都为64KB 。单片机拥有32个并行口和1个串行口。在89C51单片机中存在5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。
XTAL2
18
XTAL1
19
ALE 30EA
31
PSEN 29RST
9
P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78
P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD
17
P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1
AT89C51
图2 89C51单片机
3.2.2 显示电路
显示电路是一个1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、
符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形 (用自定义CGRAM ,显示效果也不好) 1602LCD 是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
图3 1602字符液晶
3.2.3 晶振电路
晶振电路由两个10pF的电容和一个12MHZ的晶体振荡器组成。节点1与单片机的XTAL2相连接。节点2与单片机的XTAL1相连接。
图4 晶振电路
3.2.4 复位电路
复位电路由复位键、22uF的电容C3、1KΩ的电阻R9、200Ω的电阻R10组成。节点1与单片机的RST相连接。
图5 复位电路
3.2.5 发声电路
发声电路由数字扬声器组成。扬声器一端接地另一端接单片机的P3.7。
图6 发声电路
3.3 总体电路图
图7 总体电路图
四.系统软件设计
4.1数码音乐产生原理
音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。
表1 音阶与频率的关系及方式1下定时器的初值
注:0表示简谱中的空拍
当晶体振荡频率为6.144MHz,定时器工作在方式1下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X:
166
1/(2)(2)12/(610)
⨯=-⨯⨯
f X
音调的长短用节拍数表示(例如1/4拍、2/4拍、……),不同节拍数的不同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设定为四分之一拍,节拍值只能是它的整数倍。
4.2 总体流程图
主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。确定歌曲曲目后,LCD再进行显示。执行播放后,LCD显示并播放音乐。在
播放音乐。
开始
LCD初始化
播放音乐
LCD显示
图8 总体流程图
图
4.3 仿真测试
图11 LCD结果显示图
4.4 测试总结
音乐播放器很好的实现了播放,但是在实现播放长度方面还有不足,因为对外接存储器的使用还不是很熟悉,扩充四片EEPROM,可实现更长时间的播放,本次试验使用的是较为简单的循环播放模式。
附录一
仿真结果
附录二
代码
/********************************************************************
* 文件名:液晶1602显示.c
***********************************************************************/ #include
#include
#define uchar unsigned char
#define uint unsigned int
//这三个引脚参考资料
sbit E=P2^7; //1602使能引脚
sbit RW=P2^6; //1602读写引脚
sbit RS=P2^5; //1602数据/命令选择引脚
sbit BEEP=P3^7;
uchar code SONG_TONE[]={ 212,212,190,212,159,169,212,212,190,212,
142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,
12,12,12,12,9,3,12,12,12,24,0};
/********************************************************************
* 名称 : delay()