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

智能密码锁单片机课程设计

工程学院课程设计课程名称单片机技术与应用课题名称智能电子密码锁专业自动化班级学号姓名指导教师晓秀、王迎旭2013年12月09日工程学院课程设计任务书课程名称单片机原理及应用课题智能密码锁设计专业班级自动化1191学生学号指导老师审批任务书下达日期2013年12月2日任务完成日期2013年12月15日目录第1章概述 (1)1.1 课题设计要求 (1)1.1.1 设计容: (1)1.1.2 设计要求: (1)1.2 课题设计目的及意义 (1)第2章系统总体设计方案与说明 (2)2.1 系统硬件设计框图 (2)2.2 系统硬件工作原理 (2)第3章硬件电路设计 (4)3.1 I/O端口分配表 (4)3.2 时钟电路设计 (4)3.4 显示电路设计 (5)3.6 报警电路设计 (6)第4章应用软件设计 (7)4.1 主程序流程图 (8)4.2 子程序流程框图 (9)4.2.1 判断密码子程序流程图 (9)4.2.2 上锁子程序流程图 (9)4.2.3 修改密码子程序流程图 (10)4.2.5 报警子程序流程图 (11)第5章系统仿真 (12)5.1 系统仿真 (12)第6章硬件调试与结果分析 (13)6.1 硬件调试 (13)6.2 系统性能与操作说明 (14)6.3 系统结果分析 (15)第7章系统设计总结 (16)致谢 (16)附录A 系统硬件电路原理图 (17)附录B 程序清单 (19)电气与信息工程系课程设计评分表 (35)第1章概述1.1课题设计要求1.1.1 设计容:本课题是要发设计一种基于单片机控制的智能电子密码锁,主要功能有:按用户使用要求可设置、修改密码,遥控或按键开锁,错误报警、显示等辅助功能。

①密码可设4~8位,并可在线修改并存储;②密码输错3次应有报警信号提示,并有特殊密码解除;③出开锁时外的时候,要求显示的是时间;④信号可以通过继电器输出。

1.1.2设计要求:⑴根据课题要求,确定智能电子密码锁的硬件;⑵进行系统的硬件设计;⑶完成必要的参数计算与元器件选择;⑷完成应用程序设计;⑸进行单元电路及应用程序的调试;1.2 课题设计目的及意义学会灵活运用单片机,包括编程、下载和运行等,学会使用keil和protues编程和仿真。

通过本次课题设计真正的掌握单片机的设计和运用技术。

学会IIC虚拟总线、矩阵键盘、LCD1602的编程方法及使用第2章系统总体设计方案与说明2.1 系统硬件设计框图根据本系统设计的要求,以STC89C52RC单片机为核心设计了LCD1602显示电路,按键电路,AT24C02的IIC虚拟总线电路,蜂鸣器报警电路,指示灯显示电路,继电器模拟开锁电路。

同时也包括了单片机的最小系统(复位电路、晶振电路、电源电路)。

图2.1 系统结构图2.2系统硬件工作原理系统由单片机最小系统、1602液晶显示电路、矩阵键盘按键、LED显示电路和蜂鸣器报警电路等组成本电路是由STC89C52RC单片机为控制核心,具有与8051系列单片机完全兼容的效果。

51单片机为CPU,进行对外围电路的控制,当有密码输入时,检测所输入的密码是否正确,如果正确则CPU发送信号给显示电路,显示解锁信息,同时继电器打开,指示灯亮,表示解锁。

如果密码错误,1602提示错误,如果输入三次密码错误,则报警,同时锁住键盘。

只有通过PC机才能解除警报。

在解锁状态下,可以查看用户信息。

当上锁时,显示时间,每次显示的时间都存入24C02,以便下次上锁继续从此时间显示,在这期间是不能输入密码的。

当输入密码的时候想取消上次操作,可以按下取消键撤销。

如果忘记密码,可以通过PC机初始化密码。

第3章硬件电路设计3.1 I/O端口分配表对于本系统设计的需求和图2.1的系统结构图,其端口分配如表3-1所示。

表3-1 I/O端口分配表P0.0~P0.71602 D0~D7P3.5 24C02 SDAP2.0~P2.7矩阵键盘P3.6 1602 E P3.2 1602 RS P3.7 蜂鸣器P3.3 1602 RW P1.7 LED和继电器P3.4 24C02 SCK RXD、TXD PC串口线3.2 时钟电路设计时钟电路是采用部时钟电路,晶体频率是采用12MHZ的石英晶体,两个30pf的陶瓷电容谐振,机器周期为1us。

分别接在单片机的18和19管脚,电路图如图3.2所示。

图3.2 时钟电路3.3复位电路设计该系统设计是采用的按键上电复位电路,其中电阻是采用10K,22uF 的电解电容,还有一个按键产生按键复位接在单片机机的第9管脚。

其电路图如图3.3所示。

图3.3按键上电复位电路3.4 显示电路设计本系统设计所用的是背光的液晶1602,其作用是显示用户的当前操作。

LCD1602是一个16列×2行的显示屏。

其中数据管脚D0~D7接单片机的P0~P3管脚,寄存器选择管脚RS接单片机的P3.2管脚, 读写管脚R/W接P3.3,使能管脚E接P3.6。

电源正极VDD和背光正极A接VCC,电源负极VSS和背光负极K接GND,对比度管脚VEE接一个电位器来调节对比度。

其电路图如图3.4所示(由于仿真图的原因图中的电源管脚、电位器、背光正负极为画出)图3.4 LCD1602液晶显示电路3.5 按键电路设计根据本系统设计的结构图,需要用到16个键,作用和功能分别为10个数字键、修改密码、查看用户信息、解锁、上锁、确定、撤销。

