当前位置:文档之家› 基于单片机的电子琴设计与实现(毕业论文)

基于单片机的电子琴设计与实现(毕业论文)

前言 (2)

1 方案论证 (2)

1.1 控制模块选择方案 (2)

1.2 按键选择方案 (3)

2 系统硬件设计 (3)

2.1 系统组成及总体框图 (3)

2.2 元件介绍 (4)

2.2.1 AT89S52 (4)

2.2.2 LM386 (6)

2.2.3 LED数码管 (8)

2.3 显示电路 (9)

2.4 各功能模块原理图 (9)

2.4.1 AT89S52模块电路原理图 (9)

2.4.2 键盘扫描模块电路原理图 (10)

2.4.3 数码管显示模块电路原理图 (11)

2.4.4 音频处理模块电路原理图 (12)

2.4.5 电源模块电路原理图 (12)

3 系统软件设计 (13)

3.1 音乐相关知识 (13)

3.2 如何用单片机实现音乐的节拍 (13)

3.3 如何用单片机产生音频脉冲 (14)

3.4 系统总体功能流程图 (15)

4 电路仿真 (18)

4.1 ISIS软件介绍 (18)

4.2 仿真图介绍 (18)

4.3仿真图 (19)

5 PCB印制板制作 (20)

5.1 印制板制作的要求 (20)

5.2 印制电路板图 (20)

6 系统调试 (22)

6.1 软件仿真调试 (22)

6.2 软件调试 (22)

7 调试结论 (22)

附录1:元器件清单 (23)

附录2:主要电路原理图 (24)

附录3:主要程序 (25)

参考文献: (28)

基于单片机的电子琴设计

前言

单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C52单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。

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

1 方案论证

1.1 控制模块选择方案

方案一:用可控硅制作电子琴。将220V交流电经变压器降压,再经过整流、滤波,获得+13.5V直流电压。将单向可控硅SCR和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。

方案二:采用AT89C51单片机进行控制,由于AT89C51不具备ISP功能,

因此Atmel公司已经停产在市面上已经不常见,况且其ROM只有4K在系统将来升级方面没有潜力。

方案三:采用AT89S52单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的内部程序存储空间达到8K,使软件设计有足够的内部使用空间并且方便日后系统升级,使用方便,抗干扰性能提高。

鉴于上述对比与分析,本设计采用方案三。 1.2 按键选择方案

方案一 利用I/O 口直接连接的独立式键盘,每键都有相应的I/O 口对应,编程容易控制,实现方便;但拒于IO 口有限,能接的按键不能太多,而本系统需用户根据需要调整的参数较多,用独立按键会使操作变得复杂。

方案二 利用PA 口接成4*4键盘。优点:利用8个IO 口得到16个按键,可使操作介界变得简单,操作也方便;缺点:软件处理比独立按键复杂。 通过比较,方案二为最佳方案。

2 系统硬件设计

2.1 系统组成及总体框图

硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。

该设计要实现一种由单片机控制的电子琴,单片机工作于12MHZ 时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号。该设计具有11个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。

本例使用国家半导体公司的低压音频功率放大器LM386来实现音频功放电路。

图2.1-1 系统结构图

盘扫描

AT89S52

数码管显示

扬声器播放音乐

电源部分

2.2 元件介绍

2.2.1 AT89S52

功能特性:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止[1]。

主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符[2]。

管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址

“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

表2.2.1-1管脚备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出[3]。 2.2.2 LM386

LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地为参考同时输出端被自动偏置到电源电压的一半,在6V 电源电压下,它的静态功耗仅为24mW ,使得LM386特别适用于电池供电的场合。LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中[4]。

LM386的封装形式有塑封8引线双列直插式和贴片式。

图2.2.2-1 LM386的封装形式

特性(Features):

(1)静态功耗低,约为4mA ,可用于电池供电; (2)工作电压范围宽,4-12V or 5-18V ; (3)外围元件少;

(4)电压增益可调,20-200; (5)低失真度。 其典型电路如下图:

增益 增益 负端输入 正端输入

旁路 输出

LM386

电源

图2.2.2-2 放大器增益=20(最少器件)

图2.2.2-3 放大器增益=50

图2.2.2-4 低频提升放大器

2.2.3 LED数码管

本次毕业设计的显示电路采用LED数码管显示,LED(Light-Emitting Diode)是一种外加电压从而流过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。

常用的七段显示器的结构如图下图所示。发光二极管的阳极连在一起的称为共阳极显示器(如图b所示),阴极连在一起的称为共阴极显示器(如图c所示)。1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便[5]。

此外,要画出电路图,首先还要搞清楚他的引脚图的分布,在了解了正确的引脚图后才

能进行正确的字型段码编码。才能显示出正确的数字来。

图2.2.3-1 数码管引脚

2.3 显示电路

本次毕业设计的显示电路采用LED数码管显示,由于LED是属于电流控制器件,使用时必须加限流电阻。通过单片机查表得出数码管显示编码,传送给数码管显示,以此来实现按键与显示程序的一致性。

2.4 各功能模块原理图

2.4.1 AT89S52模块电路原理图

单片机主程序模块通过对键盘扫描程序信号的读取,在通过对应的表,取出数码管显示编码和定时器初始值以产生不同的声音信号。在这一过程中,对数码管编码是直接赋值,对

声音信号则是通过中断程序进行控制。

图2.4.1-1 AT89S52模块电路原理图

2.4.2 键盘扫描模块电路原理图

对键盘扫描电路的扫描方式有行扫描法和线反转法,在此次程序编写中,采用行扫描法,通过在p20~p23上循环送出0扫描信号,p24~p27输入按键上的高低电平信息给单片机,经处理程序,判断出是哪个开关按下,并送主程序以实现不同功能。

图2.4.2-1 键盘扫描模块电路原理图

2.4.3 数码管显示模块电路原理图

数码管显示模块核心是共阳级数码管,通过来自单片机I/O口的电平高低来点亮和熄灭数码管上的发光二极管,通过单片机送来的数码管显示编码可以在数码管上显示数字和字符,使应用人员可以很容易的理解按键按下所对应的音符。

图2.4.3-1 数码管显示模块电路原理图

2.4.4 音频处理模块电路原理图

由于单片机驱动能力不够,在处理音符信号时,需加功率放大装置,因LM386芯片具有低功耗、高增益的特点,这合适单片机低功耗输出,所以加装LM386音频信号放大器对信号进行放大。

图2.4.4-1 音频处理模块电路原理图

2.4.5 电源模块电路原理图

由于本次设计的芯片的工作电压都为5V,为了排除因为电压不稳定或者不准确影响电路的工作和软件的调试,本次设计单独用LM7805设计了一个输出5V的电压的电路,如图3-11所示,其中J0为一变压器插排接口,输出电压在7.5V,为交流电压,经过整流桥进行整流,电容滤波,再经过LM7805稳压后,得到本次设计所需的5V直流电源。

图2.4.5-1 电源模块电路原理图

3 系统软件设计

本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由16个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。

3.1 音乐相关知识

乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。

音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。

一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐[6]。

3.2 如何用单片机实现音乐的节拍

除了音符以外,节拍也是音乐的关键组成部分。

节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由

于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成[7]。音乐的音拍,一个节拍为单位(C调)具体如下表:

表2.3.2-1音乐节拍表

曲调值DELAY 曲调值DELAY

调4/4 125ms 调4/4 62ms

调3/4 187ms 调3/4 94ms

调2/4 250ms 调2/4 125ms

3.3 如何用单片机产生音频脉冲

了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。

在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:

表3.3.3-1音符频率与计数值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的值决定了TH0和TL0的值,其关系为:TH0=T/256,TL0=T%256[8]

3.4 系统总体功能流程图

图3.4-1 主程序框图N

定时器初始化数码管显示0

主程序

开始

循环检测按键Y

数码管显示

扬声器出声

K1键按下K2键按下K3键按下K4键按下K5键按下K6键按下K7键按下数码管显示3.,并播放mi的低音

数码管显示4.,并播放fa的低音

数码管显示5.,并播放so的低音

K8键按下数码管显示6.,并播放la的低音

数码管显示7.,并播放si的低音

数码管显示1,并播放do的中音

数码管显示2,并播放re的中音

数码管显示3,并播放mi的高阶中音

K9键按下K10键按下K11键按下K12键按下K13键按下K14键按下K15键按下数码管显示4并播放fa的中音

数码管显示5并播放so的中音

数码管显示6,并播放la的中音

K16键按下

数码管显示7,并播

放si的中音

数码管显示A,并播

放do的高音

数码管显示B,并播

放re的高音

数码管显示C,并播

放mi的高音

数码管显示D,并播

放fa的高阶高音

图3.4-2 按键子程序流程图

4 电路仿真

4.1 ISIS软件介绍

Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。

该软件的特点是:

(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、

A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

(4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作[9]。

4.2 仿真图介绍

单片机:P0 口对应数码管编码输出端;

P10 口做音乐信号输出端;

P2 口做键盘扫描部分输入输出端。

键盘扫描:将16位开关通过矩阵连接,接出来四端接输入口(P0.4~P0.7)用于键盘情况的输入,另外四端接输出口(P0.0~P0.3)用于给键盘扫描信号。

数码管显示:在使用时一要接上拉电阻(这是有单片机P0口的物理特性决定的),二是要加限流电阻以使流进单片机的小于单片机所能承受的电流。

音乐处理:LM386将单片机P1.0口送过来的信号进行20倍的功率放大并送扬声器进行音乐的播出。

4.3仿真图

图4.3-1 仿真图

5 PCB印制板制作

5.1 印制板制作的要求

(1)电源线、地线应各设置一条总线;

(2)线宽尽可能的宽;

(3)应减少软线跳线的使用;

(4)元器件排版要均匀,按模块排版,防止各模块信号干扰;

(5)铜箔线不可以产生锐角。

5.2 印制电路板图

图5.2-1 主控电路PCB板图

相关主题
文本预览
相关文档 最新文档