3 系统软件的设计
3.1 系统程序工作分析
在本文的电路板中,单片机是作为控制器嵌入到系统中。应用程序的开发主要分为两大部分,即对ZAZ-010指纹识别模块的的应用程序开发以及对HS12864液晶、按键程序的开发。因此,要实现其应用,需要对其进行联合调试。电路软件应用开发根据所设计的硬件。程序开发的方式将主要建立一系列的C语言函数子程序供主程序的随时调用。即对ZAZ-010指纹识别模块或液晶电路分别编制C语言函数子程序。因此,需要有专门的开发工具。本设计中,采用AVRStudio4.0单片机软件开发环境对单片机进行编程,由于该编译器支持模块化程序设计,因此可以先将源程序划分为几个模块分别编写,然后再由编译器生成一个最终文件. 该开发环境可以对程序进行软件仿真调试,因此可以方便地进行程序的编写和调试。调试通过的代码文件通过开发板下载到单片机。单片机在上电后,主程序应该完成相应的初始化工作。依据电路的功能要求,主程序必须对液晶初始化、同时对按键进行检测,如果有对应的按键按下。执行相应的操作,单片机通过串行接口对指纹模块进行读写。
3.2 设计前准备工作
由于使用串口和模块通讯,所以必须先约定好单片机和模块的的串口工作速度和数据包格式。
UART数据格式定位为:8位数据位、1位停止位、无奇偶校验位,数据传输速率为57600bps。
通讯数据包格式定义为:
单片机发送串行数据包格式如图3-1 MCU发送数据包格式 D7 D6 D5 D4 D3 D2 D1 D0 发送数据共11-14个字节,前6个字节是模块的包头和模块地址为固定值,后5-8个字节是传输的模块的命令。同时根据外部晶振和系统默认的传输速率算出控制串口的各寄存器的初始值。参考meg16资料后编写了以下一段串口初始化。
各寄存器设置的程序.
如下面的一段程序既是对个寄存器的初始值的设置 void UART_Init(void) {
UCSRB=0x00;//disable while setting baud rate
19
UCSRA=0x00;//Bit1为1则倍速发送 UCSRC=0x06;
UBRRL=0x07;//波特率:57600Bps UBRRH=0x00;//误差率:0.000% UCSRB=0x18; }
注:选用外部7.3728M晶振.
3.3 单片机的程序设计
根据上节分析,制定如下图的程序流程图。主程序主要由液晶显示、通讯子、按键程序组成。主程序的工作流程描述如下:首先初始化各种硬件功能模块进行初始化。包括开机液晶显示、键盘扫描、指纹模块建立通信。
主程序设计流程如图3-1所示:
20
开 始 各模块初始化 N 扫描是否有按键按下 Y 判断键值 Y 按键1 按键2 Y Y 按键3 Y 按键4 采集指纹1 采集指纹2 显示与已经存储的指纹的比对效果 合成指纹模板存储 显示与新存储的指纹数据的比对结果
程序的巡检过程: 首先对各模块进行初始化,检测在有无按键按下,如果按下判断是那一个按键,并作出判断是否调用相应子程序;当按键1按下后,调用通信模块子程序,录入指纹并将其存入模块缓冲区,同理当按键2按下后,效果相同。
图3-1主程序流程图
21
依次当按键3按下时,将指纹模块两缓冲区中的指纹特征文件合成特征模板并存储与指纹模板库中,当4按键按下后搜索指纹并比对.当指纹模块中有指纹存储时直接按4键同样也可进行比对。
程序关键的就是对指纹模块的通信控制, 考虑到处理过程太过冗长,限于篇幅只能将其省略,如需查看,可以看附录1。其它命令发送子函数因大部分的命令大体格式基本相同。
3.3.1 键盘管理程序设计流程
键盘模块的工作流程图如图3-2所示:
有按键被按下延时消除抖动N是否有按键Y进行按键分析认为是干扰信号,返回主程序转入该键值定义的执行指令子程序执行程序后,返回主程序等待再次按键 图 3-2 键盘模块流程图 3.3.2 LCD显示模块程序设计流程
显示模块主要完成数据的显示功能。首先当模块接受指令前,单片机必须确认模块内部处于非忙碌状态,然后根据接受到指令显示相关的内容在屏幕上。
22
3.3.3 指纹通信模块的程序设计流程
串口通信数据发送、接收流程图如图3-3:
开始 串口初始化 N 检测发送缓冲区是否为空 Y 等 待 继续发送
图3-3 串口通信数据发送、接收流程图
23
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库AAA基于单片机的指纹识别电子密码锁的毕业设计初稿 - 图文(5)在线全文阅读。
相关推荐: