当前位置:文档之家› 密码锁-单片机课程设计

密码锁-单片机课程设计

1 绪论随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性和方便性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点随着人们对安全的重视和科技的发展,对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

具有报警功能的电子密码锁保密性高,使用灵活性好,安全系数高,密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有推广价值。

电子密码锁采取电子电路控制,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务。

本次设计使用AT89S52单片机构成最小系统,接以键盘,报警系统,液晶显示构成人性化的方便易用的电子密码锁。

2 设计任务、功能要求说明及总体方案介绍2.1 设计目的与任务本设计采用AT89S52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD 1602A等部分组成。

其中矩阵键盘用于输入数字密码和进行各种功能的实现。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,组成的电子密码锁系统。

2.2 设计内容及要求(1)课程设计中,锁体用LED代替(如“绿灯亮”表示开锁,“红灯亮”表示闭锁)。

(2)其密码为方8位十进制代码(代码自设定)。

(3)开锁指令为串行输入码,当开锁密码与存储密码一致时,锁被打开。

当开锁密码与存储密码不一致时,电路则报警并实现自锁。

(报警动作为响1分钟,停10秒)(4)选择电路方案,完成对确定方案电路的设计。

计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。

安装调试设计电路,查阅至少5篇参考文献。

按《湖南工学院课程设计工作规范》要求撰写设计报告书。

全文用A4纸打印,图纸应符合绘图规范。

2.3 设计总体方案及工作原理说明采用以单片机AT89S52为核心的控制方案,总体框图见图1。

单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用。

一般来说在选择单片机时下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。

在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。

基于以上因素本设计选用单片机AT89S52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O 端口,以及控制的准确性,实现基本的密码锁功能。

在单片机的外围电路外接加以3×4矩阵键盘、LED、蜂鸣器等。

矩阵键盘分别为0、1、2、3、4、5、6、7、8、9、重新输入、确认输入。

系统开始显示“INPUT PASSWORD:”,提示输入密码;当密码输入完毕按下Enter键时,若输入密码与设定的密码相同,即密码正确,液晶屏显示为“Mission Success!”提示锁打开,同时LED绿灯亮;若密码不正确,LED显示电路显示提示“Forgot Password?”,LED红灯亮,发出警报声同时锁定键盘,不能进行任何操作。

投在输入过程中发现输入错误的数字,可通过重新输入AC键清除所有数字。

图1 系统设计框图如图1所示,系统主要由电源(由三角电源口、六角开关、红色LED灯、电阻组成),3×4键盘(键盘分别为0、1、2、3、4、5、6、7、8、9、重新输入、确认输入),复位电路,LED灯(密码输入错误时亮红灯,密码输入正确时亮绿灯),蜂鸣器(输入密码时,输入一位响一次,密码输入错误时有报警功能),以及液晶显示电路(显示功能)组成。

3 系统硬件设计3.1 硬件系统各模块功能简要介绍3.1.1 复位以及振荡电路如图2所示,即为AT89S52复位和振荡电路结构。

图2 系统的复位电路时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位。

本设计晶振选择频率为12MHZ,电容选择33pF。

经计算得单片机工作胡机器周期为:12×(1÷12M)=1us。

3.1.2 3×4矩阵键盘如图3所示,本系统采用3×4矩阵键盘,12个按键分为输入数字键:0、1、2、3、4、5、6、7、8、9;功能键:确认输入Enter、重新输入AC。

键盘与单片机相连接,其连接方式为前三行分别P1.0—1.3连接;后四行分别与PP1.5—1.8连接分别控制;图3 系统的键盘电路3.1.3 报警蜂鸣器报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P35引脚为低电平,三极管T3导通轰鸣器发出噪鸣声报警其电路如图4所示:图4 系统的报警电路3.1.4 液晶显示电路为了使该电子锁能人性化的显示输入密码的状态以及密码输入正确与否,添加了液晶显示放弃了数码管显示。

