基于Proteus的音乐播放器仿真实现_第1页
基于Proteus的音乐播放器仿真实现_第2页
基于Proteus的音乐播放器仿真实现_第3页
基于Proteus的音乐播放器仿真实现_第4页
基于Proteus的音乐播放器仿真实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Proteus的音乐播放器仿真实现音乐播放器的设计2中报者信息:队员1:队员2:合肥卷改HEFEI UNIVERSITYproteus仿真设计报告作品名称: 音乐播放器音乐播放器的设计一.引言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片 机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数 据传输,工业自动化过程的实时控制和数据处理,全自动洗衣机的控制,以及 程控玩具、电子宠物等等,这些都离不开单片机。在音乐播放方面,利用单片 机储存音乐,控制播放也越来越广泛。为了更好的掌握单片机的应用,用单片 机设计一个音乐播放器。这样可以有效的将理论知识与实践相结合

2、。二.设计要求以单片机为核心,设计一个数字音乐盒:利用I/O 口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏 乐曲(不少于30s)。采用LCD显示信息。歌曲的存储选用外部存储器 EEPROM三.硬件电路设计3.1 总体设计方案本系统以89C51单片机为控制核心,以按键开关作为控制元件,以扬声器 作为执行器件,再结合6MHZ勺晶振电路,共同构成音乐播放器系统。AT8951音乐播放器的设计12MH 4i+r发严电系统硬件组成3.2 单元电路设计3.2.1 单片机简介89C51单片机拥有4KB的片内ROMF口 128B的片内RAM ROMS RAM勺片外寻 址范围都为64KR单片机拥有3

3、2个并行口和1个串行口。在89C51单片机中存 在5个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。U119,XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10391838 37 3635"4339322122232924PSENP2.3/A1130ALEP2.4/A12EAP2.5/A13253126P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXD2728110211312P1.2P3.2

4、/INT0413P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD514615716817AT89C51图2 89C51单片机3.2.2 显示电路显示电路是一个 1602液晶也叫1602字符型液晶它 是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字 符位组成,每个点阵字符位都可以显示一个字 符。每位之间有一个点距的间隔每行之间也有间 隔起到了字符间距和行间距的作用, 正因为如此 所以他不能显示图形(用自定义CGRAM ,显示效果也不好)1602LCD是指显示的内容为16X2,即可以显示两行,

5、每行16个字符液晶 模块(显示字符和数字)。目前市面上字符液晶 绝大多数是基于HD44780液晶芯片的,控制原 理是完全相同的,因此基于 HD44780写的控制 程序可以很方便地应用于市面上大部分的字符 型液晶。图 31602字符液晶3.2.3 晶振电路晶振电路由两个10pF的电容和一个12MHz勺晶体振荡器组成。节点1与单 片机的XTAL2相连接。节点2与单片机的XTAL1相连接。8口刈I CR”图4晶振电路3.2.4 复位电路复位电路由复位键、22uF的电容C3 1KQ的电阻R9 200Q的电阻R10组 成。节点1与单片机的RST相连接。图5复位电路3.2.5 发声电路发声电路由数字扬声器

6、组成。扬声器一端接地另一端接单片机的P3.7图6发声电路3.3总体电路图F1皿 pupaFOJXJJ ,瓶” FDZA)! 陌工切 ,*m msvsFO#A>fi ,口 HKF际眸 »zire aug PZ*f1 股瓶。 皿渣o FZJ»A1I亘FJIPJ P3VTO fiztitp 彷JIE巧IEUWT nr/TT-GiM>,口>s>.F朝弋臼 行EC图7总体电路图四.系统软件设计4.1 数码音乐产生原理音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方波就可以产生音阶,音阶与频率的关系见表1。由于频率的倒数是周期,因此可由单片机中

