《单片机控制的电子密码锁电路毕业论文.doc》由会员分享,可在线阅读,更多相关《单片机控制的电子密码锁电路毕业论文.doc(25页珍藏版)》请在三一办公上搜索。
1、南 京 工 程 学 院毕 业 论 文继续教育学院 07级 应用电子 专业题 目:单片机控制的电子密码锁电路学生姓名:时萌 指导教师: 曹媛媛 2010年9月前言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤为突出,传统的机械锁,由于结构简单安全性能低,无法满足人们的需求在科学技术不断发展的今天,电子密码锁作为防盗卫士的作用显得日益重要。本次设计创题目的是基于单片机的电子密码锁的设计,系统由AT89551与低功耗CMOS型EPROM AT24402 作为主控芯片与数据存储器单元结合外围的键盘输入, LCD显示,报警,开锁,等电路模块它能完成以下功能: 正确输入密码的前提下,开锁;错误输
2、入密码下,报警;密码可以根据用户需要更改。本密码锁具有设计方法合理,简单易行,成本低安全实用特点,具有一定的推广价值。关键词;电子密码锁,报警,液晶显示。目录摘要目录第一章 前言 .2 1.1课题背景 1.2课题设计目标第二章 系统方案论证. 4 2.1主路的选择.4 2.2密码输入的方式选择第三章 电路的功能单元设计.7 3.1开锁机构.7 3.2按键电路设计.8 3.3 显示电路设计.9 3.4存储电路的设计.11 3.5密码锁的电源电路设计.11 3.6设计的总框图.12 3.7设计的总体电路图.13第四章 系统程序设计.14. 4.1模块介绍.14 4.2程序流程图.15 4.3电路原
3、理图.16 4.4 C语言的程序.17第五章 毕业设计的总结.23 致谢.24 参考文献.25基于单片机控制的电子密码锁第一章 引言 本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘 随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好
4、,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。第二章系统方案论证方案一:采用数字电路控制。其原理方框图如图11所示。图11 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重
5、新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能
6、。其原理如图12所示。开锁控制电路89S51单片机AT24C02掉电存储串口显示电路矩阵键盘控制指示电路输入错误锁定键盘延时报警控制电路图12单片机控制方案 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。第三章 电路的功能单元设计3.1开锁机构图通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如21所示。单片机微控制器开锁驱动电路电磁锁密码正确?Y返回N图21密码锁开锁机构示意图当用户输入的密码正确而且是在规定的时间(普通用户要求在12s内输入正确的密码,管
7、理员要求在5s输入正确的密码)输入的话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。其实际电路如图32所示。电路驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示它由;D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情况而定,但是吸合力要足够且由一定的余量。在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。图32密码锁
8、开锁机构电路图3.2按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图33所示。89s51D0D1D2D3D4D5D6D7D8D9D105.1K X 45.1K X 4VCC图33 行列式键盘原理电路图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步
9、就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图34所示的44键盘,说明线反转个工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与
10、零电平行线相交的交点上的那个键。按键的操作面板如图图34所示。共计数字键10个,功能键6个。键盘上还有3个指示灯和一个蜂鸣器。CLR01EN69F448F337F226F1L1L2L3图34 按键操作面板示意图10个数字键用来输入密码,另外6个功能键分别是:CLR、EN、F1、F2、F3、F4。其中CLR键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。EN键的功能是确认输入的密码。F1是管理模式切换键,当用户不小心三次输入密码都没有正确,键盘被锁定,这个时候就可以启动管理模式,使用管理员的密码来开门。F2是用来进入修改密码的状态。F3用来关闭显示器,一来可以节省电量,另外也可
11、以防止不法分子偷窥密码。F4用来作电铃。上面的3个指示灯L1、L2、L3是用来指示操作的状态:L1锁定及输入指示状态灯,正常的情况下显示红色,当键盘动作的时候,L1灯开始闪动,当键盘处于锁定状态时,指示灯也显示红色。L2开门指示灯,当用户在规定的时间内正确的输入了密码,此灯转变为绿色,表示开门,否则不显示。L3是管理员状态指示灯,当按下F1后,指示灯自动点亮。面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。3.3显示电路设计本系统设计的显示电路是为了给使用者以提示而设置的。考虑到为了节约单片机的口资源,本系
12、统的显示采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图35所示。电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1D3的作用是降低数码
13、管的工作电压,增加其使用寿命。图35 显示器原理图显示器主显示几个字符,给用户提供指示见图26所示。OFF-2图36 a关闭状态888-1图36 b 开锁状态-图36 c 密码输入及修改状态ERRORS图36 d 密码输入错误后的提示-LOCK-LOCK-图36 e密码在规定的时间内输入错误次数超过3次后的锁定状态3.4AT24C02掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电
14、的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图37所示。图37 掉电存储电路原理图图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。3.5密码锁的电源电路设计为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测电路,电子开关切换电路
15、,蓄电池充电电路和蓄电池组成。电源电路图如图38所示。图38 市电供电电路220V市电通过变压器降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+V- IC14输出高电平,由T3,T4构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。其电路图如下图所示:图39 停电检测及电子开关切换电路T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在
16、充电,D2为工作指示。由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤除干扰信号。其电路图如图7所示:图310 蓄电池自动充电电路3.6设计总框图开锁控制电路89S51单片机AT24C02掉电存储串口显示电路矩阵键盘控制指示电路输入错误锁定键盘延时报警控制电路电源电路及UPS电路图311总体设计框图3.7设计总体电路图图312 总体电路图 第四章程序设计4.1模块介绍该计程计价系统的软件设计分为以下几个模块:(1)主程序模块主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等
17、。主程序的流程图如下所示。(2)键盘扫描及识别子程序 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。其程序流程如图 所示.(3)调电存储服务程序当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中,其程序流程如图 所示.(4)显示子程序由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序(DIS_A)、开锁状态显示子程序(DIS_B)、密码输入及修改状态显示子程序(DIS_C)、密码输
18、入错误后的提示子程序(DIS_D)。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序(DIS_E).4.2.程序流程图 (1)主程序流程图如图31所示。开始初始化有键按下?调用显示启动定时识别按键全部按完?超时?比较密码开门开始自动清除NNYYYN按下F2启动定时输入密码存入缓冲再输入一次比较密码调用24C02调用显示按F2退出Y重新输入N图41 主程序流程图图42 修改密码流程图 电子密码锁的程序设计4.3电路原理图 图4.32.13系统板上硬件连线 (1) 把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上;(2) 把“音频放大模块”
19、区域中的SPK OUT端子接喇叭和;(3) 把“单片机系统”区域中的P2.0/A8P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上;(4) 把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;(5) 把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘”区域中的SP1和SP2端子上; 4. 程序设计内容 (1) 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。(2) 密码的输入问题:由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个
20、按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。(3) 按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。 4.4 C语言源程序 #include unsigned char code ps=1,2,3,4,5; /原始密码unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, /共
21、阴极数码管代码 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; unsigned char pslen=9; /显示数字长度unsigned char templen; /密码长度变量unsigned char digit; /数字unsigned char funcount; /功能数字变量unsigned char digitcount; /计数的数值变量unsigned char psbuf9; /存入密码长度的数组bit cmpflag; /功能按键标志bit hibitflag; /被锁标志bit errorflag; /错误标志bit rightflag;
22、/正确标志unsigned int second3; /锁3s标志位unsigned int aa; /定时器计数变量unsigned int bb; /定时器计数变量bit alarmflag; /报警标志位bit exchangeflag; unsigned int cc; unsigned int dd; bit okflag; /灯闪烁标志位unsigned char oka; unsigned char okb; void main(void) unsigned char i,j; P2=dispcodedigitcount; TMOD=0x01; /定时器 TH0=(65536-5
23、00)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; while(1) if(cmpflag=0) /功能按键标志位 if(P3_6=0) /function key 功能键 for(i=10;i0;i-) /延时消抖 for(j=248;j0;j-); if(P3_6=0) if(hibitflag=0) /按键是否被锁 funcount+; if(funcount=pslen+2) /前面有按下功能键1次和按数字键1次,来完成密码长度的输入 funcount=0; cmpflag=1; /功能按键 P1=dispcodefuncount; /可
24、以由灯判断按键是否按下 else second3=0; /按键锁3s while(P3_6=0); if(P3_7=0) /digit key 数字键 for(i=10;i0;i-) /延时消抖 for(j=248;j0;j-); if(P3_7=0) if(hibitflag=0) /按键是否被锁 digitcount+; if(digitcount=10) digitcount=0; P2=dispcodedigitcount; if(funcount=1) /按下功能键后,开始输入密码长度 pslen=digitcount; templen=pslen; else if(funcount
25、1) /开始记录各位密码 psbuffuncount-2=digitcount; / else second3=0; while(P3_7=0); else cmpflag=0; for(i=0;ipslen;i+) if(psi!=psbufi) hibitflag=1; /密码输入不正确,按键禁止功能被激活 i=pslen; errorflag=1; rightflag=0; cmpflag=0; second3=0; goto a; cc=0; errorflag=0; rightflag=1; hibitflag=0; a: cmpflag=0; void t0(void) inter
26、rupt 1 using 0 TH0=(65536-500)/256; TL0=(65536-500)%256; if(errorflag=1) & (rightflag=0) bb+; if(bb=800) bb=0; alarmflag=alarmflag; /报警标志位 if(alarmflag=1) P0_0=P0_0; /报警声 aa+; if(aa=800) aa=0; P0_1=P0_1; second3+; if(second3=6400) /闪4次后(8次变换),自动复位到按ENTER前的状态 second3=0; hibitflag=0; errorflag=0; righ
27、tflag=0; cmpflag=0; P0_1=1; alarmflag=0; bb=0; aa=0; if(errorflag=0) & (rightflag=1) /发出叮咚声 P0_1=0; /LED2发光二极管亮 cc+; if(cc1000) okflag=1; else if(cc2000) okflag=0; else /自动复位到按ENTER前的状态 errorflag=0; rightflag=0; hibitflag=0; cmpflag=0; P0_1=1; /LED2发光二极管灭 cc=0; oka=0; okb=0; okflag=0; P0_0=1; if(okf
28、lag=1) oka+; if(oka=2) oka=0; P0_0=P0_0; else okb+; if(okb=3) okb=0; P0_0=P0_0; 第五章 总结由于使用的是单片机作为核心的控制元件,以及灵敏的霍尔开关型器件,是本出租车计价器具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。但是在我们设计和调试的过程中,也发现了一些问题,譬如计价的金额位数有限,实际的里程可能会很远,会超出我们的显示范围。本设计从经济实用的角度出发,采用美国Atmel公司的单片机AT89S51与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器
29、单元,结合外围的键盘输入、显示、报警、开锁等电路并用汇编编写主控芯片的控制程序,研制了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等场所。致谢在这大学的最后一页里,我要感谢的人很多,首先要感谢我的指导老师曹媛媛老师 ,在整
30、个毕业设计过程中,曹老师多次询问研究进程,并为我指点迷津帮助我开拓研究思路,精心点拨和热枕的鼓励。曹老师一丝不苟的作风,严谨求实的态度踏踏实实的精神,深深的感动了我,当我遇到难题无从下手时,曹老师总能给予我肯定的意见,我从心底感谢她。还要感谢我们各科课任老师,没有你们的谆谆教诲,我就没有学有所长的今天。现在即将挥别我的学校,老师,同学还有我三年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后我感谢在大学期间认识我和我认识的所有人,有你们的伴随,才有我大学生活的丰富多彩绚丽多姿! 参考文献1跟我学单片机 北京航空航天大学出版,2002.82单片机高级教材 北京航空航天大学出版社,20013MCS-51单片机原理及应用 天津大学出版社,2001.34单片机基础 北京航空航天大学出版,2001.35单片微型计算机原理接口与应用北京邮电大学出版社,1996. YN