基于单片机的电子密码锁课程设计说明书.docx
《基于单片机的电子密码锁课程设计说明书.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁课程设计说明书.docx(44页珍藏版)》请在冰豆网上搜索。
基于单片机的电子密码锁课程设计说明书
《单片机技术》课程设计说明书
密码锁
系、部:
学生姓名:
指导教师:
职称
专业:
通信工程
班级:
完成时间:
2013年12月
摘要
随着电子技术的发展,具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。
电子密码锁与普通机械锁相比,具有许多独特的优点:
保密性好,防盗性强,可以不用钥匙,记住密码即可开锁等。
目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。
本次设计使用AT89S52实现--基于单片机的电子密码锁。
本系统由单片机系统、矩阵键盘、LCD12864显示、EEPROM掉电保护模块和报警系统组成。
系统能完成开锁、超次锁定、修改用户密码等基本的密码锁的功能,系统具有掉电不消失的管理员密码。
除上述基本的密码锁功能外,依据实际的情况还可以添加扩展功能。
本系统成本低廉,功能实用。
关键词:
密码锁;单片机;LCD
ABSTRACT
Withthedevelopmentofelectronictechnology,whichhasthefunctionofanti-theftalarmandotherelectroniccombinationlockinsteadofpasswordquantityislittle,security,poormechanicalcombinationlockisinevitabletrend.Electroniccombinationlockcomparedwithordinarymechanicallock,hasmanyuniqueadvantages:
goodsecrecy,anti-theftsexisstrong,canneednotthekey,rememberpasswordlock,etc.Currentlyuseelectroniccombinationlockismostlybasedonsinglechipmicrocomputertechnology,singlechipmicrocomputerasthemaindevice,theencoderanddecoderforsoftware.
ThisdesignusesAT89S52torealizetheelectronicpasswordlockbasedonMCU.ThissystemconsistsofSCMsystem,matrixkeyboard,LCD12864display,EEPROMpowerdownprotectionmoduleandalarmsystem.Thesystemcancompletethelock,superlock,modifyuserpasswordsandotherbasicpasswordlockfunction,thesystemhastheelectricitydoesnotdisappearadministratorpassword.Inadditiontotheabovebasicpasswordlockfunction,basedontheactualsituationcanalsoaddtheextensionfunction.Thissystemhastheadvantagesoflowcost,practicalfunction.
Keywordspasswordlock;mcu;lcd
1设计课题任务、功能要求说明及总体方案介绍
1.1设计课题任务
课题:
密码锁
任务:
设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示界面,进入准备工作状态,能完成开锁、超次锁定、修改用户密码等基本的密码锁的功能。
1.2功能要求说明
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
1.3设计课题总体方案介绍及工作原理说明
本系统使用以单片机为核心元件的控制方案。
选用AT89S52单片机,通过4×4矩阵键盘输入密码及确认、取消操作,用蜂鸣器报警,外接LCD12864液晶显示器用于操作状态显示,并使用I2C总线串行EEPROM数据存储器AT24C02实现掉电密码不消失功能。
其系统控制原理图如图1所示。
图1系统控制原理图
2设计课题硬件系统的设计
2.1设计课题硬件系统各模块功能简要介绍
2.1.1单片机最小系统
此次设计中电路的控制部分选择以单片机AT89S52为核心的最小系统板,该系统由单片机、时钟电路、复位电路等组成。
这三部分是单片机正常工作的前提。
AT89S52采用+5V直流电源供电。
时钟电路采用外部时钟源,由外部提供晶振。
复位电路的基本功能是为系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
单片机工作的时间基准是由时钟电路提供的。
外接晶振和电容组成单片机内部的振荡器。
在单片机的XTAL1和XTAL2两个引脚间,接一个晶振及两只电容就构成了单片机的时钟电路。
晶振选取12MHZ,电容取33Pf。
单片机的复位通常分为自动复位,手动复位等几种。
复位是单片机的初始化操作,只要给引脚RESET加上2个机器周期以上的高电平信号,就可使单片机AT89S52复位。
复位的主要功能是初始化为0000H,使单片机从0000H单元开始执行程序,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,为摆脱死锁状态,也需按复位键重新启动。
在本设计中采用手动复位。
对于单片机下载口电路,采用P1.5、P1.6、P1.7和RESET与VCC、GND连接到程序下载接口,构成其下载口电路,供程序下载使用。
2.1.24×4行列式键盘输入模块
根据系统的基本要求,采用由16个键构成的行列式键盘接在AT89S52单片机的P1口,相对于独立式键盘节省了大量口线和空间,给电路设计带来极大的方便,不过也相应的增加了程序的设计难度。
采用矩阵式连接方法,组成4×4式16个按键,分别代表数字密码键“0~9”、取消功能键“C”、确定功能键“P.”、改密功能键“*”、开锁功能键“#”,其余未定义按键为新功能预留键。
2.1.312864液晶显示模块
J12864液晶是一种具有8位并行,2线或3线串行多种接口方式,内含国家一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16×16点汉字,和128个16×8点ASCⅡ字符集。
利用该模块灵活的接口和简单、方便的操作指令,可构成全中文人机交互图形界面。
12864液晶的控制口线主要接在AT89S52单片机的P0口线上,可以显示8×4行,16×16点阵的汉字。
低压低功耗是其又一显著特点。
与同类液晶模块相比,无论硬件电路或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的液晶模块。
2.1.424C02掉电保护模块
24CXX系列是最为常见的I2C总线串行EEPROM数据存储器,该芯片具有体积小,功耗低,工作电压允许范围宽,型号多,容量大,读写操作方便等特点。
其中,本设计中使用的24C02存储容量为2K位(256×8位,256字节)。
2.2设计课题电路原理图、PCB图、元器件布局图
2.2.1电路原理图
PROTEL原理图(见附录A)、CAD原理图(见附录B)
2.2.2电路PCB图
电路顶层PCB图(见附录C)、电路底层PCB图(见附录D)
2.2.3元器件布局图
元器件布局图(见附录E)
2.3设计课题元器件清单
元器件清单(见附录F)
3设计课题软件系统的设计
3.1设计课题使用单片机资源的情况
AT89S52的片外资源:
P0、P1、P2:
基本输入输出口;
P3.0:
en(12864液晶);
P3.1:
rs(12864液晶);
P3.2:
rw(12864液晶);
P3.3:
BEEP(蜂鸣器);
P3.6:
SDA(24C02存储器);
P3.7:
SCL(24C02存储器);
XTAL1、XTAL2:
晶振输入;
RST:
复位输入;
AT89S52的片内资源:
通用寄存器区;
专用寄存器SFR:
A、PSW、SP、P0、P1、P2、P3等。
3.2设计课题软件系统各模块功能简要介绍
3.2.1主函数模块
主函数voidmain(),用于设置初始化界面,调用各个主要模块,实现简单密码锁的整体功能。
3.2.2液晶显示模块
液晶显示是通过在主程序中调用相关的液晶功能函数来执行相应功能,经过液晶接在单片机上的P0及P3部分管脚,通过液晶功能函数lcd12864()的调用对液晶进行操作,将各类指令写入液晶模块,用来驱动液晶以实现不同的显示功能,达到界面显示的要求。
3.2.3掉电保护模块
掉电保护软件设计主要通过在主程序中调用相关的24c02功能函数来执行相应功能,经过串行数据线SDA接在单片机上的P3.6管脚、串行时钟线SCL接在单片机上的P3.7管脚,通过24c02存储器功能函数24c02()的调用对24c02进行操作,将密码实时保护起来。
3.2.4行列式键盘模块
矩阵式键盘软件设计主要通过在主程序中调用键扫函数keyscan()来执行相应的功能,单片机P1口在复位之后保持高电平,当键按下相应口线为低电平,经过相应判别过程判断键松开后,执行相关键功能程序,完成相应操作。
3.2.5基础函数模块
通过调用guanliyuan(void);yonghu(void);voidshuru();shezhi();voidbaojing()等函数,实现不同用户身份用户的登录、输入密码、修改密码、报警、开锁等功能。
3.3设计课题软件系统程序流程框图
3.3.1主函数
图2主函数流程框图
3.3.2液晶显示
图3液晶显示函数流程框图
3.3.3掉电保护
图4掉电保护模块流程框图
3.3.4行列式键盘
图5键扫函数流程框图
3.3.5基础函数
图6管理员开锁函数流程框图
图7用户开锁函数流程框图
图8用户修改密码函数流程框图
3.4设计课题软件系统程序清单
液晶函数见附录G
24C02函数见附录H
键盘扫描函数见附录L
基础函数见附录M
主函数见附录N
4设计结论、运行结果、误差分析及体会
4.1设计课题的设计结论及使用说明
程序编写完成后,用keil4调试后显示程序0错误0警告,表明程序无语法错误。
下载程序到系统后,按编写思路操作,系统正常工作,表明程序设计成功。
4.2设计课题的仿真结果
调试主要是针对行列式键盘、液晶显示器和24C02存储器,在不同身份用户登录时,进入不同的操作界面,各操作界面的调试结果如图所示:
图9初始化界面图10开机界面
图11管理员登录界面图12用户登录界面
图13管理员登录密码错误界面图14用户登录密码错误界面
图15管理员输入密码正确开锁界面图16用户输入密码正确开锁界面
图17用户设置新密码界面图18设置密码二次确认界面
图19密码修改不成功界面图20密码修改成功界面
4.3设计课题的误差分析
该密码锁功能的实现基于一些机械装置的协助。
不同功能模块会存在不同的误差问题。
液晶显示模块:
本设计使用12864液晶显示,打开电源后液晶进入待机界面缓慢。
分析原因是当打开电源后,加到液晶上的电压必须满足一定的时序变化,才能正常启动液晶,本设计中未对液晶执行热启动而是通过延时一段较长时间的方法确保其进入正常工作状态。
工作过程中界面切换较缓慢。
分析是由于单片机处理一个指令只需要几us,液晶需要40us~1.64ms,为了保证单片机发指令时液晶当前为空闲状态,在设计的过程中多处用延时的方法等待前一个指令确定执行完成,使得单片机运行效率大打折扣,而且周边外设器件可能运作异常。
因此在等待液晶判断是否空闲程序设计中,可以改用液晶判忙函数来判断液晶状态是否空闲。
行列式键盘模块:
本设计使用4×4行列式键盘输入,按键过程中偶尔有按键失灵。
这是由于在按键的扫描中,单片机的资源全部用来作按键的扫描,特别是当中的延时程序,对单片机来说是一个漫长的过程。
当按键持续按下的过程中,由于延时程序对单片机资源的占用,单片机此时就不能进行执行其他任务,这期间周边外设器件有可能运作异常。
最理想的办法是搭载实时操作系统,遗憾的是8051系列单片机资源有限,不能满足搭建实时操作系统的要求,而且搭载实时操作系统将大大的增加额外的成本,故而本设计中采用软件延时的方法使系统产生了一些误差。
断电保护模块:
本设计使用24C02作为断电保护电路,第一次将设计程序下载到实物上时输入原始密码不能开锁,读出数据在液晶上显示为乱码。
分析原因是24C04首次上电后,读出来的数据我们无法知道,从而引起乱码。
所以在第一次上电应先将24C02初始化,使其状态为设计者可知。
4.4设计体会
本设计的灵感主要来自于工作实践,之前的寒暑假期我分别在长沙移动分公司、上海西联信息科技有限公司进行了为期一周到一月不等的实习,在实习工作中我了解到办公自动化(OA)应用系统。
本设计模拟OA系统登录平台,对用户身份进行识别并赋予不同身份用户不同的工作权限,以满足不同身份用户的使用要求。
本设计中,管理员就像后台管理者的身份,管理员通过输入管理员密码进入系统后台进行操作,并在用户不能登录系统的情况下给用户提供解决方案;而用户则可以通过用户密码使用本密码锁,就像我们使用手机,我们给它上锁、开锁,然后我们就可以进行上网、玩游戏等操作一样。
本次密码锁课程设计中液晶模块函数、24C02掉电保护模块函数等均采用模块化编程,这种设计给代码的修改和移植带来了极大的方便。
本课程设计的难点在于编程的思路以及程序的实现。
思路来自于学习与思考,想法的实现要求我们掌握解决问题的方法,而学习正是一个不断锻炼我们的思维,提高我们解决问题的能力的过程。
所以我们必须不断地学习新的知识,巩固旧的知识,从而更好的解决问题。
通过一个学期的单片机课程的学习,我掌握了一些基本的编程方法,在老师的指导下,我的编程思路更加的清晰,分析和解决问题的能力得到了加强,实践操作能力也得到了一定的提高。
随着本次单片机课程设计的结束,一个学期的单片机课程的学习也进入了尾声,但是我对于单片机的学习还远没有结束。
结束语
此次课程设计虽然满足了本次课程设计的基本要求,但是还存在许多的不足。
例如没有设置清除功能键,用户忘记密码或误操作输入密码错误累计达到三次,则需重启系统才能再次登录。
这样的设计可能会给用户带来不好的用户体验,但是考虑到密码锁的保密性以及编程的易于实现,我还是保留了原设计而未设置清除按键。
本次课程设计使我将本学期所学的单片机理论知识运用到了实践中来,并且通过自学12864液晶、数据存储器24C02、行列式键盘等方面的知识,进一步提高了独立思考、分析问题、解决问题以及编程和硬件制作、调试的能力,同时懂得了理论与实际相结合十分重要,在实践中我们需要理论知识的指导,然而只有理论知识远远不够,我们只有学会把所学的理论知识与实践相结合起来,从理论与实践中得出结论,才能真正学以致用,从而提高自己的实际动手能力和独立思考的能力。
致谢
对于这次课程设计的顺利完成,我首先要感谢王韧副教授,教学过程中是他细心的给我讲解了许多关于单片机的知识,王老师授课十分富有激情,他生动而清晰的给学生分析、解决问题,引导学生积极思考,他一步一步的教会了我怎么让一个个的想法在单片机上实现,并使得对我单片机有了一个更加深刻的了解。
由于有了数码管系统原理图、PCB图以及焊接制作的基础,学期初我向王老师提出了制作液晶系统的想法,得到了老师的大力支持,老师不仅给我提供了大量的参考资料还提供了许多器件,并且多次询问我学习的进展。
王老师的热心与支持给了我莫大的鼓舞,使我在学习的道路上更加的坚定。
同时,在我的实际作品的制作过程之中,得到的学校许多的老师和同学热情的指导和帮助,此外,在实际程序的编写的过程遇到许多的不解困难的时候,周围的同学也给我提供的最详细的解答,在此,我对在我的设计和制作的过程中给予我帮助的每一个人表示感谢。
参考文献
[1]马忠梅.单片机C程序设计[M],北京:
北京航空航天大学出版社,2007
MaZhongmei.microcontrollerCprogramming[M],Beijing:
BeijingAerospaceUniversityPress,2007
[2]李广弟.单片机基础[M],北京:
北京航空航天大学出版社,2007
LiGuangdi.microcontrollerbasedon[M],Beijing:
BeijingAerospaceUniversityPress,2007
[3]曹巧媛.单片机原理及应用[M],北京:
电子工业出版社,1997.7.
CaoQiaoYuan.MicrocontrollerTheoryandApplications[M],Beijing:
ElectronicIndustryPress,1997.7.
[4]张洪润.兰清华,单片机应用技术教程[M],北京:
清华大学出版社,1997.11.
ZhangHongrun,LanQinghua,MCUapplicationtechnologytutorial[M],Beijing:
TsinghuaUniversityPress,1997.11.
[5]康华光.电子技术基础模拟部分(第五版)[M].北京:
高等教育出版社,2006
kanguhguano.Electronictechnologyfoundationsimulationpart(fifthedition)[M].Beijing:
highereducationpress,2006
[6]阎石.数字电子技术基础(第五版)[M].北京:
高等教育出版社,2006
YanShi,digitalelectronictechnologyfoundation(fifthedition)[M].Beijing:
highereducationpress,2006
[7]邱光源.电路(第五版)[M].北京:
高等教育出版社,2006
QiuGuangYuan.Circuit(fifthedition)[M].Beijing:
highereducationpress,2006
附录
附录A:
PROTEL原理图
附录B:
CAD原理图
附录C:
电路顶层PCB图
附录D:
电路底层PCB图
附录E:
元器件布局图
附录F:
元器件清单
序号
元器件名称
规格
数量
1
瓷片电容
33pF
2
2
发光二极管
LED
9
3
大按键
奥姆龙带方形帽子
17
4
存储芯片
24C02
1
5
ISP下载口
1
6
USB电源线
公对公USB转接线
1
7
液晶
LCD12864
1
8
三极管
9012
1
9
蜂鸣器
1
10
单片机
AT89S52
1
11
电阻
1K
1
12
电阻
2K
1
13
排阻
470
1
14
排阻
10K
5
15
蓝白电位器
50K
1
16
小按键
9
17
六角开关
1
18
无源晶振
12MHz
1
19
单排插针
40P
2
20
单排插槽
40P
2
21
单排圆孔插母
40P
2
22
USB下载线
1
23
8P芯片插座
8P
1
24
单片机锁紧座
40P
1
25
双头1P杜邦线
8P
2
26
双压头8P杜邦线
8P
1
27
铜柱
3mm(M3x8mm+6(配螺母))
4
28
焊锡丝
0.8mm(100g)
0.5
29
松香
5g
1
30
PCB板
1
附录G:
液晶函数
/*****************************************************************
项目名称:
密码锁
编程作者:
谢萍
指导老师:
王韧
完成时间:
2013年12月
项目功能:
密码锁上电或按键复位后能显示初始化界面
具有不可修改的管理员密码123456
具有系统原始用户密码888888
用户可以设定并存储用户密码
密码输入时处于保密显示状态
密码输入错误累计不到3次时报错
密码输入错误累计达到3次时报警
密码输入正确时显示密码输入正确提示信息
*****************************************************************/
/*****************************************************************
函数库名称:
液晶相关的函数
*****************************************************************/
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbiten=P3^0;
sbitrw=P3^1;
sbitrs=P3^2;
/***************************延时函数*****************************/
voiddelay(uintm)
{
while(--m);
}
/************************液晶写命令函数**************************/
voidwritecommand(ucharcommand)
{
delay(100);
rs=0;
rw=0;
en=1;
P0=command;//液晶数据线P0
en=0;
}
/************************液晶写数据函数***************************/
voidwritedata(uchardate)
{
delay(1