7、的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连接的P1.7取反后就可得到方波的周期,从而达到了控制频率,即音阶的目 的。表1音阶与频率的关系及方式1下定时器的初值音频率(Hz )定时器初音频率(Hz)定时器初音频率(Hz )定时器初阶值阶值阶值11310F85EH12620FC2FH15230FE17H21470F933H22940FC99H25870FE4CH31650F9F0H33300FCF8H36590FE7CH41750FA49H43490FD22H46980FE91H51960FAE6H53920FD73H57840FEB9H62200FB74H,64400FDBAH

8、68800FEDDH72470FBF4H74940FDFAH79880FEFDH000100H000100H000100H低八度音中音高八度音注:0表示简谱中的空拍当晶体振荡频率为6.144MHz,定时器工作在方式1下时,若各音阶相对应的 定时器计数初值为X,则可根据下式计算X:1/(f 2) (216 X) 12/(6 106)音调的长短用节拍数表示(例如 1/4拍、2/4拍、),不同节拍数的不 同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序 设定为四分之一拍,节拍值只能是它的整数倍。4.2 总体流程图主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目 判

9、断。确定歌曲曲目后,LCDS进行显示。执行播放后,LCD显示并播放音乐。 在播放音乐。LCD初播放1-G图8总体流程图图4.3仿真测试图11 L C D结果显示图4.4测试总结音乐播放器很好的实现了播放,但是在实现播放长度方面还有不足,因为 对外接存储器的使用还不是很熟悉,扩充四片 EEPROM,实现更长时间的播放, 本次试验使用的是较为简单的循环播放模式。附录仿真结果附录二代码/*文件名液晶1602显示.c*/ #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uin

10、t unsigned int/这三个引脚参考资料sbit E=P2A7;/1602使能引脚sbit RW=P2A6;/1602读写引脚sbit RS=P2A5;/1602数据/命令选择引脚sbit BEEP=P3A7;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

11、,12,12,9,3,12,12,12,24,0;/* 名称:delay()音乐播放器的设计* 功能 : 延时 , 延时时间大概为5US。*/ void delay()_nop_();_nop_();_nop_();_nop_();_nop_();/* 名称 : bit Busy(void)* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态* 输入 : 输入的命令值*/ bit Busy(void)bit busy_flag = 0;RS = 0;RW = 1;E = 1;delay();busy_flag = (bit)(P0 & 0x80);E = 0;return bus

12、y_flag;/* 名称 : wcmd(uchar del)* 功能 : 1602 命令函数* 输入 : 输入的命令值*/ void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;delay();P0 = del;delay();E = 1;delay();E = 0;/* * 名称 : wdata(uchar del) * 功能 : 1602 写数据函数* 输入 : 需要写入 1602 的数据*/ void wdata(uchar del)while(Busy();RS = 1;RW = 0;E = 0;delay();P0 = del;de

13、lay();E = 1;delay();E = 0;void DelayMS(uint ms)uchar t;while(ms-) for(t=0;t<120;t+);void PlayMusic()uint i=0,j,k;while( SONG_LONGi != SONG_TONEi != 0)/播放各个音符,SONG_LONG拍子长度for(j=0;j<SONG_LONGi*20;j+)BEEP=BEEP;13/SONG_TON我时表决定了每个音符的频率for(k=0;k<SONG_TONEi/3;k+);DelayMS(10);/ 下一个音符索引i+;/* 名称 :

14、L1602_init()* 功能 : 1602 初始化*/void L1602_init(void) wcmd(0x38);wcmd(0x0c);wcmd(0x06);wcmd(0x01);/* 名称 : L1602_char(uchar hang,uchar lie,char sign)*/void L1602_char(uchar hang,uchar lie,char sign) uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;wcmd(a);wdata(sign);/* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)*/void L1602_string(uchar hang,uchar lie,uchar *p) uchar a,b=0;if(hang = 1) a = 0x80;if(hang = 2) a = 0xc0;a = a + lie - 1;while(1)wcmd(a+);b+;if(*p = '0')|(b=16) break;wdata(*p);p+;/* 名称 : Main()*/*void main()L1602_init();L1602_string(1,1,&q

温馨提示

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

评论

0/150

提交评论