基于单片机的音乐门铃课程设计与仿真.docx

上传人:b****3 文档编号:5299162 上传时间:2023-05-08 格式:DOCX 页数:9 大小:62.21KB
下载 相关 举报
基于单片机的音乐门铃课程设计与仿真.docx_第1页
第1页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第2页
第2页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第3页
第3页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第4页
第4页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第5页
第5页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第6页
第6页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第7页
第7页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第8页
第8页 / 共9页
基于单片机的音乐门铃课程设计与仿真.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的音乐门铃课程设计与仿真.docx

《基于单片机的音乐门铃课程设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于单片机的音乐门铃课程设计与仿真.docx(9页珍藏版)》请在冰点文库上搜索。

基于单片机的音乐门铃课程设计与仿真.docx

基于单片机的音乐门铃课程设计与仿真

单片机课程设计

题目:

音乐门铃

 

1.功能

2.设计步骤

1.前期工作·······························································1

2.电路结构·······························································1

3.基本步骤·······························································1

4.预期结果·······························································2

3.硬件电路设计

1.模拟仿真电路···························································2

2.元件列表······························································2

3.发声原理······························································3

4.软件设计

1.设计材料·····························································3

2.实验源程序···························································4

5.实验结果

1.仿真结果·····························································8

2.实验感受······························································8

 

 

音乐门铃的设计

摘要:

该设计以AT89C51为芯片组成的一个音乐门铃解决方案,在设计系统硬件电路的基础上,实现了电子门铃系统软件设计,该系统设计主要包括电源、按键模块等。

经过系统测试,证明达到了设计要求。

1.功能

1.用单片机编程实现自由切换播放三首歌曲,并且用LED灯进行显示,达到门铃效果。

 

2.设计步骤

1.前期工作

通过大家对单片机的学习,能够通过keilC软件编写C语言程序,并且能够在Proteus仿真软件上成功的运行。

2.电路结构

音乐门铃的硬件电路由6个部分组成:

单片机、时钟与复位电路、选择按键输入电路、音频发生器、音频放大器和扬声器。

音乐门铃的硬件电路设计框图如下。

图2-1音乐门铃硬件电路设计框图

3.基本步骤

先用c语言编写实现音乐门铃的程序代码,然后将c语言用keil软件生成hex文件下载到stc89c51集成芯片中,利用不同的频率发出不同的音调,利用延时产生不同的节拍,通过功率放大器传送到喇叭使其发出美妙的音乐。

4.预期结果

按下门铃键,即同普通门铃的工作方法一样,由AT89C51控制蜂鸣器放出美妙的音乐,提醒主人开门。

 

3.硬件设计

1.模拟仿真电路

2.元件列表

元件名称

代号

规格型号

数量

单片机

U1

AT89C52

1

晶振

X1

12MHz

1

按钮

K1K2

轻触型

2

电阻

R1

10K

1

扬声器

LS1

8R

1

八段数码管

LED

1

电源

Vcc

+5v

1

电容

C1、C4

30pF

2

C2

10uF

1

3.发声原理

首先要让单片机出一定频率的波形,因为音符的差别就是频率的差别,网上有音符频率对照表可以参考。

所谓的节拍就是该频率的波形持续的时间,对于一般的乐曲先定好1/4拍是多少秒,然后计算出不同频率的波形在这个节拍上要重复几遍。

后面的事情就简单了,根据乐曲自行编辑出一段代码,每两个代码代表一个音符,前面一个表示音符的频率,后面一个代表持续的时间。

 

4.软件设计

1.设计材料

音符

频率(HZ)

简谱码(T值)

低1DO

262

63628

#1DO#

277

63731

低2RE

294

63853

#2RE#

311

63928

低3M

330

64021

低4FA

349

64103

#4FA#

370

64185

低5SO

392

64260

#5SO#

415

64331

低6LA

440

64400

#6

466

64463

低7SI

494

64524

中1DO

523

64580

#1DO#

554

64633

中2RE

587

64684

#2RE#

622

64732

中3M

659

64777

中4FA

698

64820

音符

频率(HZ)

简谱码(T值)

#4FA#

740

64860

中5SO

784

64898

#5SO#

831

64934

中6LA

880

64968

#6

932

64994

中7SI

988

65030

高1DO

1046

65058

#1DO#

1109

65085

高2RE

1175

65110

#2RE#

1245

65134

高3M

1318

65157

高4FA

1397

65178

#4FA#

1480

65198

2.实验源程序:

#include<>

#include<>

#defineucharunsignedchar

#defineuintunsignedint

sbitK1=P1^0;

sbitSPK=P3^7;

ucharSong_Index=0,Tone_Index=0;

ucharcodeDSY_CODE[]={0x06,0x5b,0x4f};

ucharcodeHI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};

ucharcodeLO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};

ucharcodeSong[][50]=

{

{1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1},

{3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,5,3,3,2,1,1,-1},

{3,2,1,3,2,1,1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1}

};

ucharcodeLen[][50]=

{

{1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2,-1},

{1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1},

{1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1}

};

voidEX0_INT()interrupt0

{

TR0=0;

Song_Index=(Song_Index+1)%3;

Tone_Index=0;

P2=DSY_CODE[Song_Index];

}

voidT0_INT()interrupt1

{

TL0=LO_LIST[Song[Song_Index][Tone_Index]];

TH0=HI_LIST[Song[Song_Index][Tone_Index]];

SPK=~SPK;

}

 

voidDelay(uinttime)

{

uintj=0;

for(;time>0;time--)

for(j=0;j<125;j++);

}

 

voidmain()

{

P2=0x06;

SPK=0;

TMOD=0x00;

IE=0x93;

IT0=1;

IP=0x02;

while

(1)

{

while(K1==1);

while(K1==0);

TR0=1;

Tone_Index=0;

while(Song[Song_Index][Tone_Index]!

=-1&&K1==1&&TR0==1)

{

Delay(300*Len[Song_Index][Tone_Index]);

Tone_Index++;

}

TR0=0;

while(K1==0);

}

}

 

5.实验感受

1.仿真结果

2.实验感受

作为电子信息科学与技术专业的大三学生,我觉得做此次设计是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力如何把我们所学的专业基础课理论知识运用到实践中去呢我想做类似的课程设计就为我们提供了良好的实践平台。

在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。

我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。

其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:

C语言、模拟和数字电路知识等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2