基于单片机控制的电子密码锁设计_第1页
基于单片机控制的电子密码锁设计_第2页
基于单片机控制的电子密码锁设计_第3页
基于单片机控制的电子密码锁设计_第4页
基于单片机控制的电子密码锁设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:介绍一种用于现代保险柜,防盗系统的密码锁的设计过程, 本设计由单片机系统、矩阵键盘、MS1602C LCD显示和报警系统组成。系统能完成开锁、密码错报警、修改用户密码、LCD显示密码基本的密码锁的功能。AT89C51单片机控制的电子密码锁比我们的一般锁更安全,更方便,更有活力,给社会发展需求带来福音,面向未来,为社会主义现代化建设打下坚实的基础.关键词: AT89C51    MS1602C 电子密码锁    单片机  第1章 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造

2、的简单,被撬的事件屡见不鲜,基于单片机AT89C51控制的电子密码锁由于其保密性高,同时本设计又有报警功能,使用灵活性好,安全系数高,受到了广大用户的亲呢。第2章 硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。设计的电路框如图1。报警控制电路LCD显示电路指示电路矩阵键盘控制89C51单片机开锁控制电路 图12.1 电路的功能单元设计2.1.1 单片机AT89C51结构功能和工作原理介绍 (1)AT89C51单片机的基本组成框如图2。P0AT89C51CPU程序存储器 ROM并行接口串行接口数据存储器

3、RAM中断系统定时器/计数器时钟电路P3P1P2TxDINT0RxDINT1T0T1外中断内中断(2)单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。P0口作输入口使用时,应先向口锁存器写“1,P0口作输出口时,需接上拉电阻。P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位

4、地址。P3:P3口除了一般的准双向通用I/O口外,还有第二功能。VCC:+5V电源VSS:接地ALE:地址锁存器控制信号。在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。/PSEN:外部程序存储器读选通信号。在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。/EA:访问程序存储控制信号。当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。R

5、ST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。2.1.2 单片机外围电路设计(1)单片机复位电路: 采用按键手动复位方式中的电平复位方式,复位电平是通过使RST端经电阻与VCC电源接通而实现的。(2)单片机时钟电路:AT89C51内部有时钟电路,需外接石英晶体和微调电容,本设计的晶振频率为11.0592MHz。2.1.3 矩阵键盘的设计本设计中用到4*4的键盘。键盘扫描方式,键盘的列线与P2口的低4

6、位相接,行线与P2口的高4位相接。首先使P2.0为低电平0,其余三根列线为高电平1,读行线状态。如果行线都为高电平状态,则P2.0这列上没键按下,如果读出的行线不全为高电平状态,则为低电平的行线与P2.0相交的键处于闭合状态。如果P2.0上没有键闭合,接着使P2.1为低电平,其余列线为高电平,用同样的方法检查P2.1这列上有没有按键闭合。一直到使P2.3为低电平扫描完成。这一过程称为一次扫描过程。由于按键是利用机械触电的合、断原理,存在弹性的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使电压信号波动,为了保证CPU对键的稳定闭合仅作一次键输入处理,必须采用消除抖动影响。本设计采用软件办法,

7、在检测到有键按下时,执行一个延时程序后,确认该键是否保持闭合状态电平。若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动影响。具体的扫描过程如下:A. 送出扫描信号1110以扫描C1行的4个按键,读取按键数据,判断是否有键按下,若有键被按下,则连接至被按下的该键,返回线状态为0。B. 送出扫描信号1101以扫描C2行的4个按键,读取按键数据,判断是否有键按下。C. 送出扫描信号1011以扫描C3行的4个按键,读取按键数据,判断是否有键按下。D. 送出扫描信号0111以扫描C4行的4个按键,读取按键数据,判断是否有键按下。E. 回到步骤(A)继续做按键扫描。以上的步骤连续地重复。若有按键

8、被按下时,就将该按键译码出来,本设计采用双重循环做计数编号,当某一按键按下时,其按键编号便是计数编号,有关按键编号,扫描信号及读取按键数据返回码整理如表1。编号按键数据输入码P2.7 P2.6 P2.5 P2.4扫描输出信号P2.3 P2.2 P2.1 P2.0所侦测的按键01 1 1 01 1 1 0K0 键11 1 0 11 1 1 0K1 键21 0 1 11 1 1 0K2 键30 1 1 11 1 1 0K3 键41 1 1 01 1 0 1K4 键51 1 0 11 1 0 1K5 键61 0 1 11 1 0 1K6 键70 1 1 11 1 0 1K7 键81 1 1 01 0

