为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

我的密码锁

2012-06-15 22页 doc 1MB 57阅读

用户头像

is_601074

暂无简介

举报
我的密码锁第1章 前言 随着人们生活水平的提高,在现代社会,电子密码锁已不是一个陌生的名词。本文中将要介绍的电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制二极管的亮灭,完成开锁、闭锁任务的电子锁装置。本设计是基于AT89C51单片机为控制核心的密码锁设计方案,它是一种通过密码输入来控制电路或是芯片工作,运用键盘输入、密码修改、密码检测、开锁电路、执行电路、键盘输入次数锁定电路来完成开锁、闭锁等任务。通过键盘输入次数记录来实现键盘的锁定。本文设计的密码锁具有安全性高、成本低、功耗低、易操作等优点。 1.1 设计内容: 1...
我的密码锁
第1章 前言 随着人们生活水平的提高,在现代社会,电子密码锁已不是一个陌生的名词。本文中将要介绍的电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制二极管的亮灭,完成开锁、闭锁任务的电子锁装置。本设计是基于AT89C51单片机为控制核心的密码锁设计,它是一种通过密码输入来控制电路或是芯片工作,运用键盘输入、密码修改、密码检测、开锁电路、执行电路、键盘输入次数锁定电路来完成开锁、闭锁等任务。通过键盘输入次数记录来实现键盘的锁定。本文设计的密码锁具有安全性高、成本低、功耗低、易操作等优点。 1.1 设计内容: 1、 密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“123456”共6位密码。 2、 密码的输入: 采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。然后进入密码的判断比较处理状态并给出相应的处理过程。 3、 按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。 1.2 基本功能: 1、设置6位密码,密码通过键盘输入,键盘按键带按键音,若密码正确,则将锁打开。若密码错误则不做任何反应。 2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。重新输入密码后按保存密码即可。 3、密码可以重新输入,避免误输入,每输入一位密码完后用*代替。 4、AT24C02保存密码,支持复位保存,掉电保存功能。 5、液晶屏可以实时显示数字和文字,包括密码和帮助信息。 第2章 系统总方案设计 方案一:采用数字电路控制。其原理方框图如图1-1所示。 图2-1 数字密码锁电路方案 采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。 电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。 密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。 方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1-2所示。 图2-2单片机控制方案 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。 本方案采用一种是用以89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。 初步设计思路如下: 输入密码用矩形键盘,包括数字键和功能键。 LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用74LS138控制各位显示器分时进行显示。 用发光二极管代替开锁的电路,发光示开锁。 打开电源后,显示器显示“Your Password”,设原始密码为“123456”,只要输入此密码便了开门。这样可预防停电后再来电时无密码可用。 输入密码后可以按重新输入清除屏幕。 欲重新设定密码,先输入新密码在按保存密码。 输入密码,再按确认键。若密码与设定密码相同,则开门。否则显示器清为“Your Password Error”。 软件的设计主要包括键盘键值的读取,LED显示程序,密码比较程序和修改以及按键发音程序。 第3章 系统硬件设计 3.1单片机振荡电路 8051内置频率可达12MHz的时钟电路,用来产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容,晶振采用12M外接30pF电容构成单片机时钟电路。 图3-1 单片机振荡电路 3.2单片机复位电路 单片机系统的复位电路在可以采用的是按钮式上电复位电路形式,其中电阻R采用10KΩ的阻值 ,电容采用10μF的电容值。 图3-2 单片机复位电路 3.3 键盘按键电路 此次设计使用的是矩阵键盘,这种形式的键盘能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样。 图3-3 矩阵键盘电路 这种键盘内部结构为每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。我们这次设计的电子密码锁的按键部分采用4X4矩阵键盘,键盘行列各有四条线键盘排列在行与列线的交点上如图3-3所示。 图3-4 矩阵键盘内部结构图 如上图所示键盘,确定矩阵式键盘上何键被按下常使用的为“行扫描法”。行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。判断键盘中有无键按下: (1) 先将行线p1.7-p1.4置0111,然后检测列线的状态。如果p1.3-p1.0为0111,则k0被按下;如果p1.3-p1.0为1011,则k1被按下;如果p1.3-p1.0为1101,则k2被按下;如果p1.3-p1.0为1110,则k3被按下; (2)将行线p1.7-p1.4置1011,然后检测列线的状态,方法同(1); (3)将行线p1.7-p1.4置1101,然后检测列线的状态,方法同(1); (4)将行线p1.7-p1.4置1110,然后检测列线的状态,方法同(1)。 3.4 24C02电路设计 24C02是2K字节的串行EEPROM, 内部含有256个8位字节,该器件通过总线操作,并有专门的写保护功能。 串行EEPROM简称I2C总线式串行器件。串行器件不仅占用很少的资源和I/O线,而且体积大大缩小,同时具有工作电源宽、抗干扰能力强、功耗低、数据不易丢失和支持在线编程等特点。如图3-5所示。 图3-5 24C02电路 3.5 显示电路 数码管显示器具有功耗低、体积小、质量轻的特点。该字符型LCD具有字符发生器ROM,可显示192种字符(160个5×7点阵字符和32个5×11点阵字符),具有64个字节的自定义字符RAM,可自定义8个5×8点阵字符或4个5×11点阵字符,且具有80个字节的RAM。可以分成两行,每一行显示16个ASCⅡ字符,,主要由数字和英文字母组成。LCD在此系统中作为单片机的输出设备,主要用于计算机系统参数的显示。 图3-6 显示电路 第4章 系统软件 4.1 系统程序图 N Y V N Y 图4-1主程序流程图 软件设计总流程图如下: 图4-2 软件设计总流程图 4.2 键盘扫描及识别子程序 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。辨别键盘中有无键按下,由单片机I/O口向键盘送全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉直至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行状态来实现的。方法是:依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。 4.3 比较密码子程序 当按下确定按键后程序执行密码比较,判断密码是否正确,从而决定是否禁止键盘,还是继续等待按键输入,图4.2是密码比较函数流程图: 图4-3 比较密码子程序流程图 4.4 显示程序设计 由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序。为了显示数字,要为LED显示器提供字型代码。我用的是共阳极的显示器。 4.5按键功能流程图 如图4.3为按键功能流程图,在按键当中,有与输入、开锁、清除、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,最后确认程序。 图4-4 按键功能流程图 4.6开锁流程图 如图4.4为开锁流程图,开始时输入密码,密码输入完全后按确认键进行开锁,如果输入正确,则开锁成功。否则开锁失败,继续对待开锁。开锁流程图如下所示: 图4.-5 开锁流程图 4.7 显示部分 为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的数字键0-9输入密码后利用确认键进行开锁,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“Your Password...Unlock Ok”,单片机其中P2.0引角会输出低电平,使三极管T2导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“Your Password...ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的判断出锁所处的状态。 第5章 安装调试说明 对于智能密码锁的设计,我们可以使用proteus软件来仿真。 1.开锁。点击仿真按钮,启动后单片机进行初始化,输入6位预制的密码后,按下确认键就开锁了。开锁后发光二极管同时亮了。 图5-1 输入电路图 图5-2 开锁电路图 图5-3 密码正确 2.密码错误。当密码错误时显示Error. 图5-4 密码错误 3.修改密码。当开锁后成功后按下输入新密码键时屏幕显示New Password然后输入新密码,然后按下保存新密码。保存成功后会显示Your Password... Password Saved再关闭仿真重新仿真密码就修改成功了。 图5-5 输入新密码 图5-6 密码修改成功 4.重新输入功能。当密码出错误输时按下重新输入就可以复位到初始化时候进行重新输入密码。 图5-7 重新输入密码 5.返回功能。当你想退出修改密码或者关锁时按一下返回就直接回到开始复位状态,不必要关掉仿真开关。 设计总结 两周的课程设计差不多结束了,开始怀着一颗好奇的心接到了老师布置的课题,开始觉得挺难的,没有接触到过这些东西,不过兴趣还是比较大,老师一发课题就回宿舍网上找资料了。 幸好网上资料比较丰富,找的不是很清楚,找了好几个版本清楚了是怎么运作的,了解了设计思路。看完之后就着急动手了,开始对着下载的模板自己尝试弄了下,开始觉得挺顺利的,但是后来编译C语言时却老是出现警告,并且无论我怎么改都不出错误,编译通不过,那两天算是苦思冥想想不清,我还一直怀疑是网上的错了,终于在第三天突然就想出来了,原来我在编译时没有添加源组,当时是又兴奋又郁闷,兴奋知道哪里错了,郁闷的是错在这么小的问题上,再一次证明了细节决定成败。 系统充分利用了51单片机系统,主要通过软件程序来控制硬件电路实现一些基本的电子密码锁的功能,具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,增强了系统的可靠性和安全性。 回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,在老师和同学的帮助下,终于游逆而解。非常感谢老师和同学们! 参考文献 [1]、《微型计算机原理及应用》许立梓编 机械工业出版社 2002 [2]、《微型计算机接口技术及应用》刘乐善编 华中理工大学出版社 2000 [3]、《计算机硬件技术基础试验教程》邹逢兴编 高等教育出版社 2000 [4]、《16位微型计算机原理接口及其应用》周佩玲编 中国科学技术大学出版社 2000 [5]、《微型计算机原理与接口技术》吴秀清编 中国科学技术出版社 2001 [6]、《微型计算机接口技术》邓亚平编 清华大学出版社 2001 [7]、《单片机原理及及应用》王迎旭编 机械工业出版社 2001 [8]、《单片机应用程序设计技术》 周航慈 著 北京航空航天大学出版社 2002 [9]、《单片机实用技术问答》 谢宜仁 主编 人民邮电出版社 2002 附录1 硬件原理图 附录2 主程序清单 void main() { uchar i = 0; uchar IIC_Password[10]; uchar IS_Valid_User = 0; P0 = 0xFF; P1 = 0xFF; P2 = 0xFF; TMOD = 0x02; //T0设置为8位自动重装模式 TH0 = 175; TL0 = 175; TR0 = 1; //启动T0 DelayMS(10); LCD_Init(); //初始化LCD IIC_24C04_Init(); //初始化24C04 Display_String(Title_Text,0x00); //在第1行显示标题 //24C04的内容已由初始化BIN文件导入 //将24C04中预先写入的密码读入pass RecString(0xa0, 0 , IIC_Password, 6); IIC_Password[6] = '\0'; while(1) { P1 = 0xF0; if(P1 != 0xF0) KeyNo = Keys_Scan(); //扫描键盘获取键序号KeyNo switch ( KeyNo ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if ( i<= 5 ) //密码限制在6位以内 { //如果i为0则执行一次清屏 if (i ==0) Display_String(" ",0x40); UserPassword[i] = KeyNo + '0'; UserPassword[i+1] = '\0'; DSY_BUFFER[i] = '*'; DSY_BUFFER[i+1] = '\0'; Display_String(DSY_BUFFER,0x40); i++; } break; case 10: //按A键开锁 if (strcmp(UserPassword,IIC_Password) == 0) { LED_OPEN = 0; //点亮LED Clear_Password(); Display_String("Unlock OK! ",0x40); IS_Valid_User = 1; } else { LED_OPEN =1; //关闭LED Clear_Password(); Display_String("ERROR ! ",0x40); IS_Valid_User = 0; } i = 0; break; case 11: //按B键上锁 LED_OPEN =1; Clear_Password(); Display_String(Title_Text,0x00); Display_String(" ",0x40); i = 0; IS_Valid_User = 0; break; case 12: //按C键设置新密码 //如果是合法用户则提示输入新密码 if ( !IS_Valid_User ) Display_String("No rights !",0x40); else { i = 0; Display_String("New Password: ",0x00); Display_String(" ",0x40); } break; case 13: //按D键保存新密码 if ( !IS_Valid_User ) Display_String("No rights !",0x40); else { SendString(0xa0, 0 , UserPassword, 6); //重新读入刚写的密码 RecString(0xa0, 0 , IIC_Password, 6); IIC_Password[6] = '\0'; i = 0; Display_String(Title_Text,0x00); Display_String("Password Saved! ",0x40); } break; case 14: //按E键消除所有输入 i = 0; Clear_Password(); Display_String(" ",0x40); } Beep(); DelayMS(100); P1= 0xF0; while (P1 != 0xF0); //如果有键未释放则等待 while (P1 == 0xF0); //如果没有再次按下按键则等待 } } � EMBED PBrush ��� 89S51 单片机 矩阵 键盘 控制 键盘发音电路 修改密码电路 AT24C02掉电存储 开锁控制电路 指示电路 串口显示电路 开始 初始化 密码正确 输入旧密码 显示错误 确认开锁 原密码相同 设新密码 返回 输入密码 修改 手 动 复 位 PAGE 18 _1234567890.vsd � � � ����� ������� ����������� ����������������������� ������������P.��������� ������P.��������� N� Y�
/
本文档为【我的密码锁】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索