单片机密码锁123.doc_第1页
单片机密码锁123.doc_第2页
单片机密码锁123.doc_第3页
单片机密码锁123.doc_第4页
单片机密码锁123.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

单片机密码锁控制课程设计目 录第1章 绪论31.1背景及意义 31.2电子密码锁的设计要求31.3关键字 4第2章 硬件电路42.1 MIC-5简介42.2 单片机控制方框图52.3 开锁机构52 .4 按键电路设计 7 2.5显示电路设计82. 6 AT24C01掉电存储单元的设计 92.7 密码锁的电源电路设计102.8设计的总体电路图11第3章 软件设计11 31 软件设计流程图11 32 程序代码13心得体会26参考文献27单片机控制的电子密码锁设计第一章:绪论1.1背景及意义随着科技的发展,安全已成为人们关注的焦点之一,于是各种安全产品相继问世(如指纹防盗!红外防盗!GPS等)虽然这类产品安全性高,但因其生产成本高,携带安装使用不方便,在一定程度上限制了这类产品的普及和推广 本文介绍的是一种基于单片机智能锁的硬件和软件设计及实现方法这种电路设计具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能可在意外泄密的情况下随时修改密码4位数密码共一万组不重复组合,保密性强,灵活性高,特别适用于家庭,办公室,学生宿舍及宾馆等公开场所。1.2电子密码锁的设计要求1上锁过程123456789上锁0开锁按数字键,数字会从显示器的最右端开始显示,然后依次向左移位。若要更改密码可按“开锁”键清除原有密码,再重新输入新密码。本设计为的密码为4位,输入的多余数字本电路不予理会,不会显示在显示器上。当密码输入正确后按下“上锁”键,就可将门锁上,同时将密码存储在电路中并清除显示器的显示。2开锁过程 按数字键输入密码,密码在显示器上从右到左依次显示,4位密码输入正确后按下“开锁”甲,密码锁被打开并清除电路中所存储的密码,显示器也被清零。 当输入密码有误时,可按“上锁”键清除所输入的数字,内部存的秘密不会丢失,再重新输入正确的密码按“开锁”键即可。注:当输入错误的密码超过3次后,电路会发出报警信号。 为防止大家忘记密码,本电路还设计了一个万用密码,无论以前的密码是什么,只要输入万用密码按“开锁”键即可开锁并清除原有密码。1.3关键字MCS-51,AT24C02, 矩阵键盘,UPS电路,AT24C02掉电存储,串口显示电路,报警控制电路等二、 硬件电路的设计2.1 MIC-51的简介设计本课题时构思了一种是用以MIC-51为核心的单片机控制方案。MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有 8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在, MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、89C51等)89S51相对于89C51增加的新功能包括: - 新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低! - ISP在线编程功能,在改写单片机存储器内的程序时不用把芯片从工作环境中剥离。- 最高工作频率为33MHz,就是说S51具有更高工作频率,从而具有了更快的计算速度。- 具有双工UART串行通道。- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。- 双数据指示器。- 电源关闭标识。- 全新的加密算法,程序的保密性加强,这样就可以有效的保护知识产权不被侵犯。- 兼容性方面:向下完全兼容51全部字系列产品。2.2单片机控制方框图采用AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图22所示。89s51单片机矩阵键盘控制输入错误锁定键盘延时报警控制电路开锁控制电路串口显示电路图22单片机控制方案2.3开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图23所示。单片机微控制器开锁驱动电路电磁锁密码正确?Y返回N图23密码锁开锁机构示意图当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图24所示。电路由驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5是开锁指示灯;由D6、C24、T11组成开锁。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且有一定的余量。注:在设计中,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。图24密码锁开锁机构电路图24按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图25所示。图25 行列式键盘原理电路图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。按键的操作面板如图26所示。共计数字键10个,功能键2个。图26按键操作面板示意图10个数字键用来输入密码,另外2个功能键分别是:开锁和上锁。面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。25显示电路设计本系统设计的显示电路为了节约单片机的接口资源而采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图27所示。电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1D3的作用是降低数码管的工作电压,增加其使用寿命。图27显示器原理图26 AT24C01掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C01是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图28所示。28 掉电存储电路原理图图中R8、R10是上拉电阻,其作用是减少AT24C01的静态功耗,由于AT24C01的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。27密码锁的电源电路设计图27 稳压模块7805电路本着节省原料的原则,选择的是7805稳压模块做为本电路的电源,JP1接变压器的次级绕组,由于电路耗电很少,所以变压器选择普通小容量的10V的就可以,然后经四个二极管(D1-D4)整流,再经电解电容C滤波,得到较平稳的直流电,为了让电流更平稳更可靠,后面加入了整流模块7805,电路相当简单,1脚是电源的进线,2脚是公共端,3脚就是5V直流电的输出了,C2和C3是滤除高频率的杂波干扰的,本电路简单明了,应用比较广泛。28设计总体电路图图28 总体电路图三、程序设计1软件设计流程图开始输入密码正确否?开锁判断按键LOCK上锁Modify键输入密码正确否?输入新密码再次输入一致否?修改密码结束2程序代码程序开始,伪指令设置程序中所用到寄存器和数据 ORG 0000H MTD DATA 3FH SLA DATA 3EH NUMBYT DATA 3DH MRD DATA 30H AJMP MAIN ORG 0030H MAIN: MOV SP,#60H :设置栈指针接收数据寄存器清零 MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H CLR 20H :功能键标志 CLR 21H :复位键标志调读密码程序,读出的密码送到30H到33H REDA MOV MTD,#00H MOV SLA,#0A0H MOV NUMBYT,#1 LCALL WRNBYT MOV SLA,#0A1H MOV NUMBYT,#07H LCALL RDNBYT显示P作为等待标志 CCD:MOV A,#11111110B MOV P1,A MOV A,#0CH MOV DPTR,#7FFFH MOVX DPTR,A循环调用键扫描子程序START:NOP ;程序开始 LCALL CH_KEY ;检查键盘 AJMP START ;返回 CH_KEY:LCALL KS ;检查有没有按键按下 JNZ LK1 AJMP CH_KEY LK1: LCALL T12MS ACALL KS JNZ LK2 RET LK2: NOP LCALL SBIE ;按键识别子程序 MOV BUFF, A ;送缓冲区以识别是数字键还是功能键? LCALL CH_KF ;判断按键功能。 JB FLAG1 ,KEY_FUN ;标志为1,则为功能键数字按键输入并且存放到缓冲区内等待比较KEY_DIG:NOP ;设一标志,辨别输入是否满 ;SETB TR0 INC TIMERS ;输入数字的位数 MOV A, TIMERS CLR C SUBB A, #01H JNZ PS_2 MOV PS1, BUFF ;依照顺序存放密码 AJMP NEXT PS_2:MOV A, TIMERS SUBB A, #02H CLR C JNZ PS_3 MOV PS2, BUFF AJMP NEXT PS_3:MOV A, TIMERS CLR C SUBB A, #03H JNZ PS_4 MOV PS3, BUFF AJMP NEXT PS_4:MOV A, TIMERS CLR C SUBB A, #04 JNZ PS_5 MOV PS4, BUFF AJMP NEXT PS_5:MOV A, TIMERS CLR C SUBB A, #05 JNZ PS_6 MOV PS5, BUFF AJMP NEXT PS_6:MOV A, TIMERS CLR C SUBB A, #06H JNZ CH_KEY MOV PS6, BUFF NEXT:LCALL XSC MOV R7, TIMERS ;比较输入的次数。 CJNE R7, #06H ,FULL FULL:JC NEXT9 SETB BUF_FULL MOV TIMERS,#06H CLR L3 NOP CLR P2.1 LCALL T100MSD SETB P2.1 NOP AJMP CH_KEY NEXT9:CLR P2.1 ;密码输入一位,鸣叫一声。 CLR L3 LCALL T100MSD ;延时100ms SETB L3 SETB P2.1 AJMP CH_KEY功能按键比较并且跳转KEY_FUN: CLR FLAG1 CLR C MOV A, BUFF SUBB A, #03H ;按键CL跳转 JNZ EN_C AJMP CL EN_C:CLR C MOV A, BUFF ;按键EN跳转 SUBB A, #00H JNZ F1_C AJMP ENEXIT8:NOP LJMP CH_KEY开门子程序 CL:NOP SETB L3 MOV BUFF, #00H ;消密码缓冲 MOV TIMERS,#00H LCALL INITPS ;消除AT缓冲,加调电存储后一定要加上 LCALL XSC LCALL BP LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU4:NOP LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH_KEY FU3:NOP LCALL BP LCALL T100MSD LCALL BP LCALL KILLXS ;关闭显示 CLR FLAG1 AJMP CH_KEY FU1:NOP LCALL XSC JB F_F1, NEXT_F1 CLR L1 LCALL BP SETB F_F1 AJMP CH_KEYNEXT_F1:SETB L1 LCALL BP CLR F_F1 ;LCALL CH_STATE ;查看现在的状态以防误按 ;SETB TR1 ;报警限制暂时不开 ;INC F_F1 CLR FLAG1 AJMP CH_KEY FU2:NOP JB F_F2, NEXT_F2 CLR L2 LCALL BP SETB F_F2 AJMP CH_KEYNEXT_F2:SETB L2 LCALL BP CLR F_F2 CLR FLAG1 AJMP CH_KEY初始化显示缓冲区以及其他缓冲区INITPS:PUSH ACC PUSH PSW MOV R7, #06H MOV R1, #PS1 MOV A, #00HINIT_PS:MOV R1, A DEC R1 DJNZ R7, INIT_PS POP PSW POP ACC NOP RETINITAT:PUSH ACC PUSH PSW MOV R7,#06H MOV R1,#AT1 MOV A, #00HINIT_AT:MOV R1, A DEC R1 DJNZ R7, INIT_AT MOV TIMERS,#00H ;密码输入的次数清零。 POP PSW POP ACC RET按键识别子程序 SBIE:MOV R2, #0EFH ;识别按键子程序,数据送A保存,课本P146页。 MOV R4, #00H LK4:MOV A, R2 MOV P0, A NOP MOV A, P0 JB ACC.0,LONE MOV A, #00H AJMP LKP LONE:JB ACC.1,LTWO MOV A, #08H AJMP LKP LTWO:JB ACC.2,LTHR MOV A, #10H AJMP LKP LTHR:JB ACC.3,NEXTT ;判断下一列 MOV A, #18H LKP:ADD A, R4 PUSH ACC LK3:ACALL KS JNZ LK3 POP ACC RET NEXTT:INC R4 MOV A, R2 JNB ACC.7,KND RL A MOV R2, A AJMP LK4 KND:AJMP CH_KEYKS:MOV P0, #0FH NOP MOV A, P0 CPL A ANL A, #0FH NOP RET CH_KF:CLR C MOV A, BUFF ;判断是数字按键还是功能按键,为1表示功能键 CJNE A, #17H, KY KY:JC SET_CH ;假若是数字按键则标志置为0 SETB FLAG1 ;假若是功能按键则标志置为1 AJMP CHKE_END SET_CH:CLR C MOV A, BUFF SUBB A, #00H JNZ EN_CH SETB FLAG1 AJMP CH_END EN_CH:MOV A, BUFF SUBB A, #03H JNZ DIG SETB FLAG1 AJMP CH_END DIG:CLR FLAG1 CH_END:NOPCHKE_END:RET T12MS:MOV R7, #18H TM1:MOV R6, #0FFH TM66:DJNZ R6, TM66 DJNZ R7, TM1 RET检验密码正误 C_PSW:PUSH PSW PUSH ACC MOV R2,#06H MOV R0,#PS1 MOV R1,#AT1 C_P:CLR C MOV A,R0 SUBB A,R1 JNZ RETURN DEC R0 DEC R1 DJNZ R2,C_P NOP SETB PSW_F AJMP EXIT7 RETURN:CLR PSW_F EXIT7:NOP POP ACC POP PSW RET锁定,报警程序LOCK_1M:MOV R4,#3CH ;锁定1分钟 M1_LOOP:LCALL SEC DJNZ R4,M1_LOOP NOP RET WARN2S:PUSH PSW PUSH ACC MOV R5, #14H ;调用20次BP,报警2s WARN:LCALL BP DJNZ R5,WARN NOP POP ACC POP PSW NOP RET BP:CLR SPK ;报警程序 LCALL T100MSD SETB SPK NOP RET显示子程序DISPLAY:MOV R4,#05HDIS1: MOV R0,#45H MOV R5,#11011111BLD6: MOV A,R MOV P1,A MOV A,R0 MOV DPTR,#TABLE MOVC A,A+DPTR MOV DPTR,#7FFFH MOVX DPTR,A LCALL DL1 MOV A,#0FFH MOV DPTR,#7FFFH MOVX DPTR,A DEC R0 MOV A,R5 JNB ACC.0,ID1 RR A MOV R5,A LIMP LD6LD1: DJNZ R4,DIS1 RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H DB 0FFH密码输入错误的提示 XSD:PUSH ACC PUSH PSW MOV SBUF, #98H JNB TI, $ CLR TI MOV SBUF, #79H JNB TI, $ CLR TI MOV SBUF, #11H JNB TI, $

温馨提示

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

评论

0/150

提交评论