9、 1 1K8 键91 1 0 11 0 1 1K9 键101 0 1 11 0 1 1K10 键110 1 1 11 0 1 1K11 键121 1 1 00 1 1 1K12 键131 1 0 10 1 1 1K13 键141 0 1 10 1 1 1K14 键150 1 1 10 1 1 1K15 键 表12.1.4 LCD显示电路设计本设计采用MS1602C LCD来显示密码锁的状况。 (1)MS1602C引脚介绍DB0DB7: 双向数据总线,LCD数据读写方式可以分为8位及4位两种,以8位数据进行读写则D0D7皆有效,若以4位方式进行读写,则只用到D7D4。RS: 寄存器选择控制线,当

10、RS=0时,并且做写入的动作时,可以写入指令寄存器,若RS=0,且做读取的动作时,可以读取忙碌标志及地址计数器的内容。如果RS=1则用于读写数据寄存器。R/W: LCD读写控制线,R/W=0时,LCD执行写入的动作,R/W=1时则做读取的动作。EN: 启用控制线,高电平动作。VCC:电源正端。VO:亮度调整电压输入控制引脚,当输入0V字符显示最亮。GND:电源地端。A: LCD背光灯接+5VK :LCD背光灯接地。(2)LCD内部的内存LCD内部存储器共分为3种:固定字型ROM,称为CG ROM。数据显示RAM,称为DD RAM。用户自定义字型RAM,称为CG RAM。(3).控制方式 通过C

11、PU来控制LCD模块,方式简单,LCD模块其内部可以看成有两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚来控制。所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志(Busy Flag),此标志用来告知LCD内部正在工作,并不允许接受任何的控制命令。而此位的检查可以令RS=0时,读取位7来加以判断,当此位为0时,才可以写入指令寄存器或数据寄存器。(4).LCD控制指令l LCD控制指令包含以下几项:l 清除显示器l 光标归位设置l 设置字符进入模式l 显示器开关显示光标移位l 功能设置l CG RAM地址设置l DD RAM地址设置l 忙碌标志读取l 写数据到CG RAM

12、或DD RAM中l 从CG RAM或DD RAM中读取数据下面分别进行说明:(A)清除显示器指令码为0X01,将LCD DD RAM数据全部填入空白码20H,执行指令将清除显示器的内容,同时光标移到左上角。(B)光标归位设置指令码为0X02,地址计数器被除为0,DD RAM 数据不变,光标移到左上角。(C)设置字符进入模式此指令格式为: B7 B6 B5 B4 B3 B2 B1 B00 0 0 0 0 1 I/D S其中的有关符号说明如下:l I/D:地址计数器递增或递减控制,I/D=1 时为递增,I/D=0时为递减。每次读写显示RAM中的字符码一次则地址计数器会加1或减1。光标所显示的位置也

13、会同时向右移一个位置(I/D=1)或向左移一个位置(I/D=0)。l S:显示屏移动或不移动控制,当S=1时,写入一个字符到DD RAM 时,显示屏向左(I/D=1)或向右(I/D=0)移动一格,而光标位置不变。当S=0时,则显示屏不移动。(D)显示屏开关此指令格式为:B7 B6 B5 B4 B3 B2 B1 B00 0 0 0 0 D C B 其中的有关符号说明如下:l D:显示屏开启或开关控制位,D=1时,显示屏开启,D=0时,显示屏关闭。l C:光标出现控制位,C=1则光标会出现在地址计数器所指的位置,C=0则光标不出现。l B:光标闪烁控制位,B=1光标出现后会闪烁,B=0,光标不闪烁

14、。(E)显示光标移位此指令格式为:B7 B6 B5 B4 B3 B2 B1 B00 0 0 1 S/C R/L X X其中的有关符号说明如下:l X表示0或1皆可。l S/C,R/L的设置及说明如下表所示。 显示光标移位指令中B3,B2位的设置及其含义S/C R/L 动作0 0 光标向左移0 1 光标向右移1 0 字符和光标向左移1 1 字符和光标向右移(F)功能设置此指令格式为:B7 B6 B5 B4 B3 B2 B1 B00 0 1 DL N F X X其中的有关符号说明如下:l DL: 数据长度选择。 DL=1时为8位数据转移,DL=0时则为4位数据转移,使用D7D4 4个位,分2次送入

