1、指纹识别系统的设计指纹识别系统的设计电气工程及其自动化专业 摘 要 科学技术的发展在让社会进步的同时,也让安全问题成为许多系统首要考虑的问题。本文就针对传统安全问题系统的缺陷,应用TFS-M51指纹识别模块,设计基于单片机控制的指纹识别硬件和软件,形成一个独立的指纹识别系统。该系统实现单片机和指纹模块之间的串口通信,通过操作独立式键盘按键,向指纹模块的DSP芯片发送相应指令,从而执行添加用户、删除指定用户、删除全部用户、认证用户,以及管理用户权限等功能。最后,通过Keil C和protues对串口通信进行调试仿真,验证是否能够实现预期结果。关键词指纹识别;串口通信;单片机控制Design of
2、 Fingerprint Identification SystemElectrical Engineering and Automation Specialty FAN ChunyanAbstract :The development of science and technology in making social progress at the same time, also let many system security problem becomes the primary consideration. This paper is aiming at the limitation
3、 of traditional system security, application of TFS-M51 fingerprint identification module, MCU control of the fingerprint identification based on hardware and software, the formation of an independent fingerprint identification system. The system is the realization of serial communication between si
4、ngle-chip microcomputer and the fingerprint module, through stand-alone keyboard keys, to the fingerprint module of the DSP chip to send corresponding commands to execute, add users, delete users, delete all users, user authentication, and manage user permissions and other functions. Finally, throug
5、h the Keil C and Protues debugging simulation of serial communication, verify whether can achieve the expected results.key words: Fingerprint Identification;Serial Communications;MCU control目 录1 引言11.1 课题的背景及意义11.2 指纹识别技术的现状及发展趋势21.3 指纹识别系统设计的必要性32 系统总体设计32.1 系统的功能简介32.2 系统设计方案43 指纹识别系统的硬件设计43.1 指纹模
6、块43.1.1 TFS-M51指纹模块43.1.2 TMS20VC5501芯片63.2 按键模块73.3 显示模块83.4 电源模块93.5 下载口模块94 指纹识别系统的软件设计104.1 TFS-M51指纹识别模块的通信方式104.2 键盘管理及指示灯响应程序设计114.3 LED显示模块设计154.4 通信模块程序设计175 系统仿真调试185.1 编程环境185.2 串口仿真调试19结束语23参考文献24附录25致谢3738指纹识别系统的设计1 引言自动指纹识别技术是计算机技术、电子技术、图像处理技术、数据库技术等集于一体的高新技术。它作为一种直观而又易于普及的技术,在近几十年来得到了
7、很大的发展。目前应用到了指纹识别技术的领域有很多,比如考勤系统或考勤机;计算机的登录认证;门禁控制(家庭、建筑物、重要部门或设备);证件防伪(如护照、身份证、信用卡等);银行保管箱;ATM和POS机终端等的安全认证;银行储户的身份确认、电子商务和网上银行的安全认证;考生身份确认;公安系统身份确认;银行、证券交易所和保险公司的身份验证;网路、数据库和文件等的安全控制;手机、PDA等个人信息处理设备的使用认证以及各类指纹锁等。这些技术及产品的出现极大的满足了经济社会发展的要求。1.1 课题的背景及意义随着社会现代化、信息化的发展,安全问题成为目前许多系统首要考虑的问题,通常,管理员强迫用户使用一些
8、密码机制或硬件标志,确认用户身份,监控其进行的相关操作,以此来达到保证系统及信息安全的目的。现在普遍使用的许多系统,仍采用传统的防范措施。(1)现在许多计算机系统,都是使用“用户ID+密码”的方法来进行用户登录的身份认证和访问控制。这种方案的隐患是显而易见的。例如,密码容易被忘记,容易被别人窃取。而且,所造成的危害与用户的级别有密切的关系,如果是普通用户忘记了密码,他就不能进入系统,但可以通过系统管理员重新设定密码来重新开始工作,但如果是系统管理员忘记了自己的密码,整个系统也许只有重新安装后才能工作。密码被别人盗取是一件更可怕的事情,因为用心不良的人可能会进一步窃取系统内部的机密数据、可能会盗
9、用别人的名义做不正当的事情。并且在实际应用中,密码的盗取是比较容易的,在现代高速计算机的帮助下,对一般密码进行暴力破解也是很容易做到的。尽管现行系统通过要求用户及时改变他们的口令来防止盗用口令行为,但这种方法也不能从根本上解决问题。(2)除了计算机网络及其应用系统外,一些传统的需要进行身份验证的场合,也存在着类似的安全性问题。例如日常生活中广泛使用的钥匙、证件的伪造和盗用、不正当的转借等,还有在考勤管理系统中的弄虚作假等问题。另外,目前己被广泛应角的磁卡、IC卡等自身都有可复制、可移植、可替代的弱点。同样也存在着一定的安全隐患。并且,随着科技发展,对它的破解也变得非常容易。这些问题都说明,随着
10、科技的不断发展,现行的系统安全技术已经面临严峻的挑战!(3)因此,人们把目光转向了生物识别技术,希望可以借此技术来应对现行系统安全所面临的挑战。(4)生物识别技术在金融、司法、海关、军事以及人们日常生活的各个领域中已经扮演着越来越重要的角色。生物识别技术具有不易丢失、不易遗忘、不易伪造和随时随地可用等优点,比传统的身份认证方法具有更好的安全性、保密性和方便性。(5)指纹识别技术是模式识别领域中使用最早的,较为成熟的生物识别技术。指纹具有唯一性、稳定性、不可复制性,可以作为正确识别个人身份的依据,并且指纹的采集比较容易、准确、使用方便,具有实用性和可行性,因此指纹识别系统在身份鉴别和身份认证等许
11、多方面得到广泛应用。研究这个课题的目的就是为了使这种个人身份鉴别系统尽可能地合情、合理,并且简单易行,价格便宜,能够得到最广泛的应用。1.2 指纹识别技术的现状及发展趋势20世纪60年代,信息技术逐步兴起,计算机技术开始进入指纹识别领域,自动指纹识别系统AFIS(Automation Fingerprint Identification System)在法律实施方面的研究与应用在许多国家开始展开。80年代,随着个人电脑与光学扫描技术的革新,指纹采集技术获得重大突破,从而使指纹识别在其他领域获得应用。指纹识别技术在过去的30年已经取得很大的发展,但是目前AFSI仍是国内外模式识别领域中研究的热点
12、之一。国外很多国家都有专门机构或公司从事该技术的研究,其中美国的研究水平居于世界最前沿,如Identxi、EastShore、DigitalPersona、Veriaieom等公司都有成熟的指纹识别产品。虽然我国对指纹识别技术的应用研究起步较晚,但是发展迅速,核心技术方面与国外的差距不是很大。国内的西安青松公司、中科院自动化研究所、清华大学自动化系等公司和学校的研究水平处于国内领先,部分研究成果甚至达到国际先进水平。但是,在应用技术上特别是硬件采集技术上,国内与国外存在较大差距,如指纹采集芯片,国际上几大厂商几乎垄断了国内的市场。另外,在指纹识别应用系统的开发上,国内厂商尚缺乏开发大型实用系统
13、的经验。当今社会,各个国家加快了指纹识别技术的开发与应用,注重向系统的低成本、小型化和系列化的方向发展。随着计算机和芯片集成技术的进步,图像处理与模式识别方法的发展,指纹识别系统的性能日臻完善。同时,随着社会的进一步发展,传统的依赖于信物或口令的系统安全性技术已经面临严峻的挑战,越来越多的指纹识别系统在向警用系统以外的更广泛的民用领域扩展。指纹识别系统适用于几乎所有需进行安全性防范的场合,遍及诸多领域,在包括金融、证券、安防、公安、医疗、福利等行业的许多应用系统中都具有广阔的应用前景。1.3指纹识别系统设计的必要性(1)信息发展的需要:由于各个领域对身份识别日益增长的需求,尤其是网络信息安全领
14、域对身份识别的需求,所以指纹识别技术得以快速发展。网络信息化时代的一大特色就是身份的数字化和隐性化,如何准确鉴定一个人的身份,保护信息安全是当今信息化时代必须解决的一个关键社会问题。现行的许多计算机系统中,包括许多非常机密的系统,都是使用“用户ID+密码”的方法来进行用户的身份认证和访问控制的。实际上,这种方案隐含着一些问题,例如,密码容易被忘记,也容易被人窃取。(2)指纹识别的特点:人的指纹相对于其他的人体特征具有以下特点:l 普遍性:所有个人都具有的生物特征; l 独特性:没有两个指纹完全相同的人,同一个人的十指指纹也明显不同;l 永久性:一个人的指纹是终生不变的; l 可行性:指纹样本便
15、于获取,采集硬件设备容易实现,系统开发比较容易;l 可组合性:十指指纹各不相同,可以方便的构成多种信息的组合;l 防伪性好:与“账号+密码”、IC卡等传统的身份识别手段相比而言。2 系统总体设计2.1系统的功能简介 本系统是在指纹识别模块开发出的指纹识别系统。该系统使用指纹模块搜索手指,一旦搜索到手指,立即采集指纹图像,并将采集到的图像转换成数据的形式发送给单片机。它利用人体指纹各异性和不变性,为用户提供加密手段,使用时只需将手指平放在指纹采集仪的采集窗口上,即可完成采集任务,并通过LED显示出指纹模块采集指纹图像的各个流程及对比结果。另外可以通过独立按键可以选择所需实现的功能。该系统的主要功
16、能有以下几个方面:(1)指纹录入。能进行指纹的录入,二次录入无误后,记录该指纹数据。指纹图像通过专门的指纹采集仪采集。(2)指纹识别。能进行指纹的识别,指纹识别出错时,报警提示。图像采集完成后,与库中已存在指纹进行对比,与所有有权限的用户信息对比后,若无相符信息即提示报警。(3)指纹管理。能进行指纹数据的管理,添加和删除指纹数据。对添加到库中的用户指纹进行权限管理,设置最高权限用户,并能够对其进行添加和删除管理。 (4)操作显示。通过独立按键进行指纹系统的功能选择,采用数码管与LED指示灯综合提示操作内容。若信息经核对相符,即提示该用户拥有权限,若不相符,即提示非法操作。2.2 系统设计方案系
17、统组成原理框图如图1所示, 该系统主要由MCU(Microcontroller Unit,微程序控制器)、LED屏(Large Electronic Display,大型电子展示)、指纹识别模块TFS-M51组成。系统的工作过程主要是当检测到有按键按下时先由MCU通过串口通信控制指纹模块对指纹进行采集、录入、存储、比对。然后,根据所得的数据对其它接口器件,如显示屏、蜂鸣器、指示灯进行响应操作。 图1 指纹识别系统的总体框图3 指纹识别系统的硬件设计本系统硬件主要分为指纹模块、按键模块、显示模块、电源模块、下载口模块五个部分。 其中指纹模块:该系统的核心组成部分;按键模块:完成良好的人机交互;显
18、示模块:实时显示出指纹模块采集指纹图像的各个流程及对比结果;电源模块:为整个系统提供电源,降低系统功耗;下载口模块:将程序下载在单片机中。3.1 指纹模块3.1.1 TFS-M51指纹模块TFS-M51 指纹模块是深圳市十指科技有限公司新推出的,以 TI 公司TMS320VC5501 高速 DSP 处理器为核心,结合具有公司自主知识产权的商用指纹算法,光学指纹传感器,具有指纹录入、图像处理、特征值提取、模板生成、模板储存、指纹比对和搜索等功能的智能型模块,并提供UART 接口和通讯协议,为科研单位、应用集成厂商提供标准二次开发指纹套件,快速、方便集成应用。该产品具有指纹感应灵敏,识别速度快;稳
19、定性好;结构科学;兼容性好等优点。其技术参数如表1所示。表1处理器(cpu)TMS320VC5501PGE300(TI)频率(cpu)300MHZ指纹容量880枚传感器光学/半导体(瑞典进口FPC1011F)存储器W25Q6认假率0.001%(安全等级为6时)拒真率0.1%(安全等级为6时)电流100ma输入时间0.5秒比对时间0.5秒比对方式1:1 1:N安全等级1-10级(可自定义)输出格式三种:用户号,图像,特征值特征值大小196/255字节特征值模板大小512字节模板规则ISO19794-2通讯接口UART接口/RS232通讯波特率9600-115200bps电源接口串口供电电源4.5
20、-4.7主板尺寸38*55*8mm工作温度-20至60相对湿度40%RH-85%RH(无凝露)引脚功能如表2所示。表2接口功能管脚定义说明J1采集头接口16P接光学指纹头J3调试接口内部用J4升级接品内部用续表2J5开 发 接 口(与TFS-M12兼容)Pin1电源输入电源 5-7.5VPin2UART_OUT当模块处于开发模式时用于与外界通信,兼容3.3V和5V逻辑电平Pin3UART_INPin4地Pin5CTRL_PWR(新增功能)模块电源控制接口:输入高电平:模块供电;输入低电平:模块掉电Pin6CTRL_LED(新增功能)指示灯输出接口: 指纹头灯亮:输出高电平;指纹头灯灭:输出低电
21、平J2备用开发接口(排针)Pin1电源输入同 J5Pin1Pin2UART_OUT同 J5Pin2Pin3UART_IN同 J5Pin3Pin4CTRL_LED同 J5Pin6Pin5CTRL_PWR同 J5Pin5Pin6地同 J5Pin4在本系统中,使用J2接口作为独立键盘的接口,J3接口作为USB电源模块的接口。3.1.2 TMS20VC5501芯片指纹模块的核心处理单元是TI公司推出的高性能数字信号处理器(DSP)TMS20VC5501(5501),该芯片具有精度高、低功耗、灵活性大、可靠性高、时分复用等特点。它具有如下特性:l 最高时钟频率可达300MHz,指令周期时间为3.33ns
22、;l 16K字节高速指令缓存;l 双乘法器,速度可达每秒60亿次乘法计算;l 1程序总线,3内部数据/操作数读总线,2内部数据/操作数写总线;l 16K16-bit片上RAM,由4块4K16位双存取RAM(DARAM)组成;l 16K16-bit 等候状态片上ROM;l 8M16-bit的最大寻址外部内存空间;l 32位外部并行总线内存支持外部存储器接口(EMIF)与通用输入/输出(GPIO)功能和无缝接口;l 仿真/调试跟踪功能,保存最后16程序计数值(PC)连续性和最后32PC值;l 6个低功耗可编程控制功能控制域;l 片上外设包括:六通道直接存储器存取(DMA)控制器;两个多通道缓冲串行
23、端口(MCBSPS);可编程模拟锁相环循环(APLL)时钟发生器;通用的I / O(GPIO)引脚和专用输出(XF)引脚;8位并行主机接口(HPI);4个定时器,包括两个64位通用定时器,64位的可编程看门狗定时器和64位的DSP / BIOS计数器;内部集成电路(I2C)接口;通用异步接收器/器(UART);片上的基于扫描的仿真逻辑;JTAG(Joint Test Action Group,联合测试)边界扫描逻辑;l 3.3 V的I / O电源电压;l 1.26 V的核心供电电压。TMS20VC5501具有先进的多总线架构,包括1个程序存储器总线,3个独立数据读总线和2个数据写总线,以及额外
24、的为外设和DMA活动准备的专用总线。一个周期包括3个数据读取和2个数据写入,与此同时,在CPU活动时,DMA控制器可自主进行数据的传输。本设计以串口方式实现指纹模块的DSP和单片机之间的通信,AT89C52的RXD脚接DSP的TX脚,实现DSP发送数据由AT89C52接受,单片机的TXD脚接DSP的RX脚,实现AT89C52发送数据DSP接受,并将GND脚连接。指纹模块与单片机接口框架如图2所示。图2 TMS320VC5501芯片与AT89C52单片机接口框图3.2 按键模块对于实现人机交互的场合,按键是比较常用的,通过按键来选择系统的功能,完成对系统的访问控制。键盘分编码键盘和非编码键盘。键
25、盘上闭合键的识别由专用的硬件译码器实现,并产生键编码号或键值的称为编码键盘;靠软件识别的称为非编码键盘。在单片机组成的测控系统及智能化仪器中,用得最多的是非编码键盘。键盘结构可以根据按键数目的多少分为独立式和行列式(矩阵式)两类,独立式键盘适用于按键数目较少的场合,结构和处理比较简单,行列式键盘适用于按键数目较多的场合。本设计中键盘数目较少,共设置了8个按键,采用独立式接法。其电路图如图3所示。图3 指纹识别系统按键模块电路3.3 显示模块为了让设备显示出我们所想知道的信息,显示模块是不可缺少的一部分。单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED;液晶显示器,简称LCD。该系
26、统使用LED显示器。点亮LED显示器有两种方式:一是静态显示;二是动态显示。静态显示就是当显示器显示某个字符时,相应的段(放光二极管)恒定地导通或截止,直到显示另一个字符为止。这种显示方式编程容易,管理也较简单,但占有I/O口线资源较多。因此,在显示位数较多的情况下,一般都采用动态显示方式。在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴极(或阳极)公共端K分别由相应的I/O线控制,实现各位的分时选通。本设计采用八位共阳级LED动态显示,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阳极公共端K分别由相应的I/O线控制,实现各位的
27、分时选通。为提高其输出功率,在段控线和位控线都串接一个电阻,在这里采用220欧母电阻。显示及驱动电路如图4所示。图4 指纹识别系统显示模块电路3.4 电源模块电源电路是整个系统中十分重要的一环,如果电源不稳定可能造成系统不能正常工作,严重的甚至烧坏芯片引发事故。因此电源模块越发显得重要。电源管理是指如何将电源有效分配给系统的不同组件。电源电路设计主要考虑用哪种类型的电源器件,输入输出电压,输出电流以及控制状态。根据系统结构和USB接口速度高、功耗低、支持即插即用的特点,在此选择使用USB供电,以按键式开关启动或关闭电源。当按下电源键时,电源开启,电源指示灯点亮。断开电源键时,电源关闭,电源指示
28、灯灭。电源模块电路如图5所示。图5 指纹识别系统电源模块电路3.5 下载口模块采用RS-232接口,从PC机将程序下载至单片机芯片当中,实现编程实际应用。本次设计采用9芯针接口,其主要包括DCD(Data Carrier Detect)载波检测引脚,RXD(Received Data)接收数据引脚,TXD(Transmit Data)发送数据引脚,DTR(Data Terminal Ready)数据终端准备就绪引脚,SGND(Signal Ground)信号地引脚,DSR(Data Set Ready)数据准备就绪引脚,RTS(Request To Send)请求发送引脚,CTS(Clear
29、To Send)清除发送引脚,RI(Ring Indicator)振铃提示引脚12。在RS-232标准中,字符以一串行的比特串来一个接一个的串行方式传输,优点是传输线少,配线简单,传送距离可以较远。最常用的编码格式是异步起停格式,它使用一个起始比特后面紧跟7或8 个数据比特,然后是可选的奇偶校验比特,最后是一或两个停止比特。指纹识别系统下载口模块电路如图6所示。图6 指纹识别系统下载口模块电路4 指纹识别系统的软件设计本系统软件的编写采用C语言。其程序可分为两大模块,分别是键盘管理及指示灯响应程序设计与LED显示模块设计。键盘管理及指示灯响应程序主要完成对当前所需功能的选择与提示;LED显示模
30、块主要完成对当前操作内容以及当前操作是否成功的显示。4.1 TFS-M51指纹识别模块的通信方式在此系统中,DSP模块作为从设备,由主设备单片机发送相关命令对其进行控制,单片机发送的命令及DSP模块的应答按数据长度可以分为等于8字节和大于8字节两种。此系统主要是等于8字节。其数据格式如表3所示。表3字节12345678命令0xF5CMDP1P2P30CHK0xF5应答0xF5CMDQ1Q2Q30CHK0xF5说明:CMD:命令/应答类型;P1,P2,P3:命令参数;Q1,Q2,Q3:应答参数,Q3 多用于返回操作的有效性信息,在此取值如下:#define ACK_SUCCESS 0x00 /操
31、作成功#define ACK_FAIL 0x01 /操作失败#define ACK_FULL 0x04 /指纹数据库已满#define ACK_NOUSER 0x05 /无此用户#define ACK_USER_EXIST 0x07 /用户已存在#define ACK_TIMEOUT 0x08 /采集超时CHK:校验和,为第 2 字节到第 6 字节的异或值。4.2 键盘管理及指示灯响应程序设计本系统共使用8个按键,为实现各按键功能,需要对按键编号定义。表 4 按键功能按键12345678功能休眠添加用户删除指定用户删除所有用户验证用户上翻下翻权限管理键盘扫描流程图如图7所示。图7 键盘扫描流程
32、图程序设计见附录。键1用于使系统进入休眠状态,即向指纹模块发送休眠信号,以等待后续操作,或在本次操作完成后,使模块休眠以便下一次使用。按下键1后,休眠指示灯点亮。程序设计见附录。键8用于设定权限管理,循环按键,在1、2、3三个级别之间循环滚动,按键停留时,LED上显示数字表示当前要添加的用户权限,1为最低,3为最高。此操作需要在添加用户之前操作,设置好用户级别后按下键2以确认,随后由指纹识采集仪采集指纹。指纹模块取用户权限指令格式如表5所示。表5 指纹模块取用户权限指令格式字节12345678命令0xF50x0A用户号(高8位)用户号(低8位)00CHK0xF5应答0xF50x0A00用户权限
33、1/2/3ACK_NOUSER0CHK0xF5程序设计见附录。按键2用于添加用户信息,为确保有效性,用户必须录入2次指纹,单片机向DSP模块发送2次命令。指纹模块添加指纹指令格式如表6所示。表6 指纹模块添加指纹指令格式字节12345678命令0xF50x01用户号(高8位)用户号(低8位)00CHK0xF5应答0xF50x0100ACK_SUCCESSACK_FAILACK_FULLACK_TIMEOUT0CHK0xF5按下键2,添加指示灯点亮,然后用户将手指平放在指纹采集仪上,单片机向DSP芯片发出命令,指纹传感器获取指纹图像,其后DSP以固化程序执行图像处理相关计算并将处理后的值存入缓存
34、区,若第一次添加成功,则指纹采集仪指示灯再次点亮,用户再次平放在指纹采集仪上,进行二次指纹采集,DSP合并处理两次信息成功后,通过串口向单片机发送应答信号,此时确认指示灯点亮,表示此用户信息添加成功。用户信息添加成功后,用户ID自动递增,并在LED数码管上显示。第一次和第二次采集失败均返回失败响应,其应答信号包括用户已存在应答以及超时应答。程序流程如图8所示。图8 添加用户流程图程序设计见附录。键3用于删除指定用户,首先以键6和键7上下调节以选定要删除的用户,然后通过按键3确认操作,并发送删除当前选定用户指令。指纹模块删除指定用户指令格式如表7所示。表7 删除指定用户指令格式字节1234567
35、8命令0xF50x04用户号(高8位)用户号(低8位)00CHK0xF5应答0xF50x0400ACK_SUCCESSACK_FAIL0CHK0xF5程序流程如图9所示。图9 删除指定用户流程图程序设计见附录。删除所有用户时,以按键4执行。成功返回SUCCESS应答,失败返回FAIL应答。指纹模块删除所有用户指令格式如表8所示。表8 删除所有用户指令格式字节12345678命令0xF50x050000CHK0xF5应答0xF50x0500ACK_SUCCESSACK_FAIL0CHK0xF5程序流程如图10所示。图10 删除所有用户流程图程序设计见附录。需要验证用户时,按下键5即执行搜索比对操
36、作,单片机向DSP发送采集图像并进行1:N比对命令,比对成功后,返回信息,LED数码管显示用户ID,若用户不存在,则返回相应信息,LED显示NOUS。指纹模块验证用户指令格式如表9所示。表9 比对1:N指令格式字节12345678命令0xF50x0C0000CHK0xF5应答0xF50x0C用户号(高8位)用户号(低8位)ACK_SUCCESSACK_FAILACK_TIMEOUT0CHK0xF5程序流程如图14所示。图11 认证用户流程图程序设计见附录。当按下操作键或返回应答信号后,指示灯响应内容如表10所示。表10 指示灯响应含义指示灯12345678响应含义休眠添加用户删除指定用户删除所
37、有用户用户认证操作失败程序设计见附录F。注:相应的点亮熄灭指令已经包含在对应的功能子程序当中。4.3 LED显示模块设计当操作不同功能按键或者返回不同的应答信号时,数码显示管显示相应的内容对应各功能,具体显示内容如表11所示。表 11 LED显示应答显示添加用户成功“ID”+“AFFI”删除指定用户成功“ID”+“DELE”删除所有用户成功“ALLDELE”用户认证成功“ID”+“ACCE”添加、删除、搜索失败“FAIL”用户存储已满“FULL”用户已存在“EIS”用户不存在“NOUS”超时“OU”其中,“AFFI”表 Affixion,“DELE” 表Delete,“ACCE”表Access
38、,“EIS”表“EXIST”,“NOUS”表“NOUSER”,“OU”表“TIMEOUT”。程序流程如图15所示。图15 LED显示流程图程序设计见附录。4.4 通信模块程序设计单片机和指纹模块的通信首先需要将串口初始化,根据TFS-M51指纹二次开发模块用户手册可设定二者之间的串口通信命令:波特率为19200bps,1起始位,1停止位,无校验位。当单片机检测到发送缓存有数据时,开始向DSP发送数据,DSP收到命令后,进行相应操作响应,随后向单片机返回各种结果的应答。通信中的发送流程(以单片机为参考)如图16所示。图16 通信发送流程图(以单片机为参考)通信中的接收流程(以单片机为参考)如图1
39、7所示。图17 通信接收流程图(以单片机为参考)程序设计见附录。5 系统仿真调试5.1 编程环境本设计程序全部采用Keil进行编写。Keil是德国Keil公司(现已并入ARM 公司)开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVision)将这些功能组合在一起。uVision当前最高版本是uVision3,它的界面和常用的微软VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。uVision3 IDE是一款集编辑,编译和项目管
40、理于一身的基于窗口的软件开发环境。uVision3集成了C语言编译器、宏编译、链接、定位,以及HEX文件产生器。如图18所示,是它的一个典型的调试窗口,它主要包括以下几个窗口:图18 Keil MDK开发环境l 工程区:用于访问文件组和文件。l 输出窗口:显示编译结果,以便快速查找错误的地方,同时还是调试命令输入输出窗口:也可以用于显示查找结果。l 内存窗口:显示指定地址内村里的内容。l 堆栈窗口:用于查看和修改变量的值,并且现实当前函数调用。l 代码窗口:用于查看和编辑源文件。l 外设对话框:检查微控制的片上外设的状态。5.2 串口仿真调试在单片机编程中,串口占了很重要的地位。传统方式串口程
41、序的调试,往往是利用专用的单片机硬件仿真器。在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。但是很多仿真器不能做到完全硬件仿真,因而会造成仿真时正常,而实际运行时出现错误的情况;也有仿真不能通过,但实际运行正常的情况。对于一些较新的芯片或者是表面贴装的芯片,往往缺少合适的仿真器或仿真头。利用Keil软件可以仿真更多的单片机功能,使用这种方法,无需任何硬件仿真器,甚至都不需要用户电路板,可以利用计算机的串口来模拟单片机的串口。 本次设计用到的晶振大小为11.0592MHZ,故需在目标文件属性里对晶振频率进行设置如图19所示。图 19 Keil仿真晶振设置
42、首先按上述方法设置晶振,编译程序,执行“开始/停止调试”,打开软件工具栏外围设备里的串口调试窗口,如图20所示。 图 20 串口调试窗口然后单步运行程序,如图21所示,第一次运行到while(TI=0)语句时,可看到窗口SBUF一栏中数据由0x00变为0xF5,即表示此时发送了8字节数据中的第一字节。因为发送完一个字节之后,单片机会自动将TI置1以表示帧发送结束,所以运行到此步时需要手动将串口调试窗口中的TI选框标记,而后由程序清零,以继续执行。图21 程序单步执行调试为便于操作和观测,在Proteus中进行软件仿真。发送添加01号用户指令时,完整的命令数据应该是:0xF5, 0x01, 0x
43、00, 0x01, 0x01, 0x00, 0x01, 0xF5。仿真电路如图22所示。图22 串口仿真电路图执行单步操作后,拟终端界面显示数据如图23所示。图23 发送添加01号用户指令虚拟终端显示数据发送休眠指令时,完整的命令数据应该是:0xF5, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xF5。执行单步操作后,可得到虚拟终端界面显示数据如图24所示。图24 发送休眠指令虚拟终端显示数据发送删除指定用户(02号)指令时,完整的命令数据应该是:0xF5, 0x04, 0x00, 0x02, 0x00, 0x00, 0x06, 0xF5。执行单步操作后,可得到
44、虚拟终端界面显示数据如图25所示。图25 发送删除指定用户(02号)指令虚拟终端显示数据发送删除所有用户指令时,完整的命令数据应该是:0xF5, 0x05, 0x00, 0x05, 0x00, 0x00, 0x05, 0xF5。执行单步操作后,可得到虚拟终端界面显示数据如图26所示。图26 发送删除所有用户指令虚拟终端显示数据发送1:N用户比对指令时,完整的命令数据应该是:0xF5, 0x0C, 0x00, 0x0C 0x00, 0x00, 0x0C, 0xF5。执行单步操作后,可得到虚拟终端界面显示数据如图27所示。图27 发送1:N用户比对指令虚拟终端显示数据执行添加用户指令,返回成功应答
45、时,完整的应答数据是0xF5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF5,可得到虚拟终端界面显示数据如图28所示。图28 执行添加用户指令时返回的成功应答执行添加用户指令,返回失败应答时,完整的应答数据是0xF5, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0xF5,可得到虚拟终端界面显示数据如图29所示。图29 执行添加用户指令时返回的失败应答执行添加用户指令,返回用户存储已满应答时,完整的应答数据是0xF5, 0x01, 0x00, 0x00, 0x04, 0x00, 0x05, 0xF5,可得到虚拟终端界面显示数据如图30所示。图30 执行添加用户指令时返回的用户存储已满应答执行添加用户指令,返回用户不存在应答时,完整的应答数据是0xF5, 0x01, 0x00, 0