值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线),而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能,在本程序中,当程序检测到有键按下时,将查表使按键值与预存数据表中数据对应,并调用发声程序。Р图2.1 矩阵键盘的连接Р2.2.2 扬声器接口电路部分Р仿真中的扬声器一段接CPU的P2^4口,另一端接高电平。当P2^4口有电平变化时,扬声器被驱动发声。而在实物制作中,这样是难以实现功能的,需要增加模拟电路以除去多余的干扰信号。也可选用集成芯片LM386作为扬声器的驱动芯片。若使用LM386驱动扬声器,通过相应的模拟电路的设计,还可以实现音量的调节。不过,在平时做实物时,我们一般用一个三极管作为放大器,这次我采用的是8050Р图2.2扬声器接口电路Р3 软件设计Р本设计使用Protues仿真软件进行仿真,在程序设计部分,包括键盘扫描程序,音乐发声程序。程序见附录1。Р4*4矩阵键盘是由CPU控制I/O口来实现扫描的。具体程序见附录二主程序键盘扫描部分。键盘扫描程序流程图如图2.4。Р程序首先给P3口赋值,然后读取P3的状态,将读取的状态值同所赋值相比较,如果二者不相同,则说明有键按下,子程序将按键值返回主程序;否则,说明没有键按下,程序继续进行下一次扫描。Р本系统的软件流程图如下Р图 2.3 系统主程序流程Р键盘扫描程序流程图Р图 2.4键盘扫描程序流程图Р音乐发声程序Р图 2.5音乐发声程序流程图Р4 Proteus软件仿真Р仿真电路图