51单片机简易密码锁.docx
《51单片机简易密码锁.docx》由会员分享,可在线阅读,更多相关《51单片机简易密码锁.docx(34页珍藏版)》请在冰豆网上搜索。
![51单片机简易密码锁.docx](https://file1.bdocx.com/fileroot1/2023-6/14/f86fb695-ce78-4527-9475-7fd941e19bb9/f86fb695-ce78-4527-9475-7fd941e19bb91.gif)
51单片机简易密码锁
51单片机简易密码锁
学号:
201114040215
HEBEIUNITEDUNIVERSITY
单片机课程设计说明书
设计题目:
简易电子密码锁
学生姓名:
李红辉
专业班级:
测控技术及仪器2
学院:
电气工程学院
指导教师:
曹晓华
2014年06月05日
成绩评定表
指导教师评语:
答辩成绩:
(占总成绩60%)
说明书成绩:
(占总成绩40%)
Abstract
Indailylifeandwork,thedepartmentofhousingandsecurity,unitdocuments,financialstatementsandsomepersonalinformationtosavemoreinordertolockthewaystosolve.Ifusethetraditionalmechanicalkeytoopenthelock,peopleoftenneedtocarrymultiplekeys,useveryconvenient,andthekeymissingaftersecurityiscompromised.Withthecontinuousdevelopmentofscienceandtechnology,peopleindailylifethedemandishigherandhighersafetyinsurancedevice.Tomeettherequirementsofpeopleontheuseofthelock,increaseitssafety,usethepasswordinsteadofthekeycombinationlockarisesatthehistoricmoment.Combinationlockwithhighsafety,lowcost,lowpowerconsumption,easyoperation,etc.
Inthefieldofsecuritytechnologytoguardagainst,withelectroniccombinationlockanti-theftalarmfunctiongraduallyreplacethetraditionalmechanicalcombinationlock,overcomingthemechanicalcombinationlockpasswordquantityislittle,theshortcomingsofpoorsafetyperformance,makethecombinationlockbothintechnologyandstepinperformanceareimprovedgreatly.Withthedevelopmentoflargescaleintegratedcircuittechnology,especiallythesinglechipmicrocomputer,appearedwiththeintelligentcombinationofthemicroprocessor,itbesideshasthefunctionofelectroniccombinationlock,alsointroducedtheintelligentmanagement,expertanalysissystem,andotherfunctions,sothatthecombinationlockofhighsecurity,reliability,andincreasinglywidelyused.
ThecoursedesignofelectroniccombinationlockbasedonMCUisintroduced,thedesignofthehardwareismainlycomposedofAT89C52minimumsystem,matrixcircuit,1602LCDdisplaycircuit,powercircuitandalarmcircuitandsoonseveralparts.SoftwareismainlycomposedofClanguageprogramming.Thecombinationlockbythesinglechipmicrocomputertechnology,throughthematrixcircuitsetting,changepasswords,passwordprotection,andbytheLCDdisplaypasswordinput,soastorealizethepasswordSettings,protection.
Keywords:
singlechipmicrocomputer,tricklock,the1602,thesmallestsystem,matrixkeyboard
4.1程序流程...........................................................................................................................19
4.2仿真结果...........................................................................................................................20
附件
第1章绪论
1.1电子密码锁的现状和发展
1.1.1电子密码锁的现状
当今智能电子密码锁发展已经到了非常高的境界,由于电子元件特别是单片机应用在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。
在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。
发展前境是非常大的。
1.1.2电子密码锁的发展
现在,电子密码锁适用于各个领域,尤其在国民建设,和军事领域具有突出贡献。
现在的密码锁内的信息包括了数字、字符、图形图像、人体生物特征和时间等,对电子锁的要求也越来越高。
电子技术必是各国发展的优先技术。
1.2电子密码锁的特色
保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
误码输入保护。
当输入密码多次错误时,报警系统自动启动。
电子密码锁操作简单易行,一学即会。
干扰码功能在输入正确密码前可输入任意码。
出门时无需其他操作,只需一次的把手动作,可机械的开启门,所以遇到火灾等应急状况下也迅速,安全的开启门。
第2章电子密码锁的工作原理及总体设计
2.1电子密码锁的工作原理
本设计采用STC89C52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD1602和密码存储AT24C02等部分组成。
其中矩阵键盘用于输入数字密码和进行各种功能的实现。
由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,组成的电子密码锁系统,能够实现:
1.完全正确输入四位密码的前提下,有开锁提示;
2.错误输入密码情况下,开锁密码错3次要报警,报警期间输入密码无效。
3.用户可以自行设定和修改密码;
2.2电子密码锁的总体框图
第三章硬件系统设计
3.1单片机最小系统和数据输入
3.1.1单片机最小系统
选用单片机作为系统的核心部件,实现控制与处理的功能。
单片机具有资源丰富、速度快、编程容易等优点。
利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标。
本设计采用AT89c52单片机,89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
图3-11P0口外接排阻
图3-12最小系统电路图
如图3-12为单片机最小系统,硬件最小系统:
由电源、主板和CPU、内存组成.在这个系统中,没有任何信号线的连接,只有电源到主板的电源连接.由于设计本电路图所使用的软件为Protues,且电源和电源地脚为自动隐藏所以电源部分也是在其中的。
如图3-11所示。
51单片机的P0 端口为开漏输出,内部无上拉电阻。
所以在当做普通I/O 输出数据时,由于V2 截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。
图3-13
在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。
MCS-5l系列单片机的复位引脚RST(第9管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
复位操作通常有两种基本形式:
上电自动复位和开关复位。
图3-13中所示的复位电路就包括了这两种复位方式。
上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。
随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。
并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。
一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。
图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC 充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。
3.1.2数据的输入
鉴于单片机的I/O口的限制,本次选用矩阵键盘的输入,如下图所示:
图3-21矩阵键盘
阵式键盘由行线和列线组成,按键位于行、列的交叉点上。
当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,单片机通过检测行或列线上的电平变化可以确定哪个按键被按下。
矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。
矩阵键盘的检测方法有多种,常见的有:
逐点扫描法、逐行扫描法、全局扫描法。
在本实例中我们采用逐行扫描法来实现按键检测,其中P3.0-P3.3作为行线,P3.4-P3.7作为列线。
识别过程如下
1、判断键盘中是否有键按下。
设置所有行线为输出口,并输出低电平;设置列线为输入口,读取列线上的电平状态,只要有一列的电平为低,就表示有按键按下,并且被按下的键位于电平为低的列线与4跟行线相交叉的4个按键中,若所有列线都为高电平,表示没有按键按下;
2、判断被按下按键所在的位置。
在确认有键按下后(进行按键消抖处理后),接下来就是确定具体哪个案件被按下,方法是:
依次将每根行线设置为输出口,并输出低电平(同时剩余行线输出高电平),然后逐列检查每根列线的电平状态,若某列为低电平,则该列线与设置为输出低电平的行线交叉处的按键就是被按下的按键。
3、按键位置确定后,接下来就要给矩阵键盘中的每个按键进行编号,也就是进行按键编码,程序设计中常用计算法和查表法两种方式对按键进行编码。
,程序设计中常用计算法和查表法两种方式对按键进行编码。
本实例采用计算法编码。
从上面的电路图中我们可以看到,键盘的所有行线接到了P3.0-P3.3口,51单片机上电后为高电平,这是确保在没有按键按下的时候,I/O口的电平状态始终为高电平,从而消除外界干扰。
对于51单片机来说,我们可以将P3.4-P3.7口分别不同置为低电平,当有按键按下时可以比较P3.0-P3.7的压值,则可以得出是哪个键按下并且可以赋予相应的值。
并可以读入单片机中,继续相应的操作。
3.2数据的输出和显示
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:
发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
数字式接口,液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
图3-2LCD1602显示电路
如图3-21所示,本次设计采用的是LCD1602,工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
注:
为了表示的方便,后文皆以1表示高电平,0表示低电平。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1602采用标准的16脚接口,其中:
第1脚:
GND为电源地
第2脚:
VCC接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端,高电平
(1)时读取信息,负跳变时执行指令。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
特性:
3.3V或5V工作电压,对比度可调
内含复位电路
提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM
8个可由用户自定义的5X7的字符发生器CGRAM
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
在单片机编程中还可以用字符型常量或变量赋值,如'A’。
因为CGROM储存的字符代码与我们PC中的字符代码是基本一致的,因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1=‘A’这样的方法。
PC在编译时就把'A'先转换为41H代码了。
CGROM中字符码与字符字模关系对照表
字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。
0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。
以下是1602的16进制ASCII码表地址:
读的时候,先读左边那列,再读上面那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
本设计将1602的数据/命令端接到单片机的P1.5端,使能端接到P1.4口,读写端直接接地,本次使用只用其写的功能。
1602的数据端接到单片机的P0端。
通过程序即可将单片机从矩阵键盘读入的数据显示到1602上面。
3.3报警电路
本次设计使用的蜂鸣器作为警报装置,电路图如下:
图3-3报警电路
由于自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音,很简单,这里就不对自激蜂鸣器进行说明了。
这里只对必须用1/2duty的方波信号进行驱动的他激蜂鸣器进行说明。
单片机驱动他激蜂鸣器的方式有两种:
一种是PWM输出口直接驱动,另一种是利用I/O定时翻转电平产生驱动波形对蜂鸣器进行驱动。
PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波来直接驱动蜂鸣器。
在单片机的软件设置中有几个系统寄存器是用来设置PWM口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM输出,PWM输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。
比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。
而利用I/O定时翻转电平来产生驱动波形的方式会比较麻烦一点,必须利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。
比如为2500Hz的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O口每200μs翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
本次设计采用的是通过三极管来驱动蜂鸣器,并且有单片机延时产生脉冲电流来让蜂鸣器实现报警功能。
3.4硬件总体电路图
本次设计采用89c52单片机作为主控芯片,结合矩阵键盘,蜂鸣器电路,LCD1602显示,做成的简易密码锁设计的总电路图如下所示:
图3-4
第四章仿真与调试
4.1程序流程
本次设计的总体思路为:
开机后有1602显示电路提示输入密码,密码初始化为“0123”,然后可以通过矩阵键盘输入,并通过1602显示所输入的密码的内容,当密码输入4位后,自动进入比较函数,如果密码正确则通过1602显示“Welcomeback”,如果密码输入错误,则再次显示输入密码,并且记错一次,记错达到三次后,开始报警,并且输入无效。
修改密码设置独立按键,按下后可以改密码,输入4位密码后自动保存,由于本设计没有用到掉电后数据不丢失的存储芯片,所以修改后只有在程序运行时有效。
程序流程图如下:
是
否
否是
否
是
否图4-1程序流程图
4.2仿真结果
当开始仿真时则1602液晶显示为“password!
”如下图4-21所示:
图4-21仿真开始显示
其中液晶显示后面【1】,代表第几次输入。
当密码输入正确时仿真结果如图4-22:
图4-22密码输入正确
当密码输入错误时,则再次显示输入密码,并且液晶后面的数字显示会加1,如图4-23所示:
图4-23密码输入错误时
当输入密码连续错3次后,则会报警,如图4-24:
图4-24报警仿真
当按下修改密码键的时候,液晶则会显示修改密码,并且显示你所修改的密码,如图4-25所示:
图4-25修改密码仿真
密码修改成功后,回到输入密码界面。
第五章总结
通过此次课程设计,使我更加扎实的掌握了有关单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获龋最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等,掌握了焊接的方法和技术,通过查询资料,也了解了密码锁的构造及原理。
我认为,在这一周的课设时间,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在实践中,我们学会了很多学习的方法。
而这是日后最实用