电子琴论文 - 图文

发布时间 : 星期四 文章电子琴论文 - 图文更新完毕开始阅读

开始 模块初始化 发送扫描码 否

有键按下 是

扫描键盘矩阵

显示按键

启动定时器

延时

结束

图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连接到一个七段数码管上,数码管的公共端接地。

矩阵扫描显示当前按键模块如下:

图3-4 数码管模块图

3.2.3 扬声器模块

音乐播放和弹奏是在P3.7引脚上输出方波周期信号,产生音乐。 矩阵扫描扬声器发出对应音符模块如下:

图3-5 扬声器模块图

联系合同范文客服:xxxxx#qq.com(#替换为@)