基于单片机的十六音键电子琴设计概述.docx
- 文档编号:22986979
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:24
- 大小:273.15KB
基于单片机的十六音键电子琴设计概述.docx
《基于单片机的十六音键电子琴设计概述.docx》由会员分享,可在线阅读,更多相关《基于单片机的十六音键电子琴设计概述.docx(24页珍藏版)》请在冰豆网上搜索。
基于单片机的十六音键电子琴设计概述
第1章前言
1.1系统开发背景
随着电子科技的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣。
基于当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用方面。
单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。
并且可以进行一定的功能扩展。
鉴于传统电子琴可以用键盘上的“k0”到“k16”键演奏从低So到高DO等16个音,从而可以用来弹奏喜欢的乐曲。
1.2系统开发意义
该设计具有以下优点:
(1)可以随意弹奏想要表达的音乐;
(2)制作简单,成本低。
1.3设计目标
由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。
其次,在这次设计可行性上进行分析如下:
1、经济可行性:
所谓经济可行性,即在这次设计上需要投入资金的多少,由于竞赛设计是没有项目资金,没有开发经费,因此在经济上必须能够承受,比较理想化的项目对于我们毕业设计来说是不可行的。
通过分析后,无论是在器件价格或是常见度上均是可行的。
2、技术可行性:
技术可行性主要是分析技术条件上是否能够顺利开展并完成开发工作,硬件、软件能否满足设计者的需要等。
通过分析各种软件环境,硬件仿真环境等均已经具备。
综上所述,本系统设计目标已经明确,在经济与技术上均可行,因此本系统的开发是完全可行的。
第2章方案论证
2.1控制模块选择方案
方案一:
用可控硅制作电子琴。
将220V交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。
将单向可控硅SCR和电阻、电容组成驰张振荡器电路。
但该设计方案制作成本高且复杂。
方案二:
采用AT89C51单片机进行控制,由于AT89C51不具备ISP功能,
因此Atmel公司已经停产在市面上已经不常见,况且其ROM只有4K在系统将来升级方面没有潜力。
方案三:
采用AT89S52单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。
鉴于上述对比与分析,本设计采用方案三
2.2按键选择方案
传统电子琴可以用键盘上的“1”到“A”键演奏从低SO到高DO等11音。
该设计有16个按钮矩阵,设计成16个音,可以实现音阶在低音4---高音5之间。
比传统音阶范围大,弹奏效果好。
第3章系统硬件设计及说明
3.1系统组成及总体框图
硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。
该设计要实现一种由单片机控制的电子琴,单片机工作于12MHZ时钟频率,使用其定时/计数器T1,工作模式为1,改变计数值TH1和TL1可以产生不同频率的脉冲信号。
该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。
由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。
用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。
本例使用国家半导体公司的低压音频功率放大器LM324来实现音频功放电路。
图3.1系统结构图
3.2显示电路
本次设计的显示电路采用LCD液晶显示。
通过单片机编程,让LCD液晶显示,以此来实现按键与显示程序的一致性。
3.3部分功能模块原理图
3.3.1AT89S52模块电路原理图
单片机主程序模块通过对键盘扫描程序信号的读取,在通过调出对应的子程序,取出液晶显示的编码和定时器初始值以产生不同的声音信号。
在这一过程中,对液晶显示通过对数组的操作,对声音信号则是通过中断程序进行控制。
图3.2AT89S52模块电路原理图
3.3.2LCD液晶显示模块电路原理图
图3.4LCD液晶显示模块电路原理图
3.3.3音频处理模块电路原理图
由于单片机驱动能力不够,在处理音符信号时,需加功率放大装置,因LM324芯片具有低功耗、高增益的特点,这合适单片机低功耗输出,所以加装LM324音频信号放大器对信号进行放大。
图3.5音频处理模块电路原理图
3.3.4掉电保护电路原理图
图3-7掉电保护电路原理图
第4章系统软件设计
本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由16个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。
4.1音乐相关知识
乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。
音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。
4.2如何用单片机实现音乐的节拍
除了音符以外,节拍也是音乐的关键组成部分。
节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。
如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。
对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。
音乐的音拍,一个节拍为单位(C调)具体如下表:
表4.1音乐节拍表
曲调值
DELAY
曲调值
DELAY
调4/4
125ms
调4/4
62ms
调3/4
187ms
调3/4
94ms
调2/4
250ms
调2/4
125ms
4.3如何用单片机产生音频脉冲
了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T1,工作模式为1,改变计数值TH1和TL1可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:
表4.2音符频率与计数值T的对照表
音符
频率(HZ)
计数值(T值)
音符
频率(HZ)
计数值(T值)
低1DO
262
63628
#4FA#
740
64860
#1DO#
277
63737
中5SO
784
64898
低2RE
294
63835
#5SO#
831
94934
#2RE#
311
63928
中6LA
880
64968
低3MI
330
64021
#6LA#
932
64994
低4FA
349
64103
中7SI
968
65030
#4FA#
370
64185
低1DO
1046
65058
低SO
392
64260
#1DO#
1109
65085
#5SO#
415
64331
高2RE
1175
65110
低6LA
440
64400
#2RE#
1245
65134
#6LA#
466
64463
高3MI
1318
65157
低7SI
494
64524
高4FA
1397
65178
中1DO
523
64580
#4FA#
1490
65198
#1DO#
554
64633
高5SO
1568
65217
中2RE
587
64633
#5SO#
1661
65235
#2RE#
622
64884
高6LA
1760
65252
中3MI
659
64732
#6LA#
1865
65268
中4FA
698
64820
高7SI
1967
65283
T的值决定了TH1和TL1的值,其关系为:
TL1=T%256,TH1=T/256
4.4系统总体功能流程图
图4.1主程序框图
按键子程序流程图如下:
图
第5章电路仿真
5.1仿真图
图5.1仿真图
第6章PCB印制板制作
6.1印制板制作的要求
(1)电源线、地线应各设置一条总线;
(2)线宽尽可能的宽;
(3)应减少软线跳线的使用;
(4)元器件排版要均匀,按模块排版,防止各模块信号干扰;
(5)铜箔线不可以产生锐角。
6.2印制电路板图
图6.1主控电路PCB板图
第7章系统调试
电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:
硬件调试、软件调试和综合调试。
7.1软件仿真调试
软件仿真调试主要是针对单片机部分进行调试。
在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。
在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。
在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。
1、LCD液晶电路调试:
软件运行,随机按下按钮可以看到数码管显示数字;
2、单片机键盘控制部分调试:
软件运行,随机按动键盘可以发现各个按键对应的音正确。
7.2软件调试
调试主要方法和技巧:
通常一个调试程序应该具备至少四种性能:
跟踪、断点、查看变量、更改数值。
整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。
附录
1.主要电路原理图:
2.程序文件:
/***************************************************
*标题:
液晶显示程序
*日期:
*作者:
*版本:
***************************************************/
#include
#include
#include"string.h"
#include
#include
#include"24c02.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
sbitpsb=P2^1;
sbitret=P2^3;
sbitP3_7=P3^7;
ucharkeyword;
uintT=0;
uchari;
codeunsignedcharsszymmh[]={6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,5,2,1,
6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,
6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,
5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,
2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0};//世上只有妈妈好?
codeunsignedcharsb[]={5,2,2,3,2,1,5,2,1,1,3,4,6,2,2,1,3,2,5,2,4,5,2,2,
1,2,1,2,2,1,3,2,2,2,2,1,1,2,1,2,2,6,5,2,2,3,2,1,
5,2,1,1,3,2,7,2,2,6,2,2,1,3,2,5,2,4,5,2,2,2,2,1,
3,2,1,4,2,2,7,1,2,1,2,8,6,2,2,1,3,2,1,3,4,7,2,2,
6,2,1,7,2,1,1,3,4,6,2,1,7,2,1,1,3,1,6,2,1,6,2,1,5,2,1,
3,2,1,1,2,1,2,2,8,5,2,2,3,2,1,5,2,1,1,3,2,7,2,2,6,2,2,
1,3,2,5,2,4,5,2,2,2,2,1,3,2,1,4,2,2,7,1,2,1,2,8};//送别
codeunsignedchardfh[]={5,2,2,5,2,1,6,2,1,2,2,2,1,2,2,1,2,1,6,1,1,2,2,2,
5,2,2,5,2,2,6,2,1,1,3,1,6,2,1,5,2,1,1,2,2,
1,2,1,6,1,1,2,2,2,5,2,2,2,2,2,1,2,2,7,1,1,
6,1,1,5,1,1,5,2,2,2,2,2,3,2,1,2,2,1,1,2,
1,1,2,1,6,1,2,2,2,1,3,2,1,2,2,1,1,2,1,2,
2,1,1,2,1,7,1,1,6,1,1,5,1,1};//东方红
codeunsignedcharxyxy[]={6,2,2,1,3,2,7,2,1,6,2,1,5,2,1,6,2,1,3,2,6,
6,2,1,5,2,1,6,2,2,1,3,2,7,2,2,6,2,1,
7,2,1,1,3,6,1,3,1,2,3,1,3,3,1,3,3,1,
3,3,1,3,3,1,2,3,4,1,3,1,7,2,1,6,2,1,
7,2,1,5,2,2,6,2,2,1,3,2,7,2,2,6,2,1,
5,2,1,6,2,6,6,2,2,6,2,1,1,3,1,7,2,2,
5,2,2,6,2,8,6,2,4,3,2,1,5,2,1,6,2,2,
3,3,2,2,3,1,1,3,1,7,2,1,1,3,1,1,3,6,
1,3,1,7,2,1,6,2,2,6,2,1,6,2,1,5,2,1,
5,2,1,6,2,2,3,2,6,3,2,1,5,2,1,6,2,2,
3,3,2,2,3,1,1,3,1,7,2,1,1,3,1,1,3,6,
1,3,1,7,2,1,6,2,2,6,2,2,5,2,2,7,2,2,6,2,8};//星语心愿
codeunsignedcharyxdcb[]={5,1,1,1,2,1,3,2,2,5,2,1,3,2,2,2,2,1,
1,2,1,1,2,1,1,2,1,1,2,1,6,1,1,
5,1,1,5,1,1,1,2,1,3,2,2,5,2,2,
5,2,1,5,2,1,6,2,1,5,2,1,5,2,1,
2,2,1,3,2,1,2,2,1,1,2,1,2,2,1,
2,2,2,6,2,1,5,2,1,3,2,2,5,2,2,
5,2,1,5,2,1,6,2,1,5,2,1,3,2,1,
2,2,1,1,2,1,2,2,1,6,1,2,5,1,1,
6,1,1,1,2,2,2,2,1,3,2,1,2,2,2,
3,2,1,1,2,1,1,2,4,5,1,1,1,2,1,
1,2,4,3,2,1,5,2,1,1,3,2,7,2,1,
1,3,1,7,2,2,6,2,1,5,2,1,6,2,
1,1,3,1,3,2,1,2,2,1,1,2,2,1,2,
1,1,2,1,1,2,1,1,3,2,5,2,1,6,2,
1,5,2,1,2,2,1,3,2,1,2,2,1,1,2,
1,2,2,1,2,2,4,13,2,1,5,2,1,1,3,
2,7,2,1,1,3,1,7,2,2,6,2,1,5,2,
1,6,2,1,1,3,1,3,2,1,2,2,1,1,2,
2,1,2,1,1,2,1,1,2,1,1,3,2,5,2,
1,6,2,1,5,2,1,2,2,1,3,2,1,2,2,1,1,2,4,};
/*功能:
显示菜单栏*/
voiddisplay_menu(void)
{
lcd_clear();
while
(1)
{
display(2,2,"电子琴演奏");
keyword=0;
keyword=key_scan();
switch(keyword)
{
case0x11:
lcd_clear();
display(2,4,"0");
T=63928;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x12:
lcd_clear();display(2,4,"1");
T=64021;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x14:
lcd_clear();
display(2,4,"2");
T=64185;
TH0=T/256;
TL0=T%256;
TR0=1;
break;
case0x18:
lcd_clear();
display(2,4,"3");
T=64331;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x21:
lcd_clear();display(2,4,"4");
T=64400;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x22:
lcd_clear();
display(2,4,"5");
T=64524;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
Break;
case0x24:
lcd_clear();
display(2,4,"6");
T=64400;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x28:
lcd_clear();
display(2,4,"7");
T=64732;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x41:
lcd_clear();
display(2,4,"8");
T=64777;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x42:
lcd_clear();
display(2,4,"9");
T=64860;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x44:
lcd_clear();
display(2,4,"A");
T=64934;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x48:
lcd_clear();
display(2,4,"B");
T=64994;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x81:
lcd_clear();
display(2,4,"C");
T=65030;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x82:
lcd_clear();
display(2,4,"D");
T=65058;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
break;
case0x84:
lcd_clear();
display(2,4,"E");
T=65110;
TH0=T/256;
TL0=T%256;
TR0=1;
TR1=1;
b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 十六 电子琴 设计 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)