1、摘要本次设计使用 ATMEL公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)密码通过键盘输入,若密码正确,则将锁打开。(2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。电子密码锁的设计主要由三部分组成:44 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有 LED 提示灯,报警蜂鸣器等。密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个“”就显示在最右边的数码管上,同时将先前输入的所有“”向左移动一位。(2)密码清除功
2、能:当按下清除键时,清除前面输入的所有值,并清除所有显示。(3)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则打不开。关键词:4矩阵键盘;AT89C51;密码锁;密码二次确认系统总体方案设计方案采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能。其原理如图12所示。89S51单片机矩阵键盘控制输入错误锁定键盘延时报警控制电路AT24C02掉电存储指示电路串口显示电路图22单片机控制方案本方案采用一种是用以89S51为核心的单片机控
3、制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。初步设计思路如下:输入密码用矩形键盘,包括数字键和功能键。LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用74LS138控制各位显示器分时进行显示。用发光二极管代替开锁的电路,发光表示开锁。输入密码错误次数超过3次,系统报警。打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便可以打开。这样可预防停电后再来电时无密码可用。按“C”键,清除显示器为“000000”。欲重新设定密码,先输入密码在按“*”。输入密码,再按“D”键。若密码与设定密码相同,则打
4、开。否则显示器清为“000000”。软件的设计主要包括键盘键值的读取,LED显示程序,密码比较程序和报警程序。 硬件电路设计键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常
5、有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图3.1所示的44键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。具体的功能设
6、计如表:表3.1 按键功能按 键键 名功 能 说 明19键数 字 键输 入 密 码* 键重 设 密 码 键设 定 新 密 码D键确 定 键比 较 密 码# 键清 除 键使 显 示 器 清 零LED显示电路本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能,显示电路的电路原理图如图3.2所示。用P0.0P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示;而P0.4P0.6接74LS138的A,B,C三个输入
7、口,74LS138的输出口接LED的位显示。通过软件实现数字和位控制。用74LS247可以控制输出什么字型。74LS247的逻辑功能表如表2 74LS247的逻辑功能表用74LS138控制位循环显示,其逻辑功能表如表74LS138逻辑功能表CBAY1Y2Y0Y3Y4Y5Y6Y71 1 0开锁电路在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如3.3所示。当P2.0口输出低电平时,二极管发光,表示开锁。图3.3 开锁电路报警电路图3.4报警电路报警模块由蜂鸣器和单片机组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流
8、。蜂鸣器电路如图3.4所示。当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。软件设计软件设计思路电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。当输入密码连续输入错误3次时,系统报警。密码的设定,在此程序中密码是固定40H45H 中,假设预设的密码为123456共6位密码。由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经
9、输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。各子程序设计1 键盘扫描子程序键盘扫描流程图如图键盘扫描子程序如下:L2: MOV R3,#0F7H MOV R1,#00HL3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#04HL4: RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP RRC A MOV R3,A JC L3 JMP L22 LED显示子程序 LED显示流程图如图LED显示子程序如下:DISP:MOV R0,#45HDISP
10、1: MOV A,R0 ADD A,#50H MOV P0,A CALL DELAY DEC R0 ADD A,#40H ADD A,#30H ADD A,#20H ADD A,#10H ADD A,#00H RET3 密码比较和报警程序密码比较和报警流程图密码比较和报警程序:COMP: MOV R1,#45H MOV R0,#35H MOV R2,#06HC1: MOV A,R1 XRL A,R0 JNZ C3 DEC R1 DJNZ R2,C1 CLR P2.0 MOV R2,#200C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2C3: INC R5 MOV A,
11、R5 MOV R5,A CJNE R5 ,#03H,C4 CLR P2.1 MOV R5,#00H C4: JMP START 参考文献1单片机原理及及应用王迎旭 机械工业出版社,20012单片机应用程序设计技术 周航慈 北京航空航天大学出版社,2002 3单片机应用技术教程 张洪润 清华大学出版社,19974单片机原理及其接口技术胡汉才 清华大学出版社,19965Protel99se实用培训教程陈爱弟 人民邮电出版社,2000 附 录源程序清单 ORG 00H MOV R7,#00H DJNZ R7,$ MOV R7,#10H MOV R6,#06H MOV R1,#35HL1: MOV A
12、,R7 MOV DPTR,#TABLE MOVC A,A+DPTR MOV R1,A INC R7 DJNZ R6,L1START: ORL P2,#0FFH MOV R4,#06H MOV R0,#40HCLEAR: MOV R0,#00H INC R0 DJNZ R4,CLEARKEYIN: MOV A,R1 XRL A,#0BH JZ X3 XRL A,#0FH JZ X4 MOV R7,#10D1: MOV R6,#24 DJNZ R7,D1D2: XRL A,R4 JZ D2 MOV R7,A XRL A,#0AH JZ SET0 JZ START XRL A,#0CH JZ L2
13、XRL A,#0DH XCH A,40H XCH A,41H XCH A,42H XCH A,43H XCH A,44H XCH A,45HX3: JMP DISP2X4: JMP COMPSET0: MOV R1,#30HE1: XCH A,R1 DJNZ R2,E1E2: JMP START DISP2: JZ DISP2DELAY: MOV R7,#C3D3: DJNZ R7,D3 ORG 300HTABLE: DB 01H ,02H ,03H ,0CH DB 04H ,05H ,06H ,0DH DB 07H ,08H ,09H ,0EH DB 0AH ,00H ,0BH ,0FH DB 01H ,02H ,03H ,04H ,05H ,06HEND
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1