第七章 电子密码锁控制系统培训资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

G ND
V CC R3 1K
K1
90 13
M
G ND
V CC R4 1K
R5 1K R6 1K R7 1K
LE D1
1 a D PY
2b
a
3 4
c d
f
g
b
5
ee
c
6
f
d
7 g [L ED gn]
LE D2
1 a D PY
2b
a
3 4
c d
f
g
b
5 ee
c
6f
d
7 g [L ED gn]
V Hale Waihona Puke BaiduC R 8 1K
/*调键扫描函数,返回键码送key保存*/
7.3 键盘程序设计
void dlms (void) {
uchar i for (i=200;i>0;i- -); }
/* 延时 */
uchar kbscan (void)
/* 键盘扫描函数,逐行扫描 */

uchar sccode, recode
P1=0xf0;
输出线输出为全零电平,则行线中电平由高到低所在 行为按键所在行。 第二步:同第一步完全相反,将行线编程为输出线,列线 编程为输入线,并使输出线输出为全零电平,则列线 中电平由高到低所在列为按键所在列。 综合一二两步的结果,可确定按键所在行和列,从而识别 出所按的键。
7.2 键盘及其接口电路
假设3号键被按下,那么第一步 即在P1.0~P1.3输出全0,然后, 读入P1.4~P1.7位,结果P1.4=0, 而 P1.5 、 P1.6 和 P1.7 均 为 1 , 因 此 , 第一行出现电平的变化,说明 第一行有键按下;
7.2 键盘及其接口电路
在实际键盘接口设计时,必须考虑以下一些问题: 按键开关的消抖问题 重键 连击
(1)按键开关的抖动问题 由于按键的结构为机械弹性开关,因此按键从最初按下 到接触稳定需数毫秒的弹跳时间,这样的抖动时间一般 在5~10ms,松开键时也有同样的问题。
7.2 键盘及其接口电路
键盘消抖动的方法有两种。
7.3 键盘程序设计
2、反线法
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(); dlms(); } }
7.2 键盘及其接口电路
第二步,若有键被按下,识别出具体的按键 方法是采用逐行扫描的办法,即逐行置零电平,检查各列
线的电平。如首先置第一行为0,其余行为1,也就是让 P1.4~P1.7输出0111,读取列线P1.0~P1.3的值;若不全为1, 则根据读取的列值即可判断出按键在第一行第几列上,从 而识别出按键的位置;若全为1,表示第一行无键按下, 那么就再置第二行为0,其余行为1,即P1.4~P1.7输出1011, 再读取列值,根据列值结果,判断第二行上有无键被按下, 依此类推,识别出按键的键值。
7.2 键盘及其接口电路
独立式键盘接口原理图
矩阵式键盘接口原理图
7.2 键盘及其接口电路
2、矩阵式键盘及其接口 在键盘中按键数量较多时,为了减少I/O口的占用,通常 将按键排列成矩阵形式。 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接 连通,而是通过一个按键加以连接,如图所示。这样, 一个端口(如P1口)就可以构成4*4=16个按键,比独立 式键盘多出了一倍,而且线数越多,区别越明显,如再 多加一条线就可以构成20键的键盘,而直接用端口线则 只能多出一个键(9键)。
7.3 键盘程序设计
一、键盘扫描程序的工作方式 键盘扫描程序的工作方式通常有三种,即编程扫描、定 时扫描和中断扫描。 编程扫描:采用程序不断扫描控制方式。当进入键扫描 状态,就反复地扫描键盘,等待用户从键盘上输入命令 或数据,在执行键入命令或处理键入数据过程中,CPU将 不再响应键入要求,直到CPU返回重新扫描键盘为止。
/* P1.0~P1.3放全0, P1.4~P1.7输入 */
if((P1 & 0xf0)!=0xf0)
/* 如P1口高四位不全为1有键按下 */

dlms ( );
/* 延时去抖动 */
if ((P1 & 0xf0)!=0xf0)
/*再读输入值,P1口高四位不全为1*/