本次设计使用的是LCD 1602A液晶显示器,采用标准的16脚接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个1K的电阻调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光电源正极第16脚:背光电源负极LCD 1602A自带英文字库,各引脚分别接入P2.0口,其接入电路如图5所示:图5 系统的液晶显示电路3.2 电路原理图、PCB图、元器件布局图设计电路原理图、PCB图、元器件布局图分别见附录A、附录B、附录C。

3.3 硬件实物图实物图见附录D。

3.4 元器件清单元器件清单见附录E。

4 软件系统的设计4.1 软件设计所用到的单片机资源情况P0口作为显示输出,P2口作为键盘输入,用到外部中断0即P3.2脚,P1.2脚和P1.3脚分别与开锁电路与报警电路相连,P1.5、P1.6、P1.7分别于液晶显示器的E、RW、RS脚相连。

4.2 软件系统的模块功能如图6所示为系统的主程序流程图,图7所示为开锁流程图。

图6 主程序流程图主程序清单:void main() /*主程序*/{uint i; /*预置初始化*/P30=1;/*开启数据/命令*/P31=0; /*禁止读写*/P35=0; /*关闭报警*/P36=0; /*关闭开锁*/write_com(0X38); /*设置数据总线为8位,分2行显示*/ del(5);write_com(0X01); /*显示器清零,光标归位*/del(5);write_com(0X0f); /*打开显示功能*/del(5);write_com(0X06); /*每写入一个数据光标右移*/del(5);write_com(0X80+0X00); /*写入字符码,使显示器显示相应字符*/del(5);for(i=0;i<15;i++){write_dat(table[i]); /*显示器输出内容*/del(10);}write_com(0Xc0);del(5);while(1){if(ky_press()) /*如果有键按下*/{ky_scan(); /*键盘扫描*/}}}uchar ky_press() /*检查是否有按键按下*/{ P1=0Xf0; /*按键口初始化*/if((P1&0xf0)!=0xf0) /* 若有键按下*/del(1); /* 延时去抖动*/if((P1&0xf0)!=0Xf0){return 1; } /* 有键按下,返回值为1*/ else{return 0;} /* 无键按下,返回值为0*/}void ky_scan() /*确认所按按键的具体位置*/ { uchar ky,i=0X7F,j;del(10);if(ky_press()); /* 如果有键按下*/{do{i=(i<<1)|(i>>7); /* 行列扫描*/P1=i; /* 输出扫描码*/ky=P1;j=ky&0XF0;}while(j==0XF0); /*有键按下*/图7 开锁流程图开锁程序清单:void jiaodui(){ uchar i=0,j=0;while(password[i]==new[i]) /*密码比较*/{ i++; /*i自加1*/if(i==8) break;}if(i==8) /*如果密码全部正确*/{ P36=1; /*开锁*/write_com(0X80+0X40); /*写入字符码,显示器显示相应字符*/del(5); /*调用延时程序*/for(i=0;i<17;i++){write_dat(table2[i]); /*显示器显示Mission Success! */ del(20);}}else if(i<8) /*密码错误*/{ P35=1; /*报警*/write_com(0X80+0X40); /*写入字符码,显示器显示相应字符*/del(5);for(i=0;i<17;i++){write_dat(table3[i]); /*显示密码错误*/del(20);}while(1);}else if(j!=3){ k=0;write_com(0X80+0X40); /*锁定键盘*/}}4.3 软件系统程序清单软件系统程序清单见附录F。

5 设计结论、仿真结果、误差分析、教学建议5.1 设计结论及使用说明本程序从经济实用的角度出发,采用美国Atmel公司的单片机AT89S52作为主控芯片,结合外围的键盘输入、显示、报警、开锁等电路并用C语言编写主控芯片的控制程序,研制了一款可以多用户使用可多次更改密码具有报警功能的电子密码锁。

相关主题