简易电子琴.docx

上传人:b****6 文档编号:7378098 上传时间:2023-05-11 格式:DOCX 页数:25 大小:419.14KB
下载 相关 举报
简易电子琴.docx_第1页
第1页 / 共25页
简易电子琴.docx_第2页
第2页 / 共25页
简易电子琴.docx_第3页
第3页 / 共25页
简易电子琴.docx_第4页
第4页 / 共25页
简易电子琴.docx_第5页
第5页 / 共25页
简易电子琴.docx_第6页
第6页 / 共25页
简易电子琴.docx_第7页
第7页 / 共25页
简易电子琴.docx_第8页
第8页 / 共25页
简易电子琴.docx_第9页
第9页 / 共25页
简易电子琴.docx_第10页
第10页 / 共25页
简易电子琴.docx_第11页
第11页 / 共25页
简易电子琴.docx_第12页
第12页 / 共25页
简易电子琴.docx_第13页
第13页 / 共25页
简易电子琴.docx_第14页
第14页 / 共25页
简易电子琴.docx_第15页
第15页 / 共25页
简易电子琴.docx_第16页
第16页 / 共25页
简易电子琴.docx_第17页
第17页 / 共25页
简易电子琴.docx_第18页
第18页 / 共25页
简易电子琴.docx_第19页
第19页 / 共25页
简易电子琴.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简易电子琴.docx

《简易电子琴.docx》由会员分享,可在线阅读,更多相关《简易电子琴.docx(25页珍藏版)》请在冰点文库上搜索。

简易电子琴.docx

简易电子琴

课程设计名称:

单片机基础课程设计

题目:

简易电子琴

学院:

轨道交通学院

学生姓名:

叶修桧

专业:

应用电子技术

学号:

20085120170123

指导教师:

卢毓俊老师

日期:

2010年12月15日

 

目录

摘要3

关键词3

课设题目(正文)3

引言4

方案论证5

系统设计5

1功能模块介绍6

1.1时钟电路分析6

1.2复位电路的论证和分析6

1.3音频放大电路6

1.4键盘模块8

1.5供电电路9

2发声原理即程序流程图9

2.1音乐发声原理10

2.2音乐发声程序框图11

3调试步骤11

4总结12

4.1课程设计心得及体会12

4.2不足之处13

参考文献13

附录一13

附录二14

附录三24

附录四26

摘要

随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。

我都会抽空欣赏世界名曲,作为对精神的洗礼。

本论文设计一个基于单片机的简易电子琴。

我对于电子琴如何实现其功能,如声音强弱控制、节拍器、自动放音功能等等也很好奇。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词

电子琴;单片机;汇编语言;4×4键盘

 课设题目:

简易电子琴

摘要:

电子琴是现代电子科技与音乐结合的产物,它在现代音乐中扮演着重要角色。

本文阐述的主要内容是一种基于AT89S52单片机的简易电子琴的设计。

设计的电子琴以52单片机为核心,通过与4x4键盘、音频放大电路、音乐播放模块、电源电路、复位电路相连,采用汇编语言编写程序,实现音乐播放和使用琴键自编曲目功能。

关键词:

电子琴;单片机;汇编语言;4×4键盘

引言

单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。

它的应用必定导致传统的控制技术从根本上发生变革。

因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。

利用单片机产生不同频率来获得我要求的音阶,最终可随意弹奏想要表达的音乐。

并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我只要把一首歌曲的音阶对应频率关系弄正确即可。

1、方案论证

方案一:

用可控硅制作电子琴,将220V交流电经变压器降压,再经过滤波,整形获得+13.5V直流电压,将单向可控硅SCR和电阻、电容组成驰张振荡器电路。

但该方案制作成本高且复杂。

故不采用。

方案二:

采用AT89C52单片机进行控制,但由于AT89C52在属于低档的单片机,已经面临淘汰,且仿真器价格昂贵,不易擦除。

故不采用。

方案三:

采用两个555集成定时器组成简易电子琴,整个电路由主振荡器,颤音振荡器,扬声器和琴键按钮等部分组成。

由于555产生的信号不稳定且精度不高。

