没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入输出端口。(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用AT89S51的并行口P1接4×4矩阵键盘,P10-P13作输入线,P14以以-P17作输出线;在数码管上显示每个按键的“0-F”序号。总体电路具体原理如下:
3
f单片机课程设计电子琴
3系统硬件设计
31系统硬件总体设计
本系统由键盘矩阵、LED显示管、扬声器这几个部分组成,LED显示管显示当前按键,扬声器发出对应音符。硬件总体设计图如下:
4
f单片机课程设计电子琴
子系统(模块)32子系统(模块)一
LED显示模块如图22所示,利用AT89S51单片机的P0端口的P00-P07连接到一个七段数码管的a-h的笔段上,数码管的公共端接电源。矩阵扫描显示当前按键模块如下:
子系统(模块)33子系统(模块)二
矩阵扫描扬声器发出对应音符模块如下:
子系统(模块)34子系统(模块)三
矩阵键盘模块图如下:
5
f单片机课程设计电子琴
4系统软件设计
41系统软件总体设计
本系统的软件流程图如下:
42子系统一
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,
6
f单片机课程设计电子琴
根据各管的极管的接线形式,可分成共阴极型和共阳极型。LED数码管的ga七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码。本系统按键显示模块软件流程图如下:
43子系统二
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片r