为了节省单片机的I/O口,采用4×4的矩阵键盘方式,即键盘组合方式是4行4列。

其中行由上到下依次接P2.0~P2.3,列由左到右依次接P2.4~P2.7。

其功能和作用如图3.5所示。

图3.5 矩阵键盘按键电路3.6 报警电路设计当密码输错三次时,系统要求产生一个报警信号,用一个蜂鸣器来实现这一功能。

由P3.7引出接NPN三极管来控制三极管的导通与截止,三极管的发射极接100Ω的电阻。

其电路图如图3.6所示。

图3.6 蜂鸣器报警电路3.7模拟开锁电路和指示灯电路设计根据本系统设计要求要以一个继电器模拟开锁开关,当开锁的时候就可以产生一个开锁的信号,由P1.7引出接继电器,同时接一个指示灯的阴极来表示已开锁。

其电路图如图3.7所示。

图3.7继电器模拟开关电路第4章应用软件设计根据本系统设计需要实现的功能,采用了模块化编程。

因此设计了主程序,还有若干子程序。

其中主程序负责扫描键盘,负责对键盘的输入的命令进入子程序进行处理。

所有的子程序包括判断密码子程序,上锁子程序,修改密码子程序,查看用户信息和报警子程序。

图4 软件设计总流程图判断密码子程序的算法:将原密码读出存在一个数组b中,也将其长度存在一个变量longth中,将输入的密码也存在一个数组a中。

当按下确定键,两个数组比较是否相等。

上锁子程序算法:启用定时器中断,定时一秒变量sec加一,然后判断秒是否到60,再判断分是否到60,之后就分秒时都存入24C02的地址20,21,22当中。

修改密码子程序算法:沿用判断子程序的算法,同时用变量step来记录执行到第几步。

查看用户信息算法:不停的显示几个用户信息。

报警子程序算法:错误三次将蜂鸣器接通,之后一直扫描是否接收到PC机解除警报的信号。

4.1主程序流程图用户输入密码,输入正确则开锁,错三次报警,接收到初始化信号则密码初始化为1234,判断是否按下了查看用户信息键,在密码输入正确的情况下观看用户信息。

图如下:图4.1 主程序流程图4.2 子程序流程框图4.2.1 判断密码子程序流程图图4.2.1判断密码子程序流程图4.2.2上锁子程序流程图图4.2.2上锁子程序流程图图4.2.3 修改密码子程序流程图4.2.4 查看用户信息子程序流程图图4.2.4 查看用户子程序流程图4.2.5报警子程序流程图图4.2.5 报警子程序流程图第5章系统仿真5.1系统仿真通过keil将源程序编译成16进制 HEX文件,再加入到C51单片机中。

如下图所示。

图5.1.1 未运行时的仿真图通过点击运行按钮之后,仿真图开始运行。

图5.1.2 运行之后的仿真图第6章硬件调试与结果分析6.1硬件调试将keil编译生成的HEX16进制文件下载到单片机中,实物图如下图6.1.1 正在输入密码图6.1.3查看用户信息图6.1.4 修改密码输入旧密码界面图6.1.5 修改密码输入新密码界面图6.1.6 修改密码成功界面图6.1.7 电脑初始化密码界面图6.1.8 电脑解除警报界面6.2 系统性能与操作说明该密码锁的密码长度随用户自己设定(12位以),中间输错数字时可以撤销上次操作。

在密码正确的情况下可以查看用户信息,在密码错误三次的情况下,蜂鸣器会报警,需要在电脑用正确的用户名才能解除警报。

当忘记密码时,可以通过电脑用正确的用户名把密码初始化。

软件程序中在设定密码的尾部加了个字符‘a’,作为一个简单的加密工作。

电源一接通,LCD1602液晶显示屏显示“Input Password”用矩阵键盘扫描的方式进行查询按键,当按下的“确定”键,密码与所设定的密码相符合时,LCD1602显示“Unlock”,同时继电器模拟接通,指示灯也亮表示解锁。

解锁状态按下“查看用户信息键”的时候,可以循环查看用户信息。

此时按下“解锁”键可以进入主界面,即输入密码的界面。

按下了“修改密码”键,LCD1602显示“Old Password”,即输入旧密码,密码正确是才开始修改密码,LCD1602显示“New Password”, 两次输入一样则设置成功,LCD1602显示“Set Success”和你所设定的新密码,下次要输入的密码则需要新密码才能解锁。

如果两次新密码设置不一样则表示设置不成功,LCD1602显示“Set fail”。

如果输入旧密码错误则显示“Error”,锁定键盘三秒后进入主界面。

按下了“上锁”键,则LCD1602显示时间(由于缺少DS1302等时钟芯片,所以用总共上锁了多少时间来模拟显示时间)。

在输入密码的过程中想取消上次所输入的一个数字时,按下“撤销”键,可以取消上次所输入的数字。

如果输出三次密码则蜂鸣器报警。

6.3 系统结果分析在实物的调试过程中,解除警报这个操作是我调试用的最长时间,刚开始每次解除警报之后,下次输入密码反应很慢,而且错三次之后不能准确报警,但是复位之后才能再次正确运行。

因此我就想到了用软件复位,通过定义ISP_CONTR的SWRET位置1,使单片机复位,完美解决以上问题。

在所有程序测试完成之后,以前还行,目前没有发现问题。

第7章系统设计总结本系统可以随意修改密码(12位数字以的数字),查看用户信息,上锁显示时间,可以撤销很多上次输入。

通过PC机才可以解除警报,当忘记密码时,可以用PC机初始化密码。

相关主题