1、苏州大学本科生毕业设计(论文)i基于 AT89S51 与 AT24C02 密码锁的设计(苏州大学应用技术学院)目 录前言 .1第一章 绪论 .2第 1.1 节 研究背景 .2第 1.2 节 电子密码控制简介 .2第 1.3 节 国内外研究现状和发展趋势 .2第 1.4 节 本设计所要实现的目标 .3第二章 主要元器件介绍及 IIC 总线说明 .4第 2.1 节 主控芯片 AT89S52.42.1.1. 主要性能参数 .42.1.2. 功能特性概述 .42.1.3. 引脚功能说明 .52.1.4. 特殊功能寄存器 .6第 2.2 节 AT24C02 .92.2.1. 性能 .102.2.2. 引
2、脚功能描述 .10第 2.3 节 LCD1602 .102.3.1. 接口信号说明 .11第 2.4 节 晶振振荡器 .11第 3 章 系统硬件构成 .13第 3.1 节 设计原理 .13第 3.2 节 电路总图构成 .133.2.1. 报警部分 .143.2.2. AT24C02 存储部分 .143.2.3. 显示部分 .153.2.4. 复位电路 .153.2.5. 晶振部分 .163.2.6. 开锁电路 .163.2.7. 键盘输入模块 .17第 4 章 仿真设计 .18第 4.1 节 Protues 仿真软件概述 .18第 4.2 节 Protues 与 Keil 的连调 .18苏州大
3、学本科生毕业设计(论文)ii第 4.3 节 Protues 与 Keil 的连调的仿真结果 .19第 5 章 系统软件设计 .21第 5.1 节 主程序流程图 .21第 5.2 节 按键功能流程图 .21第 5.3 节 密码设置流程图 .22第 5.4 节 开锁流程图 .23结论 .24参考文献 .25致谢 .26附录 .27附录 1: 实物照片 .27附录 2: 部分源程序 .29苏州大学本科生毕业设计(论文)1基于 AT89S51 与 AT24C02 密码锁的设计(苏州大学应用技术学院)【摘要】:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务
4、的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。本文从经济实用的角度出发,采用美国 Atmel 公司的单片机 AT89S52 作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD 液晶显示、报警、开锁等,用 C 语言编写主控芯片的控制程序与 EEPROM 读写程序相结合,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。【关键词】:密码控制;单片机;报警;Abstract:The electronic cipher
5、 lock is a electronic products, which control the mechanical switch by the control circuit or chip when you input a password. It has many different types ,for example, simple circuit products , chip products with a higher value. Now the widely used electronic locks are based on the chip and achieve
6、the function by programming. This article from the economical and practical point of view,the use of the United States Atmel Corporation AT89S51 microcontroller as a master chip and the data memory unit, combined with the external matrix keyboard input,LED digital display,alarm,unlock and so on, dol
7、minated by the C programming language chip EEPROM of the control procedures and the combination of reading and writing program designed to change a password many times,the police function with the electronic the password control.This circuit design with anti-test button input,intelligent control loc
8、k,unlock,alarm,multiple functions,such as Change Password. Key words:Password control; Singlechip; Alarm;苏州大学本科生毕业设计(论文)1前言随着科学技术的不断提高,人们对日常生活中的安全防盗器件的要求越来越高。传统的机械式钥匙由于安全性能差,携带不便等缺点,已不能满足人的需要,随着大规模集成电路技术的发展,特别是单片机的问世,出现了许多带微处理器的电子密码锁,有效地克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁在技术和性能上都有了大大的提高,并且还具有易操作、功耗低、成本低等优点,
9、从而使电子密码锁成为目前市场上的主流产品。而近年来出现的智能密码锁,由于其成本较高,一定程度上限制了这类产品的普及和推广。现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。对于采用集成电路控制的方案,其中的编码电子锁电路分为编码电路、控制电路、复位电路、解码电路、防盗报警电路、门铃电路,而电子锁主要由输入元件、电路( 包括电源)以及锁体三部分组成。显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便;而利用单片机控制的方案,由于单片机灵活的编程设计和丰富的 I/O 端口,及其控制的准确性,不但能实现基本的密码
10、锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能,但其也有一定的局限性,就在于其控制原理的复杂以及要求设计人员具有更加良好的程序设计能力,调试较为繁琐,否则程序一旦跑飞将造成意想不到的损失。通过对这两种方案的优缺点比较,再考虑到本人自己对单片机设计具有一定的基础,所以此次选择利用单片机来进行密码锁的设计。本设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确
11、认,以防止误操作。苏州大学本科生毕业设计(论文)2第一章 绪论第 1.1 节 研究背景在人们的日常生活中,锁被广泛使用,人们常用锁来锁一些贵重物品乃至自己的家门,目的就是为了提高安全性。常见的锁有普通机械锁、机械密码锁、电磁卡锁、指纹(虹膜)锁等。而普通的机械锁极容易被强行破坏,安全系数不高;机械密码锁虽然安全系数高但造价相对较高,目前在保险柜上应用较多;电磁卡锁由于磁卡信息极易受外界干扰而失磁导致无法开锁,而指纹(虹膜)锁虽然安全性很好,但会因手指划伤虹膜充血等收到限制。通过分析我们不难发现传统密码锁或多或少存在一些不足从而降低了其保密的安全性,因此研究一种新型的密码锁是具有有很高的现实需求
12、性。随着电子科技的发展,将电子芯片跟传统机械锁结合起来设计成一种新型的密码锁而电子密码锁作为一种新型的锁已经成功,即电子密码锁。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁。电子密码锁与传统密码锁想比较,拥有海量的密齿,通常从 10000 到 10000000 不等,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。从是否方便的角度看,电子密码锁省去了传统机械锁的钥匙,电磁卡锁的磁卡,使用者只要记得其密码,便可以开启,从而大大提高了其适用性。因此电子密码锁的具有较高的研究价值。第 1.2 节 电子密码控制简介电子密码控制
13、是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。电子密码控制不论性能还是安全性都已大大超过了机械类。其特点如下:1)保密性好,编码量多,远远大于机械控制。随机开锁成功率几乎为零。2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使控制的保密性下降。3)误码输入保护,当输入密码多次错误时,报警系统自动启动。4)无活动零件,不会磨损,寿命长。5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。6)电子密码控制系统具有操作简单易行,一学即会的特点。第 1.3 节 国内外研究现状和发展趋势苏州大学本科生毕业设计(论文)3早在 8
14、0 年代,日本产生了最早的电子密码锁。随着日本经济复苏,电子行业的快速发展,一些利用简单的门电路设计的密码锁出现了。这类电路安全性差,容易破解。到了 90 年代,美国、意大利、德国、日本、加拿大、韩国以及我国的台湾、香港等地的微电子技术的进步和通信技术的发展为密码锁提供了技术上的基础,从而推动密码锁走向实际应用的阶段。我国于 90 年代初开始对密码锁进行初步的探索。到目前为止,在此领域虽已有较大的发展,采用各种电路进行设计的比较多,技术也相当先进,电子技术发展至今已达到相当高的水平,电子密码锁技术已十分成熟。第 1.4 节 本设计所要实现的目标本设计采用单片机为主控芯片,结合外围电路,组成电子
15、密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。苏州大学本科生毕业设计(论文)4第二章 主要元器件介绍及 IIC 总线说明第 2.1 节 主控芯片 AT89S52AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4k bytes 的可系统编程的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 8051
16、 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用 8 位微处理器于单片芯片中,ATMEL 公司的功能强大,低价位 AT89S51 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。2.1.1. 主要性能参数与 MCS-51 产品指令系统完全兼容4k 字节在系统编程(ISP)Flash 闪速存储器1000 次擦写周期4.05.5V 的工作电压范围全静态工作模式:0Hz 33MHz三级程序加密锁1288 字节内部 RAM32 个可编程 IO 口线2 个 16 位定时计数器6 个中断源全双工串行 UART 通道低功耗空闲和掉电模式中断可
17、从空闲模唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP 字节或页写模式)2.1.2. 功能特性概述AT89S51 提供以下标准功能:4k 字节 Flash 闪速存储器, 128 字节内部 RAM,32个 IO 口线,看门狗(WDT) ,两个数据指针,两个 16 位定时计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51 可降苏州大学本科生毕业设计(论文)5至 0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式
18、保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.1.3. 引脚功能说明P0 口:P0 口是一组 8 位漏极开路型双向 I0 口,也即地址数据总线复用口。作为输出口用时,每位能驱动 8 个 TTL 逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 F1ash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:Pl 是一个带内部上拉电阻的 8 位双向 IO 口,Pl 的输出缓冲级可驱动(吸收或输出电流)
19、4 个 TTL 逻辑门电路。对端口写“ l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL) 。Flash 编程和程序校验期间,Pl 接收低 8 位地址。端口引脚第二功能:P1.5 MOSI(用于 ISP 犏程)P1.6 MISO(用于 ISP 犏程)P1.7 SCK (用于 ISP 犏程)P2 口:P2 是一个带有内部上拉电阻的 8 位双向 IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用
20、时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或 16 位地址的外部数据存储器时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中 P2 寄存器的内容) ,在整个访问期间不改变。Flash 编程或校验时,P2 亦接收高位地址和其它控制信号。P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“l ”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将用上拉
21、电阻输出电流。P3 口除了作为一般的 I0 口线外,更重要的用途是它的第二功能,如下表所示:P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。端口引脚的第二功能P3.0 RXD(串行输入口)苏州大学本科生毕业设计(论文)6P3.1 TXD(串行输出口)P3.2 INT0(外中断 0)P3.3 INT1(外中断 1)P3.4 T0(定时计数器 0 外部输入)P3.5 T1(定时计数器 1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将
22、使该引脚输出高电平,设置 SFR AUXR 的 DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0 位缺省为 RESET 输出高电平打开状态。ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的 16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲(PROG) 。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止
23、 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的 PSEN 信号。EAVPP :外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为0000HFFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为
24、高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。F1ash 存储器编程时,该引脚加上 +12V 的编程电压 Vpp。XTALl:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.4. 特殊功能寄存器这些地址并没有全部占用,没有占用的地址亦不可使用,读这些地址将得到一个随意的数值。而写这些地址单元将不能得到预期的结果。不要软件访问这些未定义的单元,这些单元是留作以后产品扩展用途的,复位后这些新的位将为 0。中断寄存器:各中断允许控制位于 IE 寄存器, 5 个中断源的中断优先级控制位于 IP 寄存器。苏州大学本科生毕业设计(论文)7双时钟指
25、针寄存器:为更方便地访问内部和外部数据存储器,提供了两个 16 位数据指针寄存器:DP0 位于 SFR(特殊功能寄存器)区块中的地址 82H、83H 和 DP1 位于地址 84H、85H,当 SFR 中的位 DPS=0 选择 DP0,而 DPS=1 则选择 DP1。用户应在访问相应的数据指针寄存器前初始化 DPS 位。电源空闲标志:电源空闲标志(POF )在特殊功能寄存器 SFR 中 PCON 的第 4 位(PCON.4) ,电源打开时 POF 置“1“,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51 单片机内核采用程序存储器和数据存储器空间分开的结构,均具有 64KB 外部
26、程序和数据的寻址空间。程序存储器:如果 EA 引脚接地(GND) ,全部程序均执行外部存储器。在AT89S51,假如 EA 接至 Vcc(电源+) ,程序首先执行地址从 0000H0FFFH(4KB)内部程序存储器,再执行地址为 1000HFFFFH (60KB)的外部程序存储器。数据存储器:AT89S51 的具有 128 字节的内部 RAM,这 128 字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128 字节均可设置为堆栈区空间。看门狗定时器(WDT): WDT 是为了解决 CPU 程序运行时可能进入混乱或死循环而设置,它由一个 14bit 计数器和看门狗复位 SFR(
27、WDTRST )构成。外部复位时,WDT 默认为关闭状态,要打开 WDT,用户必须按顺序将 01EH 和 0E1H 写到 WDTRST寄存器(SFR 地址为 0A6H) ,当启动了 WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或 WDT 溢出复位外没有其它方法关闭 WDT,当 WDT 溢出,将使 RST 引脚输出高电平的复位脉冲。使用看门狗(WDT):打开 WDT 需按次序写 01EH 和 0E1H 到 WDTRST 寄存器(SFR 的地址为 0A6H) ,当 WDT 打开后,需在一定的时候 01EH 和 0E1H 到 WDTRST 寄存器以避免 WDT 计数溢出。14 位 WDT
28、计数器计数达到 16383(3FFFH ) ,WDT 将溢出并使器件复位。WDT 打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个 16383 机器周期内复位 WDT,也即写 01EH 和 0E1H 到 WDTRST 寄存器,WDTRST 为只写寄存器。WDT 计数器既不可读也不可写,当 WDT 溢出时,通常将使 RST 引脚输出高电平的复位脉冲。复位脉冲持续时间为 98Tosc,而Tosc=1Fosc(晶体振荡频率) 。为使 WDT 工作最优化,必须在合适的程序代码时间段周期地复位 WDT 防止 WDT 溢出。掉电和空闲状态时的 WDT:掉电时期,晶体振荡停止, WDT 也停止。掉电模式下,用户不能再复位 WDT。有两种方法可退出掉电模式:硬件复位或通过激活外部中断。当硬件复位退出掉电模式时,处理 WDT 可象通常的上电复位一样。当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位,中断引脚持续为低时,WDT 并未开始计数,直到