1、摘 要随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演 着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的 生活中,成为不可替代的一部分。本文的主要内容是用AT89C51 单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主 控模块上设有8 个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善, 控制系统
2、可靠,性价比较高,具有一定的实用和参考价值。关键词:AT89C51 单片机;数码管;电子琴目 录1 系统方案设计11.1 设计指标11.2 系统方案综述11.3 系统设计思路12 硬件设计22.1 电路图22.2 单片机 AT89C51 简介22.3 单片机的工作过程42.4 键盘电路52.5 显示电路52.6 声音电路73 系统软件设计73.1 延时程序设计93.2 定时器初始化及其中断函数93.3 示例音乐播放程序103.4 单独按键中断处理函数104 实验结果与分析104.1 Proteus 软件简介104.2 仿真调试125 设计心得136 参考文献14附录15附录 A 元件清单、器件
3、识别与检测15附录 B 程序源代码161 系统方案设计1.1 设计指标 设计一个简易的八音符电子琴,它可通过按键输入来控制音响。 演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存曲目,并且在演奏完已存曲目后可自动复位。1.2 系统方案综述从系统实现的功能上来看, 电子琴的设计主要利用所给键盘的1,2,3,4,5,6,7,8 八个键,能够发出八个不同的音调,并且要求按下按键发声, 松开延时一段时间停止,中间再按别的键再发出另外一种音调的声音。从系统硬件结构上来看,我们主要使用到 AT89C51 单片机,复位电路以及开关等。将这些硬件电路有机的结合起来使之满足电子琴的实现硬件需要。从音乐产生
4、的原理方面来看,通过控制单片机的定时器的定时时间产生不同频率的音频脉冲,经放大驱动发出不同音乐的声音。用软件延时来控制发音时间的长短。把音乐的音符和相应的节拍变换为定时常数和延时常数,分别来控制定时器产生的脉冲频率和发出该音频脉冲持续时间。因此,我们可以综合上述方案设计原理,从软件和硬件两部分进行有计划有步骤的分析和设计。1.3 系统设计思路当系统扫描到键盘上有键被按下,则快速检测是哪一个键被按下,然后单片机的定时器被启动,发出一定频率的脉冲,该频率的脉冲输入到蜂鸣器后,就会发出相应的音调,如果在前一个按下的键发声的同时有另一个键被按下,则启动中断系统,前面键的发音停止,转到后按得键的发音程序
5、,发出后按的键的音调。这样,设计一个时钟方式的电路来产生 11.0592MHZ 的振荡频率产生时钟脉冲, 一个按键电平复位电路对 AT89C51 单片机进行复位,8 个开关分别从 P2.0,P2.1, P2.2,P2.3,P2.4,P2.5,P2.6,P2.7 输出,用于产生八个不同频率的音,一个扬声器电路,从 P3.2 连接一个开关播放已存曲目,从 P3.3 与扬声器之间连接21一个上拉电阻和三极管,驱动扬声器响应,以此来设计硬件电路。总体框图如图1-1 所示。数码管键盘矩阵扬声器1-1 总体框图2 硬件设计2.1 电路图硬件电路图如图 2-1 所示。图 2-1 电路图2.2 单片机 AT8
6、9C51 简介AT89C51 是 51 系列单片机的一个型号,它是 STC 公司生产的。AT89C51 是一个低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器(RAM),器件采用STC 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,功能强大的 STC89C51 单片机可提供许多较复杂系统控制应用场合。AT89C51 有 40 个引脚,32 个外部双向输入/输出(I/O) 端口,同时内含 2 个外中断口,3 个 16
7、 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线,STC89C51 可以按照常规方法进行编程,但不可以在线编程(S 系列的才支持在线编程)。其将通用的微处理器和 Flash 存储器结合在一起, 特别是可反复擦写的 Flash 存储器可有效地降低开发成本 AT89C51 有 PDIP、PQFP/TQFP 及 PLCC 等三种封装形式,以适应不同产品的需求 。其封装及引脚图如图 2-2。图 2-2单片机外封装及单片机引脚图AT89C51 具体介绍如下: 主 电 源 引 脚 (2 根 ) VCC(Pin40):电源输入,接5V 电源GND(Pin20):接地线 外 接 晶 振 引 脚 (
8、2 根 ) XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端控制引脚(4 根)RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。ALE/PROG(Pin30): 地 址 锁 存 允 许 信 号 PSEN(Pin29): 外 部 存 储 器 读 选 通 信 号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32 根)AT89C52 单片机有 4 组 8 位的可编程 I/O 口,分别为 P0、P1、P2、P3 口, 每个
9、口有 8 位(8 根引脚),共 32 根。P0 口(Pin39Pin32):8 位双向 I/O 口线,名称为 P0.0P0.7。P1 口(Pin1Pin8):8 位准双向 I/O 口线,名称为 P1.0P1.7。 P2 口(Pin21Pin28):8 位准双向 I/O 口线,名称为 P2.0P2.7。P3 口(Pin10Pin17):8 位准双向 I/O 口线,名称为 P3.0P3.7。2.3 单片机的工作过程 单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定
10、的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件 存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址, 就可以找到这个存
11、储单元,其中存储的指令就可以被取出,然后再被执行。程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在 CPU 中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC 在中的内容就会自动增加,增加量由本条指令长度决定,可能是 1、2 或 3,以指向下一条指令的起始地址,保证指令顺序执行。单片机最小应用系统如 2-3 所示。图 2-3 单片机最小应用系统2.4 键盘电路用 AT89C51 的并行口 P1 接键盘,在数码管上显示
12、每个按键的对应的音符号。如图 2-4。图 2-4 单片机与键盘的连线图本实验还用到单独的一个按键用于控制播放音乐。该键与单片机的 P3.2 口连接可见主电路图单片机电子琴硬件连接图。2.5 显示电路8 段 LED 数码管是利用 8 个 LED(发光二极管)外加一个小数点的LED 组合而成的显 示设备,可以显示 09 等 10 个数字和小数点,使用非常广泛。这类数码管可以分为共阳极与共阴极两种,共阳极就是把所有 LED 的阳极连接到VCC共同接点com,而每个LED 的阴极分别为 a、b、c、d、e、f、g 及 dp(小数点);共阴极则是把所有LED 的阴极连接到共同接点com,而每个 LED
13、的阳极分别为a、b、c、d、e、f、g 及 dp(小数点),如下图所示。图中的 8 个LED 分别与上面那个图中的ADP 各段相对应,通过控制各个 LED 的亮灭来显示数字,如图2-5 所示。图 2-5 数码管共阳极与共阴极原理图选用单片机的 P0 口 P0.0 到 P0.7 分别接在 LED 端的adp 上来控制 LED 各个段码灯的控制,来实现数字,例如要显示低音符3,只需将共阴极的数码管的a、b、e、f 接高电平即可显示“c”共阳极的对应的接低电平。这里我们选用共阳极的 LED 数码管,对于中音音符 3,则需要将数码管的b、c、d、e、g 置于低电平。数码管就会显示“3”。具体可参考数码
14、管相关的书籍。LED 数码管与单片机连接图如图 2-6 所示。32图 2-6单片机与数码管连接图2.6 声音电路喇叭在数字电路中的应用,可以通过不断的给喇叭通断电,使其产生声音, 且通电断电时间的间隔不同其声音的音色就不同,所以通过控制通断时间就可以控制不同的音阶产生。 这里我们选用单片机的 P1.0 口来控制喇叭的通断电。一首音乐是由许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器 T1 来产生这样方波频率信号,因此,我们只需将不同的音阶对应不同频率的中断
15、即可。单片机与喇叭接线图如图 2-7 所示。图 2-7 单片机电子琴放音控制系统3 系统软件设计一首乐曲是由多个音符构成的。每一个音符都对应着一个确定的频率。另外, 每一个音符根据乐曲的要求和设定一个确定的节拍。声音的产生就是是单片机产生一定的延时,所以延时不同,生成的音乐就不同。我们利用定时器计数的方式产生延时的效果,就可以将歌曲中每一个音符所对应的音率换算成相应的计数初值。然后,将这首乐曲所有音符的计数初值编成一个表,并把每一个音符的计数初值。然后,将这首乐曲所有音符的计数初值编成一个表,并把每一个音符的计数初值与一个确定的数字码来联系。这个数组码为简谱码。这里我们选用播放的歌曲为祝你平安和八月桂花遍地开。软件设计流程图如图 3-1 所示。开始初始化N有键按下Y延时N再次重新扫描确认有键按下Y
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1