电子密码锁源程序(带功能简介)
智能电子密码锁【范本模板】

智能电子密码锁目录摘要 (3)一、背景 (4)二、系统总体方案设计 (4)三、主要功能实现 (5)四、方案设计与论证 (5)4.1按键解锁部分 (5)4。
2手机通信部分 (6)4。
2。
1 采用WIFI模块 (6)4.2。
2 采用蓝牙模块 (6)4。
3射频卡控制部分 (6)4.4显示部分 (7)4.4.1 采用七段数码管显示 (7)4。
4.2 采用LCD1602液晶显示器显示 (7)4.4。
3 采用NOKIA5110液晶显示器显示 (7)五、各部分电路 (7)5。
1按键解锁部分电路 (7)5.2蓝牙部分电路 (7)5.3液晶显示部分电路 (8)5。
4射频卡部分电路 (8)5。
5指示灯、蜂鸣器电路 (8)六、程序结构框图 (9)七、源程序代码 (10)7.1各部分定义 (10)7。
2主程序 (11)八、结语 (13)九、参考文献 (13)摘要:自从人类开始制造锁以来长期所使用的锁都是机械锁,通俗的讲就是弹子芯锁.而传统的弹子芯锁,由于其本身锁芯密齿的有限加之开锁工具钥匙的容易复制性,使得其安全性大大降低,随着人们生活质量的提高,如何实现安全有效的防盗这一问题受到越来越多人的关注。
传统的机械锁由于安全性能太差,被撬的事件屡见不鲜,相比之下,电子密码锁因其保密性强,使用灵活性好,安全系数高,还省去了传统机械锁的钥匙,使用者只要记得其密码,便可以开启,从而大大提高了防盗功能,本文主要设计了一种以STC89C51为核心的电子密码锁,详细的介绍了该电子密码锁完整的设计过程以及外围的开锁电路和报警电路的设计。
本电子密码锁开锁方式为键盘开锁、手机APP开锁、刷卡开锁,同时具有以下功能:更改密码,误输入报警等。
关键词:STC89C51 刷卡键盘控制手机遥控指示灯电机控制基于51单片机的电子密码锁的设计一、背景在人们的日常生活中,锁被广泛使用,人们常用锁具来保证一些贵重物品乃至自己家庭的安全,目的就是为了提高安全性。
PIC单片机电子密码锁

一、系统主要功能1)基本要求1.硬件设计要求:(1)CPU使用PIC16F877A。
(2)用4x4矩阵键盘作为操作信息输入。
(3)用LCD1602或六位数码管作为信息输出。
(建议使用LCD1602)(4)用蜂鸣器及发光二极管作为错误报警及状态显示。
2.系统功能要求:(1)输入密码功能。
输入密码时用“*”号或“-”显示。
在输入密码时,具有清除前一位密码功能(用CLR键)。
密码输入完毕,按(ENTER键)确认并生效。
(2)上锁功能。
在锁开状态下,通过(LOCK键)上锁。
(3)在锁合的状态下,通过密码开锁功能。
开锁时,直接在键盘上输入六位密码,按(ENTER键)确认,如果密码正确,转入锁开状态。
(4)在锁开状态下,修改密码功能。
在键盘上输入六位新的密码,按(ENTER键)确认,代替旧密码,并保存在RAM中。
(4)在开锁时,如果输入密码三次错误,产生声、光报警功能。
(5)0~9为密码键数字键,E为ENTER键,C为清除键CLR键,D作为上锁键LOCK键,如果用到其他键时,可自行定义。
2)进阶要求密码保存在PIC16F877A内部的EEPROM中,以防断电密码丢失。
(不使用外挂的EEPROM,如:AT24C02等)二、系统设计要求1)根据系统的功能和目标,画出系统功能框图。
2)根据系统功能框图用Proteus画出仿真电路图。
3)根据系统的功能要求,画出程序流程图。
4)根据程序流程图,用PIC C语言编写系统源程序。
5)进行编译、调试建立目标代码。
6)在Proteus环境下进行仿真。
三、设计报告报告内容包括系统设计思路、方案选择、器件选择及电路元器件明细表、系统功能框图、程序流程图、源程序清单、系统工作原理和设计心得等。
四、评分标准:1、完成《基本要求》者,得分80~89分;2、完成《基本要求》及《进阶要求》者,得分90~100分;五、设计时间安排十九周的星期一至星期五(2011年6月27日至7月1日)1)周一:布置任务,进行方案选择、器件选择。
基于FPGA的电子密码锁设计

