基于52单片机的AS608指纹密码锁电路原理图+源程序+PCB实物制作

news2024/11/25 4:29:06

目录

1、前言

2、实物图

3、PCB图

4、原理图 

5、程序 

资料下载地址:基于52单片机的AS608指纹密码锁电路原理图+源程序+PCB实物制作

1、前言

这是一个基于AS608+STC89C52单片机的指纹识别和键盘密码锁。
里面包括程序,原理图,pcb图和实物图。

2、实物图

3、PCB图

 

4、原理图 

5、程序 

#include "all.h"

/************************引脚定义************************/
sbit relay=P3^6;//继电器
sbit buzz=P3^2;//蜂鸣器
sbit led=P0^0;//LED指示灯

/************************变量定义************************/
#define MAX 6          //指纹最大数量
#define ID_MAX 3//输入ID最大位数

u16 T0_num=0;

u8 mode=0;   //0正常打卡,1管理界面,2注册模式,3删除模式,4查询模式,5修改密码,6校准时钟,7工作时间

u8 mode_num=0;

u16 ID=0;                  //存储输入编号ID
u8 n=0;             //输入的位数
bit zhiwen_f=0;         //1=标记进入指纹采集

u8 shu;

u8 a;                                                                                //存储按键值
u8 num;                                                                                //记录输入的密码位数
bit   in_f;                                                                                //输入密码的标志
bit   reset_f;                                                                        //重设密码的标志
bit   input_f;                                                                        //六位密码按完的标志
u8 reset_num;                                                                //标记修改密码阶段,=1输入旧密码,=2输入新密码,=3再次输入新密码

u32 low_mima=0;//系统密码
u32 in_mima=0; //暂存输入的密码
u32 new_mima=0;//暂存输入新密码

u8 set_f=0;
u8 temp[5]="    \0";  
/********************************************************
函数名称:void delayms(uint ms)
函数作用:毫秒延时函数
参数说明:
********************************************************/
void delayms(u16 ms)
{
        u8 i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}

/********************************************************
函数名称:void didi(uchar i)
函数作用:蜂鸣器鸣叫
参数说明:i为鸣叫次数
********************************************************/
void didi(u8 i)
{
        u8 j;
        for(j=0;j<i;j++)
        {
                led=0;
                buzz=0;
                delayms(20);
                led=1;
                buzz=1;
                delayms(15);
        }
}
/********************************************************
函数名称:void diaplay_mode0()
函数作用:显示打卡主界面
参数说明:
********************************************************/
void diaplay_mode0()
{
        LCD12864_display_string(1,1,"指纹密码锁");
        LCD12864_display_string(0,2,"编号: ");       
        LCD12864_display_string(0,3,"状态: ");
}
/********************************************************
函数名称:void xunzhiwen()
函数作用:查找指纹
参数说明:
********************************************************/
void xunzhiwen()
{
        searchnum=search();//搜索指纹
        if((searchnum>=1&&searchnum<=MAX)||searchnum==255)//最多是MAX个指纹
        {          
                if(searchnum>=1&&searchnum<=MAX)//指纹识别成功
                {
                        temp[0]=searchnum%1000/100+0x30;
                        temp[1]=searchnum%100/10+0x30;
                        temp[2]=searchnum%10+0x30;
                        temp[3]=' ';
                        LCD12864_display_string(3,2,temp);
                        LCD12864_display_string(3,3,"指纹解锁");
                        LCD12864_display_string(1,4,"            ");
                        in_mima=0;
                        num=0;
                        input_f=0;
                        relay=0;
                        T0_num=0;       
                }
                else//不正确的指纹
                {
                        LCD12864_display_string(3,3,"无效指纹");
                        didi(3);
                }
                delay1ms(500);
                LCD12864_display_string(3,2,"    ");
                LCD12864_display_string(3,3,"        ");
        }                                                                                 
}

/********************************************************
函数名称:void cunchu()
函数作用:存储指纹
参数说明:
********************************************************/
void cunchu()
{
        LCD12864_display_string(0,3,"状态: ");

        if(ID>0&&ID<=MAX)
        {
                if(enroll()==1)//采集两次,生成1个指纹模板成功
                {
                        if(savefingure(ID)==1)//保存也成功
                        {
                                LCD12864_display_string(3,3,"录入成功");
                                AT24C02_write_date(ID,1);
                        }
                        else
                                LCD12864_display_string(3,3,"存储失败");       
                }
                else
                        LCD12864_display_string(3,3,"采集失败");       
        }
        else
                LCD12864_display_string(3,3,"编号错误");

        n=0;
        ID=0;
        zhiwen_f=0;
}
/********************************************************
函数名称:void shanchu()
函数作用:删除指纹
参数说明:
********************************************************/
void shanchu()
{
        u16 i;
        LCD12864_display_string(0,3,"状态: ");
        if(ID>0&&ID<=MAX)
        {
                if(dellfingure(ID)==1)
                {
                        LCD12864_display_string(3,3,"清空成功");
                        AT24C02_write_date(ID,0);
                }
                else
                        LCD12864_display_string(3,3,"1清空失败");       
        }
        else
        {
                if(ID==999)
                {
                        if(Clear_All()==1)
                        {
                                for(i=1;i<6;i++)
                                        AT24C02_write_date(i,0);
                                LCD12864_display_string(3,3,"清空指纹");
                        }
                        else
                                LCD12864_display_string(3,3,"清空失败");       
                }
                else
                        LCD12864_display_string(3,3,"编号错误");
        }
               
        n=0;
        ID=0;
        zhiwen_f=0;                                                                         
}

/********************************************************
函数名称:void display_guanli()
函数作用:显示管理界面
参数说明:
********************************************************/
void display_guanli()
{
        LCD12864_display_string(0,1,"  管理系统界面  ");
        LCD12864_display_string(0,2,"    录入指纹    ");
  LCD12864_display_string(0,3,"    清空指纹    ");
        LCD12864_display_string(0,4,"    修改密码    ");
        switch(mode_num)               
        {
           case 0: LCD12864_display_string(0,2," >> "); break;
           case 1: LCD12864_display_string(0,3," >> "); break;
           case 2: LCD12864_display_string(0,4," >> "); break;
           default: break;
        }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拉普拉斯丨独家冠名2024年度ATPV技术分论坛,助力产业科技持续创新

为了进一步促进行业技术交流&#xff0c;推进光伏行业发展及标准建设的进程&#xff0c;针对高效电池&#xff0c;领跑组件&#xff0c;新产品认证及应用等技术专题及国内外光伏标准的最新进程&#xff0c;由中国绿色供应链联盟光伏专委会&#xff08;ECOPV&#xff09;指导的2…

Linux安装Python3.9环境

大家好&#xff0c;今天给大家分享一下在Linux系统中安装Python3环境&#xff0c;Linux系统中自带的Python2尽量不要删除&#xff0c;删除后可能会导致系统出现问题。 关于Linux常用命令&#xff0c;可以参考&#xff1a;作为测试人员的Linux常用命令 一、下载Python3安装包 …

笔试强训Day17 字符串 前缀和

BC45 小乐乐改数字 题目链接&#xff1a;小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 思路&#xff1a; 水题一道 注意前导0. AC code&#xff1a; #include <iostream> #include<string> using namespace std; string a,b; int main() {cin >> a;for…

【Linux系列】tail查询使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Springboot集成Mybatispuls操作mysql数据库-03

MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强而不做改变。它支持所有MyBatis原生的特性&#xff0c;因此引入MyBatis-Plus不会对现有的MyBatis构架产生任何影响。MyBatis-Plus旨在简化开发、提高效率&#xff0c;…

yum常用命令与lrzsz的在线安装

yum命令 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装…

python数据分析所需要的语法基础

Python语言基础——语法基础 前言语法基础变量标识符数据类型输入与输出代码缩进与注释 总结 前言 对于学过C语言的人来说&#xff0c;python其实很简单。学过一种语言&#xff0c;学习另一种语言&#xff0c;很显然的能感觉到&#xff0c;语言大体上都是相通的。当然&#xf…

nacos开启登录开关启动报错“Unable to start embedded Tomcat”

nacos 版本&#xff1a;2.3.2 2.2.2版本之前的Nacos默认控制台&#xff0c;无论服务端是否开启鉴权&#xff0c;都会存在一个登录页&#xff1b;在之后的版本关闭了默认登录页面&#xff0c;无需登录直接进入控制台操作。在这里我们可以在官网可以看到相关介绍 而我现在所用的…

代码随想录-算法训练营day31【贪心算法01:理论基础、分发饼干、摆动序列、最大子序和】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第八章 贪心算法 part01● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其…

软件测试与管理-白盒测试-基本路径测试法

知识点&#xff1a; 1.原理 是在程序控制流图的基础上&#xff0c;通过分析控制构造的环路复杂性&#xff0c;导出基本可执行路径的集合&#xff0c;然后根据可执行路径进行测试用例设计的方法。此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。 2.步骤 &a…

Netty 实现dubbo rpc

一、RPC 的基本介绍 RPC (Remote Procedure Call) 远程过程调用&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序&#xff0c;而程序员无需额外的为这个交互编程。也就是说可以达到两个或者多个应用程序部署在不同的服务器上&…

基于BP神经网络的QPSK解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................................................ for ij 1:leng…

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内&#xff0c;以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内&#xff0c;比如[0,1]或者[-1,1]&#xff0c;来消除不同特征之间的量纲和取值范围…

弹性云服务器给用户带来了哪些便利

什么是弹性云服务器&#xff1f; 弹性云服务器&#xff08;ECS&#xff0c;Elastic Cloud Server&#xff09;简单地说&#xff0c;是指运行在云计算环境中的虚拟服务器。弹性云服务器可以说是虚拟专用服务器(VPS)&#xff0c;但VPS却不能说是云服务器。这是因为两者有着本质的…

软件游戏丢失XINPUT1_4.dll文件的多种解决方法分享

当玩家在尝试启动某款游戏时&#xff0c;遇到了系统提示“游戏找不到XINPUT1_4.dll”&#xff0c;这个错误通常发生在玩家尝试启动游戏时&#xff0c;游戏无法找到所需的XINPUT1_4.dll文件&#xff0c;呆滞无法正常启动运行。但是幸运的是&#xff0c;有一些简单的修复方法可以…

【typescript测试 - Jest 配置与使用】

安装 npm install --save-dev types/jestnpm install --save-dev ts-jest配置 tsconfig.json {"compilerOptions": {"types": ["jest"]} }jest.config.js module.exports {preset: ts-jest,testEnvironment: node, };使用 // add.js funct…

数据分析——业务指标量化

业务指标量化 前言一、统计指标二、统计指标特点完整的统计指标统计指标的理解和使用方法 三、统计指标类型总量指标时期指标时点指标总量指标的作用 相对指标计划完成相对数指标结构相对数指标比例相对数指标比较相对数指标动态相对数指标 平均指标 四、数量指标和质量指标五、…

【1小时掌握速通深度学习面试8】生成模型-中

目录 28.DBN与DBM 有什么区别? 29.VAE如何控制生成图像的类别? 30.如何修改VAE的损失函数&#xff0c;使得隐藏层的编码是相互解耦的? 31.自回归方法如何应用在生成模型上? 32.原始 VAE存在哪些问题? 有哪些改进方式? 33.如何将VAE与GAN 进行结合&#xff1f; 34.…

Rust Postgres实例

Rust Postgres介绍 Rust Postgres是一个纯Rust实现的PostgreSQL客户端库&#xff0c;无需依赖任何外部二进制文件2。这意味着它可以轻松集成到你的Rust项目中&#xff0c;提供对PostgreSQL的支持。 特点 高性能&#xff1a;Rust Postgres提供了高性能的数据库交互功能&#…

C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒 待 葡萄成熟透 但是命运入面 每个邂逅 一起走到了 某个路口 是敌与是友 各自也没有自由 位置变了 各有队友 首先&#xff0c;按照惯例&#xff0c;十分欢迎大家边听歌边观看本博客&#xff01;&#xff01; 最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com) 一…