精华内容
下载资源
问答
  • 以STC89C52单片机为核心的电子密码锁设计
    2021-05-19 20:00:25

    引言

    电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁;不仅具有电子密码锁的功能”还可引人智能化管理功能,从而使密码锁具有更离的安全性和可靠性。

    电子密码锁通常使用ARM和单片机控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的窖码锁常使用汇编语言编写程序,显示器多数用数码管。而本文所介绍的电子密犸锁使用移植性及可读性强的高级语言C语言编写,便于修改和增减功能蚤同时采用显示清楚,功率消耗小而且寿命长的1602 液晶显示器,显示更加直观,使用更加方便。从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报警和防止多次试探密码功能的电子密码锁,通过Protues软件成功地进行了仿真。

    1、系统工作原理

    本系统以STC89C52单片机为核心,使用4X4矩阵键盘作为数据输人方式,驱动1602显示器提示程序运行过程和*的步骤。本系统的密码判断过程如下:

    当使用者输人6位密码后按下BESURE键,单片机通过密码逐个比较,如果输入的6位蜜码和设定的密码完全相同,那么能成功驱动*模拟灯将锁打开。若输入6位密码与设定的密码不相同,按下BESURE键后,模拟灯不亮,可以按BACK键重新输入。由于输入密码过程中难免输入失误,如果密码输错,可直接攒下BACK键重新输入,但是系统不允许无限次地按BACK 键,以免密码被套用,当3次密码输入都错误,单片机将驱动蜂鸣器报警。并且本系统输入密码还有呓间限制,在规定的时阍内没有将正确密码输入也会报警。

    修改密码功能如下:当密码输人正确后,按下SET键可新设置密码。每设定一位新密码,单片机将其送给EPROM,当6位新密码都输入完毕,系统将自动回到程序开始,重新读取密码并保存,使用者需输人新的密码才能将锁打开。

    2、系统设计

    2.1 硬件支持

    使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602、矩阵键盘、报警蜂鸣器、独立按键(摸拟门的开关)、发光二极管(模拟锁的开关)和三极管(放大电流)。

    2.2 软件设计

    本系统软件包插主程序模块、甯码比较判断模块、修改密码模块、键盘扫描模块、液晶显示模块及定时程序等模块。系统程序流程如图1所示。

    28b682666e483b74d0be4b687e135f8b.png

    图1 系统程序流程图

    2.2.1 主程序模块

    主租序主要用于定义全局变量,给全局变量赋初值,初始化EPROM,启动定时器以及从AT24C02中读取密码, 为整个程序提供数据。

    2.2.2 密码比较判断模块

    该模块的功能是将键盘输入的密码利用IF语句与设定的密码进行逐个比较,若密码完全正确则*;若不正确,则按下BACK键,重新输入密码,每按下BACK键一次,输人次数将自加1,当3}fi都出错则报警。

    2.2.3 密码修改模块

    在窖码输入正确情况下,可以按下SET对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的辚码。

    STC89C52向AT24C02写入密码子程序:

    void wrtte_byte(uchar date)

    a364c608de5e8d7179e4c5578e0f72ed.png

    STC89C52 从 AT24C02读取密码子程序:

    b72f803a62aee75bd6992ea9f83cd33a.png

    2.2.4 键盘扫描模块

    该模块具备功能有:逐列扫描键盘确实被按键的具体位置、判断键盘上有无键按下、消除抖动、判断闭合的键是否释放等功能。

    2.2.5定时模块

    本模块用于对密码输入时间控制。在程序运行时首先对定时器进行了初始化,从按下PUT IN键开始,系统开始计时,当输入的时间达到规定的时间将立即报警。

    2.2.6 液晶显示模块

    此模块包括液晶初始化、命令的输入、显示数据的输入。其中命令 用于控制液晶状态是否显示光标,光标是否闪烁,是否清除原来数据以及显示的具体位置。数据显示主要是将要显示的信息安需要准时显示出来。

    3 系统仿真

    为了方便程序高度。本文采用了 Protues 仿真,仿真图如图2所示。

    b6db66da563dcd02ca8e0c8d7d2f38ed.png

    3.1系统介绍

    图2中U1为STC89C52是个系统的核心,编写的程序以二进制的文件导入其中;U2为AT24C02,第5和第6个引脚分别与单片机的P1.2和P1.3相连;LCD1为1602液晶显示器,引脚连接如图2所示;独立按键DOOR,当门关上为键按下状态;D1为模拟*灯,当密码正确,按下BESURE键D1将亮;BUZ1为蜂鸣器报警。当程序编写好并导入到单片机里后,按下图2最下面的开始按钮,1602液晶显示器将提示密码锁的运行状态,系统开始工作。

    3.2*功能

    当电源开启后,1602液晶显示Welcome欢迎界面,当按下PUT IN键后,显示器显示PUT IN CODES提示使用输入密码,如图3所示。几秒后液晶显示器上提示将自动消失。此进可输入正确密码,且密码输入时显示*而不会将输入的数据显示出来。当输入密码完毕后,按下BESURE键,如果输入的密码正确D1将亮(D1作为*的模拟开关)。若密码错误,可以按下BACK键,程序将跳到loop(开始界面),重新输入密码,同时输入次数将增加一次。当3次都输入错误则自动报警,并且输入密码的时间必须在规定时间完成,否则也会报警。

    72e26182f858ff03b3d31968291c75aa.png

    3.3密码设定

    在密码输入正确后,按下SET键可对密码进行重新设置,液晶显示器显示SET CODS。同样几秒后提示将自动消失,此时开始重设密码。在密码设定过程中会将设定的数字显示出来,每输入一位密码需按下YES键确定,当设置的密码达到6位将自动回到启动界面。

    4、结论

    (1)成功仿真实现了1602液晶显示,密码*,密码设置,防止多次试探,报警等功能。

    (2)采用C语言编写程序,具有很强的移植性,为系统增减和修改带了方便。

    更多相关内容
  • 基于单片机电子密码锁设计程序: 设计要求:1、4*3阵键盘0—9数字输入及2个功能键:用于密码输入和功能选择; 2、根据设定好的密码,当密码输入正确之后,锁就打开,绿色发光二极管亮; 3、当输入密码错误时,...
  • 该资料包含原理图、源程序和仿真等 功能介绍: 1.采用AT24C02芯片可以实现存储的密码掉电保存。密码为4位,只有在开锁时密码可更改,更改时要输入两遍确认; 2.采用矩阵按键输入、1602液晶显示、LED灯模拟开锁,...
  • 密码为6位,只有在开锁时密码可更改,更改时要输入两遍确认; 2.采用矩阵按键输入、1602液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁等负载; 3.输入密码错误会提示错误次数,当次数...
  • 基于单片机电子密码锁,通过密码输入来控制芯片工作,完成开锁、闭锁、修改密码等任务的电子产品。它具有保密性高、成本低、功耗低、操作简单,使用灵活性好等特点。 附件包含源代码
  • 基于51单片机电子密码锁程序

    千次阅读 2021-05-19 16:20:08
    结果图:4.png (839.58 KB, 下载次数: 5)2020-10-17 20:57 上传一、目的概述(收集相关资料、选设计方案、电路设计):本设计是以STC89C52单片机为控制核心的电子密码锁,属于单片机的应用。做本设计有助于对单片机...

    结果图:

    3f829e29e76caa8c3b1f630a6b27d58d.gif

    4.png (839.58 KB, 下载次数: 5)

    2020-10-17 20:57 上传

    一、目的概述(收集相关资料、选设计方案、电路设计):

    本设计是以STC89C52单片机为控制核心的电子密码锁,属于单片机的应用。做本设计有助于对单片机矩阵键盘,数码管以及串行通信原理的深入了解。电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

    系统设计方案为:

    (1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

    (2)密码可由用户自己设定,在开锁状态下,用户可自行修改密码。

    (3)具有自动报警功能,密码输入错误时,报警由扬声器发出“滴滴”报警声。而密码输入正确则是“叮咚”声。

    系统设计结构图:3f829e29e76caa8c3b1f630a6b27d58d.gif

    屏幕截图 2020-10-17 205131.png (26.31 KB, 下载次数: 4)

    2020-10-17 20:52 上传

    本设计由主控芯片51单片机,单片机时钟电路,键盘,数码管组成。单片负责控制整个系统的控制执行过程。开锁成功由数码管显示OPEN,以及蜂鸣器“叮咚”表示,开锁失败由数码管显示Err,以及蜂鸣器“滴滴”表示。

    二、实验原理图

    电路设计:

    3f829e29e76caa8c3b1f630a6b27d58d.gif

    2.png (180.44 KB, 下载次数: 1)

    2020-10-17 20:54 上传

    3f829e29e76caa8c3b1f630a6b27d58d.gif

    1.png (96.78 KB, 下载次数: 3)

    2020-10-17 20:54 上传

    程序设计:(只展示核心部分)

    主程序

    1.  //4×4 键盘及8 位数码管显示构成的电子密码锁

    2.  void main() //主程序

    3.  {

    4.      uchar key;

    5.      Timer0_Init();

    6.      while(1)

    7.      {

    8.          key = KeyScan();

    9.          password(key);

    10.     }

    11. }

    核心程序:数码管的动态扫描显示

    12. void Display()

    13. {

    14.     uchar i;

    15.     Segment_sel=0x00;//消隐

    16.     switch(i)    //位选,选择点亮的数码管,

    17.     {

    18.         case(0):

    19.             LSA=0;LSB=0;LSC=0; break;

    20.         case(1):

    21.             LSA=1;LSB=0;LSC=0; break;

    22.         case(2):

    23.             LSA=0;LSB=1;LSC=0; break;

    24.         case(3):

    25.             LSA=1;LSB=1;LSC=0; break;

    26.         case(4):

    27.             LSA=0;LSB=0;LSC=1; break;

    28.         case(5):

    29.             LSA=1;LSB=0;LSC=1; break;

    30.     }

    31. }

    核心程序:矩阵键盘的扫描输入

    32. uchar KeyScan()

    33. {

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

    35.     {

    36.         P1 = P1Pin[ i];

    37.         Button = P1;

    38.         if(Button != P1Pin[ i])

    39.         {

    40.             Delayms(5);

    41.             Button = P1;

    42.             if(Button != P1Pin[ i])

    43.             {

    44.                 KeyState=1;

    45.                 key8 = Button;

    46.             }

    47.             while(Button != P1Pin[ i])

    48.             { Button = P1; }

    49.         }

    50.     }

    51.     switch(key8)

    52.     {

    53.         case 0x77:{key = 1;break;}

    54.         case 0x7b:{key = 2;break;}

    55.         case 0x7d:{key = 3;break;}

    56.         case 0xb7:{key = 4;break;}

    57.         case 0xbb:{key = 5;break;}

    58.         case 0xbd:{key = 6;break;}

    59.         case 0xd7:{key = 7;break;}

    60.         case 0xdb:{key = 8;break;}

    61.         case 0xdd:{key = 9;break;}

    62.         case 0xeb:{key = 0;break;}  //0

    63.         case 0x7e:{key = 10;break;}  //÷

    64.         case 0xbe:{key = 11;break;}  //×

    65.         case 0xde:{key = 12;break;}  //+

    66.         case 0xee:{key = 13;break;}  //-

    67.         case 0xed:{key = 14;break;}  //=

    68.         case 0xe7:{key = 15;break;}  //ENTER

    69.         default:{key = 0xff;break;}

    70.     }

    71.     return key;

    72. }

    核心程序:输入密码以及校对和处理

    73. void password(uchar key)//0~9 数字键,10 输入密码,11 设置密码,12 删除上一个数,13 重新输入 15 确定

    74. {

    75.     uchar i=0;

    76.     if(KeyState==1)

    77.     {

    78.         switch(state)

    79.         {

    80.             case 0:

    81.             {

    82.                 if(key == 10)

    83.                 {

    84.                     state = 1;

    85.                     LSA=1;LSB=1;LSC=1;

    86.                     Segment_sel=0xff;  //显示8

    87.                 }

    88.                 else if(key == 11)

    89.                 {

    90.                     state = 2;

    91.                     LSA=1;LSB=1;LSC=1;

    92.                     Segment_sel=0xfd;  //显示P

    93.                 }

    94.                 break;

    95.             }

    96.             case 1:

    97.             {

    98.                 if(key>=0 && key <= 9)  //输入

    99.                 {

    100.                     InPassword[5]=InPassword[4];

    101.                     InPassword[4]=InPassword[3];

    102.                     InPassword[3]=InPassword[2];

    103.                     InPassword[2]=InPassword[1];

    104.                     InPassword[1]=InPassword[0];

    105.                     InPassword[0]=smgduan[key];

    106.                     KeyState=0;

    107.                 }

    108.                 else if(key == 15)  //确定

    109.                 {

    110.                     if(Compare(InPassword))

    111.                     {

    112.                         for(i=17;i<23;i++)

    113.                             InPassword[ i]=smgduan;

    114.                         Delayms(1000);

    115.                     }//open

    116.                     else

    117.                     {

    118.                         for(i=23;i<27;i++)

    119.                             InPassword[ i]=smgduan;

    120.                         Delayms(1000);

    121.                     }//err

    122.                 state = 0;

    123.                 }

    124.                 else if(key == 13)  //重新输入

    125.                 {

    126.                     for(i=0;i<6;i++)

    127.                         InPassword[ i] = 0xff;  // 全亮

    128.                     Delayms(1000);

    129.                     state = 0;

    130.                 }

    131.                 break;

    132.             }

    133.     else//如果没有按键按下

    134.     {

    135.         if(state == 0)

    136.         {

    137.             Segment_sel= 0x00;// 不显示

    138.         }

    139.     }

    140. }

    C语言代码51hei下载地址:

    08888e3a94b1d4845f47f7539b112be4.gif

    电子密码锁程序.zip

    (1.79 KB, 下载次数: 52)

    2020-10-17 20:59 上传

    点击文件名下载附件

    下载积分: 黑币 -5

    展开全文
  • 功能说明:实现五位密码的设置和解锁 程序入口:s-密码数组指针;len-已输密码长度;mode-为要 显密码的类型,0x01为解密输入,0x02为密码设置输入
  • (1)设计4位密码电子锁。 (2)在数码管上显示密码,并且密码可删除。 (3)当密码正确时,LED灯亮,密码错误,蜂鸣器报警三声。 (4)矩阵键盘包括0-9输入密码键以及删除密码键、关闭键。 (5)4个独立按键...
  • 基于单片机电子密码锁设计程序及电路图.pdf
  • 此为微控制器设计的一个电子密码锁的一个系统,利用51单片机进行设计,在proteus上设计出原理图,在keil软件上编写C语音程序一次实现电子密码锁的仿真设计。该资源包含了源文件和程序。可用于电子信息类的毕业或课程...
  • 基于51单片机电子密码锁的Proteus仿真设计.pdf
  • 基于51单片机的带记忆功能的电子密码锁设计。 设计要求:1、利用51系列单片机为核心,矩阵键盘与LCD1602液晶显示屏组成硬件系统,设计一款电子密码锁; 2、该密码锁具有设置、修改六位用户密码、超次报警、超次锁定...
  • 关于89c51单片机的一个主程序。。。大家可以看看啊
  • 基于51单片机+LCD1602显示的电子密码锁程序源代码及仿真 基于51单片机的电子密码锁c程序,可保护密码,三次报警,基于51单片机电子密码锁程序及仿真,支持报警,密码修改,密码保存,管理员密码等功能! /*密码...
  • 带keil4编写的代码程序以及生成好的hex文件,也有proteus8.6的仿真文件,12位按键,带清零功能。三次密码错误键盘死报警,延时10s,恢复初始界面,1602液晶显示。有密码重置功能。初始密码6个0
  • 本系统由单片机+最小系统+LCD1602液晶显示模块+LED指示灯模块+继电器驱动模块+矩阵键盘模块+AT24C02芯片模块+指纹模块设计而成。 附件为C代码。
  • 基于51单片机电子密码锁
  • 电子密码锁默认密码:12345678. 1.输入8位密码,点击开锁按键,完成开锁,LED 点亮,蜂鸣器发出"嘀"。 2.开锁完成后,点击上锁,LED熄灭,完成上锁。 3.更改密码:先开锁,再输入新密码,点击更改 密码完成更改密码...
  • 本系统由STC89C52单片机、44矩阵键盘,蜂鸣器,复位电路和晶振电路、继电器等组成,44键盘主要用于密码的输入和修改,蜂鸣器报警,复位电路和晶振电路与STC89C52单片机组成单片机最小系统。它具有设置、修改6位用户...

    一.硬件方案

    本系统由STC89C52单片机、44矩阵键盘,蜂鸣器,复位电路和晶振电路、继电器等组成,44键盘主要用于密码的输入和修改,蜂鸣器报警,复位电路和晶振电路与STC89C52单片机组成单片机最小系统。它具有设置、修改6位用户密码、输错报警、密码错误报警等功能。
    主要由51单片机+最小系统+LCD1602液晶显示模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+矩阵键盘模块+AT24C02芯片模块;如图:
    在这里插入图片描述

    二.设计功能

    (1)采用AT24C02芯片可以实现存储的密码掉电保存。密码为1-16位,开锁时可以随意输入虚假密码掩人耳目可以随意更改,更改时要输入两遍确认;
    (2)采用矩阵按键输入、1602液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载;
    (3)有管理员密码,即使望记密码也不怕,可以找回;
    (4)按键功能如图:
    在这里插入图片描述

    三.设计原理图

    (1)原理图主要采用AD软件进行设计,如图:
    在这里插入图片描述

    (2)Protues仿真图如下:
    在这里插入图片描述

    四.软件设计

    (1)程序流程图
    在这里插入图片描述

    (2)主程序源码

    /******************主程序**********************/	   
    void main()
    {
    	static uint value ;
    	password_chushifa();
    	init_1602(); 
    	UartInit();
    	time_init();   //定时器初始化
    	read_24c02_8(6,0,password);
    	beiguan = 0;
    	while(1)
    	{	
    		if(flag_password_cichu1 < 3)     //错误三次按键不能用了
    		{
    			
    			key();					 //按键函数
    			
    			if(key_can < 20)
    			{
    				beep =0;
    				if(beiguan == 0)
    				{
    					if(menu_1 == 0)
    						key_with();			 //按键处理函数
    					xiugai_password();       //修改密码
    				}
    				else 
    					beiguan = 0;
    				flag_time = 0;	
    				delay_1ms(300);
    				beep =1;				
    			}
    		}
    
    		if(flag_200ms == 1)
    		{
    			flag_200ms = 0;	 
    			if(beiguan == 0)	 //延时关闭锁20秒关闭背光
    			{
    				flag_time ++;
    				if(flag_time >= 5 * 30)	//30秒  
    				{
    					flag_time = 0;
    					beiguan = 1;	//关闭背光
    				}
    			}
    			if(relay == 0)  //延时关闭锁
    			{
    				flag_guan++;
    				if(flag_guan >= 5 * 10)	//10秒  
    				{
    					flag_guan = 0;
    				    relay = 1;   //关闭密码锁
    				}
    			}else 
    				flag_guan = 0;	
    			if(flag_password_cichu1 >= 3)
    			{
    				value ++;	   //200ms
    				beep = ~beep;  //蜂鸣器报警
    				if(value >= 5 * 60)	//1分钟  
    				{
    					value = 0;
    					beep = 1;
    					flag_password_cichu1 = 0;
    				}
    			}
    		}
    		delay_1ms(1);  
    	}
    }
    
    /*************定时器0中断服务程序***************/
    void time0_int() interrupt 1
    {	
    	static uchar value;
    	TH0 = 0x3c;
    	TL0 = 0xb0;     // 50ms	 12M
    
        value ++;
    	if(value % 4 == 0)  
    	{ 	
    		flag_200ms = 1;
    	}
    	
    }
    

    如需资料请关注公众号“单片机实例设计”,首页回复“密码锁”获取资料;
    在这里插入图片描述

    展开全文
  • 一种简易的电子密码锁,带有源程序,代码,原理图等资源。本系统由STC89C52单片机系统(主要是STC89C52单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、超次...
  • 电子密码锁程序.zip

    2021-05-07 16:32:30
    1)6位密码,通过键盘可修改初始密码; 2)采用液晶模块LCD1602显示当前输入密码; 3)具有输入正确和错误警告; 4)具有输错次数锁定功能;
  • 基于单片机简易电子密码锁资料,包含原理图及程序文件
  • 02.原理图 密码锁 03.仿真图(使用PROTEUS软件打开文件里面后缀为DSN的文件) 04.实物照片 05.元件清单 06.开题报告 07.参考论文 08.制作过程 09.设计资料 10.密码锁按键排列操作说明 11.PCB 图 还有很多资料,这里...
  • 基于单片机指纹密码锁&电子密码锁设计资料...1)基于51单片机电子密码锁全套设计资料原理图/源程序/仿真/开题报告/论文/制作详解 2)基于51单片机指纹密码锁全套设计资料原理图/源程序/元件清单/开题报告/参考论文/视频
  • 基于51单片机电子密码锁设计,用矩阵键盘作为输入,控制电磁锁打开或关闭。 包含实例原件清单,制作方法,原理图,源程序,焊接注意事项,开发软件工具,单片机教程等
  • 摘 要:介绍一种通过 Protues 软件成功仿真的电子密码锁的实现过程。它采用高可靠性的STC89C52单片机来实现*和密码酌识别,采用具备IC总线接田的EPROM芯片来完成密码的聋储,通过l602液吊显示器提示程序运行状态和...
  • 电子密码锁课程设计,本系统由AT89S51单片机系统(主要是AT89S51单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能(本设计由P0...
  • 基于STC89C52单片机电子密码锁设计_4位密码 AD原理图+proteus仿真+程序源码+设计文档资料. 本系统由STC89C52单片机、4*4矩阵键盘,蜂鸣器,复位电路和晶振电路、继电器等组成,4*4键盘主要用于密码的输入和修改,...
  • 基于STC12C5A60S2单片机电子密码锁设计.pdf
  • 单片机课程设计——密码锁(PROTEUS仿真+代码).zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,125
精华内容 450
关键字:

单片机电子密码锁程序