开始 初始化 指纹录入修改子程序 密码输入界面 切换键 输入密码 错误次数加1 确认密码 次数大于等于3? Y N 输入密码正确? Y 开锁 N 报警程序 报警 返回 N 手指接触? Y N 指纹一致?
图4.1 主程序流程图
Y
28
4.2矩阵键盘模块流程图
矩阵键盘模块由4个部分组成,分为为:键盘扫描、延时去抖、寻找键值和返回键值。键盘扫描是使一行端口变为低电平通过查看是否有列变为低电平,来判断按下情况的。所以这个扫描过程是需要循环往复的,程序编写则要实现这个过程。如果扫描结果表示并无按键按下,系统进入等待状态;如果扫描到有按键按下,则进行延时去抖的步骤。经过延时去抖,根据具体行列的检测确定按键的位置。找到按键后,确定键值并返回键值,并执行闭合按键释放。流程图如图4.2所示
键盘扫描 有键闭合? Y 延时去抖 N 找到闭合键 计算键值 闭合键释放 返回键值 图4.2矩阵键盘模块流程图
4.3 LCD1602液晶屏显示模块流程图
LCD1602液晶屏显示模块的软件设计部分主要包括开始、初始化LCD、清除LCD、写LCD四个过程。 LCD1602写命令程序如下所示:
29
void write_com(uchar com) {
e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1;
delay_uint(25); e=0; }
初始化LCD的程序如下所示: void init_1602() {
write_com(0x38); }
write_com(0x0c); write_com(0x06); delay_uint(1000);
write_string(1,0,\ write_string(2,0,\lcd1602_guanbiao(1,7+0x40); //开光标
30
液晶显示模块的流程图4.3:
开始 初始化LCD 清除LCD 写LCD 结束 图4.3 液晶屏显示模块流程图
4.4 开锁和报警模块流程图
如图4.4开锁和报警模块流程图,开始时按开锁键并输入密码,输入的密码将与单片机内部保存的密码相比较,如果输入正确,则提示开锁成功。如果输入错误,错误次数则开始累积,3次以上错误后则执行报警程序,蜂鸣器持续鸣叫。
31
开始 初始化 按开锁键 输入密码 错误次数加1 确认密码 次数大于等于3? Y N 输入密码正确? Y 开锁 N 报警程序 报警 返回 图4.4 开锁和报警模块流程图
4.5密码修改流程图
修改密码模块主要是在输入密码正确之后,按下密码修改键就能进入修改密码界面,其流程分为四个步骤,分别为按下密码修改键、输入修改的密码、按下确认键、LCD的显示。修改密码的部分程序如下图4.5
32