您当前的位置:五五电子网电子知识电子知识资料计算机应用一种基于LPC932单片机的新型指纹锁的设计 正文
一种基于LPC932单片机的新型指纹锁的设计

一种基于LPC932单片机的新型指纹锁的设计

点击数:7896 次   录入时间:03-04 11:45:20   整理:http://www.55dianzi.com   计算机应用

  这种基于LPC932单片机的新型指纹锁的设计是在指纹传感器模块SM-2B的基础上开发的一种新型的电子指纹锁。最多可以容纳512枚指纹,远超过其他指纹锁的指纹容量,并且它还可以将用户的特定信息存储在E2PROM中,使其应用起来更加方便。

  原理框图如下图所示,其控制核心是单片机LPC932,主要选取原则包括:该单片机体积小、功耗低,本身具有512字节的E2PROM存储空间,能满足设计要求。
  
  系统的工作过程是:单片机通过串口向指纹模块SM-2B发送命令或接收相应的操作信息。当用户的指纹被确认后,它将接收到指纹模块SM-2B发来的身份确认消息以及相应的用户ID码,随后,LPC932单片机根据程序运行结果,控制执行机构动作,指纹锁打开或报警。

指纹锁原理方框图


  
  本系统硬件设计包括I/O口扩展、指纹模块、数据存储、电源、看门狗电路和执行机构等6部分,其硬件结构如下图所示。其中指纹模块是它的核心组成部分,它里面集成了指纹图像处理和识别算法,在无上位机管理的情况下,可以通过与之配套的指纹传感器可构成一个独立的指纹识别系统。在本系统设计中LPC932单片机通过串口与模块发送命令,使其按照工作流程工作。

指纹锁硬件结构

  (1) 110口扩展。
  
  本设计中涉及键盘、指示灯以及蜂鸣器等人机接口,如果直接用LPC932单片机中的I/O口连接,显然不够用。所以,需要对其进行I/O口扩展,这里采用ZLG7289芯片。ZLG7289是具有SPI串行接口功能的,可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片。该芯片同时还可连接多达64键的键盘矩阵。单片即可完成LED显示、键盘接口的全部功能。这样在该系统中仅占用单片机的4个I/O端口便可完成人机接口。
  
  (2)数据存储部分。
  
  对于关键数据的存储,使用的是LPC932单片机内部自带的512字节的E2PROM。当然也可以存到看门狗芯片X5045中的E2PROM当中。
  
  (3)看门狗电路。
  
  X5045是带有串行EEPROM的CPU监控器,也叫看门狗。单片机通过SPI总线与它进行通信。看门狗定时器电路检测WDI的输入来判断单片机是否正常工作。在设定的定时时间内,单片机必须在WDI引脚上产生一个由高到低的电平变化,否则X5045将产生一个复位信号。在X5045内部的一个控制器中有两位可编程位决定了定时周期的长短。单片机可通过指令来改变两位,从而改变看门狗的定时时间长短。
  
  因为X5045对电压的要求比较严格,当电压较低时,单片机就无法将数据写进或读出。这  里对系统的电源电压进行检测,采用LPC932单片机的电压比较中断功能进行监测。一旦系统工作时的电平过低,LPC932单片机将发生中断,并报警提示,从而保证了系统的正常工作。
  
  (4)执行机构驱动电路。
  
  机械驱动部分用小型的直流电动机来进行驱动。由于单片机的驱动能力极其有限,所以需要对单片机的输出进行驱动放大。这里采用L298芯片,它是一种双全桥驱动器,可以接受TTL逻辑电平,用于驱动感性负载。
  
  指纹锁的软件程序设计分可为两个部分,指纹管理部分和密码管理部分。在系统上电后,首先进行系统初始化,包括单片机自身的初始化,键盘扩展芯片、’看门狗电路以及指纹模块进的始化。然后系统开始正常工作:检测用户的指纹或密码输入,同时还要满足用户对于指纹密码的管理。软件设计采用C语言编程,具体程序流程如下图所示。

