单片机课程设计可改密码的电子密码锁设计Word格式.docx
《单片机课程设计可改密码的电子密码锁设计Word格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计可改密码的电子密码锁设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
此刻应用较广的数字密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁。
其特点是保密性好,随机开锁成功率几乎为零。
密码可变,用户能够随时更改密码,避免密码被盗,同时也能够避免因人员的更替而使锁的密级下降。
无活动零件,不会磨损,寿命长。
利用灵活性好,不像机械锁必需佩带钥匙才能开锁。
数字密码锁操作简单易行,一学就会。
本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。
到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。
本设计是基于单片机的密码锁设计方案,按照要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分派、C语言源程序及详细注释等内容。
第二章系统整体方案设计
用以STC89C52为核心的单片机控制方案。
利用单片机灵活的编程设计和丰硕的IO端口,及其控制的准确性,不但能实现大体的密码锁功能,还能添加掉电存储。
其原理如图所示。
单片机控制方案
设计思路如下:
一、输入密码用矩形键盘(4*3),包括数字键和功能键。
二、LCD1602用来实时显示当前的各操作状态。
3、用发光二极管代替开锁的电路,发光表示开锁。
4、输入密码错误次数超过3次,系统报警。
五、打开电源后,LCD交替显示“Inputpassword,pleasepress0”和“Changepassword,pleasepress1”,设原始密码为“123456”,只要输入此密码便了开门。
如此可预防停电后再来电时无密码可用。
六、任何状态下,按“取消”键,LCD返回功能交替选择的初始状态。
7、欲从头设定密码,需先输入旧密码后才能更改。
八、修改密码时,需输入两次新密码确认一致,若是两次输入的密码不一样则LCD显示“error”并返回初始状态。
软件的设计主要包括键盘键值的读取,LCD显示程序,密码比较程序和报警程序等。
第三章硬件电路设计
键盘电路设计
利用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数量,在按键比较多的时候,通常采用如此方式。
其原理如图。
本设计中矩阵键盘接在单片机的P1口。
图矩阵键盘
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×
M个按键的键盘。
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处置程序第一执行等待按键并确认有无按键按下的程序段。
当确认有按键按下后,下一步就要识别哪个按键按下。
对键的识别通常有两种方式:
一种是常常利用的逐行扫描查询法;
另一种是速度较快的线反转法。
对照图所示的4×
3键盘,说明线反转个工作原理。
第一辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方式是:
向行线输出全扫描字00H,把全数列线置为低电平,然后将列线的电平状态读入累加器A中。
若是有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
判断键盘中哪个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。
依次给列线送低电平,然后查所有行线状态,若是全为1,则所按下的键不在此列;
若是不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
具体的功能设计如表:
表按键功能
按键
键名
功能说明
0-9键
数字键
功能选择和输入密码
确认键
完成并确认当前操作
取消键
取消当前操作返回初始状态
显示电路
本系统设计的显示电路是为了给利用者以提示而设置的。
本系统的显示采用了LCD1602作为显示模块,其能够同时显示16x02即32个字符。
LCD在系统中一共负责显示12条操作提示,其D0-D7引脚别离接单片机的P0口、VSS和VDD别离接电源和地线、VEE为液晶亮度调节按钮(可接电位器)、RS为数据或命令的选择端接、RW为读写的选择端接、E为使能信号接。
如图所示。
图LCD显示电路
LCD1602的管角及寄放器介绍如下:
引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
寄放器选择控制表
操作说明
写入指令寄存器(清除屏等)
读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
写入数据寄存器(显示各字型等)
从数据寄存器读取数据
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0。
busyflag(DB7):
在此位为被清除为0时,LCD将无法再处置其他的指令要求。
开锁电路
在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,,表示开锁;
第二个发光管亮表示密码错误。
电路图如所示。
当和口输出低电平时,二极管发光,表示开锁或密码错误。
图开锁电路
报警电路
图报警电路
报警模块由蜂鸣器和单片机组成。
选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。
蜂鸣器电路如图所示。
当89C52的口输出为低电平时,蜂鸣器产生蜂鸣音,89C52输出为高电平时,蜂鸣器不发声。
本设计中当持续输入三次错误密码时(包括开锁和更改密码两种功能操作),蜂鸣器就会发声表示报警。
密码掉电保留电路
本设计中为了在系统掉电时能够保留系统的设置密码,利用了具有I2C总线接口的E2PROM的AT24C02芯片来保留密码锁的密码。
图密码保留电路
AT24C02的介绍如下:
管脚描述
管脚名称
功能
A0A1A2
器件地址选择
SDA
串行数据/地址
SCL
串行时钟
WP
写保护
Vcc
+~工作电压
Vss
地
SCL串行时钟 AT24C02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。
SDA串行数据/地址 AT24C02双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-OR)。
A0、A一、A2器件地址输入端 这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默许值为0。
当利用AT24C02时最大可级联8个器件。
若是只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A一、A2)可悬空或连接到Vss,若是只有一个AT24C02被总线寻址这三个地址输入脚(A0、A一、A2)必需连接到Vss。
WP写保护 若是WP管脚连接到Vcc,所有的内容都被写保护只能读。
当WP管脚连接到Vss或悬空允许器件进行正常的读/写操作
第四章软件设计
软件设计思路
电子密码锁工作的主要进程是LCD提示开始选择操作功能(选择开锁仍是更改密码),通过键盘输入功能选择键0或1(现在键盘其它按键被暂时屏蔽)。
当用户选择开锁时,通过键盘输入开锁密码。
若是密码输入正确,则LCD提示密码正确、第二个LED灯亮表示开锁。
若是密码输入错误则LCD提示密码错误并亮一个LED灯亮。
当输入密码持续输入错误3次时,系统报警。
当用户选择更改密码功能时,要求用户先输入当前密码。
当密码正确时LCD提示用户进一步操作,且用户必需输入两次新密码用以确认。
当两次输入的新密码一致时,单片机想AT24C02写入新密码,不然提示错误并返回处状态。
LCD在提示用户输入密码时,会光标闪烁并逐位显示。
当光标没有闪烁时表示已经不能输入数字了,需按“确认”键以告知单片机已完成操作。
“取消”键用来消除当前的状态,无论出于系统处于哪个阶段都能返回初始状态。
程序设计流程图
程序设计
系统的源程序采用了C语言编写,因为C语言具有专门好的模块性,故编写的程序都采用了子程序模块化编写。
具体程序及程序说明见附件2。
第五章系统调试
1、单片机开发板实物图:
2、功能选择时的初始状态:
3、开锁状态:
4、密码输入状态:
5、密码正确开锁:
6、修改密码状态:
7、密码修改失败和成功:
第六章心得体会
在着抄本次课程设计时,通过查阅网络与图书馆搜集到的资料,加上指导老师指点,结合生活中对密码锁的功能特性要求,设计出了这一套电子密码锁系统的主要硬件结构和软件结构,大体完成了课题。
不过由于了解的专业知识尚浅,对课题的研究经验的不足,使得在技术的解决与运用上显得粗糙了一些,专门是功能键的设定。
在设计的进程当中经历和克服了许多困难,暴露咱们知识和经验不足的同时也积累了实践经验,检阅了大学所学的知识,使所学的知识取得温习和巩固。
通过这次毕业设计我学到了很多东西,温习了理论知识,专门是单片机外围电路模块电路设计及其应用编程;
学会搜集和处置资料的一些大体问题,提高获取新知识的能力、分析和解决问题的能力和交流与合作的能力。
这次课程设计终于顺利完成了,在设计中碰到了很多编程问题,在同窗的帮忙下,终于游逆而解。
超级感激!
致谢
在学习单片微型运算机与接口技术课程,我要感激的指导老师的耳提面命。
固然,还要感激的在我完成设计进程中给予我帮忙的同窗们。
此刻即将完成我的课程学习,还有我大学第三年的生活,虽然恋恋不舍,可是对未来的路,我充满信心。
相信有了这次的实践设计经验,在接下来的学习和以后的工作中,将能更好的将学到的知识应用于实践。
也相信在接下来的补充学习与应用中能更好的巩固这门课程的知识。
最后,再次感谢老师对我学习的指导和帮忙和同窗们的鼓励!
参考文献:
一、李群芳张士军.片微型运算机与接口技术.北京:
电子工业出版社,2010.
二、郭天祥.51单片机C语言教程.北京:
电子工业出版社,2009.
3、白延敏.51单片机典型系统开发实例精讲.北京:
4、XX百科: