课程设计报告
基于单片机的简易电子琴设计
姓
学
班
名:
号:
级: 测控 1501 班
专 业 名 称: 测控技术与仪器
2017 年 12 月
i
课程设计报告
课程设计(论文)任务书
课程设计(论文)题目:基于单片机的简易电子琴设计
基本内容和设计要求:
用矩阵键盘代表琴键,至少能弹出 8 个音符,分别是:音符 1,2,3,4,5,6,7,1 。
键按下的时间长短表征节拍的长短。
用蜂鸣器发出声音。
点阵实时动态显示音符高低(自由显示)。
ii
课程设计报告
目录
目录
课程设计(论文)任务书................................................................................................ii
摘要....................................................................................................................................1
第 1 章 绪论......................................................................................................................2
1.1 基于单片机的电子琴简介..................................................................................2
1.2 设计主要内容......................................................................................................2
1.2.1 硬件设计部分..........................................................................................2
1.2.2 软件设计部分..........................................................................................2
第 2 章 系统硬件设计......................................................................................................2
2.1 硬件组成..............................................................................................................2
2.2 按键模块..............................................................................................................3
2.3 发声模块..............................................................................................................3
2.4 显示模块..............................................................................................................4
第 3 章 系统软件设计......................................................................................................5
3.1 主程序.................................................................................................................5
3.1.1 主程序框图及初始化...............................................................................5
3.1.2 按键扫描模块...........................................................................................5
3.1.3 声音产生模块...........................................................................................6
3.1.4 LED 点阵产生模块.................................................................................. 7
3.2 中断服务程序.....................................................................................................8
第 4 章 调试测试与实验分析..........................................................................................9
4.1 按键发声模块的调试.........................................................................................9
4.2 LED 点阵显示模块的调试................................................................................. 9
参考文献..........................................................................................................................10
心得体会.......................................................................................................................... 11
附录一 硬件原理图........................................................................................................12
附录二 程序清单............................................................................................................13
附录三 实物照片............................................................................................................24
3
课程设计报告
第 1 章 绪论
摘要
随着电子技术的蓬勃发展及其在各个领域中的渗透,电子音乐作为一种新的音乐形
式渐渐被人们接纳和追捧。其中比较有代表性的电子音乐——电子琴,也已经被音乐爱
好者广为喜爱。
电子琴经过上百年的发展,其设计生产技术已经趋于成熟。目前针对儿童玩具的微
型电子琴研究具有广阔的市场前景,这种微型电子琴由于成本低、功能强,深受广大人
们的喜爱,是初学电子琴的首选。国内对微型电子琴的研究已经很多,其设计思路和方
式也是多种多样,主要是利用单片机、PLC 技术等来产生声源和控制音阶。本系统采用
单片机 STC89C52 为电子琴的控制核心,系统主要包括电源模块、最小系统模块、播放
模块、矩阵按键控制模块和 LED 点阵模块。电源模块通过电脑为单片机提供直流五伏
电源。最小系统模块包括晶振部分和复位电路部分,晶振为单片机的心脏部分,为单片
机提供驱动。播放模块主要包括蜂鸣器和三极管,三极管作为放大器作用。本设计的特
点就是采用单片机控制定时/计数器 T0 从而产生方波频率信号,各个频率信号分别对应
不同的音阶,分别由对应的按键控制;音阶是通过单片机产生不同频率来获取的,从而
随意弹奏音乐。
本文以 89C52 单片机[1]最小系统为核心,通过 4*4 矩阵式键盘模拟 16 个琴键,采
用定时/计数器 T0 产生一定频率的方波信号驱动蜂鸣器发声,并通过 8*8 的 LED 点阵
实时动态显示弹出音符的简谱。
关键词:89C52,电子琴,4*4 矩阵式键盘,8*8LED 点阵
-1-
课程设计报告
第 1 章 绪论
第 1 章 绪论
1.1 基于单片机的电子琴简介
基于单片机的电子琴[2]是一种用单片机来模拟电子琴发声和简谱显示的装置,能够
实现电子琴的简单功能,对电子技术中硬件设计和软件编程都能起到一定的训练作用。
1.2 设计主要内容
本设计要实现通过 16 个按键驱动蜂鸣器发出 16 个音,并通过 LED 点阵屏动态显
示音符的简谱。本设计包含硬件设计和软件设计两大部分。
1.2.1 硬件设计部分
硬件部分主要包括按键模块、发声模块和显示模块三个部分。其中按键模块采用 4*4
的矩阵式键盘,发生部件选择蜂鸣器,显示模块选用 8*8 的 LED 点阵屏。
1.2.2 软件设计部分
软件部分主要包括键盘的扫描、声音的产生、简谱的显示三个部分。键盘和简谱显
示均采取行列扫描的方式,编程原理大致相同;声音的产生是通过定时/计数器 T0 来实
现,通过查询简谱码设定计数初值,并通过在 T0 计数溢出中断子程序中对 P3.6 取反来
实现方波输出,驱动蜂鸣器发声。
第 2 章 系统硬件设计
2.1 硬件组成
硬件以 89C52 单片机为核心,外部扩展 4*4 矩阵式键盘来模拟 16 个按键,用蜂鸣
器来发声,外部扩展 8*8LED 点阵来动态显示音符的简谱。
基本硬件结构图如图 2.1 所示。
-2-
课程设计报告
2.2 按键模块
第 2 章 系统硬件设计
图 2.1 电子琴基本硬件结构图
本设计需要 16 个按键,为了简单方便和节省 I/O 口,本设计直接用开发板上的 4*4
的非自锁的矩阵式键盘。查询开发板的原理图可知,P2.0~P2.4 用于行扫描,P2.4~P2.7
用于列扫描。按键模块的电路图如图 2.2 所示:
2.3 发声模块
图 2.2 按键模块电路图
本设计用蜂鸣器来发声,查询开发板的原理图可知,蜂鸣器与 P3.6 相接,电路图
如图 2.3 所示:
图 2.3 发声模块电路图
-3-
S
1
S
W
-
P
B
S
2
S
W
-
P
B
S
3
S
W
-
P
B
S
4
S
W
-
P
B
S
5
S
W
-
P
B
S
9
S
W
-
P
B
S
1
3
S
W
-
P
B
S
1
4
S
W
-
P
B
S
1
5
S
W
-
P
B
S
1
6
S
W
-
P
B
V
C
C
S
6
S
W
-
P
B
S
7
S
W
-
P
B
S
8
S
W
-
P
B
S
1
0
S
W
-
P
B
S
1
1
S
W
-
P
B
S
1
2
S
W
-
P
B
P
2
.
0
P
2
.
1
P
2
.
2
P
2
.
3
P
2
.
4
P
2
.
5
P
2
.
6
P
2
.
7
5
.
1
K
R
1
R
e
s
2
5
.
1
K
R
2
R
e
s
2
5
.
1
K
R
3
R
e
s
2
5
.
1
K
R
4
R
e
s
2
B
U
Z
Z
E
R
S
p
e
a
k
e
r
4
.
7
K
R
6
R
e
s
2
Q
?
P
N
P
V
C
C
P
3
.
6
课程设计报告
2.4 显示模块
第 2 章 系统硬件设计
本设计用 8*8LED 点阵屏[3]来实时动态显示声音的简谱,同样采取行列扫描的方式。
点阵屏的 8 个行引脚则直接与单片机的 P0 口相连;而点阵屏的 8 个列引脚则直接
与单片机的 P1 口相连即可。
显示模块的电路图如图 2.4 所示:
图 2.4 显示模块电路图
-4-
1
P
1
.
0
2
P
1
.
1
3
P
1
.
2
4
P
1
.
3
5
P
1
.
4
6
P
1
.
5
7
P
1
.
6
8
P
1
.
7
A
P
0
.
0
B
P
0
.
1
C
P
0
.
2
D
P
0
.
3
E
P
0
.
4
F
P
0
.
5
G
P
0
.
6
H
P
0
.
7
8
*
8
L
E
D
点
阵
*
C
o
m
p
o
n
e
n
t
_
3
课程设计报告
第 3 章 系统软件设计
第 3 章 系统软件设计
3.1 主程序
3.1.1 主程序框图及初始化
主程序框图如图 3.1 所示
3.1.2 按键扫描模块
图 3.1 主程序框图
采取行列扫描的方式,先判断是否有键按下,再判断是哪个键按下,并对键进行编
码。按键扫描的流程图如图 3.2:
-5-