单片机课程设计 密码锁.docx
- 文档编号:23580995
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:26
- 大小:305.13KB
单片机课程设计 密码锁.docx
《单片机课程设计 密码锁.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 密码锁.docx(26页珍藏版)》请在冰豆网上搜索。
单片机课程设计密码锁
单片机课程设计说明书
设计题目:
数字密码锁
学生姓名:
专业班级:
学院:
电气工程学院
指导教师:
2012年06月01日
成绩评定表
指导教师评语:
答辩成绩:
(占总成绩70%)
说明书成绩:
(占总成绩30%)
目录
目录3
摘要4
Abstract5
第1章绪论6
1.1了解数字电路系统的定义及组成6
1.2熟悉时钟电路的作用及基本构成6
1.3掌握密码锁的设计构造与调试过程6
第2章方案设计7
2.1方案概述7
2.1.1方案介绍7
2.1.2方案内容与要求8
2.2方案规划8
2.3硬件设计9
2.3.1按键电路设计9
2.3.2指示灯及报警蜂鸣器的电路设计9
2.3.3显示电路设计10
2.3.4复位键的设计11
2.4软件设计11
2.4.1主程序设计11
2.4.2按键识别与编码设计12
2.4.3显示程序设计14
2.4.4密码修改程序设计16
第三章系统调试17
3.1软件模拟调试17
3.2硬件接线17
总结19
参考文献20
附录20
摘要
在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
基于以上思路,本次设计使用ATMEL公司的AT89C51实现-基于单片机的电子密码锁的设计,其主要具有如下功能:
(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
(3)报警、锁定键盘功能。
密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。
电子密码锁的设计主要由三部分组成:
4×3矩阵键盘接口电路、密码锁的控制电路、输出六段显示电路。
另外系统还有LED提示灯,报警蜂鸣器等。
密码锁设计的关键问题是实现密码的输入、清楚、更改、开锁等功能:
(1)密码输入功能:
按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。
(2)密码清除功能:
当按下清除键时,清除前面输入的所有值,并清除所有显示。
(3)密码更改功能:
将输入的值作为新的密码。
主要的设计实施过程:
首先,选用ATMEL公司的单片机AT89C51,以及选购其他电子元器件。
第二步,使用DXP2004设计硬件电路原理图,并设计PCB图完成人工布线(后因PCB板损坏决定采用万能板焊接的方法)。
第三步,使用Keil-uVision3软件编写单片机的汇编语言程序、仿真、软件调试。
第四部,使用PROTEUS软件进行模拟软、硬件调试。
最后,联合软、硬件调试电路板,完成本次毕业设计。
关键词:
4×3矩阵键盘AT89C51密码锁
Abstract
Inourdailylife,thesecurityofhouse,companydepartment,documentsandfinanceforms,alsosomepersonalinformationalwaysusedthelocktoprotectthem.Ifusethenormalkeystolockoutthedoor,weshouldtakenmanykeys.Thatissodifficulttouse.Andifwelostthekeysbecauseofcareless,thesecuritylooksveryeasytobreakout.Withthedevelopmentoftechnologies,peopleaskforhighsecuritymachines.Forsatisfythisrequest,thecipherlockappeared.Thecipherhashighersecurity,lowercost,lowerpowerandeasytouse.Baseonthethinkingofthecipherlock,thisdesignusesAT89C51ofATMELCOMPANYtocarryouttheSCMdigitalcipherlock,itsmainfunctionasfollow:
1.setpasswordwith6words,enterthewordsviakeyboard,ifentertherightnumber,thelockwillunlock.2.Passwordcansetandfixbyyourself,youcanjustfixthepasswordwhenthelockiskeepingunlock.Itneedstoenterthenewpasswordtwicetoavoidthewrongactivity.3.Alarmfunction.Ifenterthewrongpassword,thedigitaltubewillshowtheerrormessage,whenenterthewrongpasswordover3times,thebuzzerwillalarmandlockthekeyboardatthesametime.Thislockismadeby3parts:
gobcircuitof4x4matrixkeyboard,gobcircuitofcipherlock,gobcircuitof8waydisplayoutput.Otherwise,thesystemhasLEDlight,andwarningbuzzer.Themainfunctionofthiscipherlockiscarriedoutenter,clear,andchangethepassword,andunlockthedoor.1.Enterthepassword:
pressonenumberbutton,onesignal"-"willshowonthedigitaltubeontherightside,andputthe"-"toleftsideatthesametime.2.Clearthepassword:
presstheclearbuttontoclearallcodesyouhaveenteredbefore.3.Changethepassword:
usethenewenternumberasthenewpassword.Password,ifyesthelockwillopen,ifnotitkeeplock.Themainprocess:
first,useSCMAT89C51ofATMELCompany.Second,designthetheorychartwithDXP2004,anddesignthePCBboard.Third,compiletheClang.program,resemble,andtestwithsoftwarekeil-uVision3.Fourth,simulatethehardwaretestwithsoftwarePROTEUS.LAST,testthecircuitboardwiththesoftwareandhardware,finish.
Keywords:
matrixkeyboardAT89C51LEDdigitaltube
第1章绪论
1.1了解数字电路系统的定义及组成
数字电路系统一般包括输入电路、控制电路、输出电路、时钟电路和电源等。
输入电路主要作用是将被控信号转换成数字信号,其形式包括各种输入接口电路。
比如数字频率计中,通过输入电路对微弱信号进行放大、整形,得到数字电路可以处理的数字信号。
模拟信号则需要通过模数转换电路转换成数字信号再进行处理。
在设计输入电路时,必须首先了解输入信号的性质,接口的条件,以设计合适的输入接口电路。
1.2熟悉时钟电路的作用及基本构成
时钟电路是数字电路系统中的灵魂,它属于一种控制电路,整个系统都在它的控制下按一定的规律工作。
时钟电路包括主时钟振荡电路及经分频后形成各种时钟脉冲的电路。
设计时钟电路,应根据系统的要求首先确定主时钟的频率,并注意与其他控制信号结合产生系统所需的各种时钟脉冲。
1.3掌握密码锁的设计构造与调试过程
数字密码锁采用了中小规模集成度的单片机制作的功能。
硬件电路中主要芯片80C51外,还有晶振、电阻、电容、发光二极管、键盘等元件。
在充分理解了设计的要求后,准确的定位了设计的目的,然后构思了总体的方案。
在硬件电路的基础上,软件设计按照系统设计功能的要求,运用汇编语言,实现其功能。
最后应用Proteus软件将硬件电路和软件系统链接在一起对各个部分及整体进行仿真并调试构成了整个完整的密码锁设计。
第2章方案设计
2.1方案概述
2.1.1方案介绍
本密码锁系统采用80C51做主控制器,控制密码的输入、判断密码的正确与否。
首先,系统将允许用户输入密码,用存储单元把输入的密码进行动态的保存,当用户输入完后可以按下“*”表示取消,重新输入密码。
当用户输入完后可以按下“#”表示确定,系统将进行密码的确认,如果密码正确,则显示GOOD,并且有红灯亮,如果不正确,红灯亮显示“NO”,用户可以再次进行输入密码,当用户连续三次输入错误时,系统将显示NO,和有报警的声音发出,黄、绿、红灯同时亮,并且把键盘进行锁定,禁止用户进行输入。
扩展功能的实现是在输入了正确的密码之后,如果按“*”键表示放弃对密码的修改。
如果按下“#”键,黄灯亮,就可以对默认密码进行修改,将进入修改密码状态并保存到存储默认密码的单元,按“*”返回再次输入密码。
按“#”键确认,显示“GOOD”,密码修改成功,返回主菜单。
这样修改功能得以实现。
数字密码锁的设计制作,要熟悉单片机键盘接口和显示器接口技术,掌握整体键盘结构下的程序设计思路和步骤。
基于单片机控制的密码锁硬件电路包括三个部分:
4*3矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。
另外系统还有LED提示灯,报警蜂鸣器,时钟电路提供12MHZ的晶振等来实现功其功能:
(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)默认密码为123456,密码可以由用户自己修改设定(支持不超过6位的任意位密码,也可以不设密码),输入密码正确后才能修改密码。
(3)状态指示、报警、锁定键盘功能。
密码输入正确时有GOOD提示信息、密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘,并且相应的有指示灯指明状态。
2.1.2方案内容要求
(1)密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“123456”共6位密码。
(2)密码的输入:
采用数字键盘来完成密码的输入,其中#号按键为确认键。
*号键取消键,其他按键为数字键。
在密码输入完毕并确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
(3)按键禁止功能:
初始化时允许按键输入密码,当有按键按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下。
2.2方案规划
本系统由单片机80C51系统、矩阵键盘、开关、LED显示和报警系统组成。
80C51
单片机
复位按钮
矩阵
键盘
控制
一个蜂鸣器
状态指示灯
LCD六位显示器
系统组成原理图2-1
2.3硬件设计
2.3.1按键电路设计
由于设计要求输入数字密码,所以本设计就采用数字键盘,有0~9共十位数字。
检测方法采用线反转法,先检测行后检测列。
单片机的键盘接口电路图2-2
2.3.2指示灯及报警蜂鸣器的电路设计
指示灯及报警蜂鸣器的电路如图2-3所示,当输入的密码正确时,绿灯亮;当输入的密码错误时,红灯亮;当三次错误输入时,绿灯和蓝灯和红灯同时亮并且报警法名器发出报警。
指示灯及报警蜂鸣器的电路图2-3
2.3.3显示电路设计
将P1与显示的数据端相连,使其它能动态的传输要显示的数据,将p3的第六位与位选通端相连,选通相应的位。
接线如图2-4所示
显示电路图2-4
2.3.4复位键的设计
当密码输入三次错误,则系统锁定键盘输入,按下复位键后,系统重新开始,如此可以防止系统报废,让系统再次循环使用。
其硬件图如图2-5所示。
复位键图2-5
2.4软件设计
2.4.1主程序设计
主程序主要完成初始化、检查有无按键按下、以及调用显示、指示灯、密码修改等等,流程图如图2-6所示。
具体模块包括:
Y
流程图2-6
2.4.2按键识别与编码设计
当没有按键按下的时候,单片机循环等待按键按下,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
每一条水平与垂直线的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对按键的识别通常有两种方法:
一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
对照图2-7所示的4*3键盘,说明扫描法原理。
首先辨别键盘中有无键按下,有则单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
键盘图2-7
比如说扫描码送入00001111,前面的0000是代表列,而后面的1111代表行,是让读取的4行接脚先设高,若此时第一行的第一列按键被按下,那读取的结果就会变成00001110(注意1111变成1110),其中LSB的第一个bit会由1变成0,这是因为这个按键被按下之后,会被垂直的扫描码电位短路接通,而把读取的LSB的bit电位拉到0,如此我们就知道是第一行有按键按下,然后再送入扫描码11110000,同理可以得出是第一列有按键按下,2次半段后就可以知道结果是按键“1”被按下。
2.4.3显示程序设计
显示设计采用动态扫描。
显示程序流程图如图2-8所示
结束
显示程序流程图如图2-8
数码显示板上一共有6个数码管,如果按照传统的数码管驱动方式(静态扫描方式),则需要用段译码器进行驱动,这样既浪费资源,有时电路工作也不可靠。
所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式只需一个译码器就可以实现电路正常、可靠的工作,这样大大节省资源。
动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序进行点亮,当点亮的频率不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。
因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。
而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。
事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,一般均取几个ms左右为宜,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。
如果显示数字,要为LED显示器提供字型代码。
我用的是共阳极的显示器。
LED显示器的字形代码如下表所示:
LED显示器共阴极十六进制数的字型代码
0
1
2
3
4
5
6
7
8
9
C0H
F9H
A4H
B0H
99H
92H
82H
F8H
80H
90H
主要有三个显示程序组成,分别为按键后的输入密码正确的提示程序,密码输入错误后的提示子程序。
询问是否修改密码子程序.
等待密码输入及修改显示状态
输入密码正确的显示状态
输入密码错误的显示状态
输入密码正确后询问是否修改密码状态
图2-9显示状态
2.4.4密码修改程序设计
修改密码的功能,是自己扩展的功能,再输入了正确的密码之后,按下“#”键就可以进行密码的修改了,输入新密码完毕后,再按“#”确认,则密码修改成功,在屏幕上显示GOOD信息,则已经修改成功了。
密码修改子程序流程图2-10所示
Y
修改子程序流程图2-10
第三章系统调试
3.1软件模拟调试
首先,在wave里面写的程序进行编译把提示中的错误改正过来,重新进行编译,终于没有错误提示信息了,接着,进行软件仿真,在proteus里面把硬件原理图画好,把在wave里面写的程序装进80C51,进行仿真。
在把键盘识别和编码的子程序添加进去,如果不能显示,说明是这个子程序存在问题,接下来重点就是键盘编码部分了,判断是否有键按下和具体到底是哪个键被按下。
顺便检查一下编码识别后面的程序是否为死循环,编码之后进行相应的查表。
把一个变量没有归零所以一直在里面循环,把所有类似的错误改过来,发现就能够正确的显示了(按下哪个数字键就相应的显示它的值)。
把显示子程序改为扫描方式,让其动态的显示多位,按键之后使全屏显示相同的数。
如此一来就应该加一个判断是否已经放下键了,切记在每次判断之后把相应的编码用完,立即清零也可以达到如此的效果,按照思路对程序进行相应的修改,
接下来要做的就是,对所输入的密码进行比较,把CHECK子程序添加进去,如果不出现意外的话,屏幕上会有GOOD的提示信息,并且红色的指示灯亮,密码的比较有两个方面,一是对输入密码的个数进行比较,二是对密码的数值依次进行比较,只有全部通过猜是密码正确。
在PROTEUS里面进行仿真。
接着就是如果输入的密码错误次数连续超过三次,则应该显示NO的错误提示信息,前两次只有绿灯亮,三次错误之后,绿灯和蓝灯都亮。
修改密码时用“#”来充当确定键。
3.2硬件接线
Proteus硬件仿真图
PCB版图
总结
通过本次课程设计,我学到了许多书本上无法学到的知识,也深刻体会到单片机技术应用领域的广泛。
不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
本设计涉及到《单片机原理及应用》、《模拟电子技术》等学科。
让我对专业知识有了更深的理解。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
LCD的驱动原理、AT89C51单片机及其引脚说明、键盘扫描程序的编写等,为本次课程设计提供了一定的资料。
在做课程设计的初期阶段,难度较大。
在设计基本完成时密码的修改还是不能实现,通过求助于老师、查找了问题的所在。
最后经过指导老师的耐心指点和连续的奋战才基本设计出来。
感谢老师的无私的帮助!
本次设计我能独立完成,算是有了很大的收获。
不但对单片机有了更为深入的了解,对一个课题如何排版、画流程图、编程序等,有了一定的认识。
进一步加强了自己的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案;特别是深刻体会到的是软件和硬件结合的重要性,以及两者的联系和配合作用。
同时明白了办事只要有信心,有毅力,找对方法,就会成功!
通过本次课程设计,让我了解到智能化技术对当今人们生活的重要性。
同时这次做课程设计的经历也使我受益匪浅。
让我知道做任何事情都应脚踏实地,刻苦努力地去做。
只有这样,才能做好。
在这次课程设计中,我既巩固了专业知识,又学到了在设计过程中的许多流程和该注意的事项,增强了电子产品开发的意识。
本次经历将是我在大学时期很好的一次实践和锻炼机会。
参考文献
1、何立民,单片机中级教程,北京航空航天大学出版社
2、丁元杰,单片机原理与应用,机械工业出版社
3、孙育才,MCS-51系列单片微型计算机及其应用,东南大学出版社
4、潘新民、王燕芳,微型计算机控制技术实用教程,北京电子工业出版社
5、刘湘涛、江世明,片机原理与应用,北京电子工业出版社
6、邹逢兴,计算机硬件技术基础试验教程,高等教育出版社
附录
源程序:
ORG0000H
START:
MOVR7,#03H
MOV50H,#82H;密码付初值
MOV51H,#92H
MOV52H,#99H
MOV53H,#0B0H
MOV54H,#0A4H
MOV55H,#0F9H
MOV60H,#01H;显示付初值
MOV61H,#03H
MOV62H,#07H
MOV63H,#0FH
MOV64H,#1FH
MOV65H,#3FH
MAIN:
;主程序
MOVR0,#60H
MOVR1,#20H
MOVR2,#0H
MOVP0,#0FFH;开机显示______
MOVP3,#7FH
MOVP1,#0F7H
LOOP:
LCALLKEY
CJNEA,#89H,MAIN1
JMPMAIN
MAIN1:
CJNEA,#9CH,M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 密码锁 单片机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)