15、一个完整的字符数据。l N:显示屏为单列或双列选择。N=0为单列显示,N=1为双列显示。l F:大小字符选择显示。 F=1时为5*10点阵字会大一些,F=0则为5*7点阵字型。(G)CG RAM地址设置此指令格式为:B7 B6 B5 B4 B3 B2 B1 B00 1 A5 A4 A3 A2 A1 A0 设置CG RAM地址为6位的地址值,便可对CG RAM读/写数据。(H)DD RAM地址设置此指令格式为:B7 B6 B5 B4 B3 B2 B1 B01 A6 A5 A4 A3 A2 A1 A0设置DD RAM地址为7位的地址值,便可对DD RAM读/写数据。(J)忙碌标志读取此指令格式为:

16、B7 B6 B5 B4 B3 B2 B1 B0BF A6 A5 A4 A3 A2 A1 A0其中的有关符号说明如下:l LCD的忙碌标志BF用以指示LCD目前的工作情况。l 当BF=1时,表示正在做内部数据的处理,不接受外界送来的指令或数据。l 当BF=0时,则表示已准备接受命令或数据。当程序读取次数据的内容时,位7表示忙碌标志。l 另外7个位的地址值表示CG RAM或DD RAM中的地址,至于是指向哪一地址则按照最后写入的地址设置指令而定。(K)写数据到CG RAM或DD RAM中先设置CG RAM或DD RAM地址,再写数据到其中。(L)从CG RAM或DD RAM中读取数据。先设置CG

17、RAM或DD RAM地址,再读取数据到其中。(5).LCD接口设计 LCD 接口设计可以分为8位及4位控制方式,传统的控制方式是用8位D0D7数据来传送控制命令及数据,而使用4位控制方式是使用D4D7数据线来传送控制命令和数据,如此一来单芯片的I/O控制线便可以减少了,省下来的控制线可以做其他硬件的设计。使用4位数据线做控制时需分两次传送,线传送高4位,再传送低4位,用最少的控制线来驱动LCD接口。控制信号说明如下:(A)R/W LCD读写控制线 直接接地,由于R/W=0时,LCD执行写入的动作,R/W=1时执行读取的动作。因此简化设计后,则无法对LCD实现读取的动作。所有控制数据的写入需加入

18、适当的延迟,以配合LCD内部控制信号的执行。(B)RS寄存器选择控制线 由P0.0控制,当RS=0时,可以写入指令寄存器,如果RS=1时则为写入数据寄存器。(C)EN启用控制线 由P0.1控制,高电平动作。高电平时LCD动作启用有效。(D)VO亮度调整控制引脚 直接接地,使字符显示最亮。(E)D0D7双向的数据总线 LCD数据读写方式以4位方式进行写入,只用到D7D4,分别由P0.7P0.4 控制。2.2 总体电路设计设计的电路见附图。第3章 程序设计3.1 程序功能根据设计的电路,本设计完成以下功能:l 使用LCD显示器来显示密码输入的相关消息。l 可以设置4位数字(09)密码。l 密码输入

19、正确,用LED灯发光来表示开锁。l 密码输入错误则发出报警声。具体功能:1加电后,LED闪动,压电喇叭发出哗的一声,LCD第一行显示“8951 PASSWORD”,第二行显示“A OR B KEY.”。2按下A键,设置新密码,LCD第二行显示执行消息“I/P NEWPASS.”,键入密码时LCD显示所要存储的密码。3按下B键,密码比较,LCD第二行显示执行消息“I/P PASS.”,键入密码时显示要比较的密码。4密码正确,LCD第二行显示正确消息“PASSWORD OK!”,开锁电路动作LED发光,工作指示灯LED闪动。5密码错误,LCD第二行显示错误消息“PASSWORD ERROR!”,蜂

20、鸣器报警,LED闪动。 3.2 程序流程图主程序开始 A键LCD上显示执行消息,同时显示4位密码密码比较按下A键或B键?保存设定的密码I/O口初始化,LCD初始化工作指示灯闪烁压电喇叭发出哗的一声执行主控循环设置新密码按下键,按键扫描程序键入4位密码按键扫描程序LCD显示错误消息;指示灯LED闪动;蜂鸣器产生响警示。提取键码(密码)并在LCD上显示LCD显示正确消息;指示灯LED闪动;开锁电路中LED灯亮。密码对吗?B键正确错误3.3 参考程序主要控制子程序说明如下SCAN:4*4键盘扫描一次。CHECK_PASS:检查密码输入是否正确。IP_PASS:输入密码。SET_PASS:输入新的密码

