基于51单片机的密码锁设计说明.docx
《基于51单片机的密码锁设计说明.docx》由会员分享,可在线阅读,更多相关《基于51单片机的密码锁设计说明.docx(36页珍藏版)》请在冰豆网上搜索。
基于51单片机的密码锁设计说明
基于AT89S51与AT24C02密码锁的设计
(大学应用技术学院)
前言1
第一章绪论2
第1.1节研究背景2
第1.2节电子密码控制简介2
第1.3节国外研究现状和发展趋势2
第1.4节本设计所要实现的目标3
第二章主要元器件介绍及IIC总线说明4
第2.1节主控芯片AT89S524
2.1.1.主要性能参数4
2.1.2.功能特性概述4
2.1.3.引脚功能说明5
2.1.4.特殊功能寄存器6
第2.2节AT24C029
2.2.1.性能10
2.2.2.引脚功能描述10
第2.3节LCD160210
2.3.1.接口信号说明11
第2.4节晶振振荡器11
第3章系统硬件构成13
第3.1节设计原理13
第3.2节电路总图构成13
3.2.1.报警部分14
3.2.2.AT24C02存储部分14
3.2.3.显示部分15
3.2.4.复位电路15
3.2.5.晶振部分16
3.2.6.开锁电路16
3.2.7.键盘输入模块17
第4章仿真设计18
第4.1节Protues仿真软件概述18
第4.2节Protues与Keil的连调18
第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
基于AT89S51与AT24C02密码锁的设计
(大学应用技术学院)
【摘要】:
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89S52作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD液晶显示、报警、开锁等,用C语言编写主控芯片的控制程序与EEPROM读写程序相结合,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
这种电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。
【关键词】:
密码控制;单片机;报警;
[Abstract]:
Theelectroniccipherlockisaelectronicproducts,whichcontrolthemechanicalswitchbythecontrolcircuitorchipwhenyouinputapassword.Ithasmanydifferenttypes,forexample,simplecircuitproducts,chipproductswithahighervalue.Nowthewidelyusedelectroniclocksarebasedonthechipandachievethefunctionbyprogramming.
Thisarticlefromtheeconomicalandpracticalpointofview,theuseoftheUnitedStatesAtmelCorporationAT89S51microcontrollerasamasterchipandthedatamemoryunit,combinedwiththeexternalmatrixkeyboardinput,LEDdigitaldisplay,alarm,unlockandsoon,dolminatedbytheCprogramminglanguagechipEEPROMofthecontrolproceduresandthecombinationofreadingandwritingprogramdesignedtochangeapasswordmanytimes,thepolicefunctionwiththeelectronicthepasswordcontrol.Thiscircuitdesignwithanti-testbuttoninput,intelligentcontrollock,unlock,alarm,multiplefunctions,suchasChangePassword.[Keywords]:
Passwordcontrol;Single—chip;Alarm;
前言
随着科学技术的不断提高,人们对日常生活中的安全防盗器件的要求越来越高。
传统的机械式钥匙由于安全性能差,携带不便等缺点,已不能满足人的需要,随着大规模集成电路技术的发展,特别是单片机的问世,出现了许多带微处理器的电子密码锁,有效地克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁在技术和性能上都有了大大的提高,并且还具有易操作、功耗低、成本低等优点,从而使电子密码锁成为目前市场上的主流产品。
而近年来出现的智能密码锁,由于其成本较高,一定程度上限制了这类产品的普及和推广。
现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。
对于采用集成电路控制的方案,其中的编码电子锁电路分为编码电路、控制电路、复位电路、解码电路、防盗报警电路、门铃电路,而电子锁主要由输入元件、电路(包括电源)以及锁体三部分组成。
显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便;而利用单片机控制的方案,由于单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能,但其也有一定的局限性,就在于其控制原理的复杂以及要求设计人员具有更加良好的程序设计能力,调试较为繁琐,否则程序一旦跑飞将造成意想不到的损失。
通过对这两种方案的优缺点比较,再考虑到本人自己对单片机设计具有一定的基础,所以此次选择利用单片机来进行密码锁的设计。
本设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。
密码可以由用户自己修改设定,锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
第一章绪论
第1.1节研究背景
在人们的日常生活中,锁被广泛使用,人们常用锁来锁一些贵重物品乃至自己的家门,目的就是为了提高安全性。
常见的锁有普通机械锁、机械密码锁、电磁卡锁、指纹(虹膜)锁等。
而普通的机械锁极容易被强行破坏,安全系数不高;机械密码锁虽然安全系数高但造价相对较高,目前在保险柜上应用较多;电磁卡锁由于磁卡信息极易受外界干扰而失磁导致无法开锁,而指纹(虹膜)锁虽然安全性很好,但会因手指划伤虹膜充血等收到限制。
通过分析我们不难发现传统密码锁或多或少存在一些不足从而降低了其的安全性,因此研究一种新型的密码锁是具有有很高的现实需求性。
随着电子科技的发展,将电子芯片跟传统机械锁结合起来设计成一种新型的密码锁而电子密码锁作为一种新型的锁已经成功,即电子密码锁。
在安全技术防领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁。
电子密码锁与传统密码锁想比较,拥有海量的密齿,通常从10000到10000000不等,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
从是否方便的角度看,电子密码锁省去了传统机械锁的钥匙,电磁卡锁的磁卡,使用者只要记得其密码,便可以开启,从而大大提高了其适用性。
因此电子密码锁的具有较高的研究价值。
第1.2节电子密码控制简介
电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
电子密码控制不论性能还是安全性都已大大超过了机械类。
其特点如下:
1)性好,编码量多,远远大于机械控制。
随机开锁成功率几乎为零。
2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使控制的性下降。
3)误码输入保护,当输入密码多次错误时,报警系统自动启动。
4)无活动零件,不会磨损,寿命长。
5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
6)电子密码控制系统具有操作简单易行,一学即会的特点。
第1.3节国外研究现状和发展趋势
早在80年代,日本产生了最早的电子密码锁。
随着日本经济复,电子行业的
快速发展,一些利用简单的门电路设计的密码锁出现了。
这类电路安全性差,容易破解。
到了90年代,美国、意大利、德国、日本、加拿大、国以及我国的、等地的微电子技术的进步和通信技术的发展为密码锁提供了技术上的基础,从而推动密码锁走向实际应用的阶段。
我国于90年代初开始对密码锁进行初步的探索。
到目前为止,在此领域虽已有较大的发展,采用各种电路进行设计的比较多,技术也相当先进,电子技术发展至今已达到相当高的水平,电子密码锁技术已十分成熟。
第1.4节本设计所要实现的目标
本设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。
密码可以由用户自己修改设定,锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
第二章主要元器件介绍及IIC总线说明
第2.1节主控芯片AT89S52
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.1.1.主要性能参数
与MCS-51产品指令系统完全兼容
4k字节在系统编程(ISP)Flash闪速存储器
1000次擦写周期
4.0-5.5V的工作电压围
全静态工作模式:
0Hz-33MHz
三级程序加密锁
128×8字节部RAM
32个可编程I/O口线
2个16位定时/计数器
6个中断源
全双工串行UART通道
低功耗空闲和掉电模式
中断可从空闲模唤醒系统
看门狗(WDT)及双数据指针
掉电标识和快速编程特性
灵活的在系统编程(ISP字节或页写模式)
2.1.2.功能特性概述
AT89S51提供以下标准功能:
4k字节Flash闪速存储器,128字节部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片振荡器及时钟电路。
同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
2.1.3.引脚功能说明
P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
Pl是一个带部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,Pl接收低8位地址。
端口引脚第二功能:
P1.5MOSI(用于ISP犏程)
P1.6MISO(用于ISP犏程)
P1.7SCK(用于ISP犏程)
P2口:
P2是一个带有部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的容(也即特殊功能寄存器(SFR)区中P2寄存器的容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l”时,它们被部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
端口引脚的第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外中断0)
P3.3INT1(外中断1)
P3.4T0(定时/计数器0外部输入)
P3.5T1(定时/计数器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTALl:
振荡器反相放大器及部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.1.4.特殊功能寄存器
这些地址并没有全部占用,没有占用的地址亦不可使用,读这些地址将得到一个随意的数值。
而写这些地址单元将不能得到预期的结果。
不要软件访问这些未定义的单元,这些单元是留作以后产品扩展用途的,复位后这些新的位将为0。
中断寄存器:
各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。
双时钟指针寄存器:
为更方便地访问部和外部数据存储器,提供了两个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外部程序和数据的寻址空间。
程序存储器:
如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如EA接至Vcc(电源+),程序首先执行地址从0000H-0FFFH(4KB)部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
数据存储器:
AT89S51的具有128字节的部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
看门狗定时器(WDT):
WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR(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计数器计数达到16383(3FFFH),WDT将溢出并使器件复位。
WDT打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383机器周期复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。
WDT计数器既不可读也不可写,当WDT溢出时,通常将使RST引脚输出高电平的复位脉冲。
复位脉冲持续时间为98×Tosc,而Tosc=1/Fosc(晶体振荡频率)。
为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。
掉电和空闲状态时的WDT:
掉电时期,晶体振荡停止,WDT也停止。
掉电模式下,用户不能再复位WDT。
有两种方法可退出掉电模式:
硬件复位或通过激活外部中断。
当硬件复位退出掉电模式时,处理WDT可象通常的上电复位一样。
当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。
为防止中断误复位,当器件复位,中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。
这为在掉电模式下的中断执行中断服务程序而设置。
为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。
在进入空闲模式前,WDT打开时,WDT是否继续计数由SFR中的AUXR的WDIDLE位决定,在IDLE期间(位WDIDLE=0)默认状态是继续计数。
为防止AT89S51从空闲模式中复位,用户应周期性地设置定时器,重新进入空闲模式。
当位WDIDLE被置位,在空闲模式中WDT将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。
中断:
AT89S51共有5个中断向量:
2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。
这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。
IE也包含总中断控制位EA,EA清0,将关闭所有中断。
定时器0和定时器1的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位,该标志保留至下个时序周期。
晶体振荡器特性:
AT89S51中有一个用于构成部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或瓷谐振器一起构成自激振荡器。
外接石英晶体(或瓷谐振器)及电容Cl、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容Cl、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用瓷谐振器建议选择40pF±10F。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL1端,即部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
空闲节电模式:
在空闲工作模式状态,CPU保持睡眠状态而所有片的外设仍保持激活状态,这种方式由软件产生。
此时,片RAM和所有特殊功能寄存器的容保持不变。
空闲模式可由任何允许的中断请求或硬件复位终止。
需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,部禁止CPU访问片RAM,而允许访问其它端口。
为了避免在复位结束时可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
掉电模式:
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片RAM和特殊功能寄存器的容在终止掉电模式前被冻结。
退出掉电模式的方法是硬件复位或由处于使能状态的外中断INT0和INT1激活。
复位后将重新定义全部特殊功能寄存器但不改变RAM中的容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
Flash闪速存储器的并行编程:
AT89s51单片机部有4k字节的可快速编程的Flash存储阵列。
编程方法可通过传统的EPROM编程器使用高电压(+12V)和协调的控制信号进行编程。
AT89S51的代码是逐一字节进行编程的。
数据查询:
AT89S5l单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。
写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。
Ready/Busy:
字节编程的进度可通过“RDY/BSY”输出信号监测,编程期间,ALE变为高电平“H”后P3.0端电平被拉低,表示正在编程状态(忙状态)。
编程完成后,P3.0变为高电平表示准备就绪状态。
程序校验:
如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,各加密位也可通过直接回读进行校验。
读片签名字节:
AT89S51单片机有3个签名字