基于单片机的电子琴.docx
- 文档编号:4419721
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:15
- 大小:1.86MB
基于单片机的电子琴.docx
《基于单片机的电子琴.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子琴.docx(15页珍藏版)》请在冰豆网上搜索。
基于单片机的电子琴
郑州科技学院
单片机课程设计
题目基于单片机的电子琴的设计_
学生姓名
专业班级电气工程及其自动化班
学号201347063
院(系)
指导教师
完成时间2016年12月9日
目录
1课程设计的目的………………………………………………………1
2课程设计的任务与要求…………………………………………1
3设计方案与论证……………………………………………………1
3.1设计方案………………………………………………………1
3.2方案论证………………………………………………………2
4设计原理及功能说明…………………………………………2
5单元电路的设计(计算与说明)……………………………3
6硬件的制作与调试………………………………………………4
7软件设计………………………………………………………………6
8总结……………………………………………………………………7
参考文献……………………………………………………………………9
附录1:
总体电路原理图……………………………………………10
附录2:
元器件清单…………………………………………………12
(器件型号和参数)
附录3:
程序……………………………………………………………13
附录4:
实物图…………………………………………………14
1
课程设计的目的
1.1通过单片机电子课程设计制作提高学生的电子技术实践技能,培养学生综合运用所学知识分析问题和解决问题的能力,了解开展科学实践程序和基本方法,并逐步形成严肃、认真、一丝不苟、实事求是的科学作风和一定的生产观、经济观和全局观。
培养理论联系实际的设计思想,训练综合运用电路设计和有关先修课程的理论,结合生产实际分析和解决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识。
进行基本技术技能训练,如基本仪器仪表的使用,常用元器件的识别、测量、熟练运用的能力,掌握设计资料、手册、标准和规范以及使用仿真软件、实验设备进行调试和数据处理等。
2
课程设计的任务与要求
2.1结合课本和已学知识,根据已知的技术指标和条件,再结合此次实训的目的完成自己选择的简易电子琴电路的设计并按照仿真原理图结合实物焊接好此作品,达到指导老师的预期效果。
设计电路原理图和选择电路所需元器件
学会使用仿真电路软件对电路原理图进行仿真测试。
对电路进行方案论证,确定电路原理方框图。
3
设计方案与论证
3.1设计方案
经过反复论证,最终确定了如下方案:
(1)采用STC89C51单片机作为主控制器。
(2)采用达林顿效应使音乐信号放大。
(3)采用C语言编程。
3.2方案论证
根据设计要求,本系统主要由控制器模块和输入模块构成。
为较好的实现各模块的功能,我们分别设计了以下几种方案并分别进行了论证。
方案1:
采用凌阳系列单片机为系统的控制器
凌阳系列单片机可以实现各种复杂的逻辑功能,模块大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性。
凌阳系列单片机提高了系统的处理速度,适合作为大规模实时系统的控制核心。
方案2:
采用51系列作为系统控制器
单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。
而且抗干扰性能好。
因51单片机价格比凌阳系列低得多,且本设计不需要很高的处理速度,从经济和方便使用角度考虑,本设计选择了方案2。
4设计原理及功能说明
4.1设计原理
4.2功能说明
基本方案:
发生电路是这次设计电路中最重要的组成部分,他承载着单片机所产生的声音信号放大并输出的重要作用,而我的设计中的发声电路主要是由两个S8050三极管驱动组成。
S8050三极管是一种小功率的放大管,属于NPN型号三极管,而对三极管引脚的判断有以下方法。
1.判断三极管的基极。
对于NPN型号的三极管,用黑表笔接某一个电极,红表笔分别接另外两个电极,若测量电阻值两个都小,调换表笔后被测电阻值都较大,则可判断第一次测量中黑表笔所接的是基极;如果测量值一大一小,相差很大,则第一次测量中黑表笔接的不是基极,应该更换其他电极重测。
2.测量三极管发射极e和集电极c。
三极管基极确定后,通过交换表笔,两次测量e,c极间的电阻,如果两次测量结果不相等,其中测得电阻值较小的一次为红表笔的是e极黑表笔接的是c极。
对于PNP型号的三极管,方法与NPN的相似,只是红黑表笔的作用相反,在测量e,c极间电阻时要注意,由于三极管的V(BR)CEO很小,很容易将发射结击穿。
当我们三极管的管脚判断结束以后,我们就可以用两个三极管构成一个达林顿结构。
首先当单片机P1.0口输出一个高电平,由两个三极管构成的达林顿成能导通,导通后又能对电流又一定的放大作用,这样传到扬声器时信号能让我们听的更清楚。
图4-1声音驱动电路
4.3编程软件模块
方案1:
采用汇编语言编程
汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU的资源,相对高级程序设计语言来说,它又显得难掌握。
方案2:
采用C语言编程
C语言与其他高级语言相比,具有运算符的丰富性、语法表述的灵活性、对软硬件操作的兼容性、输入输出方式的新颖性等主要特征.深入分析研究这些特征,可以加深对C语言的认识;正确应用这些特征,可以灵活高效地解决各种实际问题.因为我在大学期间对汇编语言没有深入的了解,而且在编程时一直用C语言,所以我选择了方案2。
5单元电路的设计
5.1时钟电路
最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。
电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。
STC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部时钟在此不做详细介绍。
外部方式的时钟电路如图3所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率在12MHz或11.0592MHZ晶振。
图5-189c51内部时钟电路
5.2复位电路
当在89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。
复位电路通常采用上电自动复位和按钮复位两种方式。
最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
除了上电复位外,有时还需要按键手动复位。
本设计就是用的按键手动复位。
按键手动复位有电平方式和脉冲方式两种。
其中电平复位是通过RST(9)端与电源Vcc接通而实现的。
按键手动复位电路见图4。
时钟频率用11.0592MHZ时C取10uF,R取10kΩ。
图5-289C51复位电路
6
硬件的制作与调试
6.1硬件的制作
先组装音阶产生电路。
为了节省时间和空间,可用导线代替音阶按钮S1-S7,即用一根足够长的导线,一端接555电路的2、6公共端,另一端依次接触R1-R7的开路端来产生不同的声音。
要调出比较准确的音阶,需借助示波器测试各音阶信号的周期,并通过串接电阻是各音阶达到正确的周期值,从而校准音调。
也可使用频率计测量音阶信号的频率来实现音准调节。
如果R1-R7采用标称电阻,则各别音调将略有偏离。
在制作过程中刚开始只接了一个电阻按一下开关就会发出响声!
再接两个电阻按一下开关就会发现响声但是响声与第一下不相同,其次以后六次都是与前面一样,多接通一个电阻响声就与前面一次不相同!
但此次我们采用了固定电阻的串联和近似原则制作了一个不是最理想的电子琴,如果用精密电位器调整好电阻阻值效果会更好,以后我会多加思考争取做到最好。
6.2硬件的调试
这是本设计较为困难的一部分,需要经过反反复复的调试,才能达到理想中的效果,以下将分文硬件与软件两部分介绍此次调试的过程,以及调试过程中遇到的困难和解决办法。
程序主要取自一个音乐播放程序,但没有功率放大部分,更没有按钮部分。
在此基础之上,首先是对其进行一定的修改,在保留原来音调产生程序的前提下,进行主程序的设计,首先对所有端口进行初始化操作,接着进入不断循环部分,直到按键按下,进入防止抖动程序,如果不是抖动,则进入音乐播放程序,直到按键松开,再次进入等待按键按下部分。
在keil软件经不断改进后,生成hex文件,再用开发板烧入程序,并通过stc-isp烧录软件烧录后,最终得以完成。
程序在开始之初是用简单的中断延迟来实现,对于编歌曲来讲需要很大的工作量,在网上查找大量的资料之后,找到了一个做音乐播放器的程序,他也是基于中断延迟来实现播放功能,但是他对于歌曲编辑的灵活性,有很大的发展空间,所以我就采用了他的部分程序。
所以,主要考虑到的是如何在播放完一个音节后,进入在此等待状态。
对于该段程序中的主要保护手段,就是按钮防治抖动部分,因此在等待按钮按下后,采用一小段的延迟程序,再次判定是否有按钮的按下,再进入播放程序。
1)元器件的装插焊接应遵循先小后大,先轻后重,先低后高,先里后外的原则,这样有利于装配顺利进行。
2)在瓷介电容、电解电容及三极管等元件立式安装时,引线不能太长,否则降低元器件的稳定性;但也不能过短,以免焊接时因过热损坏元器件。
一般要求距离电路板面2mm,并且要注意电解电容的正负极性,不能插错。
3)集成电路的焊接,在焊接时,首先要弄清引线脚的排列顺序,并与线路板上的焊盘引脚对准,核对无误后,先固定IC,然后再重复检查,确认后再焊接其余脚位。
由于IC引线脚较密,焊接完后要检查有无虚焊,连焊等现象,确保焊接质量。
4)焊锡之前应该先插上电烙铁的插头,给电烙铁加热。
5)焊接时,焊锡与电路板、电烙铁与电路板的夹角最好成45度,这样焊锡与电烙铁夹角成90度。
6)焊接时,焊锡与电烙铁接触时间不要太长,以免焊锡过多或是造成漏锡;也不要过短,以免造成虚焊。
7)元件的腿尽量要直,而且不要伸出太长,以1毫米为好,多余的可以剪掉。
8)焊完时,焊锡最好呈圆滑的圆锥状,而且还要有金属光泽
9)设计装上3节5号电池,确保电压在4.5v~5.5v之间,首先检测电路板有无焊接短路,然后通电。
确保万无一失!
7软件设计
一般来说,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐振频率。
单片机演奏的音乐基本都是单音频率。
因此单片机演奏音乐比较简单,只需能清楚“音调”和“节拍”两个概念即可。
音调表示一个音符唱多高的频率。
节拍表示一个音符唱多长的时间。
知道了一个音符的频率后,便可以让单片机发出相应频率的振荡信号,从而产生相应的音符声音。
通过单片机的定时器进行定时中断,在中断服务程序中将单片机上完结单片机I/O口来回置高电平或者是低电平的,从而让扬声器发出声音。
通过节拍计算出每个音符所需要的时间,采用循环延时的方法来实现控制一个音符唱多长的时间,从而构成一首完整的音乐。
音调主要由声音的频率决定。
对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随响度增加而下降,高频纯音的音调却随响度增加而上升。
音调的高低还与发声体的结构有关,因为发声体的结构影响了声音的频率。
大体上,2000 赫兹以下的低频纯音的音调随响度的增加而下降,3000 赫兹以上高频纯音的音调随响度的增加而上升。
例如,在音乐中常常把中音C上方的A音定位标准高音,其频率F=440HZ,其余音均与其进行比较。
F1和F2为两个音符,如果这两个音符的频率相差一倍时,也即F2=2*F1时,则称F2比F1高一个频程。
在音乐中音符1与音符2,音符2与音符3……等等之间正好相差一个倍频程,在音乐学中称它相差一个八度音。
在一个八度内,有12个半音。
由于人耳的听觉效果,这12个音阶的分度基本上是以对数的关系来划分的。
只要知道12个音符的音高,也就是其基本频率,就可以根据音符之间的倍频关系得到其他音符的基本音调频率[3]。
以标准高音A的频率F=440HZ,其对应的周期为:
T=1/F=1/440=2272us
因此需要在单片机I/O端口输出周期为T=2272us的方波脉冲,也就是t=T/2=2272/2=1136us
也就是说,单片机上定时器的中断出发时间为1136us。
如果单片机采用定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。
设外接晶振的振荡器频率为f,则定时器的预置初始值有以下公式来确定:
Temp = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC)
TH = Temp /256
TL = Temp %256
8总结
本次单片机课程设计,在老师布置课题并讲解了基本原理后,一个星期以来我查阅了许多有关此设计的资料,并通过与同学交流经验和自学,以及向老师请教等方式,最终基本完成了此次课程设计。
通过对简易电子琴的设计,认识到了“理论联系实际”的这句话的重要性与真实性。
而且通过对此课程的设计,我不但知道了以前不知道的理论知识,而且也巩固了以前知道的知识。
最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。
也明白老师为什么要求我们做好这个课程设计的原因。
他是为了教会我们如何运用所学的知识去解决实际的问题,提高我们的动手能力。
在整个设计到电路的焊接以及调试过程中,我个人感觉调试部分是最难的,因为你理论算的值在实际当中并不一定是最佳参数,我们必须通过观察效果来改变参数的数值以期达到最好。
而参数的调试是一个经验的积累过程,没有经验是不可能在短时间内将其完成的。
这次电子课程设计,让我对以前所学的电子电路知识既是巩固又是发展,进一步理解并加深了对所学的模拟及数字电子技术的认识。
学会了在实践中运用理论,用理论来指导实践,培养了理论联系实际的正确设计思想。
通过对课题的设计,训练了运用所学的理论知识去思考问题并联系理论实际解决问题的能力,提高了逻辑思维的能力。
总之,通过这次电子课程设计,培养了实际运用理论的能力,懂得理论联系实际去处理问题,也培养了吃苦耐劳的精神,为以后更好的学习和工作打下了结实的基础,对于我们来说是一次难得的实践机遇,也是一个宝贵的精神财富。
参考文献
[1]李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:
13~15.
[2]蓝厚荣.单片机的PWM控制技术[J].工业控制计算机,2010,23(3):
97~98
[3]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社.2009.342~344
[4]胡汉才.单片机原理及其接口技术(第2版)[M].北京:
清华大学出版社.2004.49~77.
[5]胡全.51单片机的数码管动态显示技术[J].信息技术,2009,13:
25~26
[6]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):
278~280
附录1:
总体电路原理图
附录2:
元器件清单
序号
名称
型号规格
数量
1
单片机
STC89C52
1
2
万用板
7*9
1
3
三极管
8050
2
4
小喇叭
8欧
1
5
电阻
30欧
1
6
电阻
10K
2
7
按键开关
小型
8
8
LED灯
红色
8
9
电阻
2.2K
8
10
脚座
40
1
11
电容
10皮法
1
12
电容
30pF
2
13
排阻
10K
1
14
导线
若干
附录3:
程序
#include
#defineuintunsignedint
#defineucharunsignedchar//宏定义
sbitspeaker=P1^4;//喇叭引脚定义
uchara,b;//声明两个无符号字符型变量,用于定时器初值的赋值
voidcheck_key()//按键函数
{
P3=0xff;//先赋给P3组口高电平
switch(P3)//当有按键按下,P3口的状态就会改变
{
case0xfe:
P2=0x7f;a=0xfb;b=0xe9;EA=1;break;//当第一个按键按下,P3口状态就是11111110,也就是0xfe,就执行后面的P2口显示数字1,并给定时器赋初值,打开中断系统总开关
case0xfd:
P2=0xbf;a=0xfc;b=0x5c;EA=1;break;//同上
case0xfb:
P2=0xdf;a=0xfc;b=0xc1;EA=1;break;
case0xf7:
P2=0xef;a=0xfc;b=0xef;EA=1;break;//P2组为发光二极管组
case0xef:
P2=0xf7;a=0xfd;b=0x45;EA=1;break;//注意:
EA不能改为TR0
case0xdf:
P2=0xfb;a=0xfd;b=0x92;EA=1;break;
case0xbf:
P2=0xfd;a=0xfd;b=0xd0;EA=1;break;
case0x7f:
P2=0xfe;a=0xfd;b=0xee;EA=1;break;
default:
EA=0;speaker=0;P2=0xff;//当P3口为其他状态时(包括无按键按下和多按键按下)关闭声音输出和显示
}
}
voidmain()//主函数
{
TMOD=0x01;//定时器工作方式1
TH0=a;//定时器0初值的高八位
TL0=b;//定时器0初值的低八位
ET0=1;//允许中断
TR0=1;//打开定时器
while
(1)//进入循环
{
check_key();//扫描按键
}
}
voidtime0()interrupt1//定时器工作函数
{
TH0=a;//定时器高八位赋初值
TL0=b;//定时器低八位赋初值
speaker=~speaker;//喇叭引脚取反
}
附录4:
实物图
正面
反面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子琴