21、。OK:密码输入是否正确。ERR:密码输入是否错误。LOOK_PASS:检查新的密码。DOOR_OPEN:门开启控制。ALARM:蜂鸣器产生响警示。SET_LCD:对LCD做初始化工作。CLR_LINE1:清除LCD的第一行字符。CLR_LINE2:清除LCD的第二行字符。LCD_PRINT:在LCD的第一行或第二行显示字符。WCOM:以4位控制方式将命令写至LCD。WDATA:以4位控制方式将数据写入LCD。LCDP1:在LCD的第一行显示字符。LCDP2:在LCD的第二行显示字符。;-; AT89C51 LCD PASSWORD 4; 89C51 ASM USE: KEIL;- KA EQ

22、U 0AH ;按键定义 KB EQU 0BH KC EQU 0CH KD EQU 0DH KE EQU 0EH KF EQU 0FH;变量定义 PASS EQU 30H ;30 33连续变量区存放所输入的密码 PASSNEW EQU 34H ;3437连续变量区存放所输入要存入的密码 BUF_KEY EQU 4AH ;按键数据缓冲区 KEY_NO EQU 4BH ;按键编号CO EQU 4CH ;计数变量 LCDE EQU 4DH ;LCD 延迟变量 X EQU 53H ;LCD 显示的地址; USER RAM .5FH 60H-.>SP; RAM 区 30H- -5FH 自由使用;-

23、FKEY EQU 20H.0 ;按键标志, 若有按键, 标志设为1; I/O DEFINE; LCD 控制信号引脚定义 EN EQU P0.1 ; LCD EN 引脚定义 RS EQU P0.0 ;LCD RS 引脚定义 SPK EQU P3.4 ;压电蜂鸣器引脚定义 REL EQU P3.5 ;开锁引脚定义 WLED EQU P3.7 ;工作指示灯引脚定义;- ORG 0000H ;程序代码由地址0开始执行 JMP BEGIN;-BEGIN: CALL INIT_PORT CALL LED_BL ;LED闪动,表示程序开始执行 CALL BZ ;压电喇叭发出哗的一声 CALL SET_LCD

24、 ;LCD初始化 CALL MLOOP ;执行主动控循环 JMP $;- MESS: DB 8051 PASS0:DB 1,2,3,4 ;内定的4位密码;-; DELAY Xms R5*10ms ;延迟子程序DELAY: ;总延迟时间R5*10ms MOV R6, #50 D1: MOV R7, #100 DJNZ R7, $ DJNZ R6, D1 DJNZ R5 , DELAY RET;-LED_BL: ;工作指示灯闪烁3次 MOV R4, #6LE1: CPL WLED ;位反向 MOV R5, #3 ;延迟30ms CALL DELAY DJNZ R4, LE1 RET;-; KEY

25、PAD:TYPE A ;键盘按键编码; 1 2 3 A; 4 5 6 B; 7 8 9 C; F 0 E DTABLE_DIG: DB 01H, 04H, 07H, 0FH DB 02H, 05H, 08H, 00H DB 03H, 06H, 09H, 0EH DB 0AH, 0BH, 0CH, 0DH;-; USE P2; RO :BUF PT NO USE ;未使用; R1 : COUNT 1 ;循环计数1; R2 : COUNT 2 ;循环计数2; R3 : SCAN SIGNAL ;循环扫描输出信号; R4 : COUNT KEY_NO ;按键计数编号;-SCAN: MOV R3, #

26、0FEH ;按键计数编号清除为0 MOV R1, #4 ;循环 1 执行 4 CLR PSW.5 ;PSW.5=0 表示未按键;- L1:; SEND OUT SCAN SINGAL VIA P2.0P2.3 MOV A, R3 MOV P2, A ;由P2送出扫描输出信号;-;DELAY A WHILE - MOV R5 , #1 ;延迟10ms CALL DELAY; READ I/P DATA FROM P2.4P2.7 MOV A, P2 ;读取P1数据以便判断是否有按键 ANL A, #0F0H ;取得高4位值 EX:1110XXXX;CHECK KEY PRESSED ? ;检查是

