液晶显示电子密码锁设计.docx
《液晶显示电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《液晶显示电子密码锁设计.docx(56页珍藏版)》请在冰豆网上搜索。
![液晶显示电子密码锁设计.docx](https://file1.bdocx.com/fileroot1/2023-1/27/5f124668-e70a-452f-a06a-4203d2a388c5/5f124668-e70a-452f-a06a-4203d2a388c51.gif)
液晶显示电子密码锁设计
闽南师范大学
课程设计
液晶显示电子密码锁设计
TheDesignofLCDElectronicPassword-Lock
姓名:
学号:
系别:
专业:
电子信息工程
年级:
10级
指导教师:
2013年6月6日
液晶显示电子密码锁设计
摘要
单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技术。
论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。
系统采用美国Atmel公司的AT89S52单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵薄膜键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用汇编语言编写。
设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。
关键词:
密码锁;单片机;AT89S52;LCD1602;AT24C02
TheDesignofLCDElectronicPassword-Lock
Abstract
SCMtechnologyisverypopularandhasgreatpotentialinapplicationofintelligentdetectionandcontrolfield.ThisthesisdescribesthedesignandimplementationofLCDelectronicpassword-locksystembasedonSCM.ThesystemusestheproductofAmericaAtmelcorporationAT89S52asthecoreofsystem,liquidcrystalmonitor1602astheoutputdevicedisplayingthepromptinformationofsystem,4*4matrixmembranekeyboardastheinputdevice,serialE2PROMmemoryAT24C02asthedatastorage,withbuzzer,relay,andothercircuitstogetherconstitutethesystemhardware.Thesoftwareofthesystemiswritteninassemblylanguage.ThedesignedsystemdisplayinLCD,changepasswordeasily,hasthefunctionofalarming,locking,andsoon.Thissystemissimpleandeasytouse,meetsthedemandofresidential,officelockneeds,hassomepracticalvalue.
Keywords:
Password-Lock;SCM;AT89S52;LCD1602;AT24C02
1引言……………………………………………………………………………………-1-
2系统设计………………………………………………………………………………-1-
2.1功能设计……………………………………………………………………………-1-
2.2结构设计……………………………………………………………………………-2-
3硬件设计………………………………………………………………………………-3-
3.1AT89S52简介………………………………………………………………………-3-
3.2液晶显示电路………………………………………………………………………-5-
3.2.1LCD1602简介…………………………………………………………………………………..-5-
3.2.2LCD1602电路………………………………………………………………………………….-9-
3.3发声电路…………………………………………………………………………-9-
3.4开锁控制电路………………………………………………………………………-10-
3.5密码存储电路………………………………………………………………………-11-
3.5.1AT24C02简介…………………………………………………………………………………-11-
3.5.2AT24C02电路………………………………………………………………………………....-14-
3.6键盘输入电路……………………………………………………………………-14-
3.7手动复位电路……………………………………………………………………-14-
3.8晶振电路……………………………………………………………………-15-
4软件设计………………………………………………………………………………-16-
4.1系统流程图……………………………………………………………………-16-
4.1.1主程序……………………………………………………………………………………………-16-
4.1.2密码处理函数流程图……………………………………………………………………………-17-
4.1.3选择A键或B键函数流程图…………………………………………………………………-18-
4.1.4按键扫描流程图…………………………………………………………………………………-19-
4.1.524c02读数据流程图……………………………………………………………………………-20-
4.1.624c02写数据流程图…………………………………………………………………………….-20-
5系统调试与测试……………………………………………………………………-21–
6原理图…………………………………………………………………………………-22-
7实物图…………………………………………………………………………………-23-
8结论…………………………………………………………………………………-23–
附录…………………………………………………………………………………-24-
1引言
锁具是源流千古的社会性用品,主要用于日常生活和工作中,住宅与部门的安全防范。
当前门锁的主流是弹子锁,其保密性不强,钥匙容易被仿制和意外丢失;且持有者需随时携带钥匙,使用不方便。
保存贵重物件的保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高昂,且易出现故障。
随着科技、经济和社会的发展,当今社会公共安全防范系统对锁具的保密性、牢固性、可靠性、耐用性以及安装使用等提出了新的更高的要求。
针对原有锁具的特点和缺陷,为满足人们对锁的使用需求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。
早期开发的电子密码锁由于电子器件所限,种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但不安全。
后来多是基于EDA实现,其电路结构复杂,电子元件繁多,也有使用早先2051系列单片机来实现的,但密码简单,容易破解。
随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,保密安全性更强;由以前的单密码输入发展到现在密码加感应元件,实现了真正的电子加密。
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
电子密码锁的出现给人们带来了极大的方便,有很广阔的市场前景。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁,特点有:
●保密性好,编码量多。
●随机开锁成功率几乎为零。
●密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
●误码输入保护。
当输入密码多次错误时,报警系统自动启动。
●操作简单易行,一学即会。
论文阐述基于美国Atmel公司的AT89S52单片机,采用液晶显示器1602作为输出显示系统提示信息的电子密码锁的设计与实现。
2系统设计
2.1功能设计
本系统拟采用单片机为主控芯片,由于单片机种类繁多,各种型号都有其各自特点,应用于不同的环境,因此在选用时要多加比较。
一般来说,在选取单片机时从下面几个方面考虑:
性能、存储器、运行速度、I/O口、定时/计数器、串行/并行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性等等。
基于以上因素本设计选用单片机AT89S52作为本设计的核心元件,利用该单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。
在单片机I/O接口上外接输入键盘用于输入和一些功能的控制。
考虑到密码的存在形式一般为数字或字母形式,而字母数量众多,并且排列不规则,不能使用矩阵式键盘排列字母;并且按键过多会大大增加系统的体积,对适用性极为不利,故只使用数字作为密码。
阿拉伯数字不仅便于用户记忆,而且通用性极强,是作为密码的首选。
10个数字需要1个不同的按键,故选用为4*4矩阵键盘;除去10个数字键,还剩6个按键可设置不同的功能。
用户使用电子密码锁开锁的步骤为:
用户选择输入密码开锁或修改密码操作。
输入密码开锁操作:
如果密码正确则开锁,蜂鸣器播放音乐,音乐结束这自动关锁或可以按下“C”键关锁。
用户修改密码步骤为:
首先输入旧密码,输入完毕后按确认键。
如果密码正确再按改密键。
输入两次新密码并确认。
如果两次密码输入长度一致,则密码修改成功。
如果两次输入不一致,则密码修改失败。
失败后只能重新输入旧密码才能继续改密。
为防止系统发生异常,还应提供复位开关,在系统无法正常运转时手动复位。
2.2结构设计
如图2-1所示,整个系统以单片机为核心,辅以若干外围电路。
其中密码存储部分是输入输出双向结构,保证密码可以掉电保存,上电后读出。
其余都是单向输入或输出。
电源部分为整个系统供电,采用5V直流电源。
键盘输入部分采用4*4矩阵行列键盘,需不断扫描检查有无按键按下。
复位部分提供手动复位功能,当系统发生异常或未知错误时可以由用户手动复位单片机。
晶振部分是提供外部石英晶体谐振器。
系统输出有:
液晶显示部分,为用户显示字符提示当前操作状态。
蜂鸣器发声,提示用户按键已按下,以及密码正确的提示音,错误的警告音等。
开锁电路部分是控制继电器,只有密码正确并选择开锁后,继电器内部的电磁铁才会吸合,发光二极管电路连通后发光,表示锁已打开。
3硬件设计
根据上面的结构设计思路,具体设计中选用一块15cm*12cm的通用PCB板做为系统焊接板。
单片机为Atmel公司的AT89S52,电源部分为直流5V。
键盘输入部分为4*4矩阵键盘,不需上拉电阻,但扫描时需先给行线或列线供电。
液晶显示器选用1602,可以显示两行,每行16个字符。
蜂鸣器为有源5V。
继电器为5脚5V。
密码存储选用串行AT24C02芯片,256B空间,足够存储密码,采用串行传输可以极大减少连线数目。
下面按系统的结构具体介绍一些电路及其所用的芯片。
3.1AT89S52简介
AT89S52是一款低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
AT89S52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
其引脚如图3-2所示,下面简要介绍其引脚功能:
VCC:
电源。
本设计中接电源正极。
GND:
地。
本设计中接电源负极。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写"1"时,引脚用作高阻抗输入。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写"1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
本设计中不需要外部程序存储器,因此需接高电平。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
以上是AT89S52的引脚功能介绍,下面简要介绍AT89S52的存储器结构。
AT89S52有单独的程序存储器和数据存储器,外部程序存储器和数据存储器都可以64K寻址。
程序存储器:
如果EA引脚接地,程序读取只从外部存储器开始。
对于AT89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:
2000H~FFFFH。
数据存储器:
AT89S52有256字节片内数据存储器。
高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。
3.2液晶显示电路
3.2.1LCD1602简介
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,市面上字符液晶绝大多数是基于HD44780液晶芯片,HD44780是带西文字库的液晶显示控制器,用户只需要向HD44780送ASCII的字符码,HD44780就按照内置的ROM点阵发生器自动在LCD液晶显示器上显示出来。
所以,HD44780主要适用于显示西文ASCII字符内容的液晶显示。
1602字符型LCD能够同时显示16*2即32个字符(16列2行)。
其内置192种字符(160个5*7点阵字符和32个5*10点阵字符),具有64个字节的自定义字符RAM,可自定义8个5*8点阵字符或4个5*11点阵字符。
1602通常有14条引脚线或16条引脚线两种,多出来的2条线是背光电源线和地线,带背光的比不带背光的略厚,控制原理与14脚的LCD完全一样,是否带背光在应用中并无差别。
本设计中采用带背光16引脚线的。
其主要技术参数为:
显示容量:
16×2个字符。
芯片工作电压:
4.5-5.5V。
工作电流:
2.0mA(5.0V)。
模块最佳工作电压:
5.0V。
字符尺寸:
2.95×4.35(W×H)mm。
LCD1602的16个引脚可参照图3-3,其引脚功能分别为:
VSS:
电源地(GND)。
VCC:
电源电压(5V)。
V0:
LCD驱动电压,液晶显示器对比度调整端。
使用时可以通过一个10K的电位器调整对比度,接正电源时对比度最弱,接地电源时对比度最高。
RS:
寄存器选择输入端,选择模块内部寄存器类型信号。
RS=0,进行写模块操作时指向指令寄存器,进行读模块操作时指向地址计数器。
RS=1,无论进行读操作还是写操作均指向数据寄存器。
R/W:
读写控制输入端,选择读/写模块操作信号。
R/W=0,读操作;R/W=1,写操作。
本设计中只需往LCD里写数据即可,写时序见图3-4。
E:
使能信号输入端。
读操作时,高电平有效;写操作时,下降沿有效
DB0~DB7:
数据输入/输出口,单片机与模块之间的数据传送通道。
选择4位方式通讯时,不使用DB0~DB3。
BLA:
背光的正端+5V。
BLK:
背光的负端0V。
1602模块内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。
控制器接受来自MPU的指令和数据,控制着整个模块的工作。
主要由显示数据缓冲区DDRAM,字符发生器CGROM,字符发生器CGRAM,指令寄存器IR,地址寄存器DR,忙标志BF,地址计数器AC以及时序发生电路组成。
模块通过数据总线DB0~DB7和E、R/W、RS三个输入控制端与MPU接口。
这三根控制线按照规定的时序相互协调作用,使控制器通过数据总线接受MPU发来的数据和指令,从CGROM中找到欲显示字符的字符码,送入DDRAM,在LCD显示屏上与DDRAM存储单元对应的规定位置显示出该字符。
控制器还可以根据MPU的指令,实现字符的显示,闪烁和移位等显示效果。
CGROM内提供的是内置字符码,CGRAM则是供用户存储自定义的点阵图形字符。
模块字符在LCD显示屏上的显示位置与该字符的字符代码在显示缓冲区DDRAM内的存储地址一一对应。
LCD1602模块内部具有两个8位寄存器:
指令寄存器IR和地址寄存器DR,用户可以通过RS和R/W输入信号的组合选择指定的寄存器,进行相应的操作。
表3-1中列出了组合选择方式:
表3-1寄存器选择组合
RS
R/W
操作
0
0
将DB0~DB7的指令代码写入指令寄存器IR中
0
1
分别将状态标志BF和地址计数器AC内容读到DB7和DB6~DB0
1
0
将DB0~DB7的数据写入数据寄存器中,模块的内部操作将数据写到DDRAM或者CGRAM中的数据送入数据寄存器中
1
1
将数据寄存器内的数据读到DB0~DB7,模块的内部操作自动将DDRAM或者CGRAM中的数据送入数据寄存器中
1602提供了较为丰富的指令设置,通过选择相应的指令设置,用户可以实现多种字符显示样式。
下面仅简要介绍本次设计中需要用到的一些指令设置。
●清屏指令Cleardisplay
清显示指令将空位字符码20H送入全部DDRAM地址中,时DDRAM中的内容全部清除,显示消失,地址计数器AC=0,自动增一模式。
显示归位,光标闪烁回到原点(显示屏左上角),但不改变移位设置模式。
清屏指令码见表3-2。
表3-2清屏指令码
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1
●进入模式设置指令Entrymodeset
见表3-3,进入模式设置指令用于设定光标移动方向和整体显示是否移动。
表3-3模式设置指令码
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
I/D
S
I/D:
字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志。
I/D=1,完成一个字符码传送后,AC自动加1。
I/D=0,完成一个字符码传送后,AC自动减1。
S:
显示移位标志。
S=1,完成一个字符码传送后显示屏整体向右(I/D=0)或向左(I/D=1)移位。
S=0,完成一个字符码传送后显示屏不移动。
●显示开关控制指令Displayon/offcontrol
指令码见表3-4,该指令功能为控制整体显示开关,光标显示开关和光标闪烁开关。
表3-4显示开关控制指令码
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
D
C
B
D:
显示开/关标志。
D=1,开显示;D=0,关显示。
关显示后,显示数据仍保持在DDRAM中,开显示即可再现。
C:
光标显示控制标志。
C=1,光标显示;C=0,光标不显示。
不显示光标并不影响模块其他显示功能。
显示5*8点阵字体时,光标在第八行显示;显示5*10点阵字符时,光标在第11行显示。
B:
闪烁显示控制标志。
B=1,光标所在位置会交替显示全黑点阵和显示字符,产生闪烁效果;B=0,光标不闪烁。
●功能设置指令Functionset
功能设置指令用于设置接口数据位数,显示行数以及字形。
指令码见表3-5。
表3-5功能设置指令码
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
1
DL
N
F
*
*
DL:
数据接口宽度标志。
DL=1,8位数据总线DB7~DB0;DL=0,4位数据总线DB7~DB4,DB3~DB0不使用,此方式传送数据需分两次进行。
N:
显示行数标志。
N=0,显示一行;N=1,显示两行。
F:
显示字符点阵字体标志。
F=0,显示5*7点阵字符;F=1,显示5*10点阵字符。
1602模块内部设有上电自动复位电路,当外加电源电压超过+4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。
初始化大约持续10ms左右。
初始化进行的指令操作为:
●清显示
●功能显示
DL=1:
8位数据接口。
N=0:
显示一行。
F=0:
显示5*8点阵字符字体。
●显示开/关控制
D=0:
关显示。
C=0:
不显示光标。
B=0:
光标不闪烁。
●输入模式设置
I/D=1:
AC自动增一。
S=0:
显示不移位。
但是需要特别注意的是,倘若供电电源达不到要求,模块内部复位电路无法正常工作,上电复位初始化就会失败。
因此,最好在系统初始化时通过指令设置对模块进行手动初始化。
3.2.2LCD1602电路
如左图,AT89S52的P0口接1602的8位数据线,通过输出数据控制1602显示不同的提示字符。
1602本身内置各种字符,还可以自定义显示字符。
本设计中根据不同场合1602会显示各种提示字符。
P2.4~P2.6接1602控制端,其中P2.6接使能端E,写操作时,使能端下降沿有效。
P2.5接读写控制端R/W,R/W=0,读操作;R/W=1,写操作。
P2.4接寄存器选择端RS,RS