2、. 5)使用灵活性好,不像机械锁需要佩戴钥匙才能开锁。 6)电子密码锁结构简单,操作方便。 1.2电子密码锁的发展在日常生活和工作中,住宅和部门的安全,公司文件、财务报表以及一些个人数据的存储,往往是通过加锁来解决的。 目前门锁主要采用弹珠锁,钥匙容易丢失; 保险柜主要采用机械密码锁,结构复杂,制造精度要求高,成本高,且容易出现故障。 人们常常需要携带多把钥匙,使用起来极其不方便。 ,并且密钥丢失后安全性会大大降低。 鉴于这些锁如果采用机械钥匙开锁会给人们带来不便,为了满足人们对锁的使用要求,增加其安全性,出现了用密码代替钥匙的密码锁。 它的出现给人们的生活带来了极大的便利,具有广阔的市场前景。因为电子
3、由于硬件限制,以前开发的电子密码锁种类少,保密性差。 最基本的仅依赖于最简单的模拟电子开关。 它们制作简单,但非常不安全。 大多数都是基于EDA实现的,电路结构复杂,电子元件较多。 也是使用早期的20针2051系列单片机实现的,但密码简单,容易破解。 随着电子元件的进一步发展,出现了多种类型的电子密码锁,功能日益强大,使用更加方便,安全保密性更强。 从以前的单一密码输入到现在的密码加传感元件,实现了真正的电子加密,用户只有密码或电子钥匙无法开锁。 随着电子元件的发展以及人们对保密性需求的增加,越来越多的电子密码锁出现了。出于安全性、便捷性等需求,许多电子密码锁被陆续开发出来。
4. 出来吧。 但该类产品的特点是对特定的有效卡、指纹或声音有效,且无法远程控制。 只能适用于保密要求较高且供个人使用的箱、柜、房间等。 由于数字、字符、图形图像、人体生物特征、时间等元素都可以成为钥匙的电子信息,这些信息的综合利用可以使电子防盗锁达到高度的保密性,例如在一个戒备森严的金库中,需要使用复合信息密码。 电子防盗锁对于小偷来说“比魔鬼高了一步”。 信息的综合利用还可以赋予电子防盗锁无限的扩展可能性,使产品多样化,给用户“千种选择”。 可见,电子信息的结合使用是电子密码锁未来的发展趋势。 1.3 本设计要达到的目标 本设计采用单片机作为主控芯片,结合外围电路构成电子加密装置。
5.密码锁。 如果用户想要开锁,必须首先通过提供的键盘输入正确的密码才能开锁。 如果密码输入错误,会有提示,提高安全性。 密码可由用户自行修改,且密码只有在开锁后才能修改。 更改密码前必须再次输入密码。 3 课程设计手册 252 系统硬件结构及原理 2.1 主控芯片AT89S51 AT89S51 是一款低功耗、高性能的CMOS 8 位单片机。 该芯片包含一个4k字节ISP(可重复擦除和写入1000次的系统内可编程闪存卡)。 为了读取程序存储器,该器件采用ATMEL的高密度、非易失性存储技术制造,并与标准MCS-51指令系统和80C51引脚结构兼容。 该芯片集成了通用8位中央处理器和ISP Flash。
6、存储单元,功能强大的微机AT89S51可以为许多嵌入式控制应用系统提供高性价比的解决方案。 2.1.1 AT89S51 性能介绍 AT89S51 具有以下特性: 40 个引脚、4k 字节 Flash 片上程序存储器、128 字节随机存取数据存储器(RAM)、32 个外部双向输入/输出(I/O)端口、5 个中断优先级2级中断嵌套中断,2个16位可编程定时器计数器,2个全双工串行通信端口,看门狗(WDT)电子片上时钟振荡器。 另外,AT89S51设计配置了0HZ的振荡频率和可通过软件设置的省电模式。在空闲模式下,CPU暂停工作,但RAM定时计数器、串口和外部中断系统可以工作。继续工作。 处于掉电模式
7. 冻结振荡器并保存RAM 数据,停止芯片的其他功能,直到外部中断激活或硬件复位。 同时,该芯片还具有PDIP、TQFP和PLCC三种封装形式,以适应不同产品的需求。 F1。 0 佛罗里达州。 1F1.2F1.3F1.4 M0SI/P1.5 MI SCiiJF1.6SCK/F1.7RSTMD/P3。 0TXD/P3.1 nrro/P3.2 INT1/P3。 3T0/P3.4T1/P3。 5r?/P3.6RD/P3。 7XTAL2XTAL1 PIiIP GHT匚1*40 2C 239 2匚338 3:437 3匚536 2匚S35 2匚734 3C 833 3匚332 2匚1031 2匚1130 3C 1229
8. 3匸1328 2匚142T 2匚1526 3匸1625 3匚1724 2匚1823 2匚1922 3C 2021 3VccPO。 /AD6 BA.MT ea/vpp ALE/FMGPE SBP2。 7/A15 P2.6/A14 P2。 5AL3P2。 4.112 P2。 3/AUP2。 2A10 P2。 UA9 P2。 0A8 图2-1 AT89S51芯片引脚图 其主要功能特点: 4k可重复擦除(1000次)ISP Flash ROM4. 5-5。 5V工作电压时钟频率0-33MHZ128x
9. 8 位内部 RAM 低功耗空闲和省电模式 3 级加密位软件设置空闲和省电功能,兼容 MCS-51 命令系统 32 个双向 I/O 端口 2 个 16 位可编程定时器/计数器全双工 UART 串行中断端口线 2 条外部中断源 中断唤醒 省电模式 看门狗 (WDT) 电路 灵活的 ISP 字节和页编程 双数据寄存器指针 可以看出,AT89S51 提供了以下标准特性: 4K Byte Flash Flash Memory、128字节内部RAM、32条I/O线、看门狗(WDT)、两个数据指针、两个16位定时器/计数器、一个5向量两级中断结构、一个全双工串线通信端口、片上振荡器和时钟。 同时,AT89S51可降低至OHz静态逻辑运算,并支持两种软件可选的省电工作模式。空闲端
10. 停止CPU,但允许RAM、定时器/计数器、串行通信端口和中断系统继续工作。 掉电模式恢复 RAM 的内容,但停止振荡器并直接禁用所有其他组件,直到硬件复位。 2.1.2 AT89S51 引脚功能说明 Vcc:电源电压 GND:地 P0 端口:P0 端口是一组 8 位开漏双向 I/O 端口,即地址/数据总线复用端口。 作为输出口时,每一位可驱动8个TTL逻辑门电路。 向该端口写“1”即可作为高阻输入端口。 当访问外部数据存储器或程序存储器时,这组端口线分时进行地址(低8位)和数据总线复用,并在访问过程中激活内部上拉电阻。在Flash编程期间,P0端口接收指令字节,程序验证时输出指令字节。 验证时需要
11. 连接外部上拉电阻。 P1 端口:P1 是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P1的输出缓冲级可以驱动(灌电流或输出电流)4个TTL逻辑门电路。 向端口写入“1”,并通过内部上拉电阻将端口拉至高电平。 此时可以作为输入口使用。 当用作输入口时,由于内部有上拉电阻,当某个引脚正在接受外部信号验证时,P1 接收的是低 8 位地址。 P1口的第二个功能如图2-2所示。 端口引脚辅助功能 P1.5MOSI(用于 ISP 编程) P1.6MISO(用于 ISP 编程) P1.7SCK(用于 ISP 编程) 表 2-2 P1 端口辅助功能 P2 端口:P2 是一个带有 8-位双向 I/O 端口,内部有上拉电阻,P2 的输出缓冲级可驱动 4 个 TTL 逻辑门。向该端口写“1”,通过内部
12. 上拉电阻将端口拉至高电平,可作为输入端口使用。 当用作输入端口时,由于内部有上拉电阻,当引脚被外部信号拉低时,将输出电流I。 当访问8位地址的外部数据存储器时(如执行MOVX Ri指令),P2端口线(即特殊功能寄存器)上的内部数据在整个访问期间不会改变。 在Flash编程或验证过程中,P2还接收高位地址和其他控制信号。 P3端口:P3端口是一组8位双向I/O端口,内部有上拉电阻。 P3端口输出缓冲级可以驱动(灌电流或输出电流)4个TTL逻辑门电路。 是 当向P3端口写入“1”时,它们被内部上拉电阻拉高,可以用作输入端口。 当用作输入口时,外部拉低的P3口将通过上拉电阻输出电流I。除了作为通用I/O
13.除了端口线之外,更重要的用途是它的第二个功能。 P3口的第二个功能如下图23所示。 端口功能 第二功能 端口引脚 第二功能 RXD (P3.0) 串行输入端口 TO (P3.4) 定时器/计数器 0 外部输入 TXD (P3.1) 串行输出端口 T1 (P3.5) 定时/计数器 1 外部输入INTO (P3.2) 外部中断 0WR (P3.6) 外部数据存储器写选通 INTI (P3.3) 外部中断 1RD (P3.7) 外部数据存储器读选通 表 2-3 P3 端口 RST 的第二个功能:重置输入。 当振荡器工作时,RST引脚上的高电平持续两个机器周期将使单片机复位。 VDT输出将使该引脚输出高电平。 设置 SFR AUXR(地址 8EH)的 DISRTO 位可以打开或关闭该功能。
14. DISRTO 位默认为 RESET 输出高电平打开状态。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存使能)输出脉冲用于锁存地址的低8位字节。 即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出正脉冲信号,因此可以向外部输出时钟或用于计时目的。 需要注意的是:访问外部数据存储器时,会跳过一处。 ALE 脉冲。 如有必要,可通过设置特殊功能寄存器 (SFR) 区域中 8EH 单元的 DO 位来禁用 ALE 操作。 该位禁止后,只有一条 MOVX 和 MOVC 指令 ALE 将被激活。 此外,该引脚应弱拉高。 当单片机执行外部程序时,ALE 应设置为无效。 PSEN:程序存储使能(PSEN)输出为外部
15. 程序存储器的读选通信号。 当AT89S51从外部程序存储器取指令(或数据)时,每个机器周期PSEN有效两次,即输出两个脉冲。 当访问外部数据存储器时,PSEN 信号被置为两次高电平。 EA/VPP:允许外部访问。 为了使CPU能够公开访问外部程序存储器(地址0000H-FFFFH),EA端子必须保持低电平(接地)。 需要注意的是,如果加密位LB1被编程,则EA端子状态将在复位期间被内部锁存。 如果EA端为高电平(连接到Vcc端),则CPU执行内部程序存储器中的指令。 当对Flash存储器进行编程时,+12V的编程电压Vpp加到该引脚上。 XTAL1:振荡器反相放大器和内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出。微控制器最小系统
16、系统结构图如下2-4所示: VCC2-4单片机最小系统图 2.2 LCD1602显示屏 目前字符型液晶模块已经是单片机应用设计中最常用的信息显示器件。 1602型液晶显示模块具有体积小、功耗低、显示内容丰富的特点。 1602型LCD可显示2行16个字符,具有8位数据总线D0-D7和三个控制端口RS、R/W和EN。 工作电压5V,具有字符对比度调节和背光功能。 与单片机的具体连接方法如下图 2-5 所示: 图 2-5 LCD1602 连接图 2.2.1 接口信号说明 1602 LCD 的接口信号说明如图 2-6 所示: 编号 符号 引脚说明 编号符号引脚 引脚描述 1VSS 电源地 9D2Data I/O2VDD 电源正 10D
17. 3Data I/O3V0 LCD 偏置信号 11D4Data I/O4RS 数据/命令选择端子 12D5Data I/O (H/L) 5R/W 读写选择端子 (H/L) 13D6Data I/O6E 使能信号 14D7Data I /O7D0Data I/O15BLA 背光正极 8D1Data I/O16BLK 背光负极 表 2-6 1602 型液晶屏接口信号说明 2.2.2 主要技术参数 1602 型液晶屏主要技术参数如下表所示: 显示容量芯片工作电压工作电流模块最佳工作电压16
18. 输入:RS=L、RW=L、E=H 输出:D0D7 第二状态字读取数据: 输入:RS=H、RW=H、E=H 输出:无 写命令: 输入: 写数据: 输入: RS=L,RW=L,数据,E 两个高脉冲 D0D7 两个指令码,E 两个高脉冲输出:D0D7 两个数据 RS=H,RW=L,DO07=数字输出:无 223 基本操作命令 2.3 4X4 矩阵键盘2.3.1 矩阵键盘的结构及工作原理 当键盘上按键数量较多时,为了减少对I/O端口的占用,通常将按键排列成矩阵形式。 在矩阵键盘中,每条横线和竖线在交叉点并不是直接相连的,而是通过一个按键连接起来。这样一个端口(如P1口)可以组成4*4=16个按键,相当于两倍就好像端口线直接用于键盘一样多,而且线数更多
19.越多,差别就越明显。 可见,当需要大量按键时,采用矩阵方式制作键盘是合理的。 本设计采用的炉4键盘不仅可以完成密码的输入,还可以作为特殊功能键,如清除显示功能等,键盘上各个按键的功能在程序设计中设定。 其一般功能(见键盘按键上的标记)以及与单片机引脚的连接方法如图28所示: 矩阵键盘图 矩阵键盘被分配了不同的键值。 当用户按下键盘时,程序会扫描并确定键值,然后执行相应的步骤。 例如,如果用户按下的键值为0-9,则用户进入密码输入状态; 如果用户按下的键值是解锁,则执行解锁程序; 如果用户按下的键值是清除,则执行清除程序; 如果设置了该值,则执行设置程序; 如果用户按下的键值为“Confirm”,则执行确认程序。如下图29所示:
20. 2.4 总体设计电路 本系统由两部分组成,即硬件部分和软件部分。 硬件部分由键盘输入部分、复位部分、LCD显示部分、解锁部分组成。 软件部分由相应的主程序、初始化程序、液晶显示程序、键盘扫描程序、按键功能程序、密码设置程序等组成。 LCW0(U1 L=xmu :ur(QMFZOAle544T55一=v52-10)总体设计电路图3 系统的功能模块 3.1 4X4矩阵键盘部分行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程为如下: 1、判断键盘是否有按键,将所有行线Y0-Y3设置为低电平,然后检测列线的状态,只要其中一列的电平为低电平,则表示按下键盘上的某个键,关闭的键位于下方
21. 4 个按钮中水平线与 4 条行线相交的位置。 如果所有列线都为高电平,则键盘上没有按键被按下。 2. 确定关闭键的位置。 确认某个按键被按下后,即可进入确定具体关闭按键的过程。 方法是:将行线依次设置为低电平,即当某一行线设置为低电平时,其他行线设置为高电平。 当确定某一行线的位置为低电平后,逐行检测各列线的电平状态。 如果某列为低,则该列线与行线相交处设置为低的按钮为闭合按钮。 矩阵键盘扫描程序:unsigned char keyscan()/扫描键盘unsigned char temp, kj; unsigned char anjian=0xfe0xfd,0xfb,0xf7;for(k=0;k4;k+) Pl = an
22. jiank;temp = 0x10;for(J=0;J4;J+)if(!(Pl&temp)return(J+k*4);temp = _crol_(temp4);void JudgeO Pl = OxfO;if(Pl! =OxfO)/判断是否有按键延迟(60);/Debounce if(Pl!=OxfO)h=keyscan(); 程序说明:4X4矩阵键盘通过8根线与单片机连接,分为4行4根列线,将行线设置为低电平,将列线设置为高电平,然后将每个按钮分别连接到行线和列线,Judge()函数用于键盘扫描。按钮按下后,行线被拉低,然后使用keyscanO函数来判断按键的值。 3.2 LCD1602液晶屏部分
23、改善密码锁的密码显示效果。 本设计的显示部分采用LCD1602液晶屏代替普通数码管完成。 仅在按下键盘上的开机按钮后显示器才会打开。 同样,只有按下关闭按钮后显示器才会关闭。 否则,显示将始终处于初始状态。 当需要解锁密码锁时,按键盘上的解锁按钮,然后使用键盘上的数字键0-9输入密码。 按下每个数字键后,显示屏上将显示一个 *。 ,您输入时会显示尽可能多的 *。 密码输入完成后,按确认键。 如果输入的密码正确,LCD 1602将显示“LOCK OPENED!” 红色 LED 将熄灭。 如果密码不正确,LCD 1602显示屏将显示“PASSWORD ERROR”并且红色LED灯会亮起。
24.通过液晶显示屏,可以清楚地判断锁的状态。 LCD 1602驱动:bit lcd_busy()/判断液晶屏是否忙 bit result;rs = 0;rw = 1;en = 1;result = (bit)(PO&0x80);en = 0;return result;void write_or( ler (unsigned char order) / LCD 屏写入命令 while(lcd_busy();rw = 0;en = 0;P0 = order;en = 1;en = 0;void write_data(unsigned char date) / LCD 屏写入数据 whlle (液晶屏忙(
25.);rs = 1;rw = 0;en = 0;P0 = date;en = 1;en = 0;void init_lcd()/液晶屏初始化 write_order(0x38);delay(l);write_order(0x0c) ;延迟(l);write_order(0x06);延迟(l);write_order(OxO 1);延迟(l);void L1602_char(ucharhangjichar lie,char符号)uchar a;if(hang = 1) a = 0x80; if(hang = 2) a = OxcO;a = a + lie 1;write_ord
26. er(町;write_data(sign);void L1602_string(ucharhang.uchar lie.uchar *p)uchar a;if(hang = 1) a = 0x80;if(hang = 2) a = OxcO;a = a + lie 1;write_or(ler(a);while(l)if(*p = ,0,)break;write_data(*p);p+;程序说明:init_lcd()是液晶屏的初始化函数。 busyO 函数判断液晶屏是否忙,当该函数返回 1 时,表示液晶屏正忙,禁止对液晶屏进行操作;当返回 0 时,表示用户可以对液晶屏进行操作。
27. te_order(unslgned char order)是写命令函数。 write_data(unsigned char date) 是写入数据函数。 L1602_char(ucharhangucharliecharsign)是向LCD1602写入字符的函数。 L1602_string(uchar Hanguchar lie.uchar *p) 是将字符串写入 LCD1602 的函数。 3.3 密码锁各功能界面 33.1 密码输入界面 密码输入界面 图 3.3.2 修改密码界面 3-2 密码修改界面 图 33.3 密码输入成功界面 3-3 密码正确输入界面 33.4 密码输入错误界面 LCD1U.O16LvTEXFPasswor
28. d Err-orL0|vr-Lp*3-4 密码输入错误界面密码锁功能程序:void main() unsigned char a=l, i=0, k=0, l=l, m=l ,n ,f=0;inlt_lcd();L1602_string( 1J,11欢迎使用); touchl=0;whlle(l) 判断();if(h10)if(h=tablei)k+;L1602_string(2,a;t*,t);a+;i+;if(a=7)a=l; if(i=6)i=0;h=16;jf(h=14) L1602_string(lJ/f输入密码M);L1602_string (二十四
29.,fttf);h=16;touch=l;touchl=0;k=0;1=1;if(h=12)if(k=6)L1602_string( 14/ * 密码右1*);L1602_st 环(2,1 by LockOpened!M); 触摸=-toucli; elseL1602_string( 1,1,” 密码错误11); L1602_stHng(2,l by , f); 1=0; 延迟(255);k=0;h =16;while(l)Judge();if(h=U) L1602_string(l,ll NewCode);L1602_string(2,V");wh
30. ile(m=l)Judge();touch 1=-touch 1;if(h10)tablen=h;L1602_string(2,a;t*tt);a+;n+;h=16;if(n= 6)n=0;if(h=15)if(n=O)n=6;a;L1602_string(2,a,tt n);n-;h=16;if(h=13)m=0 ;if(h=13)h=13;f=l;jf(h=14) 1=0;if(h=13)L1602_string(2,l;fM);for(n=0;n6;n+) L1602_char(29n+l9(uchar)(tablen+48) );h=13;l=0;f=l;k=0;if(h=15)a;L16
31. 02_string(2,a/f,f);k-;1-;h=16;if(h=13) if(f=l) for(n=0;n6;n+)L1602_char(2,n +l,(uchar)(tablen+48) );f=0;elseL1602_string(2,l,u *“);delay(255);delay(255);L1602_string(lJ,tf 欢迎使用 fl);L1602_string (24,lff,);l=l;a=l;k=0;n=0;m=l;h=16;程序说明:用户按下回车键,开始输入密码。 当输入错误时,会提示输入错误,否则显示正确。 此时,如果用户按NEW键,密码就会被修改。
32、修改密码后按修改键,会显示修改成功并退出到欢迎界面。 课程设计手册 4 结论 本次设计是基于经济实用的考虑。 它采用美国Atmel公司的AT89S51单片机,结合外围键盘输入、显示等电路,用C语言编写主控芯片的控制程序。 电子密码锁具有密码修改功能。 该设计完全可行,能够达到设计目的。 采用微控制器制作的电子密码锁具有软硬件设计简单、开发容易、成本低廉、安全可靠、操作方便等特点。 可用于住宅、办公室等需要防盗场所的保险柜、文件柜,具有一定的实用性。 。 特别适合家庭、办公室、学生宿舍、酒店等场所。 23 参考文献 1 史文轩,宋伟 基于单片机 MCS 51 M 的智能密码锁设计。武汉工程职业技术学院学报,2004,(01) 2 祖龙奇,刘仁杰 一种新型可编程密码锁 J 学报大连轻工业大学学报,2002,(01)3 佟世白,华成英,模拟电子技术基础 M.北京:高等教育出版社,20004 严世珠 数字电子技术基础M.北京:高等教育出版社,1998