《第七章 电子密码锁控制系统培训资料》由会员分享,可在线阅读,更多相关《第七章 电子密码锁控制系统培训资料(36页珍藏版)》请在金锄头文库上搜索。
1、,第七章 电子密码锁控制系统,课程目标、课程重点及难点,课程目标: 了解微机控制系统键盘的构建及工作原理;认识微机控制系统的键盘设计,掌握单片机键盘的应用。 课程重点及难点 独立式键盘及其接口电路;矩阵式键盘及其接口电路;按键扫描驱动程序的设计。,7.1电子密码锁控制系统任务分析,一、 电子密码锁实物图:,三、硬件控制线路,7.1电子密码锁控制系统任务分析,7.1电子密码锁控制系统,7.1电子密码锁控制系统,四、项目所需元器件 (1)实验控制板。 (2)4个共阳极LED数码管、11个按钮。 (3)继电器、电动小马达、三极管、喇叭等 (4)晶振12M,启振电容30pf2个,复位电容22uf,电阻
2、若干。 五、项目所涉及的知识内容 (1)键盘的构成、扫描及编码。 (2)键盘的编程。,7.1电子密码锁控制系统,7.2 键盘及其接口电路,一、键盘的基本概念 键盘是一组开关的集合,是最常用的输入设备之一。组成键盘的按键有触点式和非触点式两种。 触点式按键通常是机械触点开关,它利用了机械触点的通、断特性完成信息的输入。 非触点式按钮主要指利用电子器件的通、断来完成信息的输入,如工作在开关状态的三极管、电力电子器件IGBT等。 在单片机控制系统中常用触点式开关来组成键盘。,7.2 键盘及其接口电路,在实际键盘接口设计时,必须考虑以下一些问题: 按键开关的消抖问题 重键 连击 (1)按键开关的抖动问
3、题 由于按键的结构为机械弹性开关,因此按键从最初按下到接触稳定需数毫秒的弹跳时间,这样的抖动时间一般在510ms,松开键时也有同样的问题。,7.2 键盘及其接口电路,键盘消抖动的方法有两种。 硬件消抖动:利用双稳态电 路、单稳态电路及RC积分电 路去抖。 软件消抖动:利用延时子程 序来完成,既在第一次检测 到按下按键后,经过一定抖 动时间后再次检测按键是否 按下,从而消除抖动的影响。,延时的选择非常重要,太快了,起不到消除抖动的效果,太慢了又让键盘太不灵活,错过的按键信号,7.2 键盘及其接口电路,(2)重键:是指无意同时或先后按下两个以上的键。 (3)连击:是指一次按键产生多次击键的结果。
4、通常在单片机应用系统中,对于重键或连击现象,也多利用软件来进行控制,如采取单键按下有效、多个键按下无效,并且在某个键被按下时,CPU等待此键释放的过程中不响应其它按键等策略来解决。,7.2 键盘及其接口电路,二、键盘的结构方式 键盘有两种基本类型:编码键盘和非编码键盘。 编码键盘采用硬件线路来产生键码,每按下一个键,键盘 能自动生成按键代码。 非编码键盘是靠软件来识别键盘上的闭合键,并由软件编 成来确定按键代码。非编码键盘具有结构简单、价格便宜 等特点,因此在单片机系统中普遍采用非编码键盘。 非编码键盘按结构方式划分,有独立式键盘和矩阵式键盘 两大类。,7.2 键盘及其接口电路,1、独立式键盘
5、及其接口 独立式键盘,是一种最简单的键盘构成方法,它将每个按键的一端接到单片机的I/O口,另一端接地,如图所示。 主要特点是各个键相互独立,每一个按键对应一根输入口线。键盘软件结构简单,但当键盘数目较多时,需占用大量的输入口线,所以在使用上受到了很大的限制。,7.2 键盘及其接口电路,独立式键盘接口原理图 矩阵式键盘接口原理图,7.2 键盘及其接口电路,2、矩阵式键盘及其接口 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接,如图所示。这样,一个端口(如P1口)就可以构成4*4=16个按键
6、,比独立式键盘多出了一倍,而且线数越多,区别越明显,如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一个键(9键)。,7.2 键盘及其接口电路,(1)矩阵式键盘的按键识别方法 逐行扫描法: 扫描法是一种逐行或逐列判断是否有键按下的方法。扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。利用行扫描法判断矩阵键盘中被按下的键时主要经过以下步骤: 第一步,识别有无键按下 让所有的行线均置为0电平,即P1.4P1.7均输出低电平,读取列线P1.0P1.3的值,若P1.0P1.3均为高电平,则表示无键按下;若不全为高电平,则表示有键按下。,7.2 键盘及其接口电路,第二步,若
7、有键被按下,识别出具体的按键 方法是采用逐行扫描的办法,即逐行置零电平,检查各列线的电平。如首先置第一行为0,其余行为1,也就是让P1.4P1.7输出0111,读取列线P1.0P1.3的值;若不全为1,则根据读取的列值即可判断出按键在第一行第几列上,从而识别出按键的位置;若全为1,表示第一行无键按下,那么就再置第二行为0,其余行为1,即P1.4P1.7输出1011,再读取列值,根据列值结果,判断第二行上有无键被按下,依此类推,识别出按键的键值。,7.2 键盘及其接口电路,扫描法在判断键值时,是采用的逐行扫描法,当被按下的键在最后一行时,需经多次扫描才能获得被按下键所在的行、列值。 反线法: 反
8、线法的特点是无论被按下的键处于第一行或最后一行,均只需经过两步便能获得此按键所在的行列值。,7.2 键盘及其接口电路,其操作步骤如下: 第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平由高到低所在行为按键所在行。 第二步:同第一步完全相反,将行线编程为输出线,列线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在列为按键所在列。 综合一二两步的结果,可确定按键所在行和列,从而识别 出所按的键。,7.2 键盘及其接口电路,假设3号键被按下,那么第一步即在P1.0P1.3输出全0,然后,读入P1.4P1.7位,结果P1.4=0,而P1.5、P1.6
9、和P1.7均为1,因此,第一行出现电平的变化,说明第一行有键按下;,第二步让P1.4P1.7输出全0,然后,读入P1.0P1.3位,结果P1.0=0,而P1.1、P1.2和P1.3均为1,因此第4列出现电平的变化,说明第4列有键按下,从而可以得知按键在第一行第四列,即3号键被按下,如图所示。,7.2 键盘及其接口电路,(2)键盘的编码 对于矩阵式键盘,按键的位置由行号和列号确定,所以分别对行号和列号进行二进制编码,然后将两值合成一个字节,高4位是行号,低4位是列号,非常直观 。如:3号键的编码11100111,写成十六进制为E7H。 无论以何种方式编码,均应以处理问题方便为原则。按键所处的位置
10、(即行号和列号)是各种编码之间相互转换的基础。,7.3 键盘程序设计,一、键盘扫描程序的工作方式 键盘扫描程序的工作方式通常有三种,即编程扫描、定时扫描和中断扫描。 编程扫描:采用程序不断扫描控制方式。当进入键扫描状态,就反复地扫描键盘,等待用户从键盘上输入命令或数据,在执行键入命令或处理键入数据过程中,CPU将不再响应键入要求,直到CPU返回重新扫描键盘为止。,7.3 键盘程序设计,定时扫描:利用单片机内部的定时器产生定时中断来进行键盘的扫描,当有键按下时,识别出该键的键值并执行相应的键功能程序。 中断扫描:当有键被按下时,键盘接口电路就向CPU申请中断,若CPU响应中断,就执行判键程序得到
11、键值,从而去执行相应的键功能程序。,7.3 键盘程序设计,二、键盘扫描程序 1、逐行扫描法,7.3 键盘程序设计,#include reg51.h #define uchar unsigned char; #define uint unsigned int; void dlms (void); uchar kbscan(void); /* 函数说明 */ void main (void) uchar key; while (1) key=kbscan(); /*调键扫描函数,返回键码送key保存*/ dlms(); ,7.3 键盘程序设计,void dlms (void) /* 延时 */ u
12、char i; for (i=200;i0;i- -); uchar kbscan (void) /* 键盘扫描函数,逐行扫描 */ uchar sccode, recode; P1=0 xf0; /* P1.0P1.3放全0, P1.4P1.7输入 */ if(P1 /* P1.0P1.3放全0, P1.4P1.7输入 */ if(P1 P1=0 xf0; while(P1= =0 xf0); if(P1 while(sccode if(P1,7.3 键盘程序设计,case 0 xBB:x=9;break; case 0 xE7:x=10;break; case 0 xB7:x=11;break; else sccode=(sccode1)|0 x01; return(x); ,