故不采用。

方案四:

采用采用AT89S52单片机进行控制,以AT89S52单片机为核心控制元件,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

程序易擦除,比较方便。

根据以上比较可知应采用四种方案

二、系统设计

本电子琴系统主要包括AT89S52单片机,4x4键盘,发声模块,选播音乐模块,系统框图如图1所示。

图1

三、功能模块介绍

3.1时钟电路分析

此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。

AT89S52内部有一个用于构成振荡器的高增益反相放大器。

引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。

这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。

外接晶体谐振器以及电容CX1和CX2构成并联谐振电路,接在放大器的反馈回路中。

对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。

因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为30pF。

在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。

3.2复位电路的论证和分析:

AT89S52的复位是由外部的复位电路来实现的。

片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。

复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,当时钟频率选用12MHz时,C取10μF,Rs约为100Ω,Rk约为10KΩ。

3.3音频放大电路:

音频放大电路(图2)的选用对电子琴的音色及音量具有决定性的作用。

本设计发声模块主要采用LM386,LM386是一种音频集成功放,具有自身功耗低,电压增益可调整,电源电压范围大,外接元件少和总谐波失真小等优点。

广泛应用于录音机和收音机之中。

LM386内部电路原理图(图3)所示与通用型集成运放相类似,它是一个三级放大电路第一级为差分放大电路T1和T3T2和T4分别构成复合管作为差分放大电路的放大管T5和T6组成镜像电流源作为T1和T2的有源负载T3和T4信号从管的基极输入,T2管的集电极输出为双端输入单端输出差分电路,使用镜像电流源作为差分放大电路有源负载可使单端输出电路的增益近似等于双端输出电容的增益第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。

二极管D1和D2为输出级提供合适的偏置电压可以消除交越失真。

引脚2为反相输入端,引脚3为同相输入端。

电路由单电源供电故为OTL电路。

输出端引脚5应外接输出电容后再接负载。

电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈使整个电路具有稳定的电压增益。

图2音频放大器电路

图3LM386内部电路原理图

3.4键盘模块

当按键较多时会占用更过的控制器端口,为减少对端口的占用,本设计采用4×4矩阵键盘(图4),键盘矩阵行线连接P2.0~P2.3,列线连接P2.4~P2.7,扫描过程如下:

程序首先判断是否有键按下,为判断16个按键中是否有键按下,程序首先在4条行线上放置4个0,即在P2端口输出0XF0,如果有任一按键按下,则4条列线上必有一位为0.如果已有键按下,则判断按键所在行、列位置,并返回按键序号。

代码中行扫描码初值为0xFE,通过将该值循环右移,可对P2.0~P2.3对应的4行逐行发送0,每次发送扫描码后即判断高4位的4个1中是否有0出现,如果出现0说明按键在该行上,这时可将发送的低4位于读取的高4位取反,也就是P2取反,这样P2中将出现2个1,其余位均变为0,2个1分别处在低4位和高4位中,高低4位中1所处的位置各有4种可能,共有16种可能,对应十六个不同的按键,根据取反后的值查询键盘矩阵按键特征码表,即可得到按键序号。

图44x4键盘

3.5供电电路

采用9v直流供电,分出两个电源,9v直接供给音频发大电路,另一部分经7805稳压到5v然后供给单片机。

四.发声原理即程序流程图

4.1音乐发声原理

用电子琴可以演奏出各种美妙的音乐,而音乐是由音符组成,不同的音符是由相应频率的振动产生。

由单片机模拟产生音符只需算出音频周期T=1/f,利用音频的变化产生不同电平驱动发声模块来达到产生音乐的目的。

因此我们只要把一首歌曲的音阶对应频率关系弄正确,即可利用AT89S52的内部定时器使其工作计数器模式MODE1下改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。

例如频率为523Hz其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956每计数956次时将I/O反相就可得到中音DO523Hz

计数脉冲值与频率的关系式是:

公式1

式中N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为

1MHz;fr是想要产生的频率

其计数初值T的求法如下:

公式2

例如设K=65536fi=1MHz求低音DO(261Hz)中音DO(523Hz)高音

