回回 顾顾 n独立键盘的检测:独立键盘的检测:Ø按键状态的扫描;按键状态的扫描;Ø软件消抖及松手检测;软件消抖及松手检测;Ø按键按下的处理按键按下的处理1教学内容教学内容 n矩阵矩阵键盘的结构键盘的结构n矩阵矩阵键盘键盘的检测方法的检测方法n矩阵键盘的编程操控及功能处理矩阵键盘的编程操控及功能处理2教学要求教学要求 n掌握独立键盘的检测原理及软件编程方法掌握独立键盘的检测原理及软件编程方法Ø行扫描法行扫描法Ø线反转法线反转法3矩阵键盘的结构矩阵键盘的结构n矩阵键盘实际上是矩阵键盘实际上是由排列成矩阵形式由排列成矩阵形式的一系列按键开关的一系列按键开关组成,用户通过键组成,用户通过键盘可以向盘可以向CPUCPU输入数输入数据、地址和命令据、地址和命令常见的接口电路如常见的接口电路如右图所示右图所示4*4矩矩阵阵式式键盘键盘4矩阵键盘的结构矩阵键盘的结构n矩阵键盘特点矩阵键盘特点Ø电路结构复杂,但提高了电路结构复杂,但提高了I/OI/O引脚的利用率,软件编程引脚的利用率,软件编程较复杂,适用于所需按键较多的场合较复杂,适用于所需按键较多的场合n矩阵键盘的检测需解决以下问题:矩阵键盘的检测需解决以下问题:Ø1 1、开关状态的可靠输入、开关状态的可靠输入————可设计硬件去抖动电路或可设计硬件去抖动电路或设计去抖动软件。
设计去抖动软件Ø2 2、键盘检测的方法(即如何编写键盘扫描函数)键盘检测的方法(即如何编写键盘扫描函数)Ø3 3、键盘检测的控制方式、键盘检测的控制方式( (即扫描函数如何被调用即扫描函数如何被调用)——)——顺序查询方式、定时查询方式和中断方式顺序查询方式、定时查询方式和中断方式Ø4 4、键盘控制程序的编写键盘控制程序的编写5按键的消抖按键的消抖n按键抖动时间约按键抖动时间约5ms-10ms5ms-10ms,可软,可软件消抖或者硬件消抖件消抖或者硬件消抖n软件消抖软件消抖:延时约:延时约10ms10ms再次判断再次判断n硬件消抖硬件消抖:并联电容或双稳态消:并联电容或双稳态消抖电路消抖消抖电电路路6矩阵键盘的检测方法矩阵键盘的检测方法n矩阵键盘识别按键的方法有两种:一是矩阵键盘识别按键的方法有两种:一是行扫描法行扫描法,,二是二是线反转法线反转法n1)1)行扫描法行扫描法Ø通过行线发出低电平信号,如果该行线所连接的键没有通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所接的端口得到的是全按下的话,则列线所接的端口得到的是全““1”1”信号,如信号,如果有键按下的话,则得到非全果有键按下的话,则得到非全““1”1”信号。
信号 Ø为了防止双键或多键同时按下,往往从第为了防止双键或多键同时按下,往往从第0 0行一直扫描到行一直扫描到最后最后1 1行,若只发现行,若只发现1 1个闭合键,则为有效键,否则全部个闭合键,则为有效键,否则全部作废Ø找到闭合键后,读入相应的键值,再转至相应的键处理找到闭合键后,读入相应的键值,再转至相应的键处理程序Ø键号键号 = = 行首键号(行首键号(0 0、、4 4、、8 8、、1212))+ +列号(列号(0 0、、1 1、、2 2、、3 3))7矩阵键盘的检测方法矩阵键盘的检测方法8矩阵键盘的检测方法矩阵键盘的检测方法n2)2)线反转法线反转法Ø先将行线作为输出线,列线作为输入线,行线输出先将行线作为输出线,列线作为输入线,行线输出全全““0”0”信号,读入列线的值;信号,读入列线的值;Ø然后将行线和列线的输入输出关系互换,并且将刚然后将行线和列线的输入输出关系互换,并且将刚才读到的列线值从列线所接的端口输出,再读取行才读到的列线值从列线所接的端口输出,再读取行线的输入值那么在闭合键所在的行线上值必为线的输入值那么在闭合键所在的行线上值必为0 0这样,当一个键被按下时,必定可读到一对唯一的这样,当一个键被按下时,必定可读到一对唯一的行列值。
行列值Ø键值键值 = = 行值行值 | | 列值列值 查表得键号查表得键号9矩阵键盘的检测方法矩阵键盘的检测方法n以以4*44*4矩阵键盘接矩阵键盘接P3P3口为例口为例Ø先列扫描置先列扫描置P3=0xf0,P3=0xf0,当有键按下得列值,再行扫当有键按下得列值,再行扫描置描置P3=0x0f,P3=0x0f,当有键按下得行值,最后合并行列当有键按下得行值,最后合并行列值得键值值得键值10矩阵键盘检测的控制方式矩阵键盘检测的控制方式n单片机在运行过程中,何时进行键盘扫描和处理,单片机在运行过程中,何时进行键盘扫描和处理,有以下几种方式:有以下几种方式:Ø顺序查询方式顺序查询方式Ø定时扫描方式定时扫描方式Ø中断方式中断方式11矩阵键盘检测的控制方式矩阵键盘检测的控制方式n顺序查询方式顺序查询方式Ø单片机主程序通过调用键盘扫描子程序,查询有单片机主程序通过调用键盘扫描子程序,查询有无按键按下无按键按下Ø何时调用键盘扫描子程序,何时扫描键盘;否则何时调用键盘扫描子程序,何时扫描键盘;否则不进行键盘的扫描不进行键盘的扫描12矩阵键盘检测的控制方式矩阵键盘检测的控制方式n定时扫描方式定时扫描方式Ø每隔一段时间调用键盘扫描子程序对键盘扫描每隔一段时间调用键盘扫描子程序对键盘扫描一次。
一次Ø利用单片机内部的定时器产生一定时间(例利用单片机内部的定时器产生一定时间(例10ms10ms)的定时,当定时时间到就产生定时器溢)的定时,当定时时间到就产生定时器溢出中断CPUCPU响应中断后对键盘进行扫描,并响应中断后对键盘进行扫描,并在有键按下时识别出该键,再执行该键的功能在有键按下时识别出该键,再执行该键的功能程序13矩阵键盘检测的控制方式矩阵键盘检测的控制方式n中断方式中断方式Ø为提高为提高CPUCPU工作效率,可工作效率,可采用中断扫描工作方式采用中断扫描工作方式其工作过程如下:当无键其工作过程如下:当无键按下时,按下时,CPUCPU处理自己的处理自己的工作,当有键按下时,产工作,当有键按下时,产生中断请求,生中断请求,CPUCPU转去执转去执行键盘扫描子程序,并识行键盘扫描子程序,并识别键号14矩阵键盘案例(矩阵键盘案例(1))--线反转法线反转法n矩阵键盘控制矩阵键盘控制2 2位数码管显示,分别按下位数码管显示,分别按下0-150-15号按号按键,数码管显示对应的键号,最初无键按下时数码键,数码管显示对应的键号,最初无键按下时数码管显示管显示1616,用线反转法实现。
用线反转法实现n参考程序见参考程序见““矩阵键盘矩阵键盘- -线反转法线反转法””15矩阵键盘案例(矩阵键盘案例(1))--线反转法线反转法16矩阵键盘案例(矩阵键盘案例(2))--行扫描法行扫描法+定时扫定时扫描描n矩阵键盘控制矩阵键盘控制2 2位数码管显示,分别按下位数码管显示,分别按下0-150-15号按号按键,数码管显示对应的键号,最初无键按下时数码键,数码管显示对应的键号,最初无键按下时数码管显示管显示1616,用行扫描法,用行扫描法+ +定时扫描实现定时扫描实现n参考程序见参考程序见““矩阵键盘矩阵键盘- -行扫描法行扫描法+ +定时扫描定时扫描””17矩阵键盘案例(矩阵键盘案例(2))--行扫描法行扫描法+定时扫定时扫描描18小小 结结n矩阵键盘的检测:矩阵键盘的检测:Ø按键的识别:行扫描法、线反转法;按键的识别:行扫描法、线反转法;Ø软件消抖及松手检测;软件消抖及松手检测;Ø按键按下的处理按键按下的处理19n中断式矩阵键盘如何与单片机连接电路?中断式矩阵键盘如何与单片机连接电路?思考题思考题20预习内容预习内容n本周小课本周小课Ø行扫描法的原理是什么?键值如何得到?行扫描法的原理是什么?键值如何得到?Ø线反转法的原理是什么?键值如何得到?线反转法的原理是什么?键值如何得到?n下周大课下周大课Ø串行通信基础知识串行通信基础知识Ø80C5180C51串口结构及其工作方式串口结构及其工作方式0 021。