资源简介 (共18张PPT)第七模块 单片机综合应用项目实训项目15 数码电子钟设计项目16 简易电子琴设计项目15 数码电子钟设计任务7-15 设计独立式键盘调时的数码电子钟任务7-15 设计独立式键盘调时的数码电子钟一、独立键盘扫描程序对于应用多个独立按键进行控制的单片机程序,为了便于集中控制,常常将多个独立按键看作一个整体性的由独立按键构成的独立键盘,通常独立键盘中的独立按键数是四个。如图所示为一种常用的独立键盘扫描接口电路。CPU按程序编写的指令顺序执行程序,通常情况下执行到键盘扫描子程序时,才开始键盘扫描。也就是说,只有在CPU空闲时才能去扫描键盘。这常常导致因为按键时CPU忙而按键无效。为了克服这一缺陷,提高按键的灵敏度与有效性,就必须在足够短的时间里对键盘进行定期重复扫描。通常的做法是将键盘扫描子程序放置在定时器中断服务程序中,搭载定时器中断服务程序运行键盘扫描子程序,以保证很好地实现按键控制功能。任务7-15 设计独立式键盘调时的数码电子钟一、独立键盘扫描程序是否有键按下的判断方法如下:先将4个独立按键的接口P1口的高4位(P1.4~P1.7)均置高电平“1”(P1=0xf0)。此时如果有某一按键按下,则按键连接的相应位会被强制出“0”。然后再读取这4位的电平,就会有一位不为“1”,P1口的状态将不再为“0xf0”,说明有键按下。用C语言的编程语句可表示如下:P1=0xf0;// P1=1111 0000B,P1.4~P1.7均置高电平1if((P1&0xf0)!= 0xf0);//条件判断 :P1跟0xf0(1111 0000B)按位“与”运算后的结果是否为0xf0任务7-15 设计独立式键盘调时的数码电子钟一、独立键盘扫描程序上述条件语句中的表达式,在无键按下时为“假”,不需进行键盘扫描,结束本次键盘扫描子程序的运行;上述条件语句中的表达式,在有键按下时为“真”,需要继续进行键盘扫描检测,确认到底是哪一个按键被按下。上述条件语句中的表达式为“真”时,说明有键被按下,在继续进行键盘扫描检测前,为防止按键抖动的干扰,需要接着进行软件消抖。软件消抖之后就要进行按键(键值)的确认。按键确认可采用逐位扫描的方法。任务7-15 设计独立式键盘调时的数码电子钟一、独立键盘扫描程序综上所述,独立键盘扫描程序可用如下结构表达:/******************************************************************键盘扫描函数********************************************************************/void key_scan(void){P1=0xf0; // P1=1111 0000B,P1.4~P1.7均置高电平1if((P1&0xf0)!= 0xf0); //条件判断 :P1跟0xf0(1111 0000B)按位“与”运算后的结果是否为0xf0{delay (); //软件消抖,延时后再检测if((P1&0xf0)!=0xf0) //确认有键按下,以下进行键盘扫描{if(SA==0) //如果是SA键按下keyval=1; //设置按键值(也可以是直接的控制语句)if(SB==0) //如果是SB键按下keyval=2; //设置按键值(也可以是直接的控制语句) if(SC==0) //如果是SC键按下keyval=3; //设置按键值(也可以是直接的控制语句) if(SD==0) //如果是SD键按下keyval=4; //设置按键值(也可以是直接的控制语句)}}}二、硬件电路设计三、软件程序设计任务7-15 设计独立式键盘调时的数码电子钟项目16 简易电子琴设计任务7-16 设计简易电子琴任务7-16 设计简易电子琴一、矩阵键盘工作原理1. 接口电路在键盘应用中按键的数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。如图所示为矩阵键盘接口电路。任务7-16 设计简易电子琴一、矩阵键盘工作原理对于图中由16个按键组成的矩阵键盘,采用4×4矩阵方式连接。在4根行线和4根列线的交叉点处设置16个键位。4根行线接P1口的低4位I/O口线,4根列线接P1口的高4位I/O口线,共需8根I/O口线。这种接法只用了一个I/O口的8根I/O口线,就能控制16个按键,其I/O口的利用效率是独立按键键盘的两倍,有效节省了I/O口资源。任务7-16 设计简易电子琴二、电子琴设计说明电子琴设计的关键是让每个按键对应于发出一个特定的音调。因此,首先要给4×4矩阵键盘上的16个按键分配要发出的音符。1.音符在矩阵键盘上的排列分布设计在后面的示例程序中,音符的在矩阵键盘上的排列分布如图所示。2.键盘编码为了让单片机认识每一个按键,需要对S1~S16这16个按键进行编码,给每一个按键分配一个按键值。这样在键盘扫描程序扫描到有按键被按下时,单片机能够根据按键值控制蜂鸣器发出事先规定的音调。为简便起见,将S1~S16这16个按键的按键值依次规定为1~16。3.音符的音调频率与节拍4.键盘扫描控制键盘扫描控制由4×4矩阵键盘扫描程序实现。矩阵键盘扫描程序的反复运行由定时器T1的中断控制。5.音频播放控制音频播放由音频输出函数控制定时器T0实现,音频方波由定时器T0的中断控制产生。任务7-16 设计简易电子琴一、矩阵键盘工作原理2.工作原理使用矩阵键盘的关键在于如何判断键值。根据矩阵键盘接口电路分析,如果已知P1.0引脚置为低电平“0”,那么当S1键被按下时,可以肯定P1.4引脚的信号必定变成低电平“0”。反之,如果预先将P1.0引脚置为低电平“0”,将P1.1引脚、P1.2引脚、P1.3引脚置为高电平“1”,而单片机扫描到P1.4引脚为低电平“0”,则可以肯定S1键被按下。任务7-16 设计简易电子琴一、矩阵键盘工作原理单片机识别按键的基本过程如下:(1)首先判断是否有键被按下将全部行线(P1.0引脚、P1.1引脚、P1.2引脚、P1.3引脚)均置低电平“0”,将全部列线(P1.4引脚、P1.5引脚、P1.6引脚、P1.7引脚)均置高电平“1”,然后检测列线状态。(2)其次做按键消抖处理(3)最后做按键识别当确认键盘中有键被按下时,转入逐行扫描的方法来确定到底是哪一个键被按下。任务7-16 设计简易电子琴二、电子琴设计说明电子琴设计的关键是让每个按键对应于发出一个特定的音调。因此,首先要给4×4矩阵键盘上的16个按键分配要发出的音符。1.音符在矩阵键盘上的排列分布设计在后面的示例程序中,音符的在矩阵键盘上的排列分布如图所示。2.键盘编码为了让单片机认识每一个按键,需要对S1~S16这16个按键进行编码,给每一个按键分配一个按键值。这样在键盘扫描程序扫描到有按键被按下时,单片机能够根据按键值控制蜂鸣器发出事先规定的音调。为简便起见,将S1~S16这16个按键的按键值依次规定为1~16。任务7-16 设计简易电子琴二、电子琴设计说明3.音符的音调频率与节拍4.键盘扫描控制键盘扫描控制由4×4矩阵键盘扫描程序实现。矩阵键盘扫描程序的反复运行由定时器T1的中断控制。5.音频播放控制音频播放由音频输出函数控制定时器T0实现,音频方波由定时器T0的中断控制产生。三、硬件电路设计四、软件程序设计任务7-16 设计简易电子琴 展开更多...... 收起↑ 资源预览