一、前言电子密码锁的使用体现了人们的消费水平、保安意识和科技水平的提高,而且避免了携带甚至丢失钥匙的麻烦。
目前设计密码锁的方法很多,例如传统的PCB板设计、用PLC设计或者单片机设计等等。
而用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁,优于其他设计方法。
VHDL是一种符合IEEE标准的硬件描述语言,其最大的特点是借鉴高级程序语言的功能特性,对电路的行为与结构进行高度的抽象化、规范化的形式描述,并对设计的不同层次、不同领域的模拟验证与综合优化等处理,使设计过程延到高度自动化。
二、方案设计密码锁的的构成主要由密码输入、密码设置、比较控制和报警部分组成,此外密码锁必须能够保存已设置的密码,因而需要一个寄存器来保存密码,同时由于控制电路和报警电路要用到不同的时钟,因而需要一个时序产生电路来生成需要的不同信号,采用分频方法实现。
根据密码锁的电路特点,选用的是实验箱的模式6电路,根据电路功能,在这里设计的密码锁以4位2进制代码作为密码的电子密码锁。
其原理框图如下所示:图一、电子密码锁原理框图三、功能模块的实现1、时序电路在密码锁的电路中,输入计时、报警计时需要的1HZ的时钟脉冲信号,而驱动蜂鸣器工作需要的很高频率的脉冲信号,因而这里采用输入一个高频脉冲(1024HZ)信号来驱动蜂鸣器,采用分频的方法得到1HZ的计时脉冲,程序如下:process(clk_1k)variable cnt1:integer:=0;beginif rising_edge(clk_1k) thenif cnt1=512 thenclk_1<=not clk_1;cnt1:=0;else cnt1:=cnt1+1;end if;end if;end process;程序说明:clk_1k为输入的1024HZ高频脉冲,cnt为分频得到的1HZ计时脉冲。
2、密码设置为了安全性,密码锁必须能够重复的设定密码,在设定密码锁后,应该设置一个寄存器来存储设定的密码,程序如下:process(rst,password,enter_p) isbeginif rst='0' thenif enter_p='1' thenram<=password;en1<='1';end if;end if;end process;程序说明:rst低电平时所有的模块复位,只有密码设置模块工作;password为设置密码时的输入端,ram就是存储密码的寄存器;enter_p为在这里为密码设置使能端,高电平有效。
电子密码锁制作及源代码

