1.2课题主要研究的内容
本课题主要研究基于单片机的电子琴设计,以AT89S52芯片作为主要核心部件,4*4的矩阵键盘作为输入部分,数码管显示字符,扬声器作为主要输出设备,结合KEIL和PROTUES等软件的功能,通过编译程序结合仿真,实现电子琴内置音乐的播放和弹奏音乐的功能,同时通过两个LED灯的亮灭表示当时弹奏或播放的状态,数码管显示按键的16个字符“0—9,A—F”来表示当前所按下的键。
第二章 系统设计
2.1系统设计要求
本系统分为两个部分,音乐播放和音乐的弹奏。
1、 要求达到电子琴的基本功能,可以用弹奏出简单的乐曲。 2、 用键盘作出电子琴的按键,每个键代表一个音符。
3、 各音符按一定的顺序排列,必须符合电子琴的按键排列顺序。 4、 固定音乐播放有按键控制:“播放”、“弹奏/停止”。
5、 弹奏电子琴时能播放出准确的声音,不弹奏时可以播放内置音乐。
2.2系统框图
单片机因体积小、功能强、价格低而得到诪泛应用。本系统只要以51单片机为主控核心,扩展一组矩阵键盘、扬声器、LED显示管模块和一组发光二极管来指示电子琴的工作状态一起组合而成。 具体如下图2-1:
4*4矩阵键 AT89S52 单片机 数码管显示 发光二极管 喇叭
图2-1 电子琴的框图
用P0口的高四位和P0口的低四位作4*4矩阵式按键的接口,用P2口作数码管的接口,用P3.7
作信号输出口。
第三章 系统硬件设计
3.1系统硬件总体设计
本系统由键盘矩阵、LED显示管、扬声器这几个部分组成,LED显示管显示当前按键,扬声器发出对应音符。
硬件总体设计图如图3-1:
图3-1利用PROTEUS仿真设计的硬件电路图
3.2 系统的工作原理
本系统扫描键盘矩阵、显示按键、扬声器发出对应音符。
用AT89S52的并行口P0接4×4矩阵键盘,以P0.0-P0.3作输入线,以P0.4-P0.7作输出线;在数码管上显示每个按键的“0-F”序号。 总体电路具体原理如下:
开始 模块初始化 发送扫描码 否
有键按下 是
扫描键盘矩阵
显示按键
启动定时器
延时
结束
图3-2 系统工作原理图
停止播放
3.2.1 矩阵键盘模块
R2PULLUPR3PULLUPR4PULLUPR5PULLUPa3R6R7PULLUPPULLUPa2a0a1a2a3a4a5a6a7a1R8R9a7a6a5a4PULLUPa0PULLUP 图3-3 矩阵键盘模块图
如图3-3:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P0口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一个键。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,没有键按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。 矩阵式键盘的按键识别方法
确定矩阵式键盘上何键被按下,介绍一种“行扫描法”。 行扫描法又称逐行扫描查询法,是一种最常用的按键识别方法。
判断键盘中有无键按下,,将全部行线a0-a3置低电平,然后检测列线的状态,只要有一列