智能门禁控制控制器课件.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能门禁控制控制器课件

去除抖动的方法有硬件电路法(如RS触发器)和软件延时法。软件延时法就是通过延迟来等待抖动消失,即延迟一段时间后,再读入键盘值,如图9-4所示。由于软件延时成本低,且实现简单,故在实际中常常被采用。 图9-4 软件法去抖动流程框图 (2)重键 所谓重键就是指有两个或多个键同时闭合。对重键的处理方法一般采用两种方法:连锁法和巡回法。 用连锁法处理重键的原则是,在所有键释放后,只承认此后闭合的第一个键,对此键闭合时按下的其他键均不做识别,直到所有键释放以后,才读入一个键。 巡回法识别重键的思想是,等前面所识别的键被释放以后,再识别其他闭合键。巡回法比较适合于快速的键入操作。 键盘电路的最大特点是实时性,操作人员对键盘的操作是随机的,不论何时按键,CPU都需响应键盘信息。通常,键盘工作方式主要有三种,即程序控制扫描、定时扫描和中断扫描。 1.程序控制扫描方式 键盘的扫描采取程序控制方式,仅在CPU空闲时,才调用键盘扫描子程序,并反复地扫描键盘,直到用户从键盘上输入命令或数据,而在执行键入命令或处理键入数据过程中,CPU将不再响应键盘输入要求,直到CPU重新调用键盘扫描子程序为止。键盘扫描子程序流程如图9-5所示。 键盘扫描子程序主要完成如下功能。 (1)判别有无键按下。如图9-6所示,PA口输出全0,读PC口状态,若PC0~PC3全为1,则说明无键按下;若不全为1,则说明有键按下。 图9-5 键盘扫描程序框图 图9-6 矩阵式键盘的接口电路 (2)延时去抖动。在判断有键按下时,用软件延时10ms后,再判断键盘状态,如果仍为有键处于按下状态,则认为有一个确定的键被按下,否则当做按键抖动处理。 (3)识别矩阵键盘上的闭合键,求按键位置。单片机中通常采用行扫描法。行扫描法识别按键的思想为:按(1)~(2)确认有键按下后,逐个置行线为零电位“0”,检查各列线电平,如果某列电平为低电位“0”,则可确定此行此列交叉点处的键被按下,从而确定按键的键号,键号=行首键号+列号。 (4)等待键释放。键盘键闭合一次,仅进行一次按键的处理;释放之后,再进行按键功能的处理操作。 设8255控制口地址为7F03H,PA口地址为7F00H,PC口地址为7F02H,键盘行扫描的C51程序清单如下: #include reg51.h #include absacc.h #include intrins.h #define P8255ct 0x7F03 #define P8255A 0x7F00 #define P8255C 0x7F02 delay() { unsigned int data k; for (k=0;k1000;k++);} //延时去抖动 char keyscan() { unsigned char data i,y,row,col,x=0xfe,key; XBYTE[P8255ct]=0x81; //写8255方式控制字,PA口输出,PC口输入 XBYTE[P8255A]=0; while ((XBYTE[P8255C]0x0f)==0xf);//判是否有键按下,无键按下等待 delay(); //有,则延时去抖动 while ((XBYTE[P8255C]0x0f)==0xf) return(0xff);//判是否有键按下, 无键按下返回FFH x=0xfe; for (i=0;i8;i++) // 逐行扫描 { XBYTE[P8255A]=x; //输出行扫描码 y=XBYTE[P8255C]; //读列值 if (!y0x01){row=0;break;} //若PC0行有键按下,首行号为0 else if (!y0x02){row=08;break;} //若PC1行有键按下,首行号为8 else if (!y0x04){row=16;break;} //若PC2行有键按下,首行号为16 else if (!y0x08){row=24;break;} //若PC3行有键按下,首行号为24 else {x=_crol_

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档