基于SPCE061A的指纹识别系统
值T(如令T=127),指指纹图像的灰度值分为两组R1和R2。 ②计算两组的平均灰度值u1和u2。 ③重新设定新的灰度阈值T。新的T定义为:T=(u1+u2)/2。 ④依据新的T对指纹图像进行阀值分割。 这种方法是以自适应的阀值对指纹图像进行二值化处理。实验结果表明,该方法比设定固定阀值进行处理更有普遍意义,且行之有效。 4.1.3 特征点提取。采用脊跟踪法,其基本思想是直接对图象进行脊线跟踪,在跟踪过程中检测和提取特征点。 4.1.4分类算法。指纹被分成5大类:拱类、做环类、右环类、尖拱类和旋涡类,预先使用全局特征排序,可以加速指纹的匹配服务。 4.2程序流程 当系统处于空闲状态时,SPCE061A利用P_SystemClock单元写入CPUCLK STOP控制字,使系统从运行状态转入睡眠状态,关闭系统时钟(PLL振荡器)。当用户有指纹或按键输入时,系统接收到唤醒信号后接通PLL振荡器,同时CPU会响应唤醒事件的处理并进行初始化。利用IRQ3_KEY为触键唤醒源,利用FIQ为MBF300指纹传感器输入唤醒源。下面是程序流程图3和IRQ3_KEY唤醒程序的部分代码。 图3 程序流程图 R1=0x0000; //设置A口为带下拉电阻的输入口 [P_IOA_Attrib]=R1; //设置3个属性向量 [P_IOA_Dir]=R1; [P_IOA_Data]=R1; //中断设置(允许IRQ3_KEY触键中断) INT OFF; //关中断 R1=0x0080; //设置中断标置 [P_Int_Ctrl]=R1; INT IRQ; //开中断 //读P_IOA_Latch单元,以锁存IOA[0~7]的数据,用于触键唤醒 R1=[P_IOA_Latch]; //锁存A口低8位的数据 //将P_SystemClock(写)7013H单元的第0~2位置为“111”,使系统进入睡眠状态, R1=0x0007; //系统进入睡眠状态 [P_SystemClock]=R1; //IRQ3子程序(端口A的触键唤醒源被触发后,调用IRQ3 中断服务子程序): .TEXT .PUBLIC _IRQ3 _IRQ3: R1 = 0x0100; //比较是否为L_IRQ3_Ext1中断 TEST R1,[P_INT_Ctrl]; JNZ L_IRQ3_Ext1; //是,则进入;否,进行下面的判断 R1 = 0x0200; TEST R1,[P_INT_Ctrl]; //是否为L_IRQ3_Ext2中断 JNZ L_IRQ3_Ext2; //是,进入该中断;否,执行下面的程序 L_IRQ3_KeyChange_WakeUp: //不是上面的两种中断则一定为键唤醒中断 R1 = 0x0080; //清除IRQ3触键中断请求 [P_INT_Clear]= R1; : (处理系统被唤醒后的任务) : RETI L_IRQ3_Ext2: [P_INT_Clear] = R1; //清除IRQ3_EXT2中断请求 RETI L_IRQ3_Ext1: [P_INT_Clear] = R1; //清除IRQ3_EXT1中断请求 RETI 5 总结 相对于其它指纹识别系统控制核心大多数是DSP运算能力强,但控制能力差的缺点,本系统最大的创新点是控制核心采用了既具有单片机的控制功能,又具有强大的DSP运算能力于一体的16位SOC芯片SPCE061A,使本系统在进行简单的扩展后即可以在指纹锁、无钥汽车、PDA设备、大型门禁系统等各种需要指纹控制的领域进行广泛的应用。 参考文献 [1]罗亚非等,凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2003 [2] 彭宣戈,一种嵌入式Internet接口系统[J].微计算机信息,2005,2 8-9 [3]孙传友,孙晓斌.测控系统原理与设计[M].北京:北京航空航天大学出版社,2002 [4] 杨西明,朱琪,单片机编程与应用[M].北京:机械工业出版社,2004
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)