




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题 目 基于单片机的电子密码锁设计 一、设计的目的1. 了解单片机开发系统的组成及结构; 2. 掌握I/O口的操作方法; 3. 能够熟练使用protues和keil软件进行连线和编程,并熟练掌握仿真方法; 4. 掌握数码管的显示原理; 5. 掌握C语言编程方法; 6. 培养查找错误和改正错误的能力。 二、设计的内容及要求本设计采用单片机为主控芯片,结合外围电路组成电子密码控制系统。设计主要功能有:1. 设置6位密码,密码通过键盘输入,若密码正确,则锁打开,代表锁的二极 管亮。 2. 初始密码由单片机内部决定,在开锁后20S内用户可对密码进行修改。 3. 重设密码时显示数字。 4. 密码只能输入6位数字,超过6位的输入无效。 5. 具有自动报警功能:当密码输入错误三次,报警,蜂鸣器响10S。 6. LED数码管显示输入密码,为确保安全性所有密码均用“”表示。 基于单片机的电子密码锁设计摘要电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。大大提高了主人物资的安全性,安全可以代替老式机械锁。目前使用的密码锁种类繁多,各具特色。本文从经济实用的角度出发,采用AT89C2051单机,研制了一款具有防盗自动报警功能的电子密码锁。结合外围的矩阵键盘输入、数码管显示、开锁、报警等,用C语言编写程序,并用keil软件进行编译设计了一款可以更改密码,具有报警功能的电子密码控制系统。本设计采用矩阵键盘对密码进行输入,具有较高的优势,减少了I/O口的占用数目。密码的显示采用6位数码管实现,为确保安全性统一使用“”显示密码。当重新设置密码时数码管显示数字。采用采用蜂鸣器模拟报警系统,增加了密码锁的安全能力。软件使用C语言编程,运用自上而下的模块化设计思想,使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,设计达到电子密码锁的功能。关键字:密码锁、AT89C51、矩阵键盘、报警一背景随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。二设计目的了解单片机开发系统的组成及结构;掌握I/O口的操作方法;能够熟练使用protues和keil软件进行连线和编程,并熟练掌握仿真方法;掌握数码管的显示原理;掌握C语言编程方法;培养查找错误和改正错误的能力。三 本设计所要实现的目标本次设计使用ATMEL公司的AT89S51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1) 密码通过键盘输入,若密码正确,LED灯亮,则将密码锁打开。(2) 报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3 次,蜂鸣器报警并且锁定键盘。电子密码锁的设计主要由三部分组成:44 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED 提示灯,报警蜂鸣器等。四设计原理和硬件仿真方案4.1矩阵键盘密码的输入用矩阵键盘实现,包括数字键和功能键。具体功能设计如表一:表一 键盘具体功能设计表按键键名功能09键数字键输入密码A键重设密码键设定新密码C键清除键使显示器清零D键确定键比较密码如图一所示,矩阵键盘的每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线即可组成有个按键的键盘。图一 矩阵键盘本次设计需要09十个数字按键、一个清零键、一个确认键和一个重置密码键共13个按键,所以选用4X4的矩阵按键。在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段,还要对按键进行消抖处理。当确认有按键按下后,就要识别是哪一个按键被按下。本次设计使用的是线反转法。给行线置为0x0f,给列线置为0xf0,再将行列进行逻辑或结果为0xff,当有按键按下时相应的按键位行列均为0,行列逻辑或不为0xff,由此可利用行列逻辑或后的值是否为0xff来判断是否有按键按下。再根据扫描结果判断按下键的位置。给相应的按键赋值即可实现数字键和功能键。对功能键进行相应的软件编程即可实现按键功能。使用矩阵键盘能减少键盘和单片机接口所占用的I/O线数目,当按键较多的时候通常采用这种方法。4.2开锁电路在本次设计中用发光二极管代替电磁锁,二极管亮表示锁开,二极管灭表示没有开锁。如图二所示,当输入密码与内置密码相配合时将P3.0置0,二极管亮。否则LED灯不亮。图二 发光二极管电路4.3报警电路报警电路由单片机和蜂鸣器组成,如图三所示,当P3.1为高电平时蜂鸣器发出声音报警。每次输入的密码与正确密码进行比较,如果相同,锁开灯亮。如果输入错误则用一个变量来记录输入错误的次数,当输入密码错误达到三次时,蜂鸣器工作发出报警声音,本次设计使用的是声音间断蜂鸣器声音报警来报警,即声音持续时间20ms后又将P3.1置0时间为20ms,如此循环,即可听到“嘟嘟嘟”的间断响声。设置报警总时间为10S。 图三 4.4数码管显示电路密码显示电路由单片机、电阻排和6位数码管组成。显示电路如图四所示。P0口控制段选,P2口控制位选。为保证密码的保密性,本设计采用“”显示所有输入密码,如图四所示。当重设密码时,为了防止手动错误,数码管显示数字,如图五所示。本设计只允许输入数字密码6位,超过6位以后的数字无效,在C语言程序中以一个while循环实现。数码管显示原理:(1) “”显示原理:在选择位选的情况下,段选仅点亮“g”管即可显示当位为“”;(2) 实现右移逐渐点亮原理: 当输入一个数字时,第五位(从左往右数)赋值给第六位,第四位的值赋给第五位,第三位的值赋给第四位,第二位的值赋给第三位,第一位的值赋给第二位,输入的值赋给第一位,同时点亮第一位数码管。当输入第二个数字时,每一位与输入第一位时相同均向左移一位,将输入的值赋给第一位,同时点亮第一位和第二位数码管。如此每输入一个数字数码管就向右移动了一位,输入的数字赋值给第一位数码管,并相应点亮左边的数码管。 (3) 当按下功能键时,相应的功能键实现相应的功能,而数码管全部回零熄灭。直到再一次输入数字。图四 数码管显示电路图五 重设密码数码管显示数字图六 密码正确显示黄灯五软件程序设计本系统软件设计由主程序、初始化程序、键盘扫描程序、密码输入程序、功能键定义程序、重置密码程序、数码管显示程序、中断延时程序、报警程序、延时程序组成。5.1主程序流程图如图六所示为主程序流程图,开始接上电源,程序进行初始化设置,然后在键盘上输入密码,此系统进行键盘扫描,判断密码是否正确,密码正确开锁,密码不正确统计错误密码次数加1。在开锁情况下进行修改密码,点击确认密码修改成功,否则结束返回。若密码修改成功则再执行之前的操作。图六 主程序流程图5.2键盘扫描程序键盘扫描主要就是对按键进行扫描、消抖并被定位。键盘扫描流程图如图七所示。图七 键盘扫描流程图键盘扫描C语言程序为:void get_key() P1=0xf0; lie=P1;P1=0x0f;hang=P1;addres=hang|lie; / 行列寄存器中的值相或得到按键值while(addres!=0xff) /判断是否有键按下,若adres的值不为0xff则有键按下 delay(5); / 延时消抖P1=0xf0;lie=P1;P1=0x0f;hang=P1;addres=hang|lie;if(addres!=0xff) flag+; switch(addres) / 读取键值 case 0xee:num=1;break; /按键1动作,设num=1case 0xde:num=2;break; /按键2动作,设num=2case 0xbe:num=3;break; /按键3动作,设num=3case 0x7e:num=A;break;/按键A动作,设num=Acase 0xed:num=4;break;/ 按键4动作,设num=4case 0xdd:num=5;break;/ 按键5动作,设num=5case 0xbd:num=6;break; /按键6动作,设num=6case 0x7d:num=B;break; /按键B动作,设num=Bcase 0xeb:num=7;break; /按键7动作,设num=7case 0xdb:num=8;break; /按键8动作,设num=8case 0xbb:num=9;break; /按键9动作,设num=9case 0x7b:num=C;break; /按键C动作,设num=Ccase 0xd7:num=0;break; /按键0动作,设num=0case 0x77:num=D;break; /按键D动作,设num=D 5.3数码管显示子程序数码管显示流程图如图八所示:- 26 -数码管显示程序为:void display(uchar N)/显示 if(N=1) /判断输入密码个数是否为1 temp=0xfe;P0=0x40; /点亮g段使显示为“”P2=temp;delay(1); /延时使左边第一位不停闪烁 P2=0xff; /点亮数码管右边N位 if(N=2) /判断输入密码个数是否为2 temp=0xfe; P0=0x40;P2=temp;delay(1); P2=0xff; temp=_crol_(temp,1); /带循环,使其挨个点亮P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1); if(N=3) /判断输入密码个数是否为3 temp=0xfe; P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1); if(N=4) / 判断输入密码个数是否为4 temp=0xfe; P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1); if(N=5) /判断输入密码个数是否为5 temp=0xfe; P0=0x40;P2=temp;delay(1);P2=0xff;temp=_crol_(temp,1);P0=0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钢结构施工防水与排水方案
- 消防设施消防系统数据同步方案
- 氢能产业园氢能产业市场的供应与需求分析
- 建筑工程项目临时用水与排水系统方案
- 混凝土施工中的原材料质量检测方案
- 施工人员培训方案
- 水电站安全知识培训课件讲座
- 知识点2.2熟悉色彩的体系设计构成设计色彩60课件
- 水电师傅基础知识培训课件
- 二零二五年园艺绿化苗木种植与养护合同样本
- 肾内科常见病诊疗与管理
- 口腔医生岗前培训课件
- 小学一年级升二年级暑假数学作业-58套计算
- 驾考题库及答案大全
- 康复科疾病护理
- 4S店员工职业卫生培训
- 地下通道水泵房管理制度
- 溺水患者急救培训
- 2026版步步高大一轮高考数学复习讲义第十章 §10.1 计数原理与排列组合含答案
- 人力公司营销策划方案
- 医院医疗用房管理制度
评论
0/150
提交评论