基于单片机的电子琴设计_第1页
基于单片机的电子琴设计_第2页
基于单片机的电子琴设计_第3页
基于单片机的电子琴设计_第4页
基于单片机的电子琴设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子琴设计电子琴设计 摘要 摘要 本设计是用 AT89S52 单片机为核心控制元件 设计一个电子琴 以单片机作为主控核心 与键盘 扬声器 LED 显示器等模块组成核心主控制模块 在主控模块上设有 8 个按键 其中 7 个按键控制 7 个音 符 而 1 个作为功能转换键使用 具有手动随意弹奏和自动播放乐曲的功能 本系统运行稳定 其优点是 硬件电路简单 软件功能完善 控制系统可靠 性价比较高等 具有一定的实用和参考价值 关键词 关键词 AT89C52 单片机 LED 显示器 扬声器 1 8 矩阵键盘 7 个音符 自动播放乐曲 1 引言 电子琴是现代电子科技与音乐结合的产物 是一种新型的键盘乐器 目前市场上各种 品牌 型号的电子琴有上百种 由几十块的玩具电子琴到几百 几千的学习 演奏用琴真 是琳琅满目 电子琴能够模仿各种音色和具有自动伴奏功能 这些是电子琴最基本的特征 档次的高低无非是音色模仿的是否逼真 自动伴奏设计的是否丰富 或者增加了其他制作 编曲功能的 本设计主要对使用单片机设计简易电子琴进行了分析 并介绍了基于单片机电子琴系 统硬件组成 利用单片机产生不同频率来获得我们要求的 7 个音符 最终可随意弹奏想要 表达的音乐 并且本设计分别从原理图 主要芯片 各模块原理及各模块的程序的调试来 详细阐述 一首音乐是许多不同的音阶组成的 而每个音阶对应着不同的频率 这样我们就可以 利用不同的频率的组合 即可构成我们所想要的音乐了 当然对于单片机来产生不同的频 率非常方便 我们可以利用单片机的定时 计数器 T0 来产生这样方波频率信号 因此 我 们只要把一首歌曲的音阶对应频率关系弄正确即可 2 总体设计方案 2 1 设计思路 2 1 1 从系统实现的功能上来看 电子琴的设计主要分为手动弹奏乐曲和自动播放音乐两 大部分组成 手动弹奏乐曲是根据具体的硬件键盘设置了 7 个音符按键和 1 个功能转换键 自动播放音乐是在单片机的存储器中通过软件编程的方法放置音乐代码和相关播放程序来 实现 2 1 2 从系统硬件结构上来看 主要使用到 52 系列单片机 矩阵 1 8 键输入电路 LED 数码管显示电路 扬声器以及电源电路等等 将这些硬件电路有机地结合起来使之满足电 子琴设计的基本硬件要求 2 1 3 从系统软件设计角度来看 将电子琴的设计采用程序模块化设计方法 将程序分为 主程序 键盘扫描程序模块 数码显示模块 转换控制模块 音乐产生模块等等 此外 采用程序设计思想 将中断定时方式与外部按键查询方式相结合 实现手动弹奏乐曲到自 动播放音乐的切换 2 1 4 从音乐产生原理方面来看 通过控制单片机的定时器的定时时间产生不同频率的音 频脉冲 经放大后驱动扬声器发出不同音乐的声音 用软件延时来控制发音时间的长短 控制节拍 把音乐的音符和相应的节拍变换为定时常数和延时常数 作为数据表格存放在 程序存储器中 由程序查表得到定时常数和延时常数 分别用来控制定时器产生的脉冲频 率和发出音频脉冲的持续时间 因此 我们可以综合上述的不同角度的方案设计原理 主要从软件和硬件两部分进行有 计划有步骤的系统分析与设计 最终确立总体的设计方案 方案确立 1 手动弹奏乐曲和自动播放音乐用非编码的矩阵键盘来实现 其中包括数字键和功能 键 功能键主要是将手动弹奏模块转换到自动播放乐曲模块 手动弹奏乐曲中 7 个键分别 设置不同的 7 个音符 然后通过功能键可实现手动弹奏乐曲到播放乐曲之间的切换 2 一位 LED 数码管显示当前工作状态 将按下的键值送入显示 并一一对应各个音符 采用动态扫描输出 3 软件的设计主要包括矩形键盘键值的读取 LED 动态扫描输出程序 手动弹奏乐曲 程序和音乐自动播放程序 4 此次程序设计主要分为两大块 手动弹奏乐曲程序和自动播放程序 两者之间用功 能转换程序对其进行结合 并实现各种不同功能的控制 2 2 设计方框图 基于单片机系统的电子琴的基本结构如图 1 所示 1 8矩阵键盘 时钟电路AT89C52 扬声器 1位LED数码显示 器 复位电路 图 1 3 设计原理分析 3 1 演奏音乐原理 通过控制单片机定时器的定时时间产生不同频率的音频脉冲 经放大后驱动蜂鸣器发出 不同音节的声音 用软件延时来控制发音时间的长短 控制节拍 把乐谱的音符和相应的 节拍变换为定时常数和延时常数 作为数据表格存放在存储器中 由程序到定时常数和延 时常数 分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间 单片机晶振 频率为 12MHZ 时 乐曲中的音符 频率及定时常数之间的对应关系可制成表格 本次设计中 定时常数是有 16 定时器 T0 根据不同的音符 装入不同的初值实现延时的 而延时常数是在自动播放音乐部分使用 控制不同音符的节拍 其延时常数是通过 16 位定 时器 T1 实现的 根据设计要求给出的各音符频率 我们只需要的各音符频率与计数值 T 的关系如表 1 所示 表 1 C 调各音符频率与计数值 T 的关系 音符频率 Hz 半周期 ms 简谱码 T 值 定时值 H 简谱码 T 值 定时值 D 1 Do2621 90F894H62628 2 Re2941 70F95CH63835 3 Mi3301 51FA1AH64021 4 Fa3491 43FA6AH64103 5 So3921 28FB00H64260 6 La4401 14FB8CH64400 7 Si4941 01FC0EH64524 3 2 键盘扫描原理 先将 1 8 矩阵键盘的行 P2 0 和列 P1 口 全部置为高电平 然后再逐行置为低电 平 当有键按下时 P1 口的值会发生相应的改变 通过与给定数的比较 判定是否有键按下 和是否键已松开 并给定列号并保存 根据所给的列号的值 一方面通过 P0 口给 LED 送入 确定好的段码数值 从而相对应地在 LED 上显示音符数字 另一方面从 TABLE 表中取出相 应的值 给此时作为 16 位定时器的 T0 装入初值 不同的音符给 T0 装入的初值不同 即定 时器的定时时间将不相同 将产生不同频率的音频脉冲 转换成声音播出的频率也将不同 从而实现 7 个不同的音符 同时 通过示波器可查看 P3 7 的音频输出方波 3 3 硬件电路设计分析 因为 AT89CXX 系列与 MCS 51 系列单片机相比 有两大优势 第一 片内程序存储器采 用闪速存储器 使程序的写入更方便 第二 提供了更小尺寸的芯片 使整个硬件电路的 体积更小 它以较小的体积 良好的性能价格比倍受青睐 本次综合实验设计采用 89C52 单片机 3 3 1 按键模块的设计 如图 2 所示为 1 8 矩阵键盘模块 其行接 P2 0 口 其列逐一与 P1 口相接 图 2 因为不同的音符对应的频率是不同的 当按到不同的按键 发出的声音不一样 所以 其产生的方波频率信号也会不一样 如下列 7 个小图 对应着 7 个不同音符的方波频率 信号 图 1 Do 图 2 Re 图 3 Mi 图 4 Fa 图 5 So 图 6 La 图 7 Si 3 3 2LED 数码管显示模块的设计 如图 3 所示 为 LED 数码显示模块电路的设计部分 图 3 一位共阳数码管 本系统用单片机的 P0 口的 P0 0 P0 6 来控制 LED 显示器的数字显示 当有 7 个音符 按键 1 7 中有被按下 LED 数码管将对应显示出该音符的数字 从而可以通过手动和眼看 来确定所按的是哪个音符 应该发出哪个音符的声音 而最后一个功能转换键一旦被按下 程序将会调用倒计 3 秒子程序 LED 数码管将从 3 开始倒数到 0 紧接着进入自动播放音乐 子程序 播放程序中通过表格数据形式存放在 ROM 的音乐代码而形成的乐曲 3 3 3扬声器模块的设计 如图 4 所示为扬声器模块电路 图 4 扬声器模块电路 电磁式蜂鸣器由振荡器 电磁线圈 磁铁振动膜片及外壳等组成 接通电源后 振荡 器产生的音频信号电流通过电磁线圈 使电磁线圈产生磁场 振动膜片在电磁线圈和磁铁 的相互作用下 周期性地振动发声 本设计的蜂鸣器通过驱动电路与单片机的 P3 7 连接 单片机就可以通过 P3 7 的输出信号频率就行控制 令外 通过示波器接到 P3 7 可方便我 们观察波形 3 3 4复位和晶振等其他附属部分的电路设计 如图 5 所示 为复位和晶振等其他附属部分的电路 图 5 复位和晶振等其他附属部分的电路 XTAL1 XTAL2 分别是系统时钟信号 fosc的输入和输出端 晶振电路的设计可以两 个电容与一个晶振即可 用来产生一个约等于12MHZ 的稳定的频率 复位是单片机的初始化操作 其作用是使CPU 和系统中其他部件都处于一个确 定的初始状态 并从这个状态开始工作 本系统采用上电与按键复位电路 为了防止 干扰串扰复位端 所以再接一个去耦电容 4 实验数据 1 利用 AT89C52 的内部定时器 T0 使其工作在方式 1 的定时方式下 改变计数值 TH0 及 TL0 以产生不同频率的方法产生不同音符 计数脉冲值与频率的关系式是 N fi 2 fr 式中 N 是计数值 fi 是机器频率 晶体振荡器为 12MHz 时 其频率为 1MHz fr 是想要 产生的频率 其计数初值 T 的求法如下 T 65536 N 65536 fi 2 fr 实验中的 K 65536 fi 1MHz 根据设计要求中给出的音阶频率表 可求出各自的计 数初值 T 65536 N 65536 fi 2 fr 65536 1000000 2 fr 65536 500000 fr 因此 可以通过计算求得各音阶的简谱码 T 值如下 1 Do 的 T 65536 500000 262 1 63628 2 Re 的 T 65536 500000 293 7 63836 3 Mi 的 T 65536 500000 329 6 64021 4 Fa 的 T 65536 500000 349 2 64104 5 So 的 T 65536 500000 392 0 64261 6 La 的 T 65536 500000 440 0 64400 7 Si 的 T 65536 500000 493 9 64524 相应求得在要发出不同音符时先给定时器 T0 装入的初值如下表 音阶1 Do2 Re3 Mi4 Fa5 So6 La7 Si 频率 HZ 261 1293 7329 6349 2392 0440 0493 9 初值 63628638366402164104642616440064524 2 因为实验中用到的 LED 数码显示管是共阳极的 所以 0 7 八个数字的段码分别为 数字 01234567 段码 40H79H24H30H19H12H02H78H 5 结束语 在这一周里 一有空余时间都把时间花在本次实验 其过程很艰苦 有时候做到深夜 但收获是颇多 一开始拿到题目 关于不同频率的音符 我就知道肯定需要用到定时中断 来实现 可是自己学习的进度很慢 大多数时间都是自学 不过后来用大量时间去细看每 一章节 做起实验来就容易多了 本次设计性实验让我无论是在硬件还是软件方面都有了 很大的提高 同时也增强了自己的信心和对学习的兴趣 这些也是老师严格要求我们做好 每一个实验的好处 参考文献 1 潘永雄 新编单片机原理与应用 第二版 西安电子科技大学出版社 2007 2 杨欣 51 单片机应用从零开始 清华大学出版社 2008 3 彭伟 单片机 C 语言程序设计实训 100 例 基于 8051 proteus 仿真 电子工业出版社 2010 附录 1 总体电路图 附录 2 程序流程图设计 开始 定定时时器器初初始始化化 开开中中 断断 工工作作方方式式的的设设定定 将PI和P2置1 进入键 盘扫描 是否有键按下 否 是否功能转换键 被按下 是 倒数3秒 进入自动播放 音乐子程序 不停给定 时器T1装初值控制节 拍 播放音乐 是 给定时器T0装初值 发出相对应的音符 否 结束 附录 3 源程序代码 KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H SPKEQU P3 7 发声器所在端口 ORG 0000H LJMP START ORG 000BH LJMP INT T0 定时器 0 放置弹奏乐曲程序 ORG 001BH LJMP TIME0 START MOV TMOD 11H 设置定时器的工作方式 定时器 T0 和 T1 都是方式 1 作为 16 为定时计数器使用 定时方式 SETB ET0 开各中断开关 SETB ET1 SETB EA 开放中断总允许和源允许 ACALL SAOMIAO 进入手动弹奏程序 SJMP START 手动弹奏程序 SAOMIAO MOV P2 0FFH 手动弹奏程序 MOV P1 0FFH 先将键盘的行和列全部置为高电平 然后再逐 行置为低电平 CLR P2 0 MOV A P1 XRL A 0FFH CJNE A 00H NEQ 判断有没键按下 LJMP NOKEYS 没有按键按下即跳转到 NOKEYS NEQ 有按键按下即跳到 NEQ LCALL DELY10MS 延时 10ms MOV A P1 消除扰动和干扰 XRL A 0FFH CJNE A 00H NEQ1 LJMP NOKEYS NEQ1 MOV A P1 判断是否按下 0 键 CJNE A 0FEH NK1 按下 0 键即顺序执行程序 否则跳到 NK1 检查下一键 位 MOV KEYBUF 0 保存列号 0 MOV P0 79H 让 LED 显示为 1 LJMP DK1 NK1 CJNE A 0FDH NK2 判断是否按下 1 键 MOV KEYBUF 1 保存列号 1 MOV P0 24H 让 LED 显示为 2 LJMP DK1 NK2 CJNE A 0FBH NK3 判断是否按下 2 键 MOV KEYBUF 2 保存列号 2 MOV P0 30H 让 LED 显示为 3 LJMP DK1 NK3 CJNE A 0F7H NK4 判断是否按下 3 键 MOV KEYBUF 3 保存列号 3 MOV P0 19H 让 LED 显示为 4 LJMP DK1 NK4 CJNE A 0EFH NK5 判断是否按下 4 键 MOV KEYBUF 4 保存列号 4 MOV P0 12H 让 LED 显示为 5 LJMP DK1 NK5 CJNE A 0DFH NK6 判断是否按下 5 键 MOV KEYBUF 5 保存列号 5 MOV P0 02H 让 LED 显示为 6 LJMP DK1 NK6 CJNE A 0BFH NK7 判断是否按下 6 键 MOV KEYBUF 6 保存列号 6 MOV P0 78H 让 LED 显示为 7 LJMP DK1 NK7 CJNE A 7FH NK8 NK8 LJMP CHOICE DK1 MOV A KEYBUF MOV B 2 MUL AB 对应读取表格 TABLE1 的数据 MOV TEMP A MOV DPTR TABLE1 MOVC A A DPTR MOV STH0 A MOV TH0 A INC TEMP MOV A TEMP MOVC A A DPTR MOV STL0 A MOV TL0 A SETB TR0 开启定时器 T0 T0 开始计数 DK1A MOV A P1 XRL A 0FFH JNZ DK1A MOV A P2 ANl A 0f0H MOV P2 A CLR TR0 NOKEYS RET 功能转换程序 CHOICE MOV P2 0FFH 功能转换程序 MOV P1 0FFH CLR P2 0 MOV A P1 CJNE A 7FH NEXT1111 按下了 P1 7 键后 顺序执行 否则则跳转到 NEXT1111 NEXT111 MOV P2 0FFH MOV P1 0FFH CLR P2 0 MOV A P1 XRL A 0FFH JNZ NEXT111 如果 A 不为 0 即按键有变化 继续循环 ACALL DISPLAY 如果按键没变化 即调用 DISPLAY MOV SP 60H MOV DPTR TABLE ACALL MUSIC NEXT1111 LJMP SAOMIAO 自动播放音乐程序 MUSIC MOV 21H 00H MOV P2 0FFH MOV P1 0FFH CLR P2 0 MOV A P1 JNB ACC 7 AA1 SETB 21H 7 AA1 MOV P2 0FFH MOV P1 0FFH CLR P2 0 MOV A P1 XRL A 0FFH JNZ AA1 JNB 21H 7 NEXT1111 CLR A MOVC A A DPTR MOV R1 A INC DPTR CLR A MOVC A A DPTR MOV R0 A ORL A R1 JZ NEXT1 MOV A R0 ANL A R1 CJNE A 0FFH NEXT SJMP MUSIC NEXT MOV TH1 R1 MOV TL1 R0 SETB TR1 SJMP NEXT2 NEXT1 CLR TR1 NEXT2 CLR A INC DPTR MOVC A A DPTR MOV R2 A LOOP1 ACALL DELAY DJNZ R2 LOOP1 INC DPTR SJMP MUSIC REP12 CLR TR1 RET TIME0 MOV TH1 R1 MOV TL1 R0 CPL P3 7 RETI DEL1S MOV R5 30 D1 MOV R6 100 D2 MOV R7 80 DJNZ R7 DJNZ R6 D2 DJNZ R5 D1 RET DEL NOP DEL3 MOV R4 02H DEL4 NOP DJNZ R4 DEL4 NOP DJNZ R3 DEL3 RET NOP 延时 10ms 子程序 DELY10MS MOV R6 10 D3 MOV R7 248 DJNZ R7 DJNZ R6 D3 RET T0 中断服务子程序 INT T0 MOV TH0 STH0 MOV TL0 STL0 CPL P3 7 RETI 倒计 3 秒进入自动播放音乐子程序 DISPLAY MOV DPTR table0 MOV R0 0 LOOP10 MOV A R0 MOVC A A DPTR MOV P0 A CLR P2 0 LCALL DELAY0 INC R0 CJNE R0 4 LOOP10 RET 数码显示 DISPLAY9 DISPLAY9 MOV DPTR table8 数码管显示数字 MOV R0 0 LOOP15 MOV A R0 MOVC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论