资源描述
. .
单片机课程设计
题目:音乐门铃
目录
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
. .word..
. .
音乐门铃的设计
摘要: 该设计以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
按钮
K1 K2
轻触型
2
电阻
R1
10K
1
扬声器
LS1
8R 0.25W
1
八段数码管
LED
1
电源
Vcc
+5v
1
电容
C1、C4
30pF
2
C2
10uF
1
3.发声原理
首先要让单片机出一定频率的波形,因为音符的差异就是频率的差异,网上有音符频率对照表可以参考。
所谓的节拍就是该频率的波形持续的时间,对于一般的乐曲先定好1/4拍是多少秒,然后计算出不同频率的波形在这个节拍上要重复几遍。
后面的事情就简单了,根据乐曲自行编辑出一段代码,每两个代码代表一个音符,前面一个表示音符的频率,后面一个代表持续的时间。
4.软件设计
1.设计材料
音符
频率(HZ)
简谱码(T值)
低 1 DO
262
63628
# 1 DO#
277
63731
低 2 RE
294
63853
# 2 RE#
311
63928
低 3 M
330
64021
低 4 FA
349
64103
# 4 FA#
370
64185
低 5 SO
392
64260
# 5 SO#
415
64331
低 6 LA
440
64400
# 6
466
64463
低 7 SI
494
64524
中1 DO
523
64580
# 1 DO#
554
64633
中 2 RE
587
64684
# 2 RE#
622
64732
中 3 M
659
64777
中 4 FA
698
64820
音符
频率(HZ)
简谱码(T值)
# 4 FA#
740
64860
中 5 SO
784
64898
# 5 SO#
831
64934
中 6 LA
880
64968
# 6
932
64994
中 7 SI
988
65030
高 1 DO
1046
65058
# 1 DO#
1109
65085
高 2 RE
1175
65110
# 2 RE#
1245
65134
高 3 M
1318
65157
高 4 FA
1397
65178
# 4 FA#
1480
65198
2.实验源程序:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1=P1^0;
sbit SPK=P3^7;
uchar Song_Index=0,Tone_Index=0;
uchar code DSY_CODE[]={0x06,0x5b,0x4f};
uchar code HI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};
uchar code LO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
uchar code Song[][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}
};
uchar code Len[][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}
};
void EX0_INT() interrupt 0
{
TR0=0;
Song_Index=(Song_Index+1)%3;
Tone_Index=0;
P2=DSY_CODE[Song_Index];
}
void T0_INT() interrupt 1
{
TL0=LO_LIST[Song[Song_Index][Tone_Index]];
TH0=HI_LIST[Song[Song_Index][Tone_Index]];
SPK=~SPK;
}
void Delay(uint time)
{
uint j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void main()
{
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语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
. .word..
展开阅读全文