DO(1046Hz)的计数值.

T=65536-N=65536-

i

2

fr=65536-1000000

2

fr=65536-500000/fr

低音DO的T=65536-500000/262=63627

中音DO的T=65536-500000/523=64580

高音DO的T=65536-500000/1046=65059

本程序所采用的音符频率及简谱码对应表如表1所示

表1.作品采用的音符频率与简谱码对应表

音符

频率(Hz)

简谱码

音符

频率(Hz)

简谱码

低音mi

330

64021

中音fa

698

64820

低音fa

349

64103

中音so

784

64898

低音so

392

64260

中音la

880

64968

低音la

440

64400

中音xi

988

65030

低音xi

494

64524

高音do

1046

65058

中音do

523

64580

高音re

1175

65110

中音re

587

64684

高音mi

1318

65157

中音mi

659

64777

高音fa

1397

65178

4.2音乐发声程序框图(图5)

图5音乐发声程序框

5、调试步骤

1、先调试手动弹奏乐曲,关键问题在于键盘的扫描及识别定位。

是开始我尝试了好几种方法都无法完成扫描功能,经过多次探索我终于找到了一种合适的键盘连接方式,并成功完成了各种功能。

2、自动音乐播放程序的调试。

最开始的问题在于单片机晶振的选择上,我必须使用11.0592MHZ的晶振频率才能保证播放的音乐不走调。

然后又涉及到功能转换模块中的暂停、重复和转换,不但涉及到键盘的扫描,而且部分程序需要嵌套在音乐程序内部才能执行,难度很大,耗费了我很长时间。

3、功能转换程序的调试。

首先需要将其做成一个单独的模块,确保其能独立运行,而且还能将手动弹奏模块和自动播放模块巧妙的结合在一起。

在调试中,我出现的重复多次使用一个键的情况,需要特别的仔细,不然就会出错。

尤其在是使用暂停功能时,为了保证其能在暂停后继续从断点处播放音乐和返回开始处重新播放音乐,我设置了两条不同的路径通过两个不同的键进行控制,才最终得以实现。

6、总结

6.1课程设计心得及体会:

通过这次单片机课程设计,我弄懂了不少课本上的知识,还扩展了一些课本没有的知识,再通过去图书馆查阅资料,很好的完成了这次课程设计。

首先在课程设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料。

通过对这些资料的学习,我大致了解了单片机的发展现状以及未来的发展趋势,认识到目前单片机在各方面的应用。

了解了单片机方面的先进技术,这些都为我的未来的学习指明了方向。

我的课程设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。

首先硬件方面,基本了解了电子产品的开发流程和所要做的工作。

虽然本次课程设计的硬件焊接工序对大二焊接了一年的我来说不算什么难事,但是在焊接过程中我没有半点马虎,对电路的分析在指导老师卢毓俊老师的帮助下更是步步深入。

在软件方面,因为程序的编写都是我的弱项,所以我是先从网上找来类似的程序模板,然后借助各方面的资料对程序的每一步进行分析,按题目的需求进行修改,最终才得到我现在的程序方案。

6.2不足之处有:

1.可弹奏的音符数较少,只能在一定范围内满足用户需要。

可通过改进键盘识别模块和发生模块来增加其复杂度。

2.音色不可调,只有一种波形的频率输出。

可以在外围电路设计滤波电路,接在不同的输出口,通过软件实现不同端口的输出,从而接入不同的滤波电路,输出不同的波形,从而获得不一样的音色。

3.不能以和弦形式演奏,只能单个键按下输出单个的音阶。

4.由于没有足够的设计经验,本次选用的按键不易按下,所以导致演奏时不够流畅。

七、参考文献

[1]陈明荧.8051单片机课程设计实训教材[M].北京:

清华大学出版社,2003年9月.

[2]徐新艳.单片机原理、应用与实践[M].北京:

高等教育出版社,2005年3月.

[3]吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M].第一版.北京:

清华大学出版社,2002年.

[4]吴金戌,沈庆阳,郭庭吉,8051单片机实践与应用[M].清华大学出版社,2001

