没有合适的资源?快使用搜索试试~ 我知道了~
单片机简易电子琴.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 40 浏览量
2021-11-07
09:24:31
上传
评论
收藏 1.67MB PDF 举报
温馨提示
试读
22页
单片机简易电子琴.pdf
资源推荐
资源详情
资源评论
第 1 页 共 22 页
基于 AT89C52单片机的多音阶电子琴设计
一、 概述
单片机(单片微型计算机) 是大规模集成电路技术发展的产物, 具有高性能、
高速度、体积小、价格低廉、稳定可靠等特点。单片机的应用相当广泛,从平常
的家用电器到航空航天系统和国防军事、 尖端武器都能找到它的身影。 因此,单
片机的开发应用已成为高科技和工程领域的一项重大课题。
随着社会的发展进步, 音乐已经成为了我们生活中很重要的一部分。 电子琴
则是一种很常见的键盘乐器, 是现代电子科技与音乐结合的产物, 在现代音乐中
扮演着重要的角色。 单片机具有强大的控制功能和灵活的编程实现特性, 早已溶
入现代人们的日常生活中,成为不可替代的一部分。本文的主要内容是用
AT89C52单片机为核心控制元件,设计一个简易电子琴。 。
二、 方案论证
2.1 系统基本组成
本系统以 AT80C52为主控核心,与键盘、喇叭等模块组成核心主控制模块,
在主控模块上设有 16 个按键和喇叭。一首音乐是许多不同的音阶组成的,而每
个音阶对应着不同的频率, 这样我们就可以利用不同的频率的组合, 即可构成一
些简单的音乐。
2.2 系统基本原理
声音的频率范围约是几十到几千赫兹, 若能利用程序来控制单片机某个口线
不断地输出高低电平, 则在改口线上就能产生一定频率的方波, 将该方波接上喇
叭就能发出一定频率的声音。 本系统就是按此原理设计, 对于 AT80C52而言要产
生一定频率的方波一般是先将某口线输出高电平,延迟一段时间后再输出低电
平。通过改变延迟时间可以改变单片机的输出频率。 单片机的延时主要有两种方
式,即软件延时和使用定时 / 计数器延时。其中软件延时不是很精确,而电子琴
电路由于每个音符的频率值要求比较严格,因此我们选用定时 /计数器延时。
单片机产生的音频脉冲信号没有足够的驱动能力, 因此要在扬声器前加一放
大电路,保证扬声器能产生所要实现的音符 .
第 2 页 共 22 页
图 2-1 系统结构原理图
三、 软件设计
本软件设计关键是要实现一种由单片机控制的简单音乐发生器,它由 16 个
音节组成的的键盘, 用户可以根据乐谱在键盘上进行演奏, 音乐发生器会根据用
户的弹奏,通过喇叭将音乐播放出来。
3.1 行列式键盘识别
为了降低成本采用非编码键盘。 非编码键盘: 键盘只简单地提供按键开关的
行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。
键盘接口必须具有去抖动、防串键、按键识别和键码产生 4 个基本功能。
(1)去抖动 : 每个按键在按下或松开时,都会产生短时间的抖动。抖动的持
续时间与键的质量相关,一般为 5—20mm。所谓抖动是指在识别被按键是必须避
开抖动状态, 只有处在稳定接通或稳定断开状态才能保证识别正确无误。 去抖问
题可通过软件延时或硬件电路解决。
(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有
新的按键按下时产生的问题。 常用的方法有双键锁定和 N键轮回两种方法。 双键
锁定,是当有两个或两个以上的按键按下时, 只把最后释放的键当作有效键并产
生相应的键码。 N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺
序依次产生相应键的键码。
AT89C52
单片机
音频放大电路
键盘电路
扬声器
复位电路
晶振电路
电源电路
第 3 页 共 22 页
(3)被按键识别: 如何识别被按键是接口解决的主要问题, 一般可通过软硬
结合的方法完成。 常用的方法有行扫描法和线反转法两种。 行扫描法的基本思想
是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需
要设置入口、 输出口一个, 该方法在微机系统中被广泛使用。 线反转法的基本思
想是通过行列颠倒两次扫描来识别闭合键, 为此需要提供两个可编程的双向输入
/ 输出端口。
(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存
区中建立一个键盘编码表,通过查表获得被按键的键码。
TABLE:
列 行 1 2 3 4
1
低3 低4 低5 低6
2
低7 中1 中2 中3
3
中4 中5 中6 中7
4 高1 高2 高3 高4
表3-1各个按键对应的音调
3.2 音乐发生
3.2.1 音乐相关知识
乐音听起来有的高, 有的低, 这就叫音高, 音高是由发音物体振动频率的高
低决定的,频率高声音就高,频率低声音就低,不同音商的乐音是用 C、D、E、
F、G、A、B 表示的,这 7 个字母就是乐音的音名,它们一般依次唱成 DO、RE、
MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。
音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。
一首音乐是由许多不同的音符组成的, 而每个音符对应着不同的频率, 这样
就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。
3.2.2 如何用单片机实现音乐的频率
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样
我们就可以利用不同的频率的组合, 即可构成我们所想要的音乐了, 当然对于单
片机来产生不同的频率非常方便, 我们可以利用单片机的定时 / 计数器 T0 来产生
这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
第 4 页 共 22 页
利用定时器计时半周期时间,每当计时终止后就将 P1.0 反相,然后重复计时再
反相。就可在 P1.0 引脚上得到此频率的脉冲。
我们要为音符建立一个表格, 单片机通过查表的方式来获得相应的数据。 根
据所建表我们可以给 4*4 键盘每个按键赋予音阶对应的频率 。单片机 12MHZ晶
振,高中低音符与计数 T0 相关的计数值如表 3-1 所示
表 4-1 频率表
音符 频率( 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
表 4-2 曲调
曲调值 DELAY 曲调值 DELAY
调 4/4
125ms
调 4/4
62ms
调 3/4 187ms 调 3/4 94ms
调 2/4 250ms 调 2/4 125ms
对于不同的曲调我们也可以用单片机的另外一个定时 / 计数器来完成。在这
个程序中用到了两个定时 /计数器来完成的。其中 T0 用来产生音符频率, T1 用
来产生音拍。
第 5 页 共 22 页
T0中断入口
重装 TH0 ,TL0 初值
P1.0取反
中断返回
图 5-1 音乐发声程序框图
3.3 系统总体功能流程图
该程序设计思路比较清晰既从开始到声明变量与函数再到读取按钮开关, 判
断是否按下,然后就是一个一个按钮的动作。其主程序流程图如下:
开始
T0 初始化并开中断允许 T0 中断
按键按下功成否?
识别按键功能
根据按键功能,将音符 T 值装入到 T0 中
启动 T0 工作
按键释放成功否?
停止 T0 工作
图 5-2 主程序流程图
按键子程序流程图如下
剩余21页未读,继续阅读
资源评论
HBXTWLT
- 粉丝: 0
- 资源: 5万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 筷手引流工具.apk
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功