基于某Proteus地音乐播放器仿真实现.docx

上传人:b****5 文档编号:28845980 上传时间:2023-07-20 格式:DOCX 页数:15 大小:209.44KB
下载 相关 举报
基于某Proteus地音乐播放器仿真实现.docx_第1页
第1页 / 共15页
基于某Proteus地音乐播放器仿真实现.docx_第2页
第2页 / 共15页
基于某Proteus地音乐播放器仿真实现.docx_第3页
第3页 / 共15页
基于某Proteus地音乐播放器仿真实现.docx_第4页
第4页 / 共15页
基于某Proteus地音乐播放器仿真实现.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于某Proteus地音乐播放器仿真实现.docx

《基于某Proteus地音乐播放器仿真实现.docx》由会员分享,可在线阅读,更多相关《基于某Proteus地音乐播放器仿真实现.docx(15页珍藏版)》请在冰豆网上搜索。

基于某Proteus地音乐播放器仿真实现.docx

基于某Proteus地音乐播放器仿真实现

HEFEIUNIVERSITY

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个中断源,其中有两个外部中断源、两个内部中断源和一个串行中断源。

图289C51单片机

3.2.2显示电路

显示电路是一个1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形(用自定义CGRAM,显示效果也不好)  1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

图31602字符液晶

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下定时器的初值

音阶

频率(Hz)

定时器初值

音阶

频率(Hz)

定时器初值

音阶

频率(Hz)

定时器初值

1

2

3

4

5

6

7

0

131

147

165

175

196

220

247

0

0F85EH

0F933H

0F9F0H

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下时,若各音阶相对应的定时器计数初值为X,则可根据下式计算X:

音调的长短用节拍数表示(例如1/4拍、2/4拍、……),不同节拍数的不同音符的组合形成乐谱。

程序中,音的节拍可由延时子程序实现。

延时子程序设定为四分之一拍,节拍值只能是它的整数倍。

4.2总体流程图

主程序实现对单片机进行初始化后,进入曲目识别子程序,进行歌曲曲目判断。

确定歌曲曲目后,LCD再进行显示。

执行播放后,LCD显示并播放音乐。

在播放音乐。

 

 

图8总体流程图

4.3仿真测试

图11LCD结果显示图

4.4测试总结

音乐播放器很好的实现了播放,但是在实现播放长度方面还有不足,因为对外接存储器的使用还不是很熟悉,扩充四片EEPROM,可实现更长时间的播放,本次试验使用的是较为简单的循环播放模式。

 

附录一

仿真结果

附录二

代码

/********************************************************************

*文件名:

液晶1602显示.c

***********************************************************************/

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

//这三个引脚参考资料

sbitE=P2^7;//1602使能引脚

sbitRW=P2^6;//1602读写引脚

sbitRS=P2^5;//1602数据/命令选择引脚

sbitBEEP=P3^7;

ucharcodeSONG_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};

ucharcodeSONG_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()

*功能:

延时,延时时间大概为5US。

***********************************************************************/

voiddelay()

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

/********************************************************************

*名称:

bitBusy(void)

*功能:

这个是一个读状态函数,读出函数是否处在忙状态

*输入:

输入的命令值

***********************************************************************/

bitBusy(void)

{

bitbusy_flag=0;

RS=0;

RW=1;

E=1;

delay();

busy_flag=(bit)(P0&0x80);

E=0;

returnbusy_flag;

}

/********************************************************************

*名称:

wcmd(uchardel)

*功能:

1602命令函数

*输入:

输入的命令值

***********************************************************************/

voidwcmd(uchardel)

{

while(Busy());

RS=0;

RW=0;

E=0;

delay();

P0=del;

delay();

E=1;

delay();

E=0;

}

 

/********************************************************************

*名称:

wdata(uchardel)

*功能:

1602写数据函数

*输入:

需要写入1602的数据

***********************************************************************/

voidwdata(uchardel)

{

while(Busy());

RS=1;

RW=0;

E=0;

delay();

P0=del;

delay();

E=1;

delay();

E=0;

}

voidDelayMS(uintms)

{

uchart;

while(ms--)for(t=0;t<120;t++);

}

voidPlayMusic()

{

uinti=0,j,k;

while(SONG_LONG[i]!

=SONG_TONE[i]!

=0)

{

//播放各个音符,SONG_LONG为拍子长度

for(j=0;j

{

BEEP=~BEEP;

//SONG_TONE延时表决定了每个音符的频率

for(k=0;k

}

DelayMS(10);

//下一个音符索引

i++;

}

}

/********************************************************************

*名称:

L1602_init()

*功能:

1602初始化

***********************************************************************/

voidL1602_init(void)

{

wcmd(0x38);

wcmd(0x0c);

wcmd(0x06);

wcmd(0x01);

}

/********************************************************************

*名称:

L1602_char(ucharhang,ucharlie,charsign)

***********************************************************************/

voidL1602_char(ucharhang,ucharlie,charsign)

{

uchara;

if(hang==1)a=0x80;

if(hang==2)a=0xc0;

a=a+lie-1;

wcmd(a);

wdata(sign);

}

/********************************************************************

*名称:

L1602_string(ucharhang,ucharlie,uchar*p)

***********************************************************************/

voidL1602_string(ucharhang,ucharlie,uchar*p)

{

uchara,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()

***********************************************************************/

voidmain()

{

L1602_init();

L1602_string(1,1,"HAPPYBIRTHDAY");

L1602_string(2,1,"TOYOU");

while

(1)

{

//播放生日快乐

PlayMusic();

DelayMS(500);

//播完循环

}

}

参考文献:

[1]郭文川.单片机原理与接口技术[M].中国农业出版社.2007.8

[2]阎石.数字电子技术基础(第五版)[M].北京:

高等教育出版社.2005

[3]李泉溪.单片机原理与实例仿真[M].北京:

北京航空航天大学出版社,2009

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1