P1=0xf0;
/*行输出全为0*/
/*低四位保留,作为列值*/
return (sccode+recode); /* 行码+列值=键编码返回主程序*/
else sccode=(sccode<<1)| 0x01; /* 如该行无键按下,查下一行*/
/*行扫描值 左移一位 */
} } return(0); }
/* 无键按下,返回值为0 */
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(); dlms(); } }
2
3
7.1电子密码锁控制系统任务分析
三、硬件控制线路
V CC
C1
G ND
22 uf R1 1K
98 C2 05 1
V CC
R2
1K G ND
C1 30 uF
C2 30 uF
12 M Hz
R ST V CC P3 .0 P1 .7 P3 .1 P1 .6 X TA L2 P1 .5 X AT L1 P1 .4 P3 .2 P1 .3 P3 .3 P1 .2 P3 .4 P1 .1 P3 .5 P1 .0 EN D P3 .7
7.2 键盘及其接口电路
(1)矩阵式键盘的按键识别方法 逐行扫描法: 扫描法是一种逐行或逐列判断是否有键按下的方法。扫描 法又称为逐行(或列)扫描查询法,是一种最常用的按键 识别方法。利用行扫描法判断矩阵键盘中被按下的键时主 要经过以下步骤: 第一步,识别有无键按下 让所有的行线均置为0电平,即P1.4~P1.7均输出低电平, 读取列线P1.0~P1.3的值,若P1.0~P1.3均为高电平,则 表示无键按下;若不全为高电平,则表示有键按下。
第二步让P1.4~P1.7输出全0,然后,读入P1.0~P1.3位,结 果P1.0=0,而P1.1、P1.2和P1.3均为1,因此第4列出现电平的 变化,说明第4列有键按下,从而可以得知按键在第一行 第四列,即3号键被按下,如图所示。
7.2 键盘及其接口电路
(2)键盘的编码 对于矩阵式键盘,按键的位置由行号和列号确定,所以 分别对行号和列号进行二进制编码,然后将两值合成一 个字节,高4位是行号,低4位是列号,非常直观 。如: 3号键的编码11100111,写成十六进制为E7H。 无论以何种方式编码,均应以处理问题方便为原则。按 键所处的位置(即行号和列号)是各种编码之间相互转 换的基础。
二、键盘的结构方式
键盘有两种基本类型:编码键盘和非编码键盘。 编码键盘采用硬件线路来产生键码,每按下一个键,键盘 能自动生成按键代码。 非编码键盘是靠软件来识别键盘上的闭合键,并由软件编 成来确定按键代码。非编码键盘具有结构简单、价格便宜 等特点,因此在单片机系统中普遍采用非编码键盘。 非编码键盘按结构方式划分,有独立式键盘和矩阵式键盘 两大类。
R 9 1K
R 10 1K
1
2
3
4
5
6
7
8
9
0
E
4
LE D3
1 a D PY
2b
a
3 4
c d
f
g
b
5 ee
c
6f
d
7 g [L ED gn]
V CC R 11 1K
90 13
G ND
7.1电子密码锁控制系统
7.1电子密码锁控制系统
7.1电子密码锁控制系统
四、项目所需元器件 (1)实验控制板。 (2)4个共阳极LED数码管、11个按钮。 (3)继电器、电动小马达、三极管、喇叭等 (4)晶振12M,启振电容30pf2个,复位电容22uf,电阻若干。 五、项目所涉及的知识内容 (1)键盘的构成、扫描及编码。 (2)键盘的编程。
/* P1.0~P1.3放全0, P1.4~P1.7输入 */
if((P1 & 0xf0)!=0xf0)
/* 如P1口高四位不全为1有键按下 */

dlms ( );
/* 延时去抖动 */
if ((P1 & 0xf0)!=0xf0)
/*再读输入值*/

