基于at89c52电子密码锁设计_第1页
基于at89c52电子密码锁设计_第2页
基于at89c52电子密码锁设计_第3页
基于at89c52电子密码锁设计_第4页
基于at89c52电子密码锁设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1 引言 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一 些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携 带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发 展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求, 增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功 耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁, 克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能 上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带 微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分 析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC 卡辨认)已 在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密 要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC 卡还 存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推 广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。 本次设计使用 AT89C52 实现一基于单片机的电子密码锁的设计。 2 电子密码锁的工作原理 本设计以 AT89C52 单片机为控制核心,结合矩阵键盘、自动报警系统等来完成电子 密码锁的设计。单片机接收键入的代码,并与存贮在 EEPROM 中的密码进行比较,如果密 码正确,驱动电磁执行器开锁,则门开,同时用 LED 发光二极管亮一秒钟做为提示,同 时发出“叮咚”声;如果密码不正确,禁止按键输入 3 秒,同时发出“嘀、嘀”报警声; 若在 3 秒之内仍有按键按下,则禁止按键输入 3 秒被重新禁止,如果继续按键,每按下 一次键,会发出“嘀”的报警声;如果输入密码超过已设定好的密码的位数时,会发出 “嘀”的提示声。密码错误或位数超出时,数码管“P”位会灭掉,提示用户操作出错。 图 2.1 单片机控制方案 AT89c52 单片机 矩阵 键盘 控制 串口显示电路 指示电路 延时报警控制电路 开锁控制电路 河北大学工商学院 2011 届本科生学年论文(课程设计) 3 3 硬件电路设计 3.1 AT89C52 简介 3.1.1 AT89C52 的主要工作特性 AT89C52 是美国 Atmel 公司生产的低电压、高性能 CMOS 8 位单片机,片内含 8KB 的 可反复檫写的程序存储器和 12B 的随机存取数据存储器(RAM) ,器件采用 Atmel 公司的 高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内配置通用 8 位中央处 理器(CPU)和 Flash 存储单元,功能强大的 AT89C52 单片机可灵活应用于各种控制领域。 AT89C52 单片机属于 AT89C51 单片机的增强型,与 Intel 公司的 80C52 在引脚排列、硬件 组成、工作特点和指令系统等方面兼容。其主要工作特性是: 片内程序存储器内含 8KB 的 Flash 程序存储器,可擦写寿命为 1000 次; 片内数据存储器内含 256 字节的 RAM; 具有 32 根可编程 I/O 口线; 具有 3 个可编程定时器; 中断系统是具有 8 个中断源、6 个中断矢量、2 个级优先权的中断结构; 串行口是具有一个全双工的可编程串行通信口; 具有一个数据指针 DPTR; 低功耗工作模式有空闲模式和掉电模式; 具有可编程的 3 级程序锁定位; AT89C52 工作电源电压为 5(1+0.2)V,且典型值为 5V; AT89C52 最高工作频率为 24MHz。1 3.1.2 AT89C52 各引脚功能及管脚电压 VCC:电源电压 GND:接地线 P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也是地址/数据总线复用口。作为输 出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可 作为共阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据 总线复用,在访问期间激活内部上拉电阻。 在 flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时, 要求外接上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平.对 P1 端口写“1“时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为 输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL). 此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2 的触发输入 (P1.1/T2EX),具体如下表所示. 在 flash 编程和校验时,P1 口接收低 8 位地址字节. P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平.对 P2 端口写“1“时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为 输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL). 在访问外部程序 存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地 址.在这种应用中,P2 口使用很强的内部上拉发送 1.在使用 8 位地址(如 MOVX RI)访问外 部数据存储器时,P2 口输出 P2 锁存器的内容. 在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号. P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个 TTL 逻辑电平.对 P3 端口写“1“时,内部上拉电阻把端口拉高,此时可以作为输入口使用.作为 输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL). RST: 复位输入.晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位.看门狗计 时完成后,RST 脚输出 96 个晶振周期的高电平.特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位 可以使此功能无效.DISRTO 默认状态下,复位高电平有效. ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉 冲.在 flash 编程时,此引脚(PROG)也用作编程输入脉冲. 在一般情况下,ALE 以晶振六分 之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用.然而,特别强调,在每次访 问外部数据存储器时,ALE 脉冲将会跳过. 如果需要,通过将地址为 8EH 的 SFR 的第 0 位置 “1“,ALE 操作将无效.这一位置 “1“,ALE 仅在执行 MOVX 或 MOVC 指令时有效.否则,ALE 将 被微弱拉高.这个 ALE 使能标志位(地址为 8EH 的 SFR 的第 0 位)的设置对微控制器处于外 部执行模式下无效. 河北大学工商学院 2011 届本科生学年论文(课程设计) 5 PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号. 当 AT89C52 从外部 程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器 时,PSEN 将不被激活. EA/VPP:访问外部程序存储器控制信号.为使能从 0000H 到 FFFFH 的外部程序存储器读 取指令,EA 必须接 GND. 为了执行内部程序指令,EA 应该接 VCC. 在 flash 编程期间,EA 也接收 12 伏 VPP 电压. XTAL1:振荡器反相放大器和内部时钟发生电路的输入端. XTAL2:振荡器反相放大器的输出端.2 3.2 电路系统的功能单元设计 本系统的电路组成比较简单,最基本的单片机驱动电路和键盘扫描电路,开锁电路 和显示电路以及报警系统。驱动电路包括振荡电路、复位电路:键盘扫描电路由 44 键盘矩阵构成:报警系统由报警装置扬声器构成:显示系统由八位 LED 数码管构成。 3 电路元件及参数: 1、AT89C52, PCB Package : DIL40, Clock Frequency :12MHZ 2、C2、C1 ,33PF , PCB Package: CAP10 3、X1, PCB Package: XTAL18, Frequency: 1MHZ 4、C3, 10uF, PCB Package: ELEC-RAD, 5、R1, 220, PCB Package: RES40 6、R5,10K , PCB Package: RES40 7、LED:D1 8、SOUNDER:LS1,Playback Simple Rate: 44100,Playback Buffer Time:500ms 9、LED 4 位数码管 :7SEG-MPX4-CC 3.2.1 开锁电路设计 通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原 理如图 3.1 所示。 图 3.1 密码锁开锁示意图 AT89c52 单片机 开锁驱动电路 电磁 锁和 提示 系统 密码 正确? Y 提示 错误 返回 N 当用户输入的密码正确而且是在规定的位数输入的话,单片机便输出开门信号,送 到开锁驱动电路,然后驱动电磁锁,达到开门的目的。 3.2.2 键盘电路设计 本系统采用采用 4X4 行列式矩阵键盘,同时也能减少键盘与单片机接口时所占用的 I/O 线的数目,在按键比较多的时候,通常采用这样的方法。 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通, 利用这种行列式矩阵结构只需要 N 条行线和 M 条列线,即可组成具有 NM 个按键的键盘。 在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按 键并确认有无按键按下的程序段。 当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方 法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。 首先辨别键盘中有无键按下,有单片机 I/O 口向键盘送全扫描字,然后读入行线状 态来判断。方法是:向行线输出全扫描字 00H,把全部列线置为低电平,然后将列线的电 平状态读入累加器 A 中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行 线不全为 1。 判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现 的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为 1,则所按下的键不 在此列;如果不全为 1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的 那个键。按键的操作面板如图 3.2 所示。共计数字键 10 个,功能键 2 个,即确认键和删 除键。4 图 3.2 键盘操作图 3.2.3 显示电路设计 本系统设计的显示电路是为了给使用者以提示而设置的,选择八位共阳的数码管,本 河北大学工商学院 2011 届本科生学年论文(课程设计) 7 系统的显示采用并行显示的方式,只使用单片机的两个口 P0 口和 P2 口,就可以完成单 片机的显示功能,显示电路的电路原理图如图 3.3 所示,P0 口完成段码显示,P2 口完成 位选功能。 电路设定:当密码输入错误次数达到三次以上时,显示”E”,当无输入断电时,则关 闭显示,当忘记密码,输错密码,判断密码正确无误时,可通过功能键进行显示更改密码 及判断。5 图 3.3 显示电路原理图 3.2.4 设计总体电路图 图 3.4 总体电路图 3.2.5 系统电路的仿真图 输入密码前,数码管显示“P P 8. 8. 8. 8. 8. 8.” ,如图 3.5 所示。 图 3.5 输入密码前 输入密码正确时,数码管显示“8. P 8. 8. 8. 8. 8. 8.” ,并伴有“滴答”声, 提示用户密码正确,如图 3.6 所示。 图 3.6 输入密码正确 输入密码错误时,数码管“P”位熄灭,并伴有“滴”的声音,提示用户密码输入错 误,如图 3.7 所示。 图 3.7 输入密码错误 仿真结果分析 通过对上述模块的仿真,可以得到基于单片机控制的密码锁能实现预计的功能,还 能添加掉电存储、声光提示甚至添加遥控控制功能,且可以满足现在的安全需求,因此, 从仿真结果可以看出,本设计可以得到预期的效果。 河北大学工商学院 2011 届本科生学年论文(课程设计) 9 4 软件设计 4.1 程序设计 程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的 智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根 据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重 要地位。对于本系统,软件也占有重要的地位。 本系统是采用 Proteus 仿真软件进行原理图设计,程序代码编译、调试、仿真以及 PCB 板的设计制作。 为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部 分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再 把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所 谓“模块” ,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为 模块程序设计法。 模块程序设计法的主要优点是: (1) 单个模块比起一个完整的程序易编写、调试及修改。 (2) 程序的易读性好。 (3) 程序的修改可局部化。 (4) 模块可以共存,一个模块可以被多个任务在不同条件下调用。 (5) 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。 4.2 模块介绍 该计程计价系统的软件设计分为以下几个模块: 4.2.1 主程序模块 主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。 4.2.2 键盘扫描及识别子程序 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序, 一旦有按键按下,便转向相应的子程序处理,处理结束再返回。 4.2.3 显示子程序 由于是分屏显示数据,所以就要用到 5 个显示子程序,分别是:关闭状态显示子程 序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子 程序。密码在规定的时间内输入错误次数超过 3 次后的锁定状态显示子程序。 4.3 程序流程图 本系统设计的程序流程图如图 4.3 所示: 图 4.3 程序设计流程图 Y Y Y Y N N 开始 初始化 有键按下? 调用显示 启动定时 识别按键 全部按完? 超位? 比较密码 开门 开始 报警 3 次? 锁定 N N 河北大学工商学院 2011 届本科生学年论文(课程设计) 11 5 结束语 以上所设计的电子密码锁电路,它经过多次修改和整理,已是一个比较不错的设计, 但因为水平有限,此电路也存在一定的问题,比如说电路的密码无法修改,不能忘记密 码,否则无法打开。 通过本次设计,使自己掌握的理论知识能够运用于实践,加深了自己对课本知识的 理解,同时也锻炼了个人的动手能力。 参考文献: 1 何立民.单片机高级教程.北京航空航天大学出版社.2001:4053 2 李建忠.单片机原理及应用(第二版).西安电子科技大学出版社. 2008.2:2223 3 童诗白,华成英.模拟电子技术基础(第三版).北京,高等教育出版社,2001:76110 4 康华光.电子技术基础(第四版).北京高等教育出版社.1998:134138 5 梁宗善.新型集成块应用. 武汉华中理工大出版社. 2004:1519 6 谭浩强.C 语言程序设计(高职教材).清华大学出版社 ,2000.01:2088 河北大学工商学院 2011 届本科生学年论文(课程设计) 13 附 录6 电子密码锁程序 #include unsigned char ps=1,2,3,4,5; unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00,0x40,0x73,0xff; unsigned char dispbuf8=18,16,16,16,16,16,16,16; unsigned char dispcount; unsigned char flashcount; unsigned char temp; unsigned char key; unsigned char keycount; unsigned char pslen=5; unsigned char getps6; bit keyoverflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa,bb; unsigned int cc; bit okflag; bit alarmflag; bit hibitflag; unsigned char oka,okb; void main(void) unsigned char i,j; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; while(1) P3=0xff; P3_4=0; temp=P3; temp=temp if (temp!=0x0f) for(i=10;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; temp=P3; 河北大学工商学院 2011 届本科生学年论文(课程设计) 15 P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) 河北大学工商学院 2011 届本科生学年论文(课程设计) 17 for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else 河北大学工商学院 2011 届本科生学年论文(课程设计) 21 keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=0; break; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(key

温馨提示

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

最新文档

评论

0/150

提交评论