基于电子琴毕业设计毕业设计.docx
基于电子琴毕业设计毕业设计 1 毕 业 设 计 姓 姓 名 学 学 号 院 院 系 机电工程系 专 专 业 2022 年 11 月 12 日 1 毕 业 设 计. 1 前 言. 2 1 方案论证. 2 1.1 控制模块选择方案. 2 1.2 按键选择方案. 3 2 系统硬件设计. 3 2.1 系统组成及总体框图. 3 2.2 元件介绍. 4 2.3. AT89S52. 4 表 2.4 管脚备选功能. 5 2.5 三极管 913. 6 2.6 显示电路. 6 2.7 各功能模块原理图. 7 2.8 AT89S52 模块电路原理图. 7 2.9 键盘扫描模块电路原理图. 7 2.10 音频处理模块电路原理图. 8 2.11 电源模块电路原理图. 9 3 系统软件设计. 10 3.1.1 音乐相关知识. 10 3.1.2 如何用单片机实现音乐的节拍. 10 表 3.1.3 音乐节拍表. 11 3.1.4 如何用单片机产生音频脉冲. 11 表 3.1.5 音符频率与计数值 T 的对照表. 11 3.1.6 系统总体功能流程图. 12 4 电路仿真. 16 4.1 ISIS 软件介绍. 16 4.2 仿真图介绍. 16 4.3 仿真图. 17 6 系统调试. 18 6.1 软件仿真调试. 18 6.2 软件调试. 18 7 调试结论. 18 附录 1:元器件清单. 19 附录 2:主要电路原理图. 20 附录 3:主要程序. 20 参考文献:. 25 致谢:. 26 致谢.26 2 前 言 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用 STC89C52 单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有 16 个按键和扬声器。 本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 T0 来产生这样方波频率信号,因此,我们只要把歌曲的音阶对应频率关系弄正确即可。 1 方案论证 1.1 控制模块选择方案 方案一:用可控硅制作电子琴。将 220V 交流电经变压器降压,再经过整流、滤波,获得+13.5V 直流电压。将单向可控硅 SCR 和电阻、电容组成驰张振荡器电路。但该设计方案制作成本高且复杂。 方案二:采用 AT89S52 单片机进行控制,由于其性价比高,完全满足了本作品智能化的要求,它的使用方便,抗干扰性能提高。 鉴于上述对比与分析,本设计采用方案二。 3 1.2 按键选择方案 方案一 利用 I/O 口直接连接的独立式键盘,每键都有相应的 I/O 口对应,编程容易控制,实现方便;但拒于 IO 口有限,能接的按键不能太多,而本系统需用户根据需要调整的参数较多,用独立按键会使操作变得复杂。 方案二 利用 PA 口接成 4*4 键盘。优点:利用 16 个 IO 口得到 16 个按键,可使操作介界变得简单,操作也方便;缺点:软件处理比独立按键复杂。 通过比较,方案二为最佳方案。 2 系统硬件设计 2.1 系统组成及总体框图 硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。 该设计要实现一种由单片机控制的电子琴,计具有 16 个音节的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。用单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为它没有足够的驱动能力,这就需要音频功率放大电路。 本例使用三极管的放大作用来来实现音频功放电路。 图 2.1-1 系统结构图 键盘扫描 AT89S52 数码管显示 扬声器播放音乐电源部分 4 2.2 元件介绍 2.3. AT89S52 功能特性:AT89S52 是一种低功耗、高性能,在系统可编程 Flash 存储器。使用 Atmel公司高密度非易失性存储器技术制造,片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振。另外,AT89S52 可降至0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止1 。 主要性能:在系统可编程 Flash 存储器、1000 次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、16 个可编程 I/O 口线 、三个 8 位定时器/计数器八个中断源、全双工 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 口输出地址的高八位。在给出地址 5 “1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C52 的一些特殊功能口,如下表所示: 表 表 2.4 管脚备选功能 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 端保持高电平 6 时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。 XTAL1:反向振荡放大器的输入工作电路的输入。 XTAL2:来自反向振荡器的输出3 。 2.5 三极管 913 三极管是音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为 20。但在 1 脚和 8 脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地为参考同时输出端被自动偏置到电源电压的一半,在 6V 电源电压下,它的静态功耗仅为 24mW,使得三极管特别适用于电池供电的场合。三极管 913 是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中4 。 图 2.2.2-2 放大器增益 2.6 显示电路 本次毕业设计的显示电路采用 LED 数码管显示,由于 LED 是属于电流控制器件,使用时必须加限流电阻。通过单片机查表得出数码管显示编码,传送给数码管显示,以此来实现按键与显示程序的一致性。 7 2.7 各功能模块原理图 2 2.8 AT89S52 模块电路原理 图 单片机主程序模块通过对键盘扫描程序信号的读取,在通过对应的表,取出数码管显示编码和定时器初始值以产生不同的声音信号。在这一过程中,对数码管编码是直接赋值,对声音信号则是通过中断程序进行控制。 EA/VP31X119X218R ESET9R D17WR16INT012INT113T014T115P1 0/T1P1 1/T2P1 23P1 34P1 45P1 56P1 67P1 78P0 039P0 138P0 237P0 336P0 435P0 534P0 633P0 732P2 021P2 122P2 223P2 324P2 425P2 526P2 627P2 728PSEN29ALE/P30TXD11R XD10GND20Vcc40STC8 9C 51/5289 C5 2R C10 ufVCC30 p30 p 12 MHZ+-B EEPS112电源插口VCCS1S2S3S4S5S6S7S810 KP3 0P3 1P3 2P3 3P3 4P3 5P3 6P3 7P3 0P3 1P3 2P3 3P3 4P3 5P3 6P3 7P1 410 K80 5090 50VccVccP1 430 图 2.4.1-1 AT89S52 模块电路原理图 2.9 键盘扫描模块电路原理图 对键盘扫描电路的扫描方式有行扫描法和线反转法,在此次程序编写中,采用行扫描法,通过在 p 20 p 23 上循环送出 0 扫描信号,p 24 p 27 输入按键上的高低电平信息给单片机,经处理 8 程序,判断出是哪个开关按下,并送主程序以实现不同功能。 图 2.4.2-1 键盘扫描模块电路原理图 2.10 音频处理模块电路原理图 由于单片机驱动能力不够,在处理音符信号时,需加功率放大装置,因 LM386 芯片具有低功耗、高增益的特点,这合适单片机低功耗输出,所以加装 LM386 音频信号放大器对信号 9 进行放大。 图 2.10 音频处理模块电路原理图 2.11 电源模块电路原理图 由于本次设计的芯片的工作电压都为 5V,为了排除因为电压不稳定或者不准确影响电路的工作和软件的调试,本次设计单独用 LM7805 设计了一个输出 5V 的电压的电路,如图3-11 所示,其中 J0 为一变压器插排接口,输出电压在 7.5V,为交流电压,经过整流桥进行整流,电容滤波,再经过 LM7805 稳压后,得到本次设计所需的 5V 直流电源。 10 图 2.4.5-1 电源模块电路原理图 3 系统软件设计 本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由 16 个音节组成的的键盘,用户可以根据乐谱在键盘上进行演奏,音乐发生器会根据用户的弹奏,通过扬声器将音乐播放出来。 3.1.1 音乐相关知识 乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用 C、D、E、F、G、A、B 表示的,这 7 个字母就是乐音的音名,它们一般依次唱成 DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。 音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。 一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐6 。 3.1.2 如何用单片机实现音乐的节拍 除了音符以外,节拍也是音乐的关键组成部分。 节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果 1/4 拍的延时是 0.4 秒,则 1 拍的延时是 1.6 秒,只要知道 1/4 拍的延时时间,其余的节拍延时时间 11 就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成7 。音乐的音拍,一个节拍为单位(C 调)具体如下表: 表 表 3.1.3 音乐节拍表 曲调值 DELAY 曲调值 DELAY 调 4/4 125ms 调 4/4 62ms 调 3/4 187ms 调 3/4 94ms 调 2/4 250ms 调 2/4 125ms 3.1.4 如何用单片机产生音频脉冲 了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。 在本实验中,单片机工作于 12MHZ 时钟频率,使用其定时/计数器 T0,工作模式为 1,改变计数值 TH0 和 TL0 可以产生不同频率的脉冲信号,在此情况下,C 调的各音符频率与计数值 T 的对照如下表: 表 表 3.1.5 音符频率与计数值 T 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 12 低 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%2568 3.1.6 系统总体功能流程图 13 图 3.1.6 主程序框图 N 定 时 器 初始 化 数 码管显示 0 主程序 开始 循环检测按键 Y 数码管显示 扬声器出声 14 K1 键 按下 K2 键 按下 K3 键 按下 K4 键 按下 K5 键 按下 K6 键 按下 K7 键 按下 3 数码管显示.,并播放 mi 的低数码管显示 4.,并播放 fa 的低数码管显示 5.,并播放 so 的低K8 键 按下 数码管显示 6.,并播放 la 的低数码管显示 7.,并播放 si 的低数码管显示 1,并播放 do 的中数码管显示 2,并播放 re 的中数码管显示 3,并播放 mi 的高 15 图 3.1.6 按键子程序流程图 K9 键按下 K10 键按下 K11 键按下 K12 键按下 K13 键按下 K14 键按下 K15 键按下 数码管显示 4 并播放 fa 的中音 数码管显示 5 并播放 so 的中音 数码管显示 6,并播放 la 的中K16 键按下 数码管显示 7,并播放 si 的中数码管显示 A,并播放 do 的高数码管显示 B,并播放 re 的高数码管显示 C,并播放 mi 的高数码管显示 D,并播放 fa 的高 16 4 电路仿真 S 4.1 ISIS 软件介绍 Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。 该软件的特点是: (1)实现了单片机仿真和 SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11 系列以及各种外围芯片。 (3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2 等软件。 (4)具有强大的原理图绘制功能。总之,该软件是一款集单片机和 SPICE 分析于一身的仿真软件,功能极其强大。本章介绍 Proteus ISIS 软件的工作环境和一些基本操作9 。 4.2 仿真图介绍 单片机:P0 口对应数码管编码输出端; P10 口做音乐信号输出端; P2 口做键盘扫描部分输入输出端。 键盘扫描:将 16 位开关通过矩阵连接,接出来四端接输入口(P0.4P0.7)用于键盘情况的输入,另外四端接输出口(P0.0P0.3)用于给键盘扫描信号。 数码管显示:在使用时一要接上拉电阻(这是有单片机 P0 口的物理特性决定的),二是要加限流电阻以使流进单片机的小于单片机所能承受的电流。 音乐处理:三极管将单片机 P1.0 口送过来的信号进行功率放大并送扬声器进行音乐的播出。 17 4.3 仿真图 图 4.3 仿真图 18 6 系统调试 电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。 6.1 软件仿真调试 软件仿真调试主要是针对单片机部分进行调试。 在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。 在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。 A、数码管 LED 电路调试:软件运行,随机按下按钮可以看到数码管显示数字; B、单片机键盘控制部分调试:软件运行,随机按动键盘可以发现各个按键对应的音正确。 6.2 软件调试 调试主要方法和技巧: 通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试10 。 7 调试结论 通过各方面努力,本次毕业设计任务完成,系统部分功能已实现。可以随意演奏一首喜欢的曲子,并可以显示在数码管上。基本达到预定的效果。毕业设计是专科学习阶段一次非常难得的理论与实践相结合的机会,通过这次系统的项目设计提高了我运用所学的专业基础知识来解决面临实际问题的能力,同时也提高了我查阅各种文献资料、设计手册、设计规范以及软件编程排版的水平。 19 附录 1 1 :元器件清单 名称 参数 数量 备注 排阻 8*470 2 RP1,RP2 插排 SIP2 3 J0,J1,J3 SIP8 2 J4,J5 键盘 直键开关 16 K1-K16 电容 CC1-3V-30pf 2 C21,C22 CL10-3V-0.0047u 1 C33 CC1-3V-0.1u 3 C12,C13,C31 CD11-6.3V-10u 1 C32 CD11-25V-470u 3 C11,C14,C23 电阻 RT-0.125-b-470 1 R32 RT-0.125-b-1K 2 R11,R21 RT-0.125-b-10K 1 R31 晶振 11.05926MHz 1 Y21 扬声器 驻极体电容式 1 数码管 DIP10 1 DPY 20 附录 2 2 :主要电路原理图 附录 3 3 :主要程序 BEEP BIT P3.7 ;定义蜂鸣器 BEEP 为 P3.7 ON_OFF BIT F0 ;定义按键标志位 ON_OFF 为 F0 SOUND_BUFF EQU 30H ;定义音符缓冲区 SOUND_BUFF 为 30H,用来存放按键号 SOUND_BAK EQU 31H ;定义音符备用缓冲区 SOUND_BAK 为 31H,用来备份按键号 ORG 0000H ;程序从 0000H 开始 AJMP MAIN ;跳转到主程序 MAIN ORG 0BH ;定时器 T0 中断入口地址 AJMP TIME0 ;跳转至定时器 T0 中断服务程序 ORG 030H ;主程序从 030H 开始 ;以下是主程序 MAIN: MOV SP,#5FH ;设置堆栈指针为 5FH MOV TMOD,#01H ;设定