程序流程图

  系统中的工作核心是指纹模块SM-2B,它几乎包含了对指纹处理所有操作。单片机与指纹模块的通信为半双工异步通信。默认波特为57 600bit/s,可通过命令设置为115 200bit/s或者38 400bit/s。数据传送格式为10位,一位为0电平作为起始位,接着是8位数据(低位在前)和一位停止位,无校验位。
  
  设置单片机的传输速率子程序:

  单片机与指纹模块的通信,对命令、数据、结果的接收和发送,都采用帧的形式进行,通信格式为:包标识+地址码保留字+包长度+包内容+校验和,如下图所示。


  
  在规定时间内如果没有接收到数据则强行退出接收程序,而后重新接收数据。指纹模块与单片机的工作频率非常快,根本不会影响整个系统的工作。接收数据程序子程序:

  发送数据程序与接收子程序相似,这里不再赘述。
  
  同样由于单片机和模块通过一串消息帧来传递命令的,因此在程序编写的时候利用数组来存储从模块接收到的数据,如用数组Rev[Max]来保存接收的数据,如下图所示。
  
  单片机通过串口向模块发送命令而后又等待接收命令时,经常丢失一两个字节或者第一  个字节有误,这样导致数组Rev[Max]中数据为(图6-7为丢失一个字节的情况):

  这样接收到的数据不完全,如果还是将数组中接收的数据与帧中数据——比较的话,那就无法正确判断此刻模块的动作。此刻如何根据这些不完整的数据来判断模块的动作呢,参考指纹模块的通信协议可知,消息帧中的大部分数据都相同,只有一两个不同的关键字且在数据帧的中间部分,所以先根据模块动作的几种可能情况并在接收数据的数组Rev[Max]中搜索对应的一两个关键字,这样就可以正确判断模块的动作了。
  
  系统具体工作流程如下:
  
  开启电源,整个系统开始上电并完成初始化。单片机时时检测电源电压是否正常,如果电压过低,则向用户报警更换电池。若正常,提示用户将手指放在取指仪上,对采集的指纹图像进行搜索匹配。若匹配成功,则给执行机构供电,电机正转,将锁打开,并延迟一段时间,以保证用户有充裕的时间开门后又将门关上。最后电机反转,将门重新上锁。
  
  通过功能设置可以采取指纹认证+密码的工作方式,其中用户设置的密码经加密后存在单片机的E2PROM中。另外在规定时间内,如果没有接收到用户的命令,则系统强制断电退出;如果在命令期间没有让指纹模块工作,则可以让其强制进入掉电状态。通过这些措施使得电池使用时间大大延长。
  
  该指纹模块识别系统在使用中需要注意以下问题。
  
  (1)在读写看门狗或者是操作其中的E2PROM时有时会失败。
  
  因为电擦写E2PROM时,器件对于电压的要求比较高,一旦电压过低就会引起数据写入失败。这样有些重要信息的写入或擦除失败,会引起整个工作过程紊乱,出现逻辑错误。解决的方法是采用LPC932单片机的比较中断,对输入电压时时监测,一旦当电压过低,单片就可发生中断,指纹锁停止工作,并报警通知用户更换电池。
  
  (2)耗电量过大。
  
  指纹锁使用场所条件限制,使得它对电池的使用特别苛刻。为了延长电池的使用时间,应增加对电池的使用管理。这里采用的方法是中断计时法,即在一段时间内用户如果没有按键或按上指纹,则使指纹锁断电退出,单片机进入掉电状态,或者强制使指纹模块进入休眠状态。它的好处是可以在软件中根据需求调节时间。另外在驱动电机的选择上,应按照功耗低、电压要求不高的原则进行选取,这样也可以大大降低整个系统的功耗,延长电池的使用寿命。

[1] [2]  下一页


本文关键字:单片机  指纹锁  计算机应用电子知识资料 - 计算机应用