本系统主要使用了指纹模块,MicroSD卡读写模块,PCF8563模块,蜂鸣器模块,矩阵按键模块,lcd1602,和STC90C516RD+
系统框图如下:
1)指纹模块
采用FPM10A光学指纹模块。FPM10A光学指纹模块是经典的光学指纹模块,性能稳定,应用范围广,可选用TTL串口或USB接口,可使用51单片机
2)存储模块
方案一:采用EEPROM模块
EEPROM模块简单,采用iic通讯,但存储量小,寿命有限,没有锻炼价值,所以弃用。
方案二:采用MicroSD卡读写模块
MicroSD读写卡模块,采用SPI协议通讯,这个通讯协议还没接触过,且比EEPROM存储量大,使用普遍,所以本系统采用MicroSD读写卡模块.
3)实时时钟
采用PCF8563模块。该芯片比DS1302更为稳定,走时更准,功耗最低。
2.程序设计和设计思路
程序流程图如下:
该项目实现签到,添加指纹,删除单个指纹,搜索指纹,和清空指纹等 *** 作。
签到是搜索该指纹ID后,存储时间戳到MicroSD对应的扇区中,且蜂鸣器会响视为签到成功。功能选择使用4个按键,用循环向下选择的方式。添加指纹中,首先先获得指纹图像1,存储到buffer1中,再获得指纹图像2,存储到buffer2中,再写命令使buffer1和buffer2形成特征模板,再存入特定的ID中,最后初始化ID对应的MicroSD扇区。删除单个指纹和搜索指纹中,我使用两种方法找到该指纹的ID,一种是按键输入,还是用四个按键循环,二种是通过搜索指纹找到该指纹的ID,在按键指纹中需要判断该ID是否存在,通过在对应MicroSD卡设置标志位的方法,确定该ID是否在用,该标志位与指纹模块同步。搜索指纹找到ID后显示,对应ID的签到时间。清空指纹是清空指纹模块和对应的MicroSD卡扇区。
单片机指纹识别是不难做的,因为:基于单片机系统的指纹识别方案手指按压指纹识别模块时,指纹数据被采集并传输到单片机,单片机经过识别算法对指纹数据进行处理后,把处理结果通过WiFi模块无线传输到云端参与身份识别的业务。
单片机指纹识别算法代码编译后占用上百K字节的代码空间,考虑到WiFi网络连接、应用层代码等整体上以1MB左右的Flash代码空间为宜,数据存储的需求以512KB的SRAM空间为宜。
系统工作时,在单片机指纹识别过程中需要强大的运算能力,而在没有指纹按压的时候则需要运行在低功耗状态,以适应嵌入式系统对功耗的要求。
在我们的方案中,选择了具有XIP特性的MCU,把代码存放在外置SPI Flash中并可以在系统执行,从而大大扩展了代码存储空间。外置SPI Flash中的代码在执行中由于需要内部Cache缓存,故执行速度略低。
单片机指纹识别芯片的要求是:
指纹识别芯片和主机的数据接口要求在指纹数据采集的过程中达到5Mbps以上的传输速率,低于5Mbps的数据吞吐量将影响用户体验。
UART、 I2C等低速接口在吞吐量上无法达到要求,SPI接口简洁而且传输速率完全可以达到要求,是最合适的通信接口。
指纹识别芯片周期性检测Pixel传感器区域是否有手指触摸,检测到传感器有手指触摸时,会立刻采集活体检测数据。
数据采集完成后会通过中断通知Host读取,MCU读取完活体检测数据后芯片进行指纹扫描,指纹扫描开始后就会通过中断通知Host读取数据,指纹数据的扫描和Host数据的读取同步进行。
http://blog.sina.com.cn/s/blog_804665db01015nnd.html这是用STM32做的,如果你用51单片机做的话,需要模拟一个串行通信USART,自己按照协议编写,难度很大,建议你用avr单片机做,它内部有自带的USART串行通信接口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)