第二章 系统设计
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置低电平,然后检测列线的状态,只要有一列
的电平为低,就表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。再判断闭合键所在的位置,依次将行线置为低电平时,再逐行检测各列线的电平状态,若某列为低电平,则该列线与置为低电平的行线交叉处的按键为闭合。若所有的列线均为高电平,则无按键按下。
键盘接口必须具有的4个基本功能
(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关。所谓抖动是指在识别被按键是必顺避开抖动状态,只有处在稳定接通或稳定断开的状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。
(2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。
(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可能过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本回想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭全键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为些需要提供两个可编程的双向输入/输出端口。
(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内在区中建立一个键盘编码表,通过查表获得被按键的键码。
3.2.2 数码管模块
共阴极数码管在应用时将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮,这样来显示字符。
LED显示模块如图3-4所示,利用AT89S52单片机的P2端口的P2.0-P2.6连接到一个七段数码管上,数码管的公共端接地。
矩阵扫描显示当前按键模块如下: