劳锦富2B初级组电子琴Word下载.docx
- 文档编号:16343160
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:433.36KB
劳锦富2B初级组电子琴Word下载.docx
《劳锦富2B初级组电子琴Word下载.docx》由会员分享,可在线阅读,更多相关《劳锦富2B初级组电子琴Word下载.docx(34页珍藏版)》请在冰豆网上搜索。
四.设计与认证
主要原理:
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。
此电路使用单片机ATS89S52,晶振频率为12MHZ。
通过T0计时器来产生方波频率,进而控制蜂鸣器的发声。
通过4*4矩阵键盘确定输出16个音符。
通过T1计时器来定义一首歌的节拍。
算出高中低间符与单片机计数T0相关的计数值如下表所示:
音符
频率
T值
低1
262
63628
高1
1046
65058
低2
294
63835
高2
1109
65110
低3
330
64021
高3
1318
65157
低4
349
64103
高4
1397
65178
低5
392
64260
高5
1568
65217
低6
440
64400
高6
1760
65252
低7
494
64524
高7
1967
65283
中1
523
64580
中2
587
64684
中3
659
64777
中4
698
64820
中5
784
64898
中6
880
64968
中7
988
65030
低音#1
277
63731
中音#1
554
64633
高音#1
65085
低音#2
311
63928
中音#2
622
64732
高音#2
1245
65134
低音#4
370
64185
中音#4
740
64860
高音#4
1480
65198
低音#5
415
64331
中音#5
831
64934
高音#5
1661
65235
低音#6
466
64463
中音#6
932
64994
高音#6
1865
65268
流程图:
硬件:
矩阵键盘:
矩阵键盘两端都与单片机I/O口相连,在检测时人为通过单片机I/O口送出低电平,检测时,先送一列为低电平,其余几列全为高电平,此时确定列数,然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平,则可确认当前被按下的键是哪一行哪一列的,用相同方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样即可检测完所有的按键,当有键被按下时便可判断出按下的键是哪一个键。
本实验以P3口做为矩阵键盘的扫描。
独立键盘:
独立键盘有一端固定为低电平,当按键按下时,输出口变为低电平,便可确定是否有键按下。
本实验以P1.1-P1.7为独立键盘,分别控制四首歌的播放以及播放顺序。
LED灯:
本实验通过16个I/O口控制16个LED灯。
输出口为P0,P2.
当用作输出,所有口线的状态都与SFR锁存位的设置有密切的联系。
P0口为低除外。
当P0口的一个位写入0时,这个位被拉低。
但是对P0口的其中一个位写入1时,这个位呈现高阻(高阻浮空状态),也就是未能连机,不能使用。
要想获得1输出,你必须在P0口外加上拉电阻。
补充:
一些口线被作为简单的高电平输入也与SFR锁存位有关。
因为P1、P2、P3有内部上拉电阻,可以随意被拉高,拉低。
而P0口作为高电平输入时,也会呈现高阻态。
P0没有内部上拉电阻,在驱动场效应管的上方有一个提升场效应管,它只是在对外存储器进行读写操作,用作地址/数据时才起作用,当向位锁存器写入1,使驱动场效应管截止,则引脚浮空,所以写入1而未获得。
用P0口驱动led,用1K左右的就行了。
要想LED亮度大一些,电阻要减小,最小不要小于200欧姆,否则电流太大。
对于P2口,可以对每个LED灯串联上一个1K电阻。
扬声器:
以P1.0作为扬声器输入口,扬声器功率为0.5W,电阻8欧。
通过两级放大电路以驱动扬声器。
放大电路通过两个8050NPN三极管实现。
电路图如下。
其中串联电阻可以不用接上。
软件:
仿真部分:
用PROTEUS进行软件仿真,鉴于软件仿真情况跟现实有较大的区别,在软件仿真中没有误差的存在。
于是在扬声器电路中只需短接扬声器,不需要使用三极管放大。
LED灯所接的电阻也不需要为1K,可以空间LED灯,而本设计加上50欧的电阻。
软件仿真电路图如下:
制作电路板:
用ALTIUMDESIGNER进行电路板制作,主要原理图如下:
PCB制板电路图如下:
六.测试数据及分析
电路板制作后,由于转印过程中有导线未能很好复印,导致导线有断路的情况。
因此用万用表二极管测各条导线是否导通,用于断线的电路用导线连接上。
一开始由于对扬声器的驱动没有很好的把握,设计只用一个三极管驱动,后来发现供电电压不够大,无法驱动扬声器。
于是加上一万表板,用两个三极管放大电流用来驱动扬声器。
接上电源之后,电源灯亮,电路导通。
各个功能的尝试,跟设计预期效果一样。
设计程序:
unsignedintcodetable[]={
64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178,
65110,65110,65110,65110,
65110,65110,65110,65110
};
//低音3到高音416个音T值
unsignedintcodetmusic[]={0,
63628,63835,64021,64103,64260,64400,64524,0,0,0,//低
64580,64684,64777,64820,64898,64968,65030,0,0,0,//中
65058,65110,65157,65178,65217,65252,65283,0,0,0,//高
63731,63928,64021,64186,64331,64463,64524,0,0,0,//低升半
64633,64732,64777,64860,64934,64994,65030,0,0,0,//中升半
65085,65134,65157,65198,65235,65258,65283};
//高升半}
unsignedintcodemusic11[]={64777,64777,64820,64898,
64898,64820,64777,64684,
64580,64580,64684,64777,
64777,64684,64684,64684,
64777,64777,64820,64898,
64898,64820,64777,64684,
64684,64580,64580,64580,
64684,64684,64777,64580,
64684,64777,64820,64777,64580,
64684,64777,64820,64777,64684,
64580,64684,64260,64260,
64777,64777,64820,64898,
64898,64820,64777,64820,64684,
64684,64580,64580,0};
//定义第一首歌频率
unsignedcharcodemusic12[]={10,10,10,10,
10,10,10,10,
10,10,10,5,
10,5,5,10,10,
10,10,10,5,5,
10,10,10,10};
//定义第一首歌节拍时间
unsignedintcodemusic21[]={64968,64777,64820,64898,64898,64898,
65898,64777,64820,64898,64898,64898,
64898,64777,64820,64898,64898,64898,65058,65110,
65030,65030,64777,64898,64898,647898,
64968,65157,65157,65110,65110,65110,65110,64777,
64898,65110,65110,65110,65058,65058,65058,65058,65058,64777,
64820,65058,65058,65058,65110,65157,65058,65058,65030,65030,65058,
64820,65058,65058,65058,65110,65157,65058,65058,65058,64968,65110,
65110,
64898,65110,65127,65127,65110,65110,65110,65058,65058,
65110,65157,64968,65058,65058,0};
unsignedcharcodemusic22[]={20,20,12,12,12,12,
20,20,12,12,12,12,
20,20,12,12,12,12,12,12,
20,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,
12,12,12,12,12,12,12,12,12,12,12,
20,
20,12,12,12,12
};
unsignedintcodemusic31[]={64580,64684,
64777,64777,64684,64580,
64777,64684,64400,
64580,64580,64524,64580,
64400,64400,64580,
64524,64524,64400,64260,
64524,64524,64260,
64400,64400,64580,64524,64580,
64400,64580,64684,
64777,64777,64898,64898,64684,
64684,64777,64684,64524,64580,
64684,64684,64777,64684,64580,
64524,64580,64400,64400,64580,
64777,64820,64777,
64684,64524,64580,
64684,64684,64777,
64580,64400,64524,
64580,64580,64524,64400,64580,
64777,64777,64777,
64777,64580,64684,
64777,64777,64898,
64400,64400,0
};
unsignedcharcodemusic32[]={10,10,
20,10,10,20,
20,10,10,
20,20,10,10,
20,10,10,10,10,
10,10,20,10,10,
20,20,20,
20,10
#include<
reg52.h>
#include"
music.h"
#defineucharunsignedchar
#defineuintunsignedint
ucharsth0,stl0;
//用于存储TH0以及TL0的值
uinti,flag,b,j,y;
//b值用于读取每个音符值
sbitsounder=P1^0;
//蜂鸣器端
sbitmusic1=P1^1;
//低电位时播放歌曲1
sbitmusic2=P1^2;
//低电位时播放歌曲2
sbitmusic3=P1^3;
//低电位时播放歌曲3
sbitshunxu=P1^4;
//低电位时按顺序播放歌曲
sbitchongfu=P1^5;
//低电位时重复播放歌曲
sbityindiao=P1^6;
//选择音调的不同
sbitstop=P1^7;
//低电位时暂停播放歌曲
uchark,play_flag;
//K为确定独立键盘按下的,用于确定16个音符中某一个。
play_flag为确定播放歌曲
ucharpause;
//播放歌曲时,有按键输入则跳出播放,为1时确定暂停
ucharreplay_flag;
//循环播放时值为0,初定义为1
voiddelayms(uintxms);
//延时程序,用于消除振荡
voidkeyscan();
//扫描矩阵键盘,确定按下音符值
voidkeyscan1();
//扫描独立键盘,进行相关程序
voidchangeyin()
{
if(yindiao==0)
{
delayms(10);
if(yindiao==0)
{
y=y+16;
switch(y)
{
case16:
P0=0xff;
P2=0x00;
while(yindiao==0);
break;
case32:
P2=0xff;
P0=0x00;
while(yindiao==0);
case48:
P2=0xff;
y=0;
}
}
}
}
voidmain()
P0=0;
P2=0;
//关闭所有LED灯
TMOD=0x11;
//确定工作方式
EA=1;
//开总开断
ET0=1;
replay_flag=0;
TH1=(65535-25000)/256;
TL1=(65535-25000)%256;
ET1=1;
TR1=1;
while
(1)
{
changeyin();
keyscan();
keyscan1();
while(play_flag==1)
{
b=0;
flag=0;
i=0;
switch(k)
case1:
sth0=music11[b]/256;
stl0=music11[b]%256;
TH0=sth0;
TL0=stl0;
TR0=1;
while(music11[b]!
=0&
&
pause!
=1)
sth0=music11[b]/256;
stl0=music11[b]%256;
if(flag==1)
sth0=music11[b]/256;
stl0=music11[b]%256;
flag=0;
keyscan();
P0=0;
P2=0;
switch(music11[b])
{
case64021:
P0=0x01;
break;
case64103:
P0=0x02;
case64260:
P0=0x04;
case64400:
P0=0x08;
case64524:
P0=0x10;
case64580:
P0=0x20;
case64684:
P0=0x40;
case64777:
P0=0x80;
case64820:
P2=0x80;
case64898:
P2=0x40;
case64968:
P2=0x20;
case65030:
P2=0x10;
case65058:
P2=0x08;
case65110:
P2=0x04;
break
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 劳锦富 初级 电子琴