[5]冯博琴,微型计算机原理与接口技术[M].清华大学出版社,2004

[6]张毅刚,MCS-51单片机应用设计[M].哈尔滨工业大学出版社,2004

[7]张淑清,姜万录等,单片微型计算机接口技术及应用[M].国防工业出版社,2003

附录一

电路原理图:

附录二

源程序:

KEYBUFEQU30H

STH0EQU31H

STL0EQU32H

TEMPEQU33H

SPKEQUP1.0;蜂鸣器所在端口

ORG0000H

LJMPSTART

ORG0BH

LJMPINT_T0

START:

MOVTMOD,#01H

SETBET0

SETBEA

WAIT:

MOVP2,#0FFH

CLRP2.4;从第四行开始扫描

MOVA,P2

ANLA,#0FH;屏蔽高四位,高四位为行,低四位为列

XRLA,#0FH

JZNOKEY1;判断是否有键按下,没有就跳转

LCALLDELY10MS

MOVA,P2;消除抖动和干扰

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

MOVA,P2;确定有键按下以后的处理

ANLA,#0FH

CJNEA,#0EH,NK1;是否为第四行第一列的键被按下

MOVKEYBUF,#0;保存列号

LJMPDK1

NK1:

CJNEA,#0DH,NK2

MOVKEYBUF,#1

LJMPDK1

NK2:

CJNEA,#0BH,NK3

MOVKEYBUF,#2

LJMPDK1

NK3:

CJNEA,#07H,NK4

MOVKEYBUF,#3

LJMPDK1

NK4:

NOP

DK1:

;第四行的处理

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2;Table1以字保存,所以散转

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A;送入高字节

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A;送入低字节

MOVTL0,A

SETBTR0

DK1A:

MOVA,P2;判断按键是否松开

ANLA,#0FH

XRLA,#0FH

JNZDK1A

CLRTR0

NOKEY1:

MOVP2,#0FFH

CLRP2.5

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBUF,#4

LJMPDK2

NK5:

CJNEA,#0DH,NK6

MOVKEYBUF,#5

LJMPDK2

NK6:

CJNEA,#0BH,NK7

MOVKEYBUF,#6

LJMPDK2

NK7:

CJNEA,#07H,NK8

MOVKEYBUF,#7

LJMPDK2

NK8:

NOP

DK2:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK2A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK2A

CLRTR0

NOKEY2:

MOVP2,#0FFH

CLRP2.6

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBUF,#8

LJMPDK3

NK9:

CJNEA,#0DH,NK10

MOVKEYBUF,#9

LJMPDK3

NK10:

CJNEA,#0BH,NK11

MOVKEYBUF,#10

LJMPDK3

NK11:

CJNEA,#07H,NK12

MOVKEYBUF,#11

LJMPDK3

NK12:

NOP

DK3:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK3A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK3A

CLRTR0

NOKEY3:

MOVP2,#0FFH

CLRP2.7

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBUF,#12

LJMPDK4

NK13:

CJNEA,#0DH,NK14

MOVKEYBUF,#13

LJMPDK4

NK14:

CJNEA,#0BH,NK15

MOVKEYBUF,#14

LJMPDK4

NK15:

CJNEA,#07H,NK16

MOVKEYBUF,#15

LJMPDK4

NK16:

NOP

DK4:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK4A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK4A

CLRTR0

NOKEY4:

JNBP1.0,MUSIC

LJMPWAIT

MUSIC:

MOVR3,#00H

NEXT:

MOVA,R3

MOVDPTR,#TABLE2

MOVCA,@A+DPTR

JZMUSIC

MOVR7,A

INCR3

MOVA,R3

MOVCA,@A+DPTR

MOVR2,A

ACALLSONG

INCR3

SJMPNEXT

 

;===============================================================================

;===歌曲播放子程序===

SONG:

MOVA,R2;取出节拍

RLA

JNZKEEP

MOVA,#01H

KEEP:

MOVR2,A

REPEAT:

ACALLEIGHTH

DJNZR2,REPEAT

RET

;=========================================================

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

当前位置:首页 > 解决方案 > 学习计划

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

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