didi();
lock=0;
while(l--)
{write_com(0x9e);
write_date(0x30+l); //正在倒计时
for(i=0;i<40;i++)
{if(modify_pw())
{key1=0;
break;}
delay1(25);}
if(key1==0)
{key1=1;
uint a,j;
/*按键声音*/
void didi()
{beep=0;
delay1(70);
beep=1;
delay1(70);
}
/*灯光闪烁*/
void flash()
{leபைடு நூலகம்=0;
delay1(70);
led=1;
delay1(70);
led=0;
delay1(70);
led=1;
delay1(70);}
注释:左图为继电器驱动灯光报警及照明电路图,右图为蜂鸣器报警电路原理图。
5、电磁锁模块设计
电磁锁是本设备中比较重要的电气及机械设备之一,其同样采用继电器驱动,但是由于其功率比较大,所以决定了其工作电流会比正常工作状态要大5倍左右,所以断电瞬间会产生很高的自感电动势,反馈到继电器线圈上,同时其强大的磁场会对单片机的工作造成影响,为了解决这个问题,最好是在单片机输出端加上光耦合器,以起到隔离的目的,但是为了不破坏电路布线的整体性,这里我们在电磁锁两端反向并联了一只高压二极管(1N4148),这样就消除了干扰。
电子密码锁
【摘要】
随着如今智能家居的发展,电子密码锁的兴起也随着得以发展,同时也由于其安全、方便、快捷、美观等特点被广大用户所接受。单片机在此方面的控制也得以普及。本设计是一个电子密码锁成品的模型,共可分为八个模块:主控芯片模块、电源模块、报警电路模块、无线遥控模块、液晶显示模块、键盘扫描、电磁锁模块、照明电路模块。本设计输入正确密码后即可开锁,门便会打开,只有门打开后才可修改密码,同时有密码验证功能。同时密码输入错误三次便会激活报警。为了节约电能,设备无操作一分钟时将会进入省电模式,按任意键后可激活设备。
电子密码锁设计

{
case 0x0010: KeyVal=13; break;
case 0x0020: KeyVal=9; break;
case 0x0040: KeyVal=5; break;
case 0x0080: KeyVal=1; break;
}
GPIO_Write(GPIOA,(GPIOA->ODR&0xfff0|0x8)); switch(GPIOA->IDR&0x00f0)
图1.2 stm32控制方案
通过比较以上两种方案stm32有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。
初步设计思路如下:
基于以上思路,本次设计使用stm32设计,其主要具有如下功能:
密码通过键盘输入,若密码正确,则将锁打开。
{
case 0x0010: KeyVal=12; break;
case 0x0020: KeyVal=8; break;
case 0x0040: KeyVal=4; break;
case 0x0080: KeyVal=0; break;
}
return KeyVal;
}
void Delay(__IO uint32_t nCount)//简单的延时函数
密码的设定,假设预设的密码为"123456"共6位密码。
由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
任务三简易电子密码锁制作概要

(2)显示密码字符
在显示处理时,任务二是将有效 密码值送显示缓冲区,而本任务 是将密码字符“-”的字型码 “0xbf”在字型码表中对应的位 置(参考程序中为“17”)送显 示缓冲区。
(3)开锁处理
(4)继电器模块介绍
继电器模块内部驱动 电路原理图
控制程序: sbit LOCK = P2^4; LOCK=0;//开锁指令 LICK=1; //关锁指令
项目实施
•1.硬件电路连接:按照硬件电路接线图连线,选择所需的模块并进行布局, 然后将电源模块、主机模块、显示模块、指令模块和继电器模块用导线进行连 接。 •2.打开Keil软件,新建工程“MMS3”,然后再新建并加入名为MMS3.C的源程 序文件,将上面的参考程序输入并保存、编译和链接,产生HEX文件。 •3.对源程序进行编译和链接,如果有错误则必须修改错误,直到编译成功, 设置生成目标代码。 •4.将目标代码通过编程器写入到单片机中。接通电源,让单片机运行,按下 按键,观察显示是否正确,能否正确实现密码锁的功能。 •5.进行扎线,整理。
当LOCK接口中输入低电平时,光电耦合器U1导通,从而
使继电器RL1线圈得电,同时LED灯点亮。若LOCK接口输入
高电平,则光电耦合器U1不工作,继电器RL1线圈不得电,
同时LED灯熄灭。 所以,只要通过单片机的I/O口输出高低电平到输入端KA6 就能控制继电器的工作:单片机输出低电平,继电器线圈 得电,触点动作;单片机输出高电平,继电器不得电,触 点不动作。
硬件电路的设计与搭建
1、硬件电路设计 2、绘制模块接线图
锁 KA1 开 3 锁 4 闭 2 定 确 37F 51 0 1 5 0 V 8 CE LED2 除 B 清 4 K R1 26E 5 K R1 3 K R1 +12V 159D IC2 +5V 048C 2 K R1 ROW0ROW1ROW2ROW3COL3COL0COL1COL2 LOCK 01234567 DDDDDDDD+5V+5VP27LOCKP25P26 12345678901234567890 b c P D 22222222233333333334 7 D a G g d 6 D F ef 5 D 块 E VCC 4 D 模 PSEN D 3 D 示 EA/VPP P2.0(A8)P2.1(A9)P0.7(A7)P0.6(A6)P0.5(A5)P0.4(A4)P0.3(A3)P0.2(A2)P0.1(A1)P0.0(A0) C P2.2(A10)P2.3(A11)P2.4(A12)P2.5(A13)P2.6(A14)P2.7(A15) 2 D 显 ALE/PROG B 管 1 D A 码 0 D 数 位 8 b c IC1 a g D R W d P25 N CS2 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ResetP3.0(Rxd)P3.1(Txd)P3.2(INT0)P3.3(INT1)P3.4(T0)P3.5(T1)P3.6(WR)P3.7(RD)XTAL1XTAL2Gef P26 CS1 AT89S51T P27 MK1 12345678901234567890 11111111112 COL0COL1COL2COL3ROW0ROW1ROW2ROW3 XT1 +5V k 1 0 11.0592MHzR1 1 C10μF PP 23 00 C3C3
基于单片机的电子密码锁毕业论文设计
本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2011年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。
电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。
另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。
电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。
同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。
关键词单片机密码锁 4*4矩阵键盘 EEPROM存储芯片实用经济AbstractThis project designed a digital electronic lock which used a MCU as data process and control chip. The main functions digital electronic lock are as follows:The design of the electronic password lock is mainly made up of four parts: 4×4 matrix keyboard interface circuit, data processing and control circuit, eeprom memory chip that is used to keep password when the lock loses power and display circuit. In addition the system also consists of LED lights, alarm buzzers, single-chip reset circuit and so on..The key question of the electronic lock designing is the realization of functions, such as the input password, clear password, unlock, change password and other functions.And the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,it works well as a residence lock and has great potential for commercial development.Key words: SCM Cipher lock 4*4matrix keyboard EEPROM Practical economy目录1 绪论 (1)1.1国内外研究综述 (1)1.2选题的目的和意义 (2)1.3本论文的任务 (3)2电子密码锁总体设计 (4)2.1系统总体设计 (4)2.2单片机 (5)2.3密码存储芯片选择 (10)2.4键盘输入方案比较 (12)2.5显示方案比较 (13)3电子密码锁的硬件设计 (1)3.1系统结构框图 (1)3.2主控部分 (2)3.3显示部分 (3)3.4键盘输入部分 (4)3.5密码存储部分 (5)3.6电源部分 (5)3.7其它功能部分 (8)3.8 电子密码锁的电路原理图 (10)4电子密码锁的软件组成 (12)4.1系统软件设计流程 (12)4.2 Keil uVision2软件介绍 (13)4.3各主要部分的功能实现程序设计 (14)4.3.1初始化程序设计 (14)4.3.2按键处理程序设计 (17)4.3.3密码更改程序设计 (21)5系统仿真 (24)5.1系统仿真过程 (24)5.2仿真调试中遇到的问题及解决办法 (25)总结 (1)致谢 (2)参考文献 (3)附录 (4)1 绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。
基于单片机电子密码锁的设计原理
本科生毕业设计目录设计总说明 (I)DESIGN INTRODUCTION ................................................................ 错误!未定义书签。
第1章绪论 . (1)1.1背景 (1)1.2电子锁 (1)1.3电子密码锁的特点 (1)1.4电子密码锁的发展趋势 (2)第2章系统总体设计 (2)2.1系统结构 (3)2.2 系统组成 (3)2.3 系统可行性分析 (3)第3章硬件电路设计 (4)3.1单片机AT89C51简介 (4)3.1.1 主要特性 (5)3.1.2 管脚说明 (5)3.1.3 震荡特性 (7)3.1.4 芯片擦除 (7)3.2 4×4矩阵键盘 (7)3.3复位电路 (8)3.4 振荡电路 (8)3.5 数码管 (8)3.6 发光二极管LED (9)3.7 电动锁 (10)3.8 蜂鸣器 (10)3.9 完整电路图 (11)第4章软件程序设计 (13)4.1软件设计流程图 (14)4.2 具体功能软件实施 (15)第5章结束语及展望 (21)第6章鸣谢 (22)第7章参考文献 (23)附录 (22)设计总说明在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
单片机程序设计—电子密码锁
目录目录 (1)中文摘要 (2)第一章概述 (5)第二章系统总体方案设计 (6)第三章硬件电路设计 (10)3.1键盘电路设计 (10)3.2 LED显示电路 (12)3.3 开锁警电路 (15)第四章软件设计 (17)4.1 软件设计思路 (17)4.2各子程序设计 (17)第五章系统调试 (22)第六章心得体会 (23)第七章参考文献 (24)附录 (25)源程序清单 (25)中文摘要摘要:在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣,随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁得使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐替代传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的只能密码锁,它除了具有电子密码锁的功能外,还引进了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是,这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
基于以上思路,本次设计使用ATMEL公司的AT89C51实现—基于单片机的电子密码锁的设计,其主要具有如下功能:密码通过键盘输入,若密码正确,则将锁打开。
单片机及PLC 电子密码锁说明书
班级:电气机电成员:指导老师:2012年月日目录1 主要器件的介绍1.1 AT89S521.1.1AT89S52主要性能1.2功能特性描述1.2 LCD16021.2.2LCD1602管脚分布2 硬件电路方案2.1 总体系统框图2.2 路设计及电路图2.2.1电源部分2.2.2显示部分2.2.3键盘电路2.2.4复位电路2.2.5时钟电路2.2.6蜂鸣器电路2.3 密码锁电路的PCB3 电路整体功能说明4 软件设计4.1 程序模块化4.2程序流程图4.2.1主体流程图4.2.2 R屏幕清0流程图4.2.3SET设置密码流程图4.2.4COMP比较密码流程图5 proteus软件仿真6、结论及新的体会、附源程序1 主要器件的介绍1.1 AT89S52管脚图如图1.1所示图1.1AT89S52管脚图1.2 LCD1602LCD1602是应用范围最广的带背光字符型液晶模块,1602LCD可显示2行,每行16个字符,广泛用于各种便携式仪器仪表中通过试验掌握液晶模块的驱动方法。
它的封装为SIP16。
1.2.1 LCD1602的外形尺寸LCD1602的外形尺寸如图1.2.1图1.2.1LCD1602外形尺寸1.2.2LCD1602管脚分布LCD1602管脚分布如表1.2.1表1.2.12 硬件电路方案2.1 总体系统框图以AT89S51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的I∕O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。
其总框图如图2.1所示。
图2.1 单片机控制方案2.2原理图整体电路设计见附录2.2.1电源部分电源电路由一个1.6K电阻,和一个104滤波电容及电源显示LED灯组成,当密码锁电路正常供电时,LED灯就会亮。
电源电路如图2.2.1图2.2.1电源电路2.2.2显示部分密码锁电路的显示是由LCD1602显示,接到89S52芯片的P0口作为显示端,接2K 的排阻作为上拉电阻,同时接个5.1K的电阻到LCD的3口,调节屏幕的背景光对比度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 0xeb:
key=8;
wei++;
break;
case 0xdb:
key=9;
wei++;
break;
case 0xbb:
genggai=1;
wei=0;
break;
case 0x7eak;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;
bit allow,genggai,ok,wanbi,retry,close;//各个状态位
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
P0=0xf7;
wela=1;
wela=0;
delay(5);
P0=table[e];
dula=1;
dula=0;
P0=0xef;
wela=1;
wela=0;
delay(5);
P0=table[f];
dula=1;
dula=0;
P0=0xdf;
wela=1;
wela=0;
delay(5);
}
void keyscan()
{
if((new1==old1)&(new2==old2)&(new3==old3)&(new4==old4)&(new5==old5)&(new6==old6))
allow=1;//当输入的密码正确,会得到allowe置一
}
}
void main()
{
while(1)
{
keyscan();
shumima();
ok=0; wei=0;
genggai=0;
old1=new1;old2=new2;old3=new3; //此时,旧的密码将被代替
old4=new4;old5=new5;old6=new6;
a=16;b=16;c=16;d=16;e=16;f=16;
}
if(retry)//当重试按键S18被按下,retry会被置位
{
keyscan();
shumima();
if(retry|close)//而当探测到重试键S18或者关闭密码锁键S19被按下时,则跳出
{wanbi=1;
break;
}
display(a,b,c,d,e,f);
}
}
}
if(ok)//更改密码时,当所有六位新密码均被按下时,可以按下此键,结束密码更改
{//其他时间按下此键无效
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
void delay(unsigned char i)
{
uchar j,k;
/********************************************************************************
功能键
S6---S15数字键0-9
S16---更改密码S17---更改密码完毕后确认
S18---重试密码、重新设定S19---关闭密码锁
初始密码:000000密码位数:6位
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5,new6; //每次MCU采集到的密码输入
推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17
确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
*******************************************************************************/
{
retry=0; wei=0;wanbi=0;
a=16;b=16;c=16;d=16;e=16;f=16;
new1=0;new2=0;new3=0;new4=0;new5=0;new6=0;
}
if(close) //当关闭密码锁按键被按下,close会被置位
{
close=0;genggai=0;//所有变量均被清零。
yanzheng();
if(allow)//验证完后,若allow为1,则开锁
{
P1=0x00;
if(!genggai)
wanbi=0;
}
if(genggai)//当S16更改密码键被按下,genggai会被置一
{
if(allow)//若已经把锁打开,才有更改密码的权限
{
while(!wanbi)//当新的六位密码没有设定完,则一直在这里循环
else a=key;break;
case 2:new2=key;
if(a==17) b=17;
else b=key;break;
case 3:new3=key;
if(a==17) c=17;
else c=key;break;
case 4:new4=key;
if(a==17) d=17;
else d=key;break;
{
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
wei++;
break;
case 0xde:
key=1;
wei++;
break;
case 5:new5=key;
if(a==17) e=17;
else e=key;break;
case 6:new6=key;
if(a==17) f=17;
else f=key;
wanbi=1;break;
}
}
}
void yanzheng()//验证密码是否正确
{
if(wanbi)//只有当六位密码均输入完毕后方进行验证
case 0xbe:
key=2;
wei++;
break;
case 0x7e:
key=3;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
3、重试密码:
当输入密码时,密码输错后按下键S18,可重新输入六位密码。
当设置密码时,设置中途想更改密码,也可按下此键重新设置。
4、关闭密码锁:
按下S19即可将打开的密码锁关闭。
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
}
void shumima()//对按键采集来的数据进行分配
{
if(!wanbi)
{
switch(wei)
{
case 1:new1=key;
if(!allow)a=17;
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
wei++;
break;
case 0xdd:
key=5;
wei++;
break;
case 0xbd:
key=6;
wei++;
break;
case 0x7d:
key=7;
wei++;
wela=0;
delay(5);
P0=table[b];
dula=1;