毕业设计20单片机密码锁易勇Word文档格式.docx
《毕业设计20单片机密码锁易勇Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业设计20单片机密码锁易勇Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
2.1.2系统框图
图1.1为本次密码锁设计的总框图:
键盘
电磁继电器
隔离
图1.1.1系统框图
2.2系统组成
本次设计的基于单片机的电子密码锁系统主要由三个模块组成,核心是89C51单片机,键盘及数码管显示由HD7279模块电路完成,报警电路由放大电路接扬声器组成,而开锁电路则由光电耦合器及电磁继电器组成。
2.3系统工作原理介绍
通电复位,电路进入就绪状态,等待用户输入密码,7279显示00000000,表示锁闭合。
当用户按下“输入/离开”键后,8个数码管显示________,等待用户输入密码,输完密码后显示--------,按下“确认”键,如输入密码正确则由P1.1输出开锁控制信号且绿灯亮,7279显示PLEASE..,且控制电磁继电器打开锁。
如输入密码错误,则显示ERROR—X,X为输入错误密码的次数,若连续三次输入错误,则由P1.5输出报警控制信号,并控制音频放大电路,发出报警声音,并且必须等待解出报警后即输入正确密码后方可重新开锁。
输入密码正确后,按下“改密”键,输入4~6位密码后再按下“确认”键,则完成了密码更新,7279重新显示PLEASE。
在锁打开的状态下,按下“输入/离开”键,则将锁关闭,指示灯熄灭,7279重新显示00000000,表示锁已闭合,用户可以离开。
第三章硬件电路设计
3.1单片机最小系统设计
本次设计中使用的微处理系统是以AT89C52为核心的超想3000单片机应用开发系统。
超想-3000TB开放式综合实验/仿真系统由仿真器、综合实验仪、软件、电源组成。
选配51CPU适配板可在超想-3000TB开放式综合实验仪上完成MCS51单片机实验。
89C51附带的两种典型的电路是时钟电路和复位电路。
主控机系统采用了Atmel公司生产的89C51单片机,它含有128字节数据存储器,内置4K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。
复位电路和晶振电路是89C52工作所需的最简外围电路。
3.1.1时钟电路
时钟电路是计算机的心脏,89C52芯片内部有一个由反向放大器所构成的振荡电路。
XTAL1、XTAL2分别为反向放大器的输入和输出端。
通常晶振频率为1.2MHz~12MHz。
89C51的时钟电路有内部和外部两种,如图3.1和图3.2所示。
内部时钟由晶振控制,一般典型值为6MHz、12MHz。
图3.1内部时钟电路
外部时钟电路由外接时钟来控制。
图3.2外部时钟电路
本次设计采用的是内部时钟方式,使得电路更更加简化,也减小系统的生产成本。
3.1.2复位电路
89C52的复位电路有上电复位和系统复位电路。
上电复位电路如图3.3所示,
图3.3上电复位电路
本次采用的是系统复位电路。
如图3.4所示
图3.4系统复位电路
综上所述,单片机最小系统电路图如图3.5所示。
89C52的复位端是一个史密特触发输入,高电平有效,而系统中的时钟接口复位信号都是低电平有效。
在复位电路中,按一下复位开关就使在RS端出现一段时间的高电平,经过74LS14的一次反相整形,提供给单片机复位端。
再经过一次反相整形,通过I/ORST端提供给外部接口电路。
外接12M晶振和两个20P电容组成系统的内部时钟电路。
图3.5单片机最小系统电路图
3.2HD7279键盘显示模块
HD7279A是一种管理键盘和LED显示器的专用智能控制芯片,其管脚图如图3.6所示。
DIG0~DIG7和SA~SG同时还分别是64键盘的列线和行线端口,完成对键盘的监视,译码和键值的识别。
在8×
8阵列中每个键的键码是用十六进制表示的,可用读键盘数据指令读出,其范围是00H~3FH。
HD7279与微处理器仅需4条接口线,其中CS为片选信号(低电平有效)。
当微处理器访问HD7279A(读键号或写指令)时,应将片选端置为低电平。
DATA为串行数据端,当向HD7279A发送数据时,DATA为输入端;
当HD7279A输出键盘代码时,DATA为输出端。
CLK为数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。
KEY为按键信号输出端,在无键按下时为高电平;
而有键按下时此引脚变为低电平并且一直保持到键释放为止。
图3.6HD7279A管脚图
RC引脚用于连接HD7279A的外接振荡元件,其典型值R=1.5kΩ,C=15pF。
RESET为复位端。
该端口由低电平变成高电平并保持25ms即复位结束。
通常,该端口接+5V即可。
DIG0~DIG7分别为8个LED管的位驱动输出端。
SA~SG分别为LED数码管的A段~G段的输出端。
DP为小数点的驱动输出端。
HD7279A片内具有驱动电路,它可以直接驱动1英寸及以下的LED数码管,使外围电路变得简单可靠。
A-G和DP为显示数据,分别对应7段LED数码管的各段。
当对应的数据位为‘1’时,该段点亮,为‘0’时则不亮。
此指令灵活,通过造字形表,可以显示用户所需的字符。
字形码表如表3-1所示:
表3-17279字形码表
显示字符
显示码
7EH
8
7FH
1
30H
9
7BH
2
6DH
g
5FH
3
79H
o
1DH
4
33H
d
3DH
5
5BH
p
67H
6
L
16H
7
70H
熄灭码
00H
HD7279键盘显示模块电路如图3.7所示
图3.77279键盘显示模块电路
3.3开锁电路
开锁控制电路由单片机P1.4控制,P1.4接光电耦合器和电磁继电器,开锁电路如图3.8所示
当单片机发出开锁信号时,P1.4口为低电平,通过具有功率放大作用的74LS07,驱动光电耦合器的发光二极管导通发光,接收三极管吸收光而导通,从而使与三极管集电极相连的电磁继电器的中心抽头由“常闭”接到“常开”,从而将锁打开。
图3.8开锁电路控制电路
参数设计:
R1为限流电阻,与VCC和光耦内的发光二极管相连,由于发光二极管当流过的电流在5~10mA时正常发光,所以,当P1.4为低电平(0.3v)时,二极管电流为:
Vcc=5v,i=5~10mA,0.7v为二极管本身的管压降,0.3v为低电平电压,则R1为470~1K,本设计中取510欧。
同理R3取1K欧。
3.4报警电路
报警电路模块如图3.9所示。
此报警电路由74LS00的与非门和两个三极管构的功率放大电路组成,当P1.5输入低电平的,驱动喇叭发出特定频率的报警声音,频率为f=1/2.2RC,声音非常响亮,很适合做报警用。
图3.9报警模块电路
设定报警声音的频率为1000Hz,则由f=1/2.2RC,选择R1=R2=R=1K,则通过计算C应取0.47uF。
用于功率放大的两个级联三极管中,第一级就选择9014,其放大倍数可达1000,且工作频率高,适用于放大功率。
而第二级应选择9013,其良好的噪声系数可可改善电路的信噪比。
第四章软件设计
4.1软件设计分析
软件是系统的指挥中心,由它来配合控制完成各种预定功能。
为了充分发挥AT89C51优越的性能价格比,在设计上尽量做到硬件“软化”,使系统硬件设计得到简化。
系统软件采用MCS-51汇编语言编写,采用了模块化结构设计。
为增强系统的实时性,对那些偶发事件采用中断方式处理,主程序主要用于系统的控制和管理。
4.2系统资源分配
(1)、键盘及显示安排
数字键:
0-9个
命令键:
输入(0AH)、确认(0BH)、改密(0CH)
数码管:
8个
(2)、内存单元及P1口安排:
标志位:
00H键标志P1口:
P1.0CS
01H输入标志P1.1CLK
02H锁状态标志P1.2DATA
03H改密标志P1.3KEY
显缓区:
40H---47H(7279)P1.4光耦
P1.5报警电路
显示指针:
22H密码暂存指针:
23H
原始密码区:
30H~37H密码暂存区:
38H~3FH
原始密码位数:
50H输入密码位数:
51H
堆栈区:
68H-7FH错误密码次数:
52H
4.3程序设计
4.3.1主程序设计
程序主要完成初始化、显示处理、送7279显示、键盘扫描以及键处理等功能,其中初始化又涉及内存单元,显缓区,堆栈,及各寄存器的初始化,其流程框图见图4.1
图4.1主程序流程框图
系统加电后,开始运行主程序,开始对各存储单元以及中断初始化,还要对密码初始化,等待键按下,若为某个功能键,如为“输入”键,则输入4-6位数字,再按“确认”键,转入密码判断子程序,若输入与密码相符,则将P1.1置为高电平,否则密码错误记数单元加一,如果连续三次错误就将P1.0置为高电平;
如果需要修改密码,先输入正确密码并确认后,相应的标志位置一后,入新密码按“密码修改”键后才有效,并保存新密码。
4.3.2数字键处理程序(SKEY)
数字键处理程序(SKEY)先判断此时是输入密码准备开锁还是修改密码,若输入新密码则将数字存放到原始密码区,若要校验密码,则将数字存放至密码暂存区。
数字键处理程序(SKEY)框图如图4.2所示
4.3.3确认键处理子程序(MKEY_2)
确认键处理子程序功能是,判断前面按的数字键是输入密码还是修改密码,若是输入密码则调用密码比较子程序,比较完毕再采取相应的动作;
若是修改密码则将密码从暂存区送至原始密码存储区。
确认键处理子程序(MKEY_2)框图如图4.3所示
4.3.4密码判断子程序(COMP)
COMP子程序的功能是将输入值与密码相比较,输入与密码一致则亮灯,并将锁打开,三次输入错误则报警,其中一个重要环节是密码位数的比较,当每按下1-9数字时,计数器30H加一,即30H单元内容存放输入位数,首先将其与密码位数比较,不相同则密码错误,这样就避免了当密码位数大于输入值位数时出现的问题。
若位数一致再逐位比较数值是否相同。
比较子程序流程图如图4.4
图4.4密码判断子程序流程图
4.3.5密码修改子程序(GMM)
此子程序涉及到判断子程序中设置的标志位,当密码输入正确时,标志位置1,否则置0,标志位为1才可修改密码,这样就保证了密码是在输入正确密码后才能被修改。
密码修改完成后,按下确认键,锁重新回到打开的状态,并且清除改密标志。
密码修改子程序流程图如图4.5所示:
图4.5密码修改子程序流程图
4.3.6显示处理子程序
显示处理主要完成将要显示的字符查表得到其字形码后送到7279显示模块显示出来。
7279采用串行接口,每发送一位都要延时,且要对其初始化后才可能正确地显示。
显示处理子程序流程框图如图4.6所示
图4.6显示处理子程序流程框图
4.3.7键盘扫描子程序
键盘处理主要是不断的扫描7279模块中的键盘,若有键按下时,则根据得到的键值查表求出其键号,将键号存放于寄存器ACC中供主程序处理。
其流程图如图4.6所示。
图4.7流程图键盘处理子程序
4.4程序清单及注释
见附录
第五章实验调试及测试结果
5.1硬件调试
(1)在得到正确的理论依据后,便开始了组装调试过程。
首先从基本要求部分开始连接,并且每连接一级电路检测一下以保证在无误的前提下再去连接其他电路;
通过设计的电路图的帮助,依次将其余部分连接好,用电压表检测各级输出无误后确定整个电路连接正确再进行下面的操作,看是否实现了我们所期望的要求效果,从而实现硬件方面的连接。
(2)本系统主要检测7279键盘显示模块,因为通过键盘显示,可以直观的知道程序是否基本运行正常,是否按时预定的显示。
调试中发现,没有用到的两个数码显示管显示乱码,于是在字形表中增加两项,将两个显示乱码的数码管熄灭。
(3)测试中发现P1.6置1后,与P1.6相连的发光二极管不亮,在排除二极工作正常的情况下,确定是P1.6工作不正常,于是将发光二极管改连接到P1.7,并修改程序,将P1.6换成P1.7。
5.2软件调试
(1).排除硬件故障后开始对程序进行调试,调试软件时采取的是分步测试后再集成测试的原则,将键扫程序输入单片机开发系统,运行后按开发系统上的键盘,看显示数码管能否显示所按键的键号。
在此基础上,将完整的程序输入单片机开发系统,运行后用示波器观察8031的P1.0端的信号是否会随按键而发生由高电平向低电平的跳变,若有跳变说明软件调试成功。
(2).将硬件部分连接上检查二极管以及喇叭是否能正常发光及发声,起初,二极管不发光,我们首先对硬件检查无误,再对程序进行分析,发现调用的延时时间太短,以至二极管发光时肉眼无法变出,将延时时间加长后即可观察出发光二极管的变化;
接着再输入数字位数与密码不符时,二极管也会发光,比如密码是1234,若输入为123456或12345时,标志开锁的二极管会亮,不和要求,于是在判断密码子程序中加了先判断输入位数与密码位数的比较指令,这样就能达到设计要求了。
(3).调试中发现密码修改后第一输入新密码校验时,显示密码错误,而在第二次输入新密码时才显示密码正确,并将锁打开。
检查程序发现是由于程序设计中,在“确认”键处理子程序中,没有重新将输入密码的位数清零,导致修改密码后,再次输入新密码校验时,由于密码位数不正确,导致显示密码错误。
(4).调试中输入三次错误密码后,并没有报警,只是显示00000000密码错误而已,再次回到程序,报警处理由原来的“确认”键处理子程序移到密码校验子程序中进行,主要是因为回到“确认”键处理中,标志已经改变,导致无法报警,移动后,报警正常。
5.3总体调试
经过了对硬件和软件的调试后,所有的功能都得以实现。
在锁闭合的状态下,数码管显示00000000,当输入与密码相符时,开锁发光二极管正常发光,且驱动电磁继电器开锁,此时数码管显示PLEASE..欢迎信息。
第一次输入密码错误后显示ERROR—1,第二次则显示ERROR—2,第三次则显示ERROR—3,闪烁10秒钟,并驱动报警电路发出十分响亮的警报。
当通过了密码校验后,按下改密键,相应输入4~6位密码后,回到开锁的状态,密码更新成功。
本系统还设计了一个小功能,在锁打开的状态下,按下“输入”键后,锁重新闭合,数码管显示00000000,表示锁已闭合,用户可以离开。
调试至此,设计要求的功能都已全部实现,而且在此基础上还造出字形表,使数码管显示良好用户停息。
第六章总结
6.1实现功能
经过查阅资资料设计方案,电路连接后进行实验调试,所设计的基于单片机8051的电子密码锁安全系统已经实现了所要求的基本功能。
主要功能如下:
1、具有友好便捷的键盘、显示接口;
2、单片机控制密码锁的开关;
3、报警功能;
4、修改密码功能。
6.2不足之处和改进意见
本系统不足之处在于密码掉电后不能存储,重新加电后密码为恢复为原始密码,应该加入存储芯片如2402作为密码存储器,使得系统掉电后也能存储密码,增强系统的安全性。
此处主控机部分没有加上看门狗,如果系统在环境比较恶劣的情况下可能会导致系统工作不稳定,如果加上将提升系统的抗干扰能力。
6.3心得体会
1.审题,就是认真分析设计课题的要求,分析每一个要求实现的功能需要用到哪些硬件模块,应该与哪些电路进行连接,各模块之间有哪些联系,通过查资料、请教老师得出设计的方案,仔细考虑及比较各方案,选择出最合理可行的,并进一步理解原理,这样在调试和查错时,就可以更快找出错误和解决问题,
2.在设计程序之前一定要清楚地分析出系统各资源的分配,如内存单元的分配,显示缓冲区、密码暂存区等的分配,还有P口的分配,只有完全掌握了系统资源才能在程序设计中很好地进行调配,从而完成预定的功能。
3.在调试电路时,发现所设计的电路出现问题,应认真分析其问题发生的种种可能因素,再分别有针对性的进行跟踪检查。
而之前模拟设计电路所得到的各个分电路的参数,信号波形等正是我们判断电路故障的依据。
4.在整个课设中,我认为是否能充分运用资料是很重要的,尤其是各芯片的功能及其测试方法,设计方案的确定需要查找资料,在组装与调试时,若出现了问题则常常要考虑到芯片的问题,所以要了解芯片的连接与功能,这对排除电路故障有很大帮助。
5.通过这次的课程设计,在增强动手能力的同时,我也加深了对所学知识的理解和掌握,而且也进一步掌握了PROTEL等计算机模拟电路设计辅助软件。
也初步形成了逐级设计电路的思想和分级检查电路的思路。
由于本次课程设计是两人一组,因此与同组人的合作也是非常关键的,这也锻炼了自己的团结合作精神,这对以后我的学习和工作是很有利的。
6.4致谢
在本课题的整个研究设计过程中,得到了许多老师和同学的鼎力相助,借此机会向他们表示诚挚的谢意。
首先感谢我的指导老师张永亮老师。
在整个的设计过程中,张老师对我们热心指导、严格要求,在选题、系统总体设计与技术方案上,给予宝贵的建议,帮助我建立了正确的设计思想,保证了课题的研究和开发工作的顺利完成。
我从他那里学到的不仅仅是学术方面的知识,更重要的是严谨的治学态度。
感谢电子系的各位老师,正是因为他们一丝不苟,任劳任怨的教学,我们才能具有扎实的基本功来进行设计工作。
还要感谢老师们为我们的毕业设计提供了良好的环境和仪器设备。
有了这些,我们才能够高效率的完成任务。
参考文献
[1].沈美明、温冬婵.IMBPC汇编语言程序设计.北京:
清华大学出版社出版.1991.6
(1)
[2].张友德、赵志英、涂时亮.单片微型机原理、应用与实验.上海:
复旦大学出版社出版.2000.11(3)
[3].白英彩.微型计算机常用芯片手册.上海:
上海科学出版社出版.1984.12
(1)
[4].周明德等.微型计算机接口电路及应用.北京:
清华大学出版社.1987.4
(1)
[5].吴金戍、沈庆阳、郭庭吉.8051单片机实践与应用.北京:
清华大学出版社出版.2002.9
(1)
[6].潘新民、王燕芳.单片微型计算机实用系统设计.人民邮电出版社出版.1992.7
[7].何立民.单片机应用技术选编(1-8).北京:
北京航空航天大学出版社.2001
[8].王福瑞.单片微机测控系统设计大全.北京:
北京航空航天大学出版社.1998.4
[9].雷霖.现场总线控制网络技术.北京:
电子工业出版社.2004
附录一源程序及注释
程序清单
ORG0000H
LJMPMAIN
MAIN:
MOVSP,#67H;
堆栈初始化
LCALLINITH;
7279显示初始化
MOVR7,#35H;
循环次数
MOVR0,#20H;
建立指针
M_0:
CLRA;
目标单元清零
MOV@R0,A
INCR0;
修改指针
DJNZR7,M_0
MOV50H,#08H;
密码位数初始化
MOV53H,#00H;
密码错误次数初始化
CLR01H;
输入标志
CLR02H;
锁的状态,闭合还是打开
CLR03H;
改密标志
CLRP1.6;
改密过程中亮灯
CLRP1.4;
接发光二极管
CLRP1.5;
接报警电路
LCALLMMINTI;
密码初始化
DD:
LCALLDIR;
显示子程序,将显缓区数据查表后送显
LCALLKEY;
健盘处理,扫描键盘后查键号
CJNEA,#0FFH,M_1;
判断是否有键按下
SJMPDD
M_1:
CJNEA,#0AH,M_2
M_2:
JNCM_3
ACALLSKEY;
数字键处理子程序
SJMPDD1
M_3:
CJNEA,#0AH,M_4
ACALLMKEY_1