398编号基于Proteus的音乐播放器仿真实现

上传人:玩*** 文档编号:145341559 上传时间:2020-09-19 格式:PDF 页数:12 大小:308.08KB
返回 下载 相关 举报
398编号基于Proteus的音乐播放器仿真实现_第1页
第1页 / 共12页
398编号基于Proteus的音乐播放器仿真实现_第2页
第2页 / 共12页
398编号基于Proteus的音乐播放器仿真实现_第3页
第3页 / 共12页
398编号基于Proteus的音乐播放器仿真实现_第4页
第4页 / 共12页
398编号基于Proteus的音乐播放器仿真实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《398编号基于Proteus的音乐播放器仿真实现》由会员分享,可在线阅读,更多相关《398编号基于Proteus的音乐播放器仿真实现(12页珍藏版)》请在金锄头文库上搜索。

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

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

3、寻 电源电路 AT8951 单片机 12MHZ 晶振电路 显示电路 复位电路 发声电路 音乐播放器的设计 2 址范围都为 64KB。单片机拥有 32 个并行口和 1 个串行口。在 89C51 单片机中存 在 5 个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3

4、 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 图 2 89C51 单片机 3.2.2 显示电路显示电路 显示电路是一个1602 液晶也叫 1602 字符型液晶它是一种专门用来显

5、示字母、 数字、 符号等的点阵型液晶模块它有若干个 5X7 或者 5X11 等点阵字符位组成, 每个点阵字符位都 可以显示一个字符。 每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距 的作用,正因为如此所以他不能显示图形 (用自定义 CGRAM,显示效果也不好) 1602LCD 是指显示的内容为 16X2,即可以显示两行,每行 16 个字符液晶模块(显示字符和 数字) 。 目前市面上字符液晶绝大多数是基于 HD44780 液晶芯片的, 控制原理是完全相同的, 因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 图 3 1602 字符液晶 音乐播放器

6、的设计 3 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。 音乐播放器的设计 4 图 6 发声电路 3.3 总体电路图 图 7 总体电路图 四.系统软件设计 4

7、.1 数码音乐产生原理 音调的高低用音阶表示,不同的音阶对应不同的频率。因此,不同频率的方 波就可以产生音阶,音阶与频率的关系见表 1。由于频率的倒数是周期,因此可 由单片机中的定时控制方波周期,当定时器计数溢出时产生中断。将与扬声器连 接的 P1.7 取反后就可得到方波的周期,从而达到了控制频率,即音阶的目的。 表 1 音阶与频率的关系及方式 1 下定时器的初值 音乐播放器的设计 5 音阶频率(Hz)定时器初值音阶频率(Hz)定时器初值音阶频率(Hz)定时器初值 1 2 3 4 5 6 7 0 131 147 165 175 196 220 247 0 0F85EH 0F933H 0F9F0

8、H 0FA49H 0FAE6H 0FB74H, 0FBF4H 0100H 1 2 3 4 5 6 7 0 262 294 330 349 392 440 494 0 0FC2FH 0FC99H 0FCF8H 0FD22H 0FD73H 0FDBAH 0FDFAH 0100H 1 2 3 4 5 6 7 0 523 587 659 698 784 880 988 0 0FE17H 0FE4CH 0FE7CH 0FE91H 0FEB9H 0FEDDH 0FEFDH 0100H 低八度音中音高八度音 注:0 表示简谱中的空拍 当晶体振荡频率为 6.144MHz,定时器工作在方式 1 下时,若各音阶相

9、对应的 定时器计数初值为 X,则可根据下式计算 X: 166 1/(2)(2) 12/(6 10 )fX 音调的长短用节拍数表示(例如 1/4 拍、2/4 拍、) ,不同节拍数的不 同音符的组合形成乐谱。程序中,音的节拍可由延时子程序实现。延时子程序设 定为四分之一拍,节拍值只能是它的整数倍。 4.2 总体流程图 主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判 断。确定歌曲曲目后,LCD 再进行显示。执行播放后,LCD 显示并播放音乐。在 播放音乐。 音乐播放器的设计 6 图 8 总体流程图 图 4.3 仿真测试 图 11 结果显示图 4.4 测试总结 音乐播放器很好的实现

10、了播放,但是在实现播放长度方面还有不足,因为对 外接存储器的使用还不是很熟悉,扩充四片 EEPROM,可实现更长时间的播放,本 次试验使用的是较为简单的循环播放模式。 开始 LCD 初始化 播放音乐 显示 音乐播放器的设计 7 附录一附录一 仿真结果 附录二附录二 代码 /* * 文件名 : 液晶 1602 显示.c */ #include #include #define uchar unsigned char #define uint unsigned int /这三个引脚参考资料 sbit E=P27;/1602 使能引脚 sbit RW=P26;/1602 读写引脚 sbit RS=P

11、25;/1602 数据/命令选择引脚 sbit BEEP=P37; 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() 音乐播放器的设计 8 * 功能 : 延时,延时时间大概为 5

12、US。 */ 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 E = 0; return busy_flag; /* * 名称 : wcmd(uchar del) * 功能 : 1602 命令函数 * 输入 : 输

13、入的命令值 */ void wcmd(uchar del) while(Busy(); RS = 0; RW = 0; E = 0; delay(); P0 = del; delay(); 音乐播放器的设计 9 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; delay(); E = 1; delay(); E = 0; void DelayMS(uint ms) uchar t; while(ms-) for(t=0;t120;t+); void PlayMusic() uint i=0,j,k; while( SONG_LONGi != SONG_TONEi != 0) /播放各个音符,SONG_LONG 为拍子长度 for(j=0;jSONG_LONGi*20;j+) BEEP=BEEP; 音乐播放器的设计 10 /SONG_TONE 延时表决定了每个音符的频率 for(k=0;kSONG_TONEi/3;k+); DelayMS(10); /下一个音符索引 i+; /*

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 音乐美术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号