基于51单片机--智能指纹识别密码锁设计(程序开搞)

一.目录

二.系统介绍 

三.软件介绍

四.代码介绍               

五.总结


二.系统介绍 

        本次分享的是一款基于51单片机的智能指纹识别密码锁设计,该系统以STC89C52单片机作为模块核心,通过串口通信控制指纹模块AS608实现录取指纹并存储指纹数据,并通过LCD12864液晶显示屏比对流程及效果,采用4X4矩阵键盘完成密码输入/录入/管理账户进入及指纹修改等等,辅以直流5V继电器配合发光二极管、蜂鸣器、电子锁模拟开锁动作。

        之前博主已经将硬件准备和软件准备已经做了详细介绍,硬件设备我们也焊接完毕了,这里把雨姐的伴奏音乐直接打开。开编。

三.软件介绍

        我们使用keil软件建立工程文件,之后建立我们的mian.c文件,由于博主工作电脑上不能安装盗版软件,所以并没有安装KEIL软件,这里我无法给大家做下演示:

       所以今天博主就用一个新的文本软件--Notepad++,对于这个软件,博主强烈推荐给大家。开源且使用方便,可以查看多个文件格式。

四.代码介绍               

        首先我们调用我们的头文件。分别是我们的51单片机库,LCD12864显示库,4X4矩阵键盘扫描库,指纹扫描库。

#include<reg52.h>		
#include"LCD12864.h"//液晶显示头文件调用
#include"KEY.h"
#include"EEPROM.h"
#include"FPM10A.h"
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义

        其次我们定义单片机IO输出口,作为驱动LED灯以及蜂鸣器报警

sbit LED=P0^4;
sbit LED1=P0^5;
sbit JDQ=P0^6;
sbit ALARM=P0^7;
uint T0_num=0;

        那既然是密码锁,肯定要存储密码对吗?那肯定定义几个变量

#define MAX 9          //指纹最大数量
uchar lr_zw_temp;
uchar mima_jiaozhun;
uchar mima_qc_temp;//密码清除是否有效
uchar mima_qc_num;//密码清除编号

uchar a;//存储按键值
uchar mima_ws,caidan,xg_mima,caidan_fuhao_yd;//密码位数,液晶显示菜单参数,管理密码界面参数,修改密码箭头参数
uchar mima_1,mima_2,mima_3,mima_4,mima_5,mima_6;//密码输入的参数
uchar dy_xin_1,dy_xin_2,dy_xin_3,dy_xin_4,dy_xin_5,dy_xin_6;//修改密码输入的第一次新密码参数
uchar de_xin_1,de_xin_2,de_xin_3,de_xin_4,de_xin_5,de_xin_6;//修改密码输入的第二次新密码参数

uchar caidan_jb;

        接下来,我们编写我们的密码输入函数,从而监测到4X4矩阵键盘输入的电子密码

void mima_shuru()
{
  if((key_anxia==1)&&(key_num<=9)&&(caidan!=2))//如果有按键按下且输入数字小于等于9则有效
  {
   mima_ws++;//密码位数加加
   if(mima_ws>6)//如果超过6位
   {
    key_anxia=0;//退出
   }
   if(mima_ws==1)//如果位数为1
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第一位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_1=key_num;
	key_anxia=0;//退出
   }
   if(mima_ws==2)//如果位数为2
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第二位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_2=key_num;
	key_anxia=0;//退出
   }
   if(mima_ws==3)//如果位数为3
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第三位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_3=key_num;
	key_anxia=0;//退出
   }
   if(mima_ws==4)//如果位数为4
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第四位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_4=key_num;
	key_anxia=0;//退出
   }
   if(mima_ws==5)//如果位数为5
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第五位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_5=key_num;
	key_anxia=0;//退出
   }
   if(mima_ws==6)//如果位数为6
   {
    gotoxy(4,mima_ws-1);print(shuzi[key_num]);//在第六位显示输入的密码
	delay_K(200);
	gotoxy(4,mima_ws-1);print("*");
	mima_6=key_num;
	key_anxia=0;//退出
   }
  }

  if((key_anxia==1)&&(key_num==12)&&(caidan!=2))//如果输入退格按键
  {
   if(mima_ws>6)//如果位数超过6,则置6
   {
    mima_ws=6;
   }
   mima_ws--;//退格减减
   if(mima_ws==0xff)
   {
    mima_ws=0;
   }
   gotoxy(4,mima_ws);print("  ");//液晶显示清空对应的密码
   key_anxia=0;//退出
  }
}

五.总结

        今天使用Notepad++介绍程序就介绍到这里,明天博主使用KEIL详细为大家讲解程序,今天的讲解就到这里,大家点点关注,明天见。。。。。。

  • 33
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值