27、否按键 MOV R2, #4 ;循环2执行4;- L2: JB ACC.4, N1 ;累加器位4若为1 表示没按键 MOV KEY_NO, R4 ;加载按键编号 SETB PSW.5 ;按键标志设为1 N1: ;没按键 INC R4 ;按键编号加1 RR A ;累加器向右移动一位,以便检查下一位 DJNZ R2, L2 ;循环2判断是否继续执行; CHANGE SCAN CODE ;改变扫描码 MOV A, R3 ;加载旧的扫描码 RL A ;累加器向左移动一位 MOV R3, A DJNZ R1, L1 ;循环1判断是否继续执行;-; SET FKEY JNB PSW.5, NO_KEY ;

28、设置是否按键 SETB FKEY ;若有按键FKEY=1 RETNO_KEY: CLR FKEY ;若没有按键FKEY=0 RET;-;WAIT KEY IN.;RETURN A: DIGIT NOGET_KEY: ;等待按键并返回按键 CLR FKEY ;清除按键标志 CALL SCAN ;执行按键扫描;若有按键等待按键放开来 JB FKEY, G1 ;测试按键标志;若没有按键则继续等待按键 JMP GET_KEYG1: CALL SCAN ;执行按键扫描 JB FKEY, G1 ;等待按键放开来;按键扫描值转换为按键码 MOV A,KEY_NO MOV DPTR, #TABLE_DIG ;

29、经过查表的方式找出按键码 MOVC A, A+DPTR RET;-CHECK_PASS: ;密码比较程序 CALL IP_PASS ;取得要比较密码 CALL LOOK_PASS ;显示所输入的新密码;COMP PASS TO PASS0. MOV CO, #4 ;设置要比较的4码 MOV R0, #PASS ;指向密码存放的变量区 MOV DPTR,#PASS0 ;指向内部固定的密码区CH1: MOV A, #0 MOVC A, A+DPTR ;取出数据放入A缓存器 MOV B, R0 ;取出数据放入B缓存器 CJNE A,B, CH2 ;互相比较 INC DPTR ;指向下一位置 INC

30、R0;- DJNZ CO, CH1 ;是否处理完所有位数 CALL OK ;显示密码正确消息 CALL LED_BL ;密码正确LED闪动 RETCH2:;- JMP COMP ;继续比较内部所设置的密码ERROR: CALL ERR ;密码错误处理 CALL LED_BL ;LED闪动 RET;-COMP:;比较PASS PASSNEW. MOV CO,#4 ;比较4位数值 MOV R0,#PASS ;指向要比较的密码 MOV R1,#PASSNEW ;指向内部所设置的密码C1: MOV A, R0 ;取出数据放入A缓存器 MOV B, R1 ;取出数据放入B缓存器 CJNE A,B, ER

31、ROR ;互相比较 INC R0 ;指向下一位置 INC R1;- DJNZ CO, C1 ;是否处理完所有位数 CALL OK ;显示密码正确消息 RET;-;输入4位密码值IP_PASS: MOV DPTR, #M_IP MOV A, #2 CALL LCD_PRINT ;在LCD上显示执行消息 MOV B, #9 ;设置LCD位置 MOV CO, #4 ;设置取得4码 MOV R0, #PASS ;指向密码存放的变量区I1: CALL GET_KEY ;等待按键 MOV R0,A ;将按键值存入变量区 ADD A, #30H ;转换为字符 CALL LCDP2 ;显示在LCD上 INC

32、B ;显示地址增加 INC R0 ;指向下一变量区 DJNZ CO,I1 ;是否完成4位数 RET;-OK: MOV DPTR , #M_OK MOV A,#2 CALL LCD_PRINT ;显示密码正确消息 CALL DOOR_OPEN ;执行开启继电器动作 RET;-ERR: MOV DPTR, #M_ERR MOV A, #2 CALL LCD_PRINT ;显示密码错误消息 CALL ALARM ;警报器响起 RET;-SLINE2: ;在第二行显示消息 MOV DPTR, #LMESS2 MOV A, #2 CALL LCD_PRINT RET;-;设置新密码SET_PASS:;显示执行消息 MOV DPTR, #M_IP_NEW MOV A, #2 CALL LCD_PRINT MOV B, #12 ;设置LCD地址 MOV CO, #4 ;取得4位数字 MOV R0, #PA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论