Advertisement

利用单片机开发的四位密码锁。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
目 录摘要..........................................(03)关键字........................................(03)1 前言..........................................(04)2 系统设计......................................(04)2.1 电子密码锁的工作原理......................(04)2.2 系统硬件组成..............................(04)2.3 矩阵键盘扫面工作原理......................(05)2.4 LED数码管动态显示原理.....................(05)2.5 电子密码锁系统硬件设计..... ..............(06)2.6 电子密码锁系统软件设计....... ............(07)3 设计体会与结论................................(07)4附录...........................................(08)5参考文献.......................................(13)摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,特点如下: 1.保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2.密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。 3.误码输入保护。当输入密码多次错误时,报警系统自动启动。 4. 电子密码锁操作简单易行,一学即会。关键字;单片机 LED数码管 矩阵键盘 密码锁AbstractElectronic Code Lock is a password input through the control circuit, or chip, thus controlling the closed mechanical switch to complete the lock, closed the task of electronic products. It is of many types, have a simple circuit products, but also the higher cost chip-based products. Now the widely used electronic code lock is a chip at the core, achieved through programming. Performance and safety have greatly exceeded the mechanical lock, the following features: 1. Privacy is good, coding quantity is far greater than the spring lock. Random unlocking success rate is almost zero. 2. Password variable. Users can always change the password, to prevent password theft, but also avoids the lock because of staff turnover Er Shi and drawing down. 3. Error input protection. When you enter your password wrong several times, the alarm system started automatically. 4. E-lock operation is simple, a school that will. Keywords; MCU LED digital tube matrix keypad lock 1 前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。2 系统设计2.1电子密码锁的工作原理电子密码锁是以51系列单片机(AT89C51)为核心,配以相应硬件电路,完成密码的识别和显示、驱动电磁执行器并检测其驱动电流值。 单片机接收键入的代码,并与存贮在EEPROM中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,单片机将每次开锁操作和此时电磁执行器的驱动电流值作为状态信息发送给智能监控器,同时将接收来自传感器接口的报警信息也发送给智能监控器,作为智能化分析的依据。 2.2系统硬件组成如图(1)所示,系统采用单片机ATC89C51作为控制的核心,完成系统的控制操作。单片机核心接受来自键盘扫面电路的道德键值,判断是数字键还是操作键,并送相应的处理程序。单片机提供动态扫描电路的显示码和位选信号,使动态显示电路正常工作。键盘扫面电路采用4*4键盘,编号0~9做为数字键“0~9”,编号14做为关锁操作功能键,编号15做为确定功能键。编号13为修改密码键,编号12作为电子锁报警后的解锁键,编号11为清除显示屏键。动态扫描电路采用4块LED数码管,利用人眼的延迟效应通过合理的软件设计使显示电路显示数字。供电采用5V直流电压电源2.3矩阵键盘扫描工作原理矩阵式键盘又成为行列式键盘,是将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉点上,如图()所示。这种设计减少键盘与单片机I/O接线的数目。只需要N个行线和M个列线就可以实现N*M个键的操作。行扫描法识别键值的原理(1) 将第0 行变为低电平,其余行为高电平,输出编码为1110.然后读取列的电平,判别第0行是否有键按下。在第0行上若有键按下,则相应的列被拉低为低电平,则表示第0行和此列相交的位置上有键按下,进而判别哪一列有键按下。若没有任一条列线为低电平,则说明0行上无键按下。(2) 用此方法扫描第1行,第2行,第3行,判断是哪个键按下。由此指出,按键的位置码比不等于按键的实际定义键值,因此还需要进行转换。2.4 LED数码管动态显示原理将所有的位选线并联在一起,由一个8位I/O口控制,实现各位的分时选通。如图()所示。2.5电子密码锁系统硬件设计键盘部分如图()所示,采用行列式键盘,P1口作为与行列式键盘的接口。低四位做为行选线,高四位作为列选线。采用逐行扫描的方法完成。LED动态显示部分采用7SEG-MPX4-CC 八段数码管,总共有四个八段数码管,共阴极的方法,未选信号为低电平有效。数据接口与P2相连,P2.0~P2.7对应a~dp。未选信号与P3相连,P3.0~P3.3对应4~1.仿真电灯一端与P0.0相连,另一端与5V的直流电源相连。2.6电子密码锁系统软件设计软件是系统的核心,控制硬件的工作。对于单片机的开发,可以采用C语言,也可以采用汇编语言。本次设计中,开发了两套软件分别使用C语言和汇编语言。从可读性来讲C语言相对要好一点。从简洁性来说汇编要好一点。详细代码参见附录。流程图参见附录图(9)软件分析:以C语言为例。系统的参数传递采用全局变量的形式全局变量有:uchar output[4];uchar input[4];uchar led[16]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};uchar f0=1;uchar pass[4]={4,3,2,1};sbit p0_0=P0^0;数组output用于存储用于数码管输出的码值,input用于存储按键的键值led用于查表,存储数码管的对应编码,f0为密码配对标志,为1表示密码正确,否责密码不正确,pass用于存放密码,p0_0为P0.0口。采用C语言与汇编混合编程,C作为主函数调用汇编子程序scan(),通过寄存器传递参数。主要函数为scan(),完成对键盘的扫描并返回扫描的键值。Sodesw(),完成从键值到显示数码管码值的转换。display(),完成动态显示数码管。cmp(),完成输入密码与系统密码的比较,正确则开锁,错误不开。clean(),完成对输入的密码的清除。各部分的工作,如流程图所示,图()3.体会与结论4.附录方案一:C程序中有一个小错误,但是是致命的。作为学习只用,请你找出来。若是找不到,请联系红狐狸,zhaowei153@126.com。但是方案二的汇编实现是可以用的。c语言代码://mimasuo.c#include#define uchar unsigned char#define uint unsigned intextern uchar scan(void);uchar output[4];uchar input[4];uchar led[16]={0x3f,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};uchar f0=0;uchar pass[4]={4,3,2,1};uchar toppass[4]={ 8,8,6,6};sbit p0_0=P0^0;sbit p0_1=P0^1;sbit p0_2=P0^2;sbit p0_3=P0^3;void codesw(void){ int i; for(i=0;i<4;i++) { output[i]=led[input[i]]; } }void display(void){ char i; char k,j; uchar select; codesw(); select=0xfe; for(i=0;i<4;i++) { P3=select; P2=output[i]; for(k=0;k<=70;k++) { for(j=0;j<=10;j++); } select=~select; select<<=1; select=~select; } }void cmp(void){ char i; if(p0_3==0) { for(i=0;i<4;i++) { if(input[i]!=toppass[i]) break; } if(i>=4){f0=1;} else f0=0; } else { for(i=0;i<4;i++) { if(input[i]!=pass[i]) break; } if(i>=4){f0=1;} else f0=0; } }void clean(void){ int i; for(i=0;i<4;i++) input[i]=10;}void main(void){ uchar keyno; uchar keyno1; uchar counter=0; uchar expass=0; uchar extoppass=0; p0_0=1; p0_1=1; p0_2=1; clean(); while(1) { while(1) { display(); keyno=scan(); if((keyno>=0x0)&&(keyno<=0xf)) break; else ; } while(1) { keyno1=scan(); if((keyno>=0x0)&&(keyno1<=0xf)); else break; } if(keyno==0xe) { p0_0=1; f0=0; clean(); } if(keyno==0xf) { if(expass==2) { pass[3]=input[3]; pass[2]=input[2]; pass[1]=input[1]; pass[0]=input[0]; p0_1=1; expass=0; } else if((p0_3==0x0)&&(f0==0)) { cmp(); if(f0!=1){clean();} if(f0==1){counter=0;p0_3=1;p0_0=0; clean();} } else { counter++; if((counter)<=3) { cmp(); if(f0!=1) {clean();} if(f0==1){p0_0=0; clean();counter=0x0; } } else if(p0_0==0){counter=0;} else { for(keyno1=0;keyno1<=254;keyno1++) { for(counter=5;counter<=200;counter++) { p0_2=0; } p0_2=1; } clean(); } } } if(keyno==0xd) { if(f0==1) { expass=1; p0_1=0; } } if(keyno==0x0c) { if(counter>=4) { p0_3=0; extoppass=1; } } if(keyno==0xb) { clean(); } if((keyno>=0)&&(keyno<=9)) { input[3]=input[2]; input[2]=input[1]; input[1]=input[0]; input[0]=keyno; if(expass==1){expass++;} if(extoppass==1){extoppass++;} } }} 汇编代码:;scan.asm$NOMOD51NAME SCANP0 DATA 080HP1 DATA 090HP2 DATA 0A0HP3 DATA 0B0HT0 BIT 0B0H.4AC BIT 0D0H.6T1 BIT 0B0H.5EA BIT 0A8H.7IE DATA 0A8HRD BIT 0B0H.7ES BIT 0A8H.4IP DATA 0B8HRI BIT 098H.0INT0 BIT 0B0H.2CY BIT 0D0H.7TI BIT 098H.1INT1 BIT 0B0H.3PS BIT 0B8H.4SP DATA 081HOV BIT 0D0H.2WR BIT 0B0H.6SBUF DATA 099HPCON DATA 087HSCON DATA 098HTMOD DATA 089HTCON DATA 088HIE0 BIT 088H.1IE1 BIT 088H.3B DATA 0F0HACC DATA 0E0HET0 BIT 0A8H.1ET1 BIT 0A8H.3TF0 BIT 088H.5TF1 BIT 088H.7RB8 BIT 098H.2TH0 DATA 08CHEX0 BIT 0A8H.0IT0 BIT 088H.0TH1 DATA 08DHTB8 BIT 098H.3EX1 BIT 0A8H.2IT1 BIT 088H.2P BIT 0D0H.0SM0 BIT 098H.7TL0 DATA 08AHSM1 BIT 098H.6TL1 DATA 08BHSM2 BIT 098H.5PT0 BIT 0B8H.1PT1 BIT 0B8H.3RS0 BIT 0D0H.3TR0 BIT 088H.4RS1 BIT 0D0H.4TR1 BIT 088H.6PX0 BIT 0B8H.0PX1 BIT 0B8H.2DPH DATA 083HDPL DATA 082HREN BIT 098H.4RXD BIT 0B0H.0TXD BIT 0B0H.1F0 BIT 0D0H.5PSW DATA 0D0H?PR?scan?SCAN SEGMENT CODE PUBLIC scan RSEG ?PR?scan?SCANscan: USING 0 MOV R3, #0FEH MOV R4, #0H MOV R1, #4H CLR PSW.5L1: MOV A, R3 MOV P1, A MOV R5, #50D1: MOV R6, #100 DJNZ R6, $ DJNZ R5, D1 MOV A, P1 ANL A, #0F0H MOV R2, #4L2: JB ACC.4, N1 MOV 7EH, R4 SETB PSW.5N1: INC R4 RR A DJNZ R2, L2 MOV A, R3 RL A MOV R3, A DJNZ R1, L1BACK: JNB PSW.5, NO_KEY AJMP SCANOUTNO_KEY: MOV 7EH, #20H SCANOUT: MOV R7,7EH ?C0001: RET END方案二:REL EQU 60HRELBUF EQU 61HKEYNO EQU 62HFKEY EQU 20H.0F0_0 EQU 20H.1 ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV SP, #6FH ACALL CLEANSTART: ACALL DISPLAY CLR FKEY ACALL SCAN JB FKEY, G1 SJMP STARTG1: ACALL SCAN JB FKEY, G1 MOV A, KEYNO CJNE A, #14, G2 AJMP G4G2: CJNE A, #15, G3 ACALL CMP JNB F0_0, G4 CLR P0.0 LCALL DELAY1 CLR F0_0 ACALL CLEAN AJMP STARTG3: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, KEYNO AJMP STARTG4: SETB P0.0 ACALL CLEAN AJMP STARTCMP: MOV REL, #00H MOV R0, #40H MOV R7, #4HCMP1: MOV DPTR, #PASS MOV RELBUF, @R0 MOV A, REL MOVC A, @A+DPTR CJNE A, RELBUF, CMPOUT INC REL INC R0 DJNZ R7, CMP1 SETB F0_0CMPOUT: MOV REL, #00H RETSCAN: MOV R3, #0FEH MOV R4, #0H MOV R1, #4H CLR PSW.5L1: MOV A, R3 MOV P1, A MOV R5, #1 ACALL DELAY MOV A, P1 ANL A, #0F0H MOV R2, #4L2: JB ACC.4, N1 MOV KEYNO, R4 SETB PSW.5N1: INC R4 RR A DJNZ R2, L2 MOV A, R3 RL A MOV R3, A DJNZ R1, L1BACK: JNB PSW.5, NO_KEY SETB FKEY AJMP SCANOUTNO_KEY: CLR FKEYSCANOUT: RETCODESW: MOV R0, #40H MOV R1, #50H MOV R7, #4SW1: MOV DPTR, #TAB MOV A, @R0 MOVC A, @A+DPTR MOV @R1, A INC R0 INC R1 DJNZ R7, SW1 RETDISPLAY: ACALL CODESW MOV A, #0FEH MOV R5, #4 MOV R0, #50HDIS1: MOV P3, A MOV P2, @R0 ACALL DELAY INC R0 SETB C RLC A DJNZ R5, DIS1 RETCLEAN: MOV 40H, #0AH MOV 41H, #0AH MOV 42H, #0AH MOV 43H, #0AH RETDELAY: MOV R7, #25D1: MOV R6, #100 DJNZ R6, $ DJNZ R7, D1 RETDELAY1: MOV R7, #245D11: MOV R6, #225D12: DJNZ R6, D12 DJNZ R7, D11 RETPASS: DB 4,3,2,1TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH DB 40H,40H,40H,40H,86H,8EH END 图(1)系统硬件组成图显示的数字 LED码0 3FH1 06H2 5BH3 4FH4 66H5 6DH6 7DH7 07H8 7FH9 6FH- 40H 图(2)LED编码表参考电路图: 图(3)总体电路图 图(4)键盘接口电路 图(5)LED显示接口电路 图(6)开锁显示等电路 图(7)输入密码演示 图(8)锁开启电路5.参考文献

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 基于设计
    优质
    本项目旨在设计并实现一个基于单片机技术的四位密码锁系统。该系统利用单片机处理输入密码,并与预设密码进行比对,以控制电磁锁开启,提供了一种简单而有效的安全解决方案。 参考文献: 1. 王吉庆, 杨春玲. 单片机原理及接口技术[M]. 北京: 电子工业出版社, 2015. 2. 刘爱民, 张玉峰. 智能密码锁的设计与实现[J]. 计算机工程应用技术, 2018(9):74-76. 3. 马跃进, 李晓华. 单片机控制的电子密码锁系统设计[J]. 科技创新导报, 2017(5). 4. 赵明辉, 程丽娜. 基于单片机技术的安全门禁控制系统研究[J]. 自动化与仪器仪表, 2016(3):89-91. 5. 李文博, 张静华. 单片机在智能密码锁中的应用分析[J]. 网络安全技术与应用, 2017(4). 上述文献提供了关于单片机原理、接口技术和电子密码锁设计的理论基础和实践指导,对本项目的实施具有重要的参考价值。
  • 基于数字设计
    优质
    本项目旨在设计并实现一种基于单片机技术的四位数字密码锁系统。该系统采用用户自定义密码进行安全认证,并通过硬件电路和软件编程相结合的方式,实现了密码设置、验证及清除等功能模块。 本段落介绍了一种基于单片机的密码锁设计。该系统使用LED数码管显示状态,并通过矩阵键盘输入密码。整个项目结合了硬件电路的设计与软件编程,实现了用户自定义设置及验证密码的功能。这样的设计不仅提高了设备的安全性,还简化了操作流程,具有较高的实用价值和推广潜力。
  • 51STC89C52RC例程.rar
    优质
    该资源为基于51单片机STC89C52RC开发板的密码锁程序示例,适用于学习和研究嵌入式系统中密码锁的设计与实现。包含详细的代码及注释。 51单片机STC89C52RC开发板例程之密码锁 1. 单片机型号:STC89C52RC。 2. 开发环境:KEIL。 3. 编程语言:C语言。 4. 提供配套PDF格式的51单片机STC89C52RC开发板电路原理图。
  • 基于51电子设计(LED指示状态)
    优质
    本项目基于51单片机设计了一款具有LED指示功能的四位数字电子密码锁。该系统能够显示开锁过程中的各种状态,提升用户体验和安全性。 该资料包含原理图、源程序和仿真等内容。 功能介绍: 1. 采用AT24C02芯片实现存储的密码掉电保存功能。密码为四位数字,在开锁过程中可以更改,但需要输入两遍以确认。 2. 使用矩阵按键进行输入,并通过1602液晶显示结果;LED灯用于模拟开锁过程:红灯亮绿灯灭表示关锁状态,反之则代表开锁状态。 3. 输入错误密码时将提示错误次数。当连续三次输错后,系统会锁定该密码并发出报警信号。 4. 若在输入过程中超过三十秒未进行任何操作,则自动关闭LCD背光;此时按任意键即可重新开启显示以继续操作。 5. 设备配备有恢复初始密码的功能(即“还原键”),当用户忘记当前设置的密码时,可以通过此功能将密码重置为默认值1111。
  • 51
    优质
    本项目基于51单片机设计实现一款实用型密码锁系统,采用数字键盘输入个人设定密码进行解锁操作,确保安全便捷。 实现的功能包括:1. 使用51单片机进行按键解锁;2. 通过手动操作单片机来上锁;3. 密码在断电情况下不会丢失;4. 通过APP输入密码来进行解锁或上锁操作;5. 当多次输错密码时会触发报警。
  • 基于51.rar
    优质
    本资源提供了一个基于51单片机设计实现的六位数字密码锁方案。系统能够设置并验证六位数密码,适用于教学与实践应用。 《基于51单片机的6位密码锁设计与实现》 在电子工程领域广泛应用的基础微控制器——51单片机因其结构简单、资源丰富且易于编程而受到广泛欢迎。本项目聚焦于利用该芯片开发一个六位数字密码锁定系统,通过深入研究和实践操作,可以对51单片机的硬件接口、中断机制以及软件编程有更深刻的理解。 了解51单片机的基本架构是至关重要的一步。它主要由CPU、内存单元、定时器计数器、串行端口及并行I/O端口组成。其中,CPU负责执行存储在内部ROM中的程序指令;而I/O接口则用于与外部设备进行通信,如键盘输入和LED显示输出等操作。在这个六位密码锁项目中,51单片机会从数字键盘接收用户输入的密码,并通过LED显示屏展示当前的状态。 该系统的核心功能在于实现密码验证过程。通常情况下,一个6位数的密码由0到9之间的数字构成,因此涉及到数据处理及比较算法的设计与实施。在程序设计阶段,我们可能会采用循环结构来逐个读取并核对输入值,并利用中断机制响应按键事件以提高系统的实时性表现。 仿真图在此类项目开发中扮演着重要角色。通过使用软件工具模拟运行和调试代码,在没有实际硬件环境的情况下也能进行有效的测试与优化工作。这有助于开发者观察程序执行过程中的变量变化情况,从而发现潜在的逻辑错误并提升整体稳定性及可靠性。 源代码文件通常包含在密码锁相关的压缩包内,并且是用汇编或C语言编写而成;经过适当的编译后可以生成机器码形式的目标文件供单片机运行。项目中可能涉及初始化设置、输入处理机制设计、比对算法实现以及异常情况下的错误管理等多个关键模块,对于初学者而言阅读和理解这些代码有助于掌握51单片机的编程技巧及流程控制能力。 此外,在实际应用过程中还需要关注硬件层面的设计工作,包括但不限于电源电路配置、复位线路规划、键盘接口构建与LED显示板布局等。所有设计均需根据51单片机I/O端口的具体特性来进行合理布线和参数设定,并且在防干扰措施方面也需要给予足够的重视以确保系统的稳定运行状态。 综上所述,基于51单片机的六位密码锁项目是一个典型的嵌入式系统案例研究。它全面涵盖了有关微控制器原理、硬件接口技术、软件开发流程以及仿真测试方法等多个重要领域的内容,并且通过这样的实际操作不仅可以提升对于该类芯片的应用技能水平,同时也能够培养解决复杂问题及顺利完成项目的综合能力。
  • 电子基于
    优质
    本项目设计并实现了一种采用单片机控制、具备六位数字输入功能的电子密码锁系统。该系统具有高安全性与便捷性,适用于家庭及商业场合的安全防护需求。 单片机密码锁可以实现六位数字的密码操作,并具备删除功能以及声音和灯光警报。
  • 基于51电子
    优质
    本项目设计并实现了一款基于51单片机控制的八位数字电子密码锁。用户可自定义设置和修改开锁密码,具有较高的安全性与便捷性。 基于51单片机的8位电子密码锁课程设计采用AT89S52作为主控芯片,并使用两个4位数码管进行显示。该系统利用AT24C02存储密码,以防止掉电导致数据丢失。通过一个16×16矩阵键盘输入和修改密码。
  • 基于51电子
    优质
    本项目设计并实现了一款基于51单片机控制的六位数字密码解锁系统,适用于需要高安全性的场合。该电子密码锁具有设置、修改和清除密码功能,并能显示错误输入次数,提供良好的人机交互界面。 基于51单片机的6位密码锁使用了1602液晶屏作为显示设备。该设计旨在提供一个简单而有效的安全解决方案,用户可以通过设置个性化六位数字密码来保护重要物品或区域的安全性。同时,1602液晶屏可以清晰地显示出当前状态和操作提示信息,使得整个系统更加易于理解和使用。
  • 数字1602电子
    优质
    本项目介绍了一种基于1602液晶显示和六位数字输入的单片机电子密码锁设计。用户可自定义设置开锁密码,系统通过LCD实时显示操作信息并具备错误尝试限制功能,确保安全便捷的使用体验。 这份资料包括以下内容:源程序、原理图、密码锁仿真图(使用PROTEUS软件打开后缀为DSN的文件)、实物照片、元件清单、开题报告、参考论文、制作过程描述以及设计资料,还有密码锁按键排列操作说明和PCB 图。此外还有很多其他资料,这里不再一一列举,并可提供代写论文服务,包查重。