sccode=0xfe;
/*最低位置为0*/
7.3 键盘程序设计
硬件消抖动:利用双稳态电
路、单稳态电路及RC积分电
路去抖。
软件消抖动:利用延时子程
序来完成,既在第一次检测 到按下按键后,经过一定抖 动时间后再次检测按键是否 按下,从而消除抖动的影响。
延时的选择非常重要,太 快了,起不到消除抖动的 效果,太慢了又让键盘太 不灵活,错过的按键信号
7.2 键盘及其接口电路
(2)重键:是指无意同时或先后按下两个以上的键。 (3)连击:是指一次按键产生多次击键的结果。
通常在单片机应用系统中,对于重键或连击现象,也 多利用软件来进行控制,如采取单键按下有效、多个 键按下无效,并且在某个键被按下时,CPU等待此键 释放的过程中不响应其它按键等策略来解决。
7.2 键盘及其接口电路
7.2 键盘及其接口电路
1、独立式键盘及其接口 独立式键盘,是一种最简单的键盘构成方法,它将每个 按键的一端接到单片机的I/O口,另一端接地,如图所 示。 主要特点是各个键相互独立,每一个按键对应一根输入 口线。键盘软件结构简单,但当键盘数目较多时,需占 用大量的输入口线,所以在使用上受到了很大的限制。
7.2 键盘及其接口电路
扫描法在判断键值时,是采用的逐行扫描法,当被按下 的键在最后一行时,需经多次扫描才能获得被按下键所 在的行、列值。
反线法: 反线法的特点是无论被按下的键处于第一行或最后一行, 均只需经过两步便能获得此按键所在的行列值。
7.2 键盘及其接口电路
其操作步骤如下: 第一步:将行线编程为输入线,列线编程为输出线,并使
7.3 键盘程序设计
recode=P1 & 0xf0; P1=0x0f; sccode=P1 & 0x0f; return (sccode+recode);
} return(0); }
/*读取列值*/ /*P1口列输出全为0*/ /*读取行值*/ /* 行码+列值=键编码返回主程序*/
7.2 键盘及其接口电路
一、键盘的基本概念 键盘是一组开关的集合,是最常用的输入设备之一。组 成键盘的按键有触点式和非触点式两种。 触点式按键通常是机械触点开关,它利用了机械触点的 通、断特性完成信息的输入。 非触点式按钮主要指利用电子器件的通、断来完成信息 的输入,如工作在开关状态的三极管、电力电子器件 IGBT等。 在单片机控制系统中常用触点式开关来组成键盘。
第七章 电子密码锁控制系统
课程目标、课程重点及难点
课程目标:
了解微机控制系统键盘的构建及工作原理;认识微机控 制系统的键盘设计,掌握单片机键盘的应用。
课程重点及难点
独立式键盘及其接口电路;矩阵式键盘及其接口电路; 按键扫描驱动程序的设计。
7.1电子密码锁控制系统任务分析
一、 电子密码锁实物图:
1
while((sccode & 0x10)!=0) /*不到最后一行循环*/

P1=sccode;
/*P1口输出扫描码*/
if ((P1 & 0xf0)!=0xf0) /*如P1.4~P1.7不为全1,该行有键按下*/

recode=P1 & 0xf0;
/* 保留P1口高四位输入值*/
sccode= sccode & 0x0f;
/*调键扫描函数,返回键码送key保存*/
7.3 键盘程序设计
void dlms (void) {
uchar i for (i=200;i>0;i- -); }
/* 延时 */
uchar kbscan (void)
/* 键盘扫描函数,反线法 */

uchar sccode, recode
P1=0xf0;
7.3 键盘程序设计
定时扫描:利用单片机内部的定时器产生定时中断来进行 键盘的扫描,当有键按下时,识别出该键的键值并执行 相应的键功能程序。 中断扫描:当有键被按下时,键盘接口电路就向CPU申请 中断,若CPU响应中断,就执行判键程序得到键值,从而 去执行相应的键功能程序。
7.3 键盘程序设计
二、键盘扫描程序 1、逐行扫描法
相关文档
最新文档