版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2015 2016学年 第 1 学期单片机原理课程设计课 程 设 计 报 告题 目: 密码锁 专 业: 通信工程 班 级: 通信 姓 名: 王 指导教师: 王 陶 电气工程学院2015 年 12月19日单片机原理及应用任务书课题名称密码锁指导教师(职称)王银花(讲师)、陶沙(硕士) 执行时间20152016学年第1学期 第15周学生姓名学号承担任务胡月明1309131045系统方案设计、程序编写、报告书写刘鹏鹏1309131012报告排版刘 旺1309131013硬件设计(单片机部分)王振兴1309131023硬件电路设计王冬冬1309131020硬件电路设计吴 凡1309131024最后核对
2、检查设计目的通过软硬件的设计,在单片机上编程,采用4*4键盘实现密码的输入功能,从而达到密码锁的相关功能;同时也是让我们学会将书本上的知识运用来分析和解决一些小的问题。设计要求在STC89C51单片机上编程,采用4*4键盘实现4位密码的输入功能,当密码输入正确之后,锁就打开(指示灯亮),如果输入的三次的密码不正确,就锁定按键3秒钟,同时发出报警声。摘 要 在科技不断发展的今天,电子密码防盗锁作为作为防盗卫士的作用也日趋重要。针对平常锁具给人们带来的不便,若使用机械式钥匙开锁,则结构简单,安全性不好,容易被盗。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生,电子密码锁的保
3、密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零,密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降,误码输入保护,当输入密码多次错误时,报警系统自动启动,无活动零件,不会磨损,寿命长,使用灵活性好,不像机械锁必须佩带钥匙才能开锁,同时电子密码锁操作简单易行,一学即会。它的出现给人们的生活带来了很大的方便。本系统由单片机系统、矩阵键盘、LED显示和报警系统等组成。系统能完成开锁、超次锁定和报警、修改用户密码等基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。 本
4、次课程设计采用的是以STC89C51为核心的单片机控制方案。关键词:STC89C51;电子密码锁 目录第1章 系统总体设计11.1系统总体设计原理11.2设计方案1第2章 程序流程介绍22.1主程序流程22.2显示模块流程图3 2.3 开锁和报警模块流程图 3第3章 硬件电路设计43.1主控芯片STC89C51单片机介绍43.2晶振电路 4 3.3矩阵键盘5 3.4显示电路6 3.5开锁电路6 3.6报警电路6第4章 软件程序设计7第5章 系统调试及仿真75.1软件调试 7 5.2仿真结果8结论9参考文献11附 录12第一章 系统总体设计1.1
5、 系统总体设计原理 本设计主要由单片机、矩阵键盘和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。系统总设计原理图如图1-1所示。图1-1 系统总设计原理图1.2 设计方案 设计本课题时构思了两种方案:一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求;另一种是以STC89C51单片机为主体,其性能、存储器、运行速度、计数器
6、、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性都相当强,同时单片机可以灵活的编程设计,控制非常准确可以实现基本的密码锁的功能。在单片机外围电路接入键盘用于密码的输入和一些功能的控制,当用户需要开锁时,先按键盘解锁键,进入界面,输入密码,按下确认键,如果密码输入正确则开锁,不正确则重新输入密码,错误超过三次就自动锁定,并发出报警声。综合考虑符合此次课题要求的是第二种,所以我们选择第二种方案。第2章 程序流程介绍2.1 主程序流程 主程序主要内容是各程序模块的调用,并利用各模块进行电子密码锁功能的实现,即是键盘输入密码并在LCD1602液晶显示屏显示密码,当密码输入完成后,单
7、片机会将输入进的密码与原单片机内部所储存的密码进行对比,如若密码正确,则代表电磁吸合器的发光二极管会发光,同时LCD1602液晶显示屏会显示出正确的密码;如若密码错误,会启动计数器计数,当错误次数超过三次时,报警系统会启动即是蜂鸣器会发出报警声,以提醒保安。流程图如图5-1所示。图2-1 主程序流程2.2 显示模块流程图 LCD显示模块的软件设计主要包含开始、初始化LCD、清除LCD、写LCD四个过程。其中写包含写数据和写字符。图2-2 显示模块流程图2.3 开锁和报警模块流程图开锁和报警模块主要任务是把从键盘输入到单片机的密码和本身保存在单片机中的密码进行对比,如果正确就开锁,如果错误的话就
8、进行计数并显示在LCD液晶显示屏上,当输入密码的错误次数达到3次就进入报警模式,启动蜂鸣器报警。其流程图如图5-5所示。开始N清除显示比较第一位YYY6位比较完?清零正确开锁N比较下一位3次则报警记录错误次数N 图2-3 报警流程图第3章 硬件电路设计3.1 主控芯片STC89C51单片机介绍 STC89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。STC89C51是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只
9、读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C51是一种高效微控制器,STC89C51是它的一种精简版本。STC89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示图3-1 STC89C51芯片图3.2 晶振电路STC89C51引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按下图所示方式连接。晶振、电容C2C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及
10、电容C1、C2的容量有关,但主要由晶振频率决定,范围在033MHz之间,电容C2、C3取值范围在30pF左右。根据实际情况,本设计中采用11.0592MHZ做系统的外部晶振。电容取值为33pF。 图3-2 晶振电路3.3 矩阵键盘由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置 。其大体功能(看键盘按键上的标记)
11、及与单片机引脚接法。图3-3 矩阵键盘3.4 显示电路 LCD1602液晶显示屏显示。图3-4 显示电路3.5 开锁电路 通过单片机开锁执行机构,发光二极管D1发光以替代达到开锁的目的。图3-5 开锁电路3.6 报警电路 报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P3.3引脚为低电平,三极管T3导喇叭发出噪鸣声报警。图3-6 报警电路第4章 软件程序设计 电子密码锁的软件设计是整个电子密码锁可靠安全运行的关键,密码锁软件程序分为主程序、延时程序、LCD1602液晶显示屏显示程序、修改
12、密码程序、扫描键盘输入程序、报警程序。密码通过矩阵键盘输入,并且在LCD1602液晶显示屏上显示,如果输入密码正确,则可以直接开锁。如果不正确,并且3次以上输入不正确,则启动报警系统,触发蜂鸣器发声。如果要修改密码,则需要在输入基础密码判别正确后,输入修改后的密码,通过系统确认后方可修改密码。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。而本次设计分为四大模块,分别是键盘输入模块、LCD1602液晶显示屏显示模块、开锁和报警模块以及修改密码模块,通过主程序来实现控制。第五章 系统调试及仿真5.1 软件调试 软件调试即是把已经写好的C语言程序载入到软件调
13、试工具,检查软件是否有设法错误,再根据软件提示对本程序进行修改,直到没有错误再生成单片机能运行的机器码,再用51开发板或其它单片机写入工具把机器码写入单片机进行实际的程序调试,根据实际情况再对程序的不足加以修改,直到满足设计要求。本设计采用Proteus和KEIL软件进行仿真、调试,首先在在Proteus软件上进行硬件电路的描绘,其次在KEIL软件编写电子密码锁的源程序,源程序经过汇编后产生Hex文件,最后将生成的目标文件添加到单片机中仿真调试。首先打开KEIL C51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成51单片机可执行的HEX文件。然后用
14、与51开发板相匹配的写入软件把HEX文件写入单片机。 图5-1a) KEIL c51调试介面 图5-1b) 程序写入界面5.2 仿真结果 图5.2是设计总图。图5-2a) 设计总图图5-2b) 输入密码正确时仿真图结 论通过这次课程设计,我们可以掌握并利用单片机的软件编程技术,能够选择合适的算法,运用所学的电路知识完成基本的电路设计,利用PROTEUS软件绘制电路图,并制作实际的模型电子锁的基本功能,完成整套电子密码锁的设计,从而达到并熟悉一个产品完整的开发流程和具体内容,增强实践应用能力。 考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案以STC89C51为
15、核心的单片机控制方案。 学习上,使自已在大学所以的知识在这次得到实践,学到一些书本上无法学到的经验,对电子元件有了进一步的认识。以后需要多实践,学习编写自己的程序,因为这次程序由于刚接触到这门课,学习不是特别精通,自己用汇编语言写程序,难免有些困难。所以参考了一些程序进行仿真的。 参 考 文 献1 李朝青.单片机原理及接口技术(简明修订版)M.北京:北京航空航天大学出版社,19982 李全利.单片机原理及接口技术M.高等教育出版社,2003 3 皮大能,党楠,齐家敏等单片机原理及应用M.西北工业大学出版社,20154 杨将新,李华军,刘到骏等.
16、单片机程序设计及应用(从基础到实践)J电子工业出版社,2006 5 周立功.LPC900系列Flash单片机应用技术J.北京航空航天大学出版社, 2004附录:#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar old1,old2,old3,old4,old5,old6; unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7
17、9,0x71,0x00,0x40;void delay(unsigned char i) uchar j,k; for(j=i;j>0;j-) for(k=125;k>0;k-);void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) dula=0; P0=tablea; dula=1;dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=tableb; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=
18、tablec; dula=1;dula=0; P0=0xfb; wela=1;wela=0;delay(5); P0=tabled; dula=1;dula=0; P0=0xf7; wela=1;wela=0;delay(5); P0=tablee; dula=1;dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=tablef; dula=1;dula=0; P0=0xdf; wela=1;wela=0;delay(5);void keyscan() P3=0xfe;temp=P3; temp=temp&0xf0; if(temp!=0xf0)
19、 delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; wei+; break; case 0xde: key=1; wei+; break; case 0xbe: key=2; wei+; break; case 0x7e: key=3; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10);
20、if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=4; wei+; break; case 0xdd: key=5; wei+; break; case 0xbd: key=6; wei+; break; case 0x7d: key=7; wei+; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf
21、0) temp=P3; switch(temp) case 0xeb: key=8; wei+; break; case 0xdb: key=9; wei+; break; case 0xbb: genggai=1; wei=0; break; case 0x7b: if(allow) ok=1; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=1; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: break; retry=1; break case 0xd7: close=1; Break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; beep=0; beep=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论