大学本科生毕业设计(论文)
SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。
发送数据共11-14个字节,前6个字节是模块的包头和模块地址为固定值,后5-8个字节是传输的模块的命令。同时根据外部晶振和系统默认的传输速率算出控制串口的各寄存器的初始值。
指纹模块的通讯波特率(UART)的要求为9600bps,所以如果单片机要与指纹模块进行通信是,必须波特率一致,此时需要在编程时设置单片机的波特率为9600bps。
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
1、确定T1的工作方式(编程TMOD寄存器); 2、计算T1的初值,装载TH1、TL1; 3、启动T1(编程TCON中的TR1位); 4、确定串行口控制(编程SCON寄存器);
5、串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。 下面是串口初始化程序:
SCON=0x50; //UART方式1:8位UART; REN=1:允许接收 PCON=0x00; //SMOD=0:波特率不加倍
TMOD=0x21; //T1方式2,用于UART波特率,T0方式1 TH1=0xFD;
TL1=0xFD; //UART波特率设置:9600
3.3 主程序流程图
根据分析后,制定如下图的程序流程图。主程序设计流程如图3-1所示。 程序的巡检过程:首先对各模块进行初始化,检测在有无按键按下,如果按下判断是那一个按键,并作出判断是否调用相应子程序。
主程序主要由液晶显示、通讯子程序和按键程序组成。主程序的工作流程描述如下:首先初始化各种硬件功能模块。包括液晶显示、键盘扫描、指纹模块建立通信。
31
大学本科生毕业设计(论文)
开始初始化指纹输入按键输入数据处理驱动电路LCD12864显示结束
图3-1 主程序流程图
3.3.1键盘管理程序设计流程
本次设计所采用的按键是4x4矩阵键盘, 大家都知道,矩阵键盘一般分数字区0123456789*#和英文字母区ABCD,如下图:
32
大学本科生毕业设计(论文)
在本次设计,其中的*、#、C三个按键没有定义,数字区是用来输入程序管理员密码,使其进入程序后台,进行指纹信息的添加与删除,还有手动开锁与修改管理员密码。英文字母区,A按键是用来进入输入密码界面,B按键是用来删除输入错误的密码,D按键是确认按键。在管理员模式下,只有按复位按键才可以退出管理员模式。
键盘消抖的工作流程图如图3-2所示:
开始等待按键按下有按键按下延时消抖N是否有按键按下Y按键数据处理结束
图3-2 键盘程序流程图
33
大学本科生毕业设计(论文)
3.3.2 LCD显示模块程序设计流程
显示模块主要完成数据的显示功能,然后根据接受到指令显示相关的内容在屏幕上。
开始初始化写命令写数据 图3-3 显示程序流程图
结束3.3.3 指纹模块的通信程序设计流程
串口通信数据发送、接收流程图如图3-4。
图3-4 串口通信数据发送、接收流程图
34
大学本科生毕业设计(论文)
3.4 Keil编程
所需要的各种硬件已经选择好,单片机是电路中主控制器,由单片机对指纹模块及液晶、按键进行开发。首先应建立一系列的C语言子程序供主程序进行调用。本设计采用Keil uVision2对单片机编程。Keil 可以编译C源码,汇编源程序,生成代码效率非常高,多数语句生成的汇编代码紧凑容易理解。Keil软件可以提
[11]
供丰富的库函数和功能强大的集成开发调试工具,能够连接和重定位目标文件和库文件,创建HEX文件,调试目标程序。
使用Keil软件的主要工作流程为:
1、创建一个新工程,命名为“Fingerprint”,然后从器件库中选择单片机型号,因为其中没有STC89C52,所以选择与它完全兼容的Atmel 89c52代替。
2、新建text文件,命名为main.c,然后在Target 1的子文件Source Group 1中添加main.c文件。
3、点击下图中箭头所指的图标,弹出如下对话框,在Xtal后输入9600,即单片机的工作频率为9600MHz。[12]
35