图3.7 报警电路
3.5 电源输入及电源指示电路
基于单片机控制的数字密码锁的工作需要+5V的电压作为输入电压,家用电一般都是采用220V、50Hz的交流电,因此需要将交流电转换成直流电,先通过一个整流电路,使交流电压变成直流电压。为了保证其输出的电压是+5V,在后面接一个稳压电路,由一个7805稳压器,其中电容C1起滤波作用,电容C3是抑制高平信号。电容C2,C4直接接地,起到抗干扰的作用,能使电压稳定在+5V。有了电源模块避免了因没有直流电源而无法使用的问题,使这个仪表能够在更多的环境中使用。电源部分如图3.8所示。
图3.8 电源电路图
此次设计的数字密码锁就引用了电源指示模块,虽然这个模块很简单,但确实也是电路中不可少的一部分,当电源通电后,黄色发光二极管就亮表示电路有电源输入,让用户更能方便的清楚密码锁是否通电,如没有电通入,数字密码锁无法工作,需要及时更换电源,以保证数字密码锁的正常工作。
4 软件设计
4.1 软件设计思路
对于基于单片机的数字密码锁的设计,我们需要解决三个问题:键盘的输入、液晶显示、单片机电路以及密码比较与处理的有关程序设计。键盘的输入通过行列键盘扫描程序获取所按键的行、列号,而键值编码规则如下:将字节的高四位(D7、D6、D5、D4)表示列号(4、3、2、1),低四位(D3、D2、D1、D0)表示行号(4、3、2、1),比如11H(00010001)表示第1行第1列,21H(00100001)表示第1行第2列,以此类推,可得其他键值的编码。LCD1602显示,根据获取的键值编码,选择相应的功能,驱动LCD1602显示。在LCD接受指令前,微处理器必须先确认其内部处于非忙碌状态,则LCD的(D7到D0)的D7位为0,方可接受新的指令。如果在发送一个指令时前没有检查D7标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即等待前一个指令确实执行完成。液晶显示的操作主要由初始化程序、写命令和写数据程序等组成。而单片机电路以及密码比较处理程序则为主程序了,主要是处理键盘输入程序和调用显示程序。
4.2 软件设计的流程图
结合硬件结构,可以将键盘输入的识别用来作为系统的监控程序,用显示程序来延时,不断查询键盘。如果有键按下,就得到相应的键值。结合当前系统所处的状态,调用不同的操作模块,实现相应的功能。而执行模块主要有数字输入模块、显示模块及报警提示模块。
键盘部分应实现如下功能:首先,对键盘进行扫描,判断是否有键被按下。如果没有,则转回键盘扫描,看下次是否有键被按下;如果有键被按下,则先对键进行去抖动,然后算出是哪个键被按下,再延时等待键释放。因为数字键和功能键都对应不同的处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序,进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。本次设计的键盘处理程序流程图,如图4.1所示。
显示流程图如图4.2所示,显示部分是分屏显示数据的,因此显示子程序为关闭状态显示子程序、密码输入及密码修改状态显示子程序、密码输入后错误提示程序。密码在规定的时间内输入的错误次数超过3次的锁定状态显示子程序。LCD1602显示程序包括初始化子程序、写数据子程序、写命令子程序、清屏子程序、光标定位子程序。
报警提示部分主要是对输入密码的错误(锁未开)和正确(锁开)以及修改密码的提示,这个和显示程序保持一致。
主程序是首先进行整个程序的初始化及清屏,调用显示程序,读取键盘程序,当有按键按下时,
程序判断是哪个键被按下,然后执行相应的按键功能,并调用显示程序中的显示功能,当没有键按下时,返回键盘扫描,再判断是否有键被按下,当输入的密码达到了八位,将会与单片机内设置好的密码进行比较,密码正确锁开,并报警提示电路启动,密码错误,可以有三次输入密码的机会。本次设计的主程序结构流程图,如图4.3所示。
图4.1 基于单片机的数字密码锁按键流程图 图4.2 基于单片机数字密码锁的显示流程图
图4.3 基于单片机数字密码锁主程序结构流程图
5 系统调试
此次设计主要有硬件调试和软件调试两部分组成,硬件调试主要是检测整个电路是否正确,电路板的连线是否正确,焊接是否正确等,软件调试主要是根据要求调试软件是否能到功能完整,最后还有个总体调试,总体调试是把程序导入硬件电路中的调试。
5.1 基于单片机的数字密码锁硬件调试
我在做设计时首先应用Proteus仿真硬件电路,Proteus可以仿真分析各种模拟器件和集成电路,可以用来绘制原理图,可以用来仿真单片机设计还有其他硬件设计的工作。
我采用Proteus仿真硬件电路主要是因为仿真安全,在硬件调试之前的最好的选择方法,这样让我们更能发现原理图的正确与否,改进原理图达到最好的效果。我花了一段时间对电路图的绘制和仿真,其中在仿真过程中,我也学到了很多以前没有学过的知识,很熟练的掌握了Proteus画电路图,并也基本熟悉了仿真软件的用法了。
根据原理图的设计我做出了实物,在焊接实物之前,我对原理图有了一定的分析,对实物的高低电平的接线口很谨慎,一旦接反,都有可能造成芯片的烧坏,在焊接板子之前对按键进行了测试,用万用表测试了按键的闭合状态,检查了每个按键都是好的情况下再焊接板子,在焊接板子过程中遇到很多问题,我这次设计的时候应用的是万用版,万用版所有的焊孔都没有连接起来,而且两个孔之间离的很近,这样造成焊接的时候有很大的麻烦,这样我花了一个星期左右完成了硬件板子的焊接。
硬件电路焊接完成后,剩下的就是对硬件电路的调试,在安装芯片之前我就所有的芯片进行了调试,像单片机芯片,我采用了视觉判断机械损坏,看各引脚是否有坏损的现象,然后用外用表测量电源及各个端口的对地电阻,具体阻值与好的芯片对比。在测试LCD1602时,我就把接低电平和高电平的引脚接在电源上,LCD1602上电正确后就会第一行出方格,第二行没有。芯片检测完后,就把芯片安装到已经焊接好的板子上,用万用表检测全部电路的电阻,在输入端的接入电源端检测整个电路的电阻,看是否有短路的现象出现,若电阻接近为0,硬件电路就有短路的现象,就需要检查这个板子的焊接。
5.2 基于单片机数字密码锁的软件调试
软件编程是个漫长的过程,本次我应用的程序是C语言,为了能顺利完成这次设计,我专门看了些关于单片机的C语言编程视频和资料书,之前我们所学习的单片机编程都是应用的汇编语言,在汇编语言的学习时,由于自身能力不足,认为用汇编编程复杂繁琐,于是采用了C语言来编程。
软件调试我整整花了一个多星期左右的时间,在软件编程的时候出现了很多问题,每次在编译的时候都会出现很多错误提示,比如子函数没有事先声明、变量定义不规范等,但在周老师的指导和同学的帮助下,问题都得到了解决。
5.3 基于单片机数字密码锁的总体调试 5.3.1 Proteus仿真调试
硬件电路和软件都调试好了,剩下来的就是总统设计,将已经调试好的程序下载到调试好的硬件电路中,我为了安全起见,首先将已经调好的程序下载到之前用Proteus画好的仿真电路中仿真,在仿真过程中遇到了很多问题。
1) 复位电路的那个RST引脚始终都是高电平,没有按复位键也是高电平,在自己的摸索下,将复位电阻的ANALOG模式改为DIGITAL模式,最后恢复正常了,这是Proteus仿真中经常会遇到的问题。
2) 在运行程序时,仿真时左下角显示的CPU占用达到了100%,无法运行程序, 最后在硬件电路中减少些线路和电阻进行调试,最后能够正常的运行。 3) 改变单片机的Clock Frequency 能影响仿真的结果,默认的为12MHz。
4) 将程序调进原理图后,在运行的情况下,红绿灯一直都没有反应,最后查出了在仿真的时候他们的高电平不应该同时接在一起,而应该分开接在高电平上。
5) 将程序调入仿真软件后,发现了显示和想象的不同,最后在程序中找出些原因。
通过多次的Proteus仿真调试,最后实现了数字密码锁仿真的一些基本功能,实现的效果如附录B所示。
5.3.2 软硬联合调试
在仿真调试中没有出现问题时,将程序下载到单片机中,运行整个硬件电路,出现了些问题。 1) 显示的很不稳定,于是我在单片机的40引脚加了个0.1uF的滤波电容,加了以后显示稳定些。 2) 按下按键时,用力不均或者过快时都会影响按键的抖动,在软件编程中加了抖动程序,然而在硬件应用中抖动还是依然存在,于是又加了抗硬件抖动部分,在按键和单片机的IO口连接处加滤波电容,更好的消除抖动。
3) 在进行每个按键的调试时,按键数字5和按键数字6都无法输入,我将每个按键按下,用万用表检测它们的连线电平状态,最后检测到按键5和按键6处的行线连接虚焊了。
4) LCD显示的时候有些字符有点乱码,在程序中的光标定位进行正确的位置定位。
通过整整一段时间的总体调试,期间我克服了很多困难,最后终于实现了数字密码锁的基本功能。
6 结论与展望
此次设计的数字密码锁能够实现密码的输入,液晶显示屏的显示,报警提示等基本功能,当在开机的时候显示“Enter Password!”,此时用户可以在数字键盘上输入数字密码,当密码输入与之前程序所存的密码相同时,液晶显示屏不仅显示“ Password is right!”并且红灯亮了,表示电子锁开锁,当用户输入密码与之前设的密码不相同的时候,液晶显示屏显示“Password is wrong!”并绿灯亮了,提示你密码输入错误,此时用户还有两次输入密码的机会,要是连续三次密码都输入错误时,数字密码锁报警五秒,并且期间不能再输入密码了,这样有了更安全的保障,这个就模拟了银行卡的输入密码一次性不能超过三次,要是输入次数超过了三次就需要改天再输入密码,这样增加了安全性。
此次设计的数字密码锁还可以进行密码的修改,当你输入了正确密码后,你想对自己的密码进行修改,你此时可以按“修改”键,但必须在再次输入密码正确的前提下,最后显示的是“Set ok!”,表示你的密码修改成功,然而这次设计的密码锁修改的密码过大就可能出现存储不进去的情况,不太稳定这是这次设计的不完美之处,需要改进。
此次设计的数字密码锁在输入密码的时候,不能逐步取消你的密码,一旦出现只输错一个密码,便需要重新开始输入所有密码,这样输入的操作次数无形增加,这就给用户带来了很多不便之处,这是这次设计的不完美之处。
总体而言,此次设计的数字密码基本功能还是实现了,像密码的输入,密码输入过程的声、光
提示,密码的修改,密码输入正确失败的报警等功能都能实现,最重要的是通过此次设计,我学到了很多东西,对单片机也更进一步了解,也学会了Proteus仿真,也学会了应用C语言来驱动单片机等知识。我相信在以后对密码锁的改进会更有心得,设计出更完美的作品。
致谢
四年的大学如白驹过隙,在这四年期间我学会了很多东西,我学会了怎么去做一个大学生,怎么去适应社会的发展,我学会了专业知识,学会了知识的重要性,学会了感恩,我要感谢我的父母,是他们从小就教育我要好好读书,是他们给了我机会来上大学,他们在家里忙碌辛苦就是为了我能够完成学业。我也要感谢我的大学—陕西理工学院,是它给了我学习的平台,当然我也感谢教过我的所有老师,是他们教会了我怎么去学习,教会了我怎么样将所学的理论知识应用到实践中去,在他们的陪同下,我度过了快乐而充实的大学四年。
此次毕业设计我以基于单片机的数字密码锁的设计为题,设计过程中我以单片机为主脑,以C语言为驱动程序,将所学的知识用在了这次设计上,此次设计离不开我的论文指导老师—周平和老师,他多次询问我的论文进程,并且他为我指点迷津,帮助我开拓设计思路,屡次为我提供基础知识和资料,多次督促我去完成任务。此时我发自内心的感谢我的论文指导老师。
此次设计能够顺利完成我还要感谢的是陪我一起走过来的室友,在论文设计这段时间,他们也给我了些宝贵意见,让我受益匪浅。
参考文献
[1]王千.实用电子电路大全[M].北京:电子工业出版社,2001.12.101-105.
[2]张齐.单片机应用系统设计技术-基于C语言编程[M].北京:电子出版社,2006.10.56-69. [3]李华.MCS-51系列单片机使用接口技术[M].北京:航空航天大学出版社,1993.3.78-90. [4]康华光.模拟电子技术基础[M].北京:高等教育出版社,2005.6.23-45. [5]孟祥忠.数字电子密码锁的设计[D].大连:大连理工,2007.6.34-56. [6]康华光.数字电子技术基础[M].北京:高等教育出版社,2005.10.20-60. [7]齐向东,刘立群.单片机控制技术实践[M].北京:中国电力出版社,2009.4.20-69. [8]常敏,王涵.单片机应用程序开发与实践[M].北京:电子工业出版社,2009.4.45-89. [9]李华.MCS-51系列单片机使用接口技术[M].北京:航空航天大学出版社,1993.3.46-80. [10]李光华,楼然苗.单片机课程设计指导[M].北京:航空航天大学出版社,2007.7.100-120. [11]邱光源.电路[M].北京:高等教育出版社,2006.6.5-10.
[12]张凯.LED介绍完全手册[M].北京:航空航天大学出版社,2000.7.7-16. [13]王兆,黄俊.电力电子技术[M].北京:机械工业出版社,2000.7.34-60.
[14]李宏,张家田.液晶显示器件应用技术[M].北京:机械工业出版社,2004.2.45-80.
[15]朱璇,唐晓茜,殷建军.基于单片机智能加密电子密码锁设计[J].轻工机械,2009.8(5).45-60. [16]李捷,陈典涛,陈建华.一种基于单片机的电子密码锁的设计[J].农机化研究,2004.9.(3)23-30. [17]陈建林,赵立红.基于Proteus的数字密码锁的仿真设计[J].机械工程与自动化,2009.10(3):20-25. [18]First chip empress the system EDAIC of the electronics engineering design[M].2008.6.30-60. [19]R. Dye. Visual Object-Orientated Programming[J].Dr. Dobbs MacintoshJournal,1991.8(8):10-15.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库[精品]基于单片机的数字密码锁设计毕业论文设计(3)在线全文阅读。
相关推荐: