单片机电子密码锁门禁系统设计 AT24C02保存密码

2019-12-02来源: 51hei关键字:单片机  电子密码锁  门禁系统  AT24C02

该设计基于STC单片机设计,电路主要由51单片机最小系统和按键部分、蜂鸣器报警部分、LCD液晶显示部分等组成。该电路设计简单,单层板加上几根跳线即可完成,适合电子初学者DIY制作。


电子密码锁具体功能介绍:

1、该电子密码锁默认密码为1234567890,密码通过键盘输入,若密码正确,则将锁打开。

2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。

3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。

4、AT24C02保存密码,支持复位保存,掉电保存功能。

附件内容包括:

整个电子密码锁原理图和PCB源文件,用AD软件打开;


Altium Designer画的原理图和PCB图如下:
0.png0.png 

单片机源程序如下:

#include

#define uint unsigned int

#define        uchar unsigned char

sbit l1=P1^0;        //LED指示

sbit bump=P2^2;        //蜂鸣器控制

sbit relay=P2^3;//继电器输出

sbit lcden=P2^7;//LCD1602液晶控制端

sbit lcdrs=P2^6;

sbit sda=P2^0;        //AT24C02数据端口

sbit scl=P2^1;        //时钟端口

/**********显示内容**************************/

uchar code xianshi0[]="input  password:";

uchar code xianshi1[]="please come in!";

uchar code xianshi2[]="*";

uchar code xianshi3[]=" you are thief!";

uchar code xianshi4[]=" new  password:";

uchar code xianshi5[]=" alter succeed!";

uchar code xianshi6[]="  first error!";

uchar code xianshi7[]="  second error!";

uchar code xianshi8[]="  third error!";

uchar code xianshi9[]="  alter fail!!";

uchar table[8];                         //给按键输入留取存储空间

uchar table1[8];                 //给密码修改留取存储空间

uchar mima[8];                         //给从存储中读取密码留取存储空间

uchar num,num1,num2,num3,etimes,fanhui,kai;

bit alterflog,cpflog,suoflog;//定义各种标志位 修改密码键按下标志   密码比较正确标志  上锁标志

void keyscan();                                                  //声明键盘扫描函数

void init();

void keydeal15();

void keydeal16();                                                  //声明初始化函数

/********************延时一毫秒函数**************/        

void delay_xs(uint x)

{          uint i,j;

        for(i=x;i>0;i--)         for(j=110;j>0;j--);}

void writecom(uchar com)        //写命令

{

        lcdrs=0;         P0=com;                 delay_xs(5);

        lcden=1;          delay_xs(5);                 lcden=0;

}

/*********************液晶写命令数据函数******************/

void writedate(uchar date)        //写命令

{

        lcdrs=1;         P0=date;        delay_xs(5);

        lcden=1;         delay_xs(5);        lcden=0;

}

/***************24c02读取写入数据初始化****************/

void delay()  //微妙级延时函数

{ ;; }

void start()  //开始信号

{        

        sda=1;         delay(); scl=1;        delay(); sda=0;        delay();

}


void stop()   //停止

{

        sda=0;delay();scl=1;delay();sda=1;delay();

}

void respons()  //应答

{

        uchar i;

        scl=1;        delay();

        while((sda==1)&&(i<250)) i++;

        scl=0;         delay();

}

void write_byte(uchar date)                //写一位数据

{

        uchar i,temp;

        temp=date;



        for(i=0;i<8;i++)

        {

                temp=temp<<1;

                scl=0; delay();        sda=CY;        delay();

                scl=1; delay();

        }

        scl=0;         delay();

        sda=1;         delay();

}


uchar read_byte()                           //读一位数据

{

        uchar i,k;

        scl=0;         delay();

        sda=1;        delay();

        for(i=0;i<8;i++)

        {

                scl=1;        delay();        

                k=(k<<1)|sda;

                scl=0;        delay();        

        }

        return k;

}

void write24c02(uchar address,uchar date) //写一字节函数

{

        start();

        write_byte(0xa0);

        respons();

        write_byte(address);

        respons();

        write_byte(date);

        respons();

        stop();

}


uchar read24c02(uchar address)                //读一字节函数

{

        uchar date;

        start();

        write_byte(0xa0);

        respons();

        write_byte(address);

        respons();

        start();

        write_byte(0xa1);

        respons();

        date=read_byte();

        stop();

        return date;

}

/************各按键对应处理函数***************/

/*************各按键功能********************

1-2-3-4-5-6-7-8-9-0-确认-重新输入-未定义-上锁-密码修改

-密码修改确认-未定义*************************/

void keydeal1()                                 //按键1

{

        table[num]=1;

        num++;

        if(alterflog==1){table1[num1]=1;num1++;        }

}

void keydeal2()                                //按键2

{

        table[num]=2;

        num++;

        if(alterflog==1){table1[num1]=2;num1++;        }

}

void keydeal3()                               //按键3

{

        table[num]=3;

        num++;

        if(alterflog==1){table1[num1]=3;num1++;        }

}

void keydeal4()                               //按键4

{

        table[num]=4;

        num++;

        if(alterflog==1){table1[num1]=4;num1++;        }

}

void keydeal5()                               //按键5

{

        table[num]=5;

        num++;

        if(alterflog==1) {table1[num1]=5;num1++;}

}

void keydeal6()                                        //按键6

{

        table[num]=6;

        num++;

        if(alterflog==1){table1[num1]=6;num1++;        }

}

void keydeal7()                                        //按键7

{

        table[num]=7;

        num++;

        if(alterflog==1){table1[num1]=7;num1++;        }

}

void keydeal8()                                          //按键8

{

        table[num]=8;

        num++;

        if(alterflog==1){table1[num1]=8;num1++;        }

}

void keydeal9()

[1] [2] [3] [4] [5]
关键字:单片机  电子密码锁  门禁系统  AT24C02 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481660.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ACS712+单片机实现电流检测与报警的电路原理图与源码
下一篇:基于STC15w104单片机的人体红外报警

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

PIC系列单片机的优势是什么
一、引言据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行
发表于 2019-12-05
PIC系列单片机的优势是什么
PIC单片机以及51单片机和AVR单片机的IO口操作方法介绍
对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文,希望大家认真研读,以在pic单片机的学习之路上更为精进。一.51单片机IO口的操作51单片机IO口的结构比较简单,每个IO口只有一个IO口寄存器Px,而且这个寄存器可以位寻址,操作起来是所有单片机里最简单的,可以直接进行总线操作也可以直接进行位操作,这也是51单片机之所以成为经典的原因之一。下例的运行坏境为Keil软件,器件为AT89S52。#i ncludesbit bv=P2^0;//定义位变量,关联P2.0
发表于 2019-12-05
PIC单片机以及51单片机和AVR单片机的IO口操作方法介绍
PIC单片机的类型以及特征介绍
对于pic单片机,大家或多或少均有所耳闻。但是,大家对pic单片机有多少了解呢?是否熟知不同类型的pic单片机呢?由美国Microchip公司推出的PIC单片机系列产品,首先采用了RISC结构的嵌入式微控制器,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。现在PIC系列单片机在世界单片机市场的份额排名中已逐年升位,尤其在8位单片机市场,据称已从1990年的第20位上升到目前的第二位。PIC单片机从覆盖市场出发,已有三种(又称三层次)系列多种型号的产品问世,所以在全球都可以看到PIC单片机从电脑的外设、家电控制、电讯通信、智能仪器、汽车电子到金融电子各个领域的广泛应用。现今
发表于 2019-12-05
PIC单片机的类型以及特征介绍
PIC单片机和51单片机谁更容易于学习
pic单片机是当前最实用工具之一,而对于pic单片机的探讨往往与其他类型单片机相联系。51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。再说说PIC相比与51单片机有哪些优点:1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,不用
发表于 2019-12-05
PIC单片机和51单片机谁更容易于学习
PIC单片机相比其他单片机的四大优势介绍
本人从事单片机应用系统的开发已有多年,使用过多种型号的PIC单片机,深感PIC单片机使用起来确实很方便:1、 PIC单片机采用精简指令集,中档产品仅需35条指令,入门门槛低,而在使用过程中绝不会感到不方便。2、PIC单片机的数据线和指令线各自独立,代码效率高,是传统51系列单片机的2-3倍,除几个跳转类指令外均为单周期指令,在计算延时时间时非常方便。 3、PIC单片机外围接口十分丰富,能满足绝大部分应用系统的需求;比如PIC16F877A包含8路ADC,1个CCP、PWM、USART、SSP、I2C/SPI,3个定时/计数器,1个硬件WDT等接口,8K FLASH程序存储器、256字节EEPROM,能满足较复杂测控系统
发表于 2019-12-05
PIC单片机相比其他单片机的四大优势介绍
PIC单片机的基本程序设计方法解析
PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。本内容讲述了PIC单片机中的程序设计方面的学习1、PIC单片机程序的基本格式先介绍二条伪指令:EQU ——标号赋值伪指令ORG ——地址定义伪指令PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:PIC16C54/55:1FFHPIC16C56:3FFHPIC16C57/58:7FFH一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考
发表于 2019-12-05
PIC单片机的基本程序设计方法解析
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved