基于单片机的数字密码锁设计设计

基于单片机的数字密码锁设计设计

ID:28861914

大小:2.74 MB

页数:28页

时间:2018-12-14

上传者:U-25923
基于单片机的数字密码锁设计设计_第1页
基于单片机的数字密码锁设计设计_第2页
基于单片机的数字密码锁设计设计_第3页
基于单片机的数字密码锁设计设计_第4页
基于单片机的数字密码锁设计设计_第5页
资源描述:

《基于单片机的数字密码锁设计设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

陕西理工学院毕业设计毕业设计论文题目基于单片机的数字密码锁设计学生姓名李苏喜学号1110064055所在院系物理与电信工程学院专业电子信息科学与技术班级电信1102指导教师周平和2015年6月 陕西理工学院毕业设计基于单片机的数字密码锁李苏喜(陕西理工学院物电学院电子信息科学与技术专业1103班级,陕西汉中723000)指导教师:周平和[摘要]伴随我们生活水平的提高,电子数字密码锁慢慢取代了普通的锁具,电子密码锁在安全性能上比普通锁具更好,普通的机械锁其机构非常的简单,从而在安全性能方面得不到保障,电子密码锁使得我们在安全保障方面更有自信,并且电子密码锁还有不用钥匙、无锁孔、无机械传动、不易损坏、不磨损等优点,很多用户都想简单出门,电子密码锁就能满足他们。本次设计的系统由单片机系统、矩阵键盘、显示电路和报警提示系统组成,系统能完成开锁、密码保护、密码正确与否的提示。单片机是采用的美国Atmel公司的单片机AT89C52;矩阵键盘采用4×4矩阵键盘;显示电路主要是采用液晶显示,具有设计简单、工作电压低、响应速度快、价格低廉等特点;报警系统采用的是LED指示灯。设计采用C语言作为主片控制程序,因其具有方法合理、简单易行、成本低、实用等特点。[关键词]AT89S51单片机;LCD1602;电子密码锁;4×4矩阵键盘TheNo.threesoftlandingtrajectorydesignandcontrolstrategyLiSuxi(Grade11,Class1102,ElectronicInformationScienceandTechnology,SchoolofPhysicsandTelecommunicationEngineering,ShaanxiUniversityofTechnology,Hanzhong723000,Shaanxi)Tutor:ZhouPingheAbstract:Withtheimprovementofourlivingstandards,theelectronicdigitallockslowlyreplacestheordinarymechanicallock,theelectronicpasswordlockisbetterthantheordinarymechanicallockonthesafetyfactor,theinstitutionofordinarymechanicallockisverysimple,sothatitcannotguaranteethesafety,andelectroniclockmakesusmoreconfidenceonsafety,andtheelectroniclockhasanadvantagethatwithoutakey,keyhole,mechanicaltransmission,whichisdifficulttodamage,wearing,andcannoteasilybedeciphered,Manyuserswanttogooutsimple,theelectroniclockcanmeettheirneeds.ThesystemconsistsofMCUsystem,matrixkeyboard,theshowingofcircuitandalarmsystemcomponents.password-protectedandtheshowingofpasswordwhetheritiscorrectornot.ThedesignusestheClanguageasthemainchipscontrolprocedures,whichisprovedthatthedesignofrationaldesignmethodissimple,safeandpractical.Keywords:MCUAT89S51;LCD1602;Electroniclock;4x4Matrixkeyboard 陕西理工学院毕业设计目录引言11数字密码锁功能要求12总体方案12.1方案选择22.2方案实现22.3方案结构框图23硬件电路的设计33.1单片机及单片机最小系统33.2键盘电路53.2.1键盘接口53.2.2键盘的识别方式63.2.3按键去抖动63.2.44×4行列式键盘电路63.3LCD1602显示电路63.3.1LCD1602的介绍63.3.2LCD1602显示的外围电路83.4报警提示电路83.5电源输入及电源指示电路94软件设计104.1软件设计思路104.2软件设计的流程图10 陕西理工学院毕业设计5系统调试125.1基于单片机的数字密码锁硬件调试135.2基于单片机数字密码锁的软件调试135.3基于单片机数字密码锁的总体调试135.3.1Proteus仿真调试135.3.2软硬联合调试146结论与展望14致谢14参考文献15附录A16附录B23附录C24 陕西理工学院毕业设计引言在我们日常的生活和工作中,安全防盗已成为社会不可避免的问题。现在的用户都追求具有简洁方便、高安全,易操作等特点的安全锁。因此电子数字密码锁是我们生活中不可少的一部分了,数字密码锁的发展标志着我们生活水平的提高。随着社会经济的日益增长和人们生活水平的提高,安全成为当下人们最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,以及承受钥匙丢失后的麻烦和风险。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等因素人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的一种表现。数字密码锁是通过密码输入来控制电路,从而控制机械的闭合,完成开锁和关锁的基本操作的电子产品,它的种类比较多,而此次设计就是基于单片机控制的数字密码锁,它的设计以单片机为核心,通过编程来实现,它负责获取处理用户输入的密码,将其和正确的预置密码比较,产生相应的输出,其性能得到了改善。基于单片机控制的数字密码锁与普通机械锁相比,其具有保密性好、密码可变、寿命长,不用钥匙、无锁孔、无机械传动、不易损坏、不磨损、不易被破译等优点,数字密码锁是利用数字密码来开启的锁具,其重复概率仅为十万分之一,具有很高的安全性;而普通机械锁使用却相对不够安全,通过对社会各阶层千余人的调查,百分之百的人都愿意一身轻松没有任何顾虑的出入家门,都愿意用上一种锁具可使人摆脱钥匙的束缚。因此,设计数字密码锁的市场发展前景极为广阔。1数字密码锁功能要求本次设计的数字密码锁有密码的输入、有密码的修改功能,并且密码是八位,在输入密码的过程中有显示提示,让用户更好的操作密码锁,而在密码输入正确与否(锁的开否)也需要显示提示,此次设计的时候没有把机械部分设计出来,因此引用了红绿灯的显示(报警提示),来代表机械部分的,即表示锁的开闭状态。此次设计实现功能要求如下:1)加电后,液晶显示英文“EnterPassword!”来欢迎用户。2)输入密码时,逐位显示“*”,此次设计的密码为八位,因此为“********”,以防止泄露密码,这样让用户用的放心。3)输入密码过程中,如果不小心出现了输入错误,可按“复位”键清除屏幕,取消此次输入,再次输入需要重新输入所有密码。4)当密码输入完毕时,单片机将输入的密码与设定的密码比较,若密码正确,则绿色发光二极管亮(表示密码锁打开),并且显示屏上也有所提示“Passwordisright!”蜂鸣器报警一秒;若密码不正确,显示屏上同样显示“Passwordiswrong!”,并且有密码输入错误时,报警三秒,用户可以重新输入,但是一次性有三次输入密码的机会,若是一次性输入了三次错误密码,则报警五秒钟,期间用户就不能再输入密码了,只能等到复位后再重新输入。5)此次设计的数字密码锁密码可以修改,当输入正确的密码后,你可以根据自己的需要对已设的密码进行修改,修改成功后,有两秒提示音。6)此次设计的数字密码锁的初始密码为八位密码“11111111”。2总体方案2.1方案选择第23页共24页 陕西理工学院毕业设计设计本次毕业设计之前构思了两种方案:一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案;另一种是用以单片机为核心的电子密码锁。第一种方案应用数字电子技术的编、译码技术,并通过按键实现密码的设置、修改及识别功能,在设计的时候考虑到第一种方案需用到较多集成芯片,电路焊接起来很复杂;密码采用脉冲输入法,故对输入脉冲有很高要求,而且密码输入及修改过程也比较繁杂。而第二种方案是采用集成芯片单片机还有其他集成芯片来控制整个电路,灵活准确性好且保密性强还具有扩展功能,并且焊接起来很简单,因此采用了后一种方案,即单片机控制的数字密码锁设计。1.1方案实现此次设计的基于单片机的数字密码锁,它主要由单片机、矩阵键盘、液晶显示和报警提示等部分组成。单片机作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能,其原理图如图2.1所示。矩阵键盘用于输入数字密码和进行各种功能的实现,主要有数字输入按键、确认按键、密码修改按键等,用户可以通过连接单片机的矩阵键盘输入密码,液晶显示屏提示一些输入,让用户更方便的操作电子密码锁锁,当你输入的密码位数达到所需要输入的密码位数后,单片机对用户输入的密码与自己内部设置保存的密码进行对比,从而判断密码是否正确,液晶显示屏提示你输入的密码是否错误,然后控制其他引脚的高低电平送到报警提示电路控制报警提示(红绿发光二极管显示),表示锁的开或者闭合,而在实际使用时只要将单片机的负载换成电子密码锁的电磁铁吸合线圈即可。密码输入单片机控制修改密码密码处理锁开是否图2.1单片机控制密码锁的原理图1.2方案结构框图基于单片机控制的数字密码锁结总构框图如图2.2所示,框图由电源输入,晶振电路,单片机控制系统,键盘电路,显示电路,报警提示电路构成。电源为单片机控制器和其他芯片提供工作电源,此次设计的时候引用直流电源,但在实际应用到生活中去的时候需要通过交流电源转变为直流电源(降压、整流、滤波等过程),并且需要加个备用电源,防止停电或者其他故障而造成无法供电的时候的备用电源。单片机控制系统包括晶振电路和复位电路。第23页共24页 陕西理工学院毕业设计单片机电源输入键盘电路报警指示开锁电路晶振电路显示电路图2.2基于单片机控制的数字密码锁总结构框图1硬件电路的设计1.1单片机及单片机最小系统单片机选用常用的Atmel公司的51系列单片机AT89C52。AT89C52是Atmel公司生产的低电压、高性能CMOS8位单片机,AT89C52采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定,单片机AT89C52引脚如图3.1所示。图3.1单片机AT89C52引脚P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个第23页共24页 陕西理工学院毕业设计LS型TTL负载;P1口是8位准双向I/O口,可驱动4个LS型TTL负载;P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载;P3口是8位准双向I/O口,双功能复用口,可驱动4个LS型TTL负载,并且P3口具有特殊功能。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P1口有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型IO口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不须作为A/D使用的口可继续作为IO口使用。在FLASH编程和校验时,P1口作为第八位地址接收;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号;P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)同时P3口同时为闪烁编程和编程校验接收一些控制信号;RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间;ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效;PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PSEN信号将不出现;EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2:来自反向振荡器的输出;EA/VPP(31引脚):“EA”为英文“ExternalAccess”的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。单片机最小系统如图3.2所示,其中由复位电路和晶振震荡电路组成。第23页共24页 陕西理工学院毕业设计复位电路:单片机上电时,当振荡器正在运行时,只要持续给出RST引脚两个机器周期的高电平,便可完成系统复位。外部复位电路是为内部复位电路提供两个机器周期以上的高电平而设计的。其中复位电路通常有上电自动复位和按钮复位两种模式,本次采用的是按键手动复位并是电平复位方式,其中电平复位时通过RST端经电阻与电源VCC接通而实现的,电源VCC取+5V,复位电路的电阻取的10k,电容取的10uF。晶振振荡电路:XTAL1脚和XTAL2脚分别构成片内振荡器的反相放大器的输入端和输出端,外接石英晶体或陶瓷振荡器以及补偿电容C1、C2构成并联振荡电路。当外界石英晶体时,电容C1、C2选30pF±10pF;当外接陶瓷振荡器时,电容C1、C2选47pF±10pF.AT89C52系统中晶振可在0~24MHz选择。外接电容C1、C2的大小会影响振荡器的高低、振荡频率的稳定度、起振时间及温度稳定性。在设计电路板时晶振和电容应靠近单片机芯片,以便减少寄生电容,保证振荡器稳定可靠的工作,并且在系统设计中,为保证串行通信波特率的误差,选择11.0592MHz的标准石英晶振,电容应C1、C2应选择20pF]。此次设计采用的是12MHz的晶振。单片机最小系统如图3.2所示,其中由复位电路和晶振震荡电路组成。图3.2单片机最小系统图1.1键盘电路1.1.1键盘接口常用的键盘接口分为独立键盘和行列式键盘两种。独立键盘就是按键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。在按键数目较多的时候,独立式键盘电路需要较多的输入口线且电路结构繁杂,此种键盘适用于按键较少或操作速度较高的场合。行列式(也称矩阵式)键盘用于按键数目较多的场合,它由行线和列线组成的按键电路,其按键位于行、列的交叉点上,如图3.3所示,一个4×4的行、列式结构可以构成1个16个键的键盘,很明显节省了很多的I/O口线。矩阵式键盘的扫描原理主要是分为两个步骤:首先是确定是否有键闭合,然后逐一扫描以步确定哪一键闭合。第23页共24页 陕西理工学院毕业设计图3.3键盘电路1.1.1键盘的识别方式键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。为判定有无键按下(闭合键)以及被按键的位置,可使用这种方法:扫描法(常用)。扫描法就是首先是判定有没有键被按下,键盘的行线一端经上拉电阻接+5V电源,另一端接单片机的输入口线。各列线的一端接单片机的输出口线,另一端悬空。为判定有没有键被按下,可先经输出口向所有列线输出低电平,然后再输入各行线状态。若行线状态中有低电平,则表示有键被按下。然后再判定被按键的位置。1.1.2按键去抖动当扫描表明有键被按下之后,紧接着应进行去抖动处理。因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图3.4所示。抖动时间长短与键的机械特性有关,一般为5~10ms。而键的稳定的闭合时间和操作者按键动作有关,大约为十分之几到几秒不等。键按下前沿抖动后沿抖动x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0x=0图3.4键闭合和断开时的电压抖动1.1.34×4行列式键盘电路此次设计为4×4行列式键盘,由16个按键组成的行列式键盘,主要作为用户输入数字密码及确认、取消、修改等功能键,此次设计按键扫描方法采用的是扫描法。4×4行列式键盘电路如图4.4所示,把芯片AT89C52中的P1.0~P1.3端口用4个10K的上拉电阻连接到4×4行列式键盘的行线上,把芯片AT89C52中的P1.4~P1.7端口直接连接4×第23页共24页 陕西理工学院毕业设计4行列式键盘的列线。(上拉电阻的作用,就是把电位拉高,比如拉到VCC。一般就是刚上电的时候,端口电压不稳定,为了让端口稳定为高,就会用到上拉电阻。)1.1LCD1602显示电路1.1.1LCD1602的介绍LCD1602是一种专门用来显示字母、数字、符号等的点阵型的液晶模块,它由若干个5×7或者5×11等点阵字符位组成,每个点阵字符都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。LCD1602是指显示的内容为16×2,可以显示两行,每行16个字符的液晶模块,目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶,此次设计引用LCD1602,是因为它具有微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。LCD1602的引脚如图3-6所示,LCD1602有16个引脚。图3.5LCD1602的引脚LCD1602的引脚介绍:第1引脚为:VSS为电源地第2脚:VDD接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背光电源脚。15脚背光正极,16脚背光负极。LCD1602的基本操作时序为:读状态:RS=L,RW=H,E=H输出:D0~D7=状态字写指令:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:无读数据:RS=H,RW=H,E=H输出:D0~D7=数据写数据:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无LCD1602的显示模式设置如表3.1所示:表3.1显示模式设置指令码功能00111000设置1602*2显示,5*7点阵,8位数据口。LCD1602的显示开/关机光标设置如表3.2所示:第23页共24页 陕西理工学院毕业设计表3.2开关机光标设置指令码功能00001DCBD=1开显示,D=0关显示;C=1显示光标,C=0不显示光标;B=1光标闪烁,B=0光标不显示。000001NSN=1当读或写一个字符后地址指针加一,且光标加一;N=0当读或写一个字符后地址指针减一,且光标减一;S=1当写一个字符,整屏显示左移(N=1)。1.1.1LCD1602显示的外围电路LCD1602显示电路由单片机C52的P2.5、P2.6、P2.7分别于LCD的第4、5、6脚(RS、RW、E)相连,将单片机C52的P0.0~P0.7口通过10K的上拉电阻分别与LCD的第7~14脚(D0~D7)相连来组成数字密码锁的显示电路。LCD1602显示电路如图4.2所示。图3.6LCD1602显示电路1.2报警提示电路LED指示灯用来提示模拟锁的开闭,此次设计采用了红、绿两个LED指示灯,红灯表示输入密码正确告警(及数字密码锁开锁),绿灯表示输入密码错误,锁未打开。报警提示电路如图3.7所示,P3.0、P3.1作普通I/O口使用,P3.0控制绿色发光二极管,指示密码输入正确状态;P3.1控制红色发光二极管,指示密码输入错误状态。而在实际应用中应该接密码锁的机械部分,这些引脚将会接继电器线圈,只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合第23页共24页 陕西理工学院毕业设计用来启动密码锁的开或关的状态,此次设计用红绿指示灯来代替了机械部分,设计简化了。其电路图如图3.7所示。图3.7报警电路1.1电源输入及电源指示电路基于单片机控制的数字密码锁的工作需要+5V的电压作为输入电压,家用电一般都是采用220V、50Hz的交流电,因此需要将交流电转换成直流电,先通过一个整流电路,使交流电压变成直流电压。为了保证其输出的电压是+5V,在后面接一个稳压电路,由一个7805稳压器,其中电容C1起滤波作用,电容C3是抑制高平信号。电容C2,C4直接接地,起到抗干扰的作用,能使电压稳定在+5V。有了电源模块避免了因没有直流电源而无法使用的问题,使这个仪表能够在更多的环境中使用。电源部分如图3.8所示。图3.8电源电路图第23页共24页 陕西理工学院毕业设计此次设计的数字密码锁就引用了电源指示模块,虽然这个模块很简单,但确实也是电路中不可少的一部分,当电源通电后,黄色发光二极管就亮表示电路有电源输入,让用户更能方便的清楚密码锁是否通电,如没有电通入,数字密码锁无法工作,需要及时更换电源,以保证数字密码锁的正常工作。1软件设计1.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标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即等待前一个指令确实执行完成。液晶显示的操作主要由初始化程序、写命令和写数据程序等组成。而单片机电路以及密码比较处理程序则为主程序了,主要是处理键盘输入程序和调用显示程序。1.2软件设计的流程图结合硬件结构,可以将键盘输入的识别用来作为系统的监控程序,用显示程序来延时,不断查询键盘。如果有键按下,就得到相应的键值。结合当前系统所处的状态,调用不同的操作模块,实现相应的功能。而执行模块主要有数字输入模块、显示模块及报警提示模块。键盘部分应实现如下功能:首先,对键盘进行扫描,判断是否有键被按下。如果没有,则转回键盘扫描,看下次是否有键被按下;如果有键被按下,则先对键进行去抖动,然后算出是哪个键被按下,再延时等待键释放。因为数字键和功能键都对应不同的处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序,进行字符、数据的输入或命令的处理。这样就可以实现该键所设定的功能。本次设计的键盘处理程序流程图,如图4.1所示。显示流程图如图4.2所示,显示部分是分屏显示数据的,因此显示子程序为关闭状态显示子程序、密码输入及密码修改状态显示子程序、密码输入后错误提示程序。密码在规定的时间内输入的错误次数超过3次的锁定状态显示子程序。LCD1602显示程序包括初始化子程序、写数据子程序、写命令子程序、清屏子程序、光标定位子程序。报警提示部分主要是对输入密码的错误(锁未开)和正确(锁开)以及修改密码的提示,这个和显示程序保持一致。主程序是首先进行整个程序的初始化及清屏,调用显示程序,读取键盘程序,当有按键按下时,程序判断是哪个键被按下,然后执行相应的按键功能,并调用显示程序中的显示功能,当没有键按下时,返回键盘扫描,再判断是否有键被按下,当输入的密码达到了八位,将会与单片机内设置好的密码进行比较,密码正确锁开,并报警提示电路启动,密码错误,可以有三次输入密码的机会。本次设计的主程序结构流程图,如图4.3所示。第23页共24页 陕西理工学院毕业设计是否否x=0x=0.4x=0x=0.4x=0.8x=0.846x=1H/m46x=1H/m2q/L462q/L·h-1·h-12q/L462q/L·h-1·h-1x=0x=0.4x=0x=0.4x=0.8x=0.846x=1H/m46x=1H/m2q/L462q/L·h-1·h-12q/L462q/L·h-1·h-1键扫描开始去抖动键码计算key()05101520x=0x=0.4x=0.8x=1H/m152005101520x=0x=0.4x=0.8x=1H/m152005101520x=0x=0.4x=0.8x=1H/m152005101520x=0x=0.4x=0.8x=1H/m152005101520x=0x=0.4x=0.8x=1H/m152005101520x=0x=0.4x=0.8x=1H/m152001#键处理程序6x=1H/m46x=1H/m46x=1H/m46x=1H/m46x=1H/m46x=1H/m46x=1H/m46x=1H/m00#键处理程序x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8…#键处理程序x=0x=0.4xH/mH/mH/mH/mx=0.4x=0x=0.4xH/mH/mH/mH/mx=0.4…#键处理程序x=0.8x=0.8x=0.8x=0.8x=1x=1x=1x=1x=0.8x=0.8x=0.8x=0.8x=1x=1x=1x=1…。。。。x=0x=0x=0x=0x=0.4x=0.4x=0.4x=0.4x=0x=0x=0x=0x=0.4x=0.4x=0.4x=0.4键释放?x=0x=0.4x=0x=0x=0.4x=0有无键按下x=0x=0x=0x=0x=0.4x=0.4x=0.4x=0.4x=0.8x=0.8x=0.8x=0.8x=1x=1x=1x=1H/mH/mH/mH/mx=0x=0x=0x=0x=0.4x=0.4x=0.4x=0.4x=0.8x=0.8x=0.8x=0.8x=1x=1x=1x=1H/mH/mH/mH/m是开始延时01H清显示显示模式设置写数据写指令清屏光标定位回初始根据内容定光标显示内容返回两行是否?x=0x=0.4x=0x=0x=0.4x=0否是图4.1基于单片机的数字密码锁按键流程图图4.2基于单片机数字密码锁的显示流程图第23页共24页 陕西理工学院毕业设计否报警十秒是是否否获取按键值识别按键按完8位?比较密码是否正确?开锁,启动报警密码次数>3?初始化清屏调用显示键盘扫描初始化键被按下?是否否图4.3基于单片机数字密码锁主程序结构流程图1系统调试第23页共24页 陕西理工学院毕业设计此次设计主要有硬件调试和软件调试两部分组成,硬件调试主要是检测整个电路是否正确,电路板的连线是否正确,焊接是否正确等,软件调试主要是根据要求调试软件是否能到功能完整,最后还有个总体调试,总体调试是把程序导入硬件电路中的调试。1.1基于单片机的数字密码锁硬件调试我在做设计时首先应用Proteus仿真硬件电路,Proteus可以仿真分析各种模拟器件和集成电路,可以用来绘制原理图,可以用来仿真单片机设计还有其他硬件设计的工作。我采用Proteus仿真硬件电路主要是因为仿真安全,在硬件调试之前的最好的选择方法,这样让我们更能发现原理图的正确与否,改进原理图达到最好的效果。我花了一段时间对电路图的绘制和仿真,其中在仿真过程中,我也学到了很多以前没有学过的知识,很熟练的掌握了Proteus画电路图,并也基本熟悉了仿真软件的用法了。根据原理图的设计我做出了实物,在焊接实物之前,我对原理图有了一定的分析,对实物的高低电平的接线口很谨慎,一旦接反,都有可能造成芯片的烧坏,在焊接板子之前对按键进行了测试,用万用表测试了按键的闭合状态,检查了每个按键都是好的情况下再焊接板子,在焊接板子过程中遇到很多问题,我这次设计的时候应用的是万用版,万用版所有的焊孔都没有连接起来,而且两个孔之间离的很近,这样造成焊接的时候有很大的麻烦,这样我花了一个星期左右完成了硬件板子的焊接。硬件电路焊接完成后,剩下的就是对硬件电路的调试,在安装芯片之前我就所有的芯片进行了调试,像单片机芯片,我采用了视觉判断机械损坏,看各引脚是否有坏损的现象,然后用外用表测量电源及各个端口的对地电阻,具体阻值与好的芯片对比。在测试LCD1602时,我就把接低电平和高电平的引脚接在电源上,LCD1602上电正确后就会第一行出方格,第二行没有。芯片检测完后,就把芯片安装到已经焊接好的板子上,用万用表检测全部电路的电阻,在输入端的接入电源端检测整个电路的电阻,看是否有短路的现象出现,若电阻接近为0,硬件电路就有短路的现象,就需要检查这个板子的焊接。1.2基于单片机数字密码锁的软件调试软件编程是个漫长的过程,本次我应用的程序是C语言,为了能顺利完成这次设计,我专门看了些关于单片机的C语言编程视频和资料书,之前我们所学习的单片机编程都是应用的汇编语言,在汇编语言的学习时,由于自身能力不足,认为用汇编编程复杂繁琐,于是采用了C语言来编程。软件调试我整整花了一个多星期左右的时间,在软件编程的时候出现了很多问题,每次在编译的时候都会出现很多错误提示,比如子函数没有事先声明、变量定义不规范等,但在周老师的指导和同学的帮助下,问题都得到了解决。1.3基于单片机数字密码锁的总体调试1.3.1Proteus仿真调试硬件电路和软件都调试好了,剩下来的就是总统设计,将已经调试好的程序下载到调试好的硬件电路中,我为了安全起见,首先将已经调好的程序下载到之前用Proteus画好的仿真电路中仿真,在仿真过程中遇到了很多问题。1)复位电路的那个RST引脚始终都是高电平,没有按复位键也是高电平,在自己的摸索下,将复位电阻的ANALOG模式改为DIGITAL模式,最后恢复正常了,这是Proteus仿真中经常会遇到的问题。2)在运行程序时,仿真时左下角显示的CPU占用达到了100%,无法运行程序,最后在硬件电路中减少些线路和电阻进行调试,最后能够正常的运行。3)改变单片机的ClockFrequency能影响仿真的结果,默认的为12MHz。4)将程序调进原理图后,在运行的情况下,红绿灯一直都没有反应,最后查出了在仿真的时候他们的高电平不应该同时接在一起,而应该分开接在高电平上。5)将程序调入仿真软件后,发现了显示和想象的不同,最后在程序中找出些原因。通过多次的Proteus仿真调试,最后实现了数字密码锁仿真的一些基本功能,实现的效果如附录第23页共24页 陕西理工学院毕业设计B所示。1.1.1软硬联合调试在仿真调试中没有出现问题时,将程序下载到单片机中,运行整个硬件电路,出现了些问题。1)显示的很不稳定,于是我在单片机的40引脚加了个0.1uF的滤波电容,加了以后显示稳定些。2)按下按键时,用力不均或者过快时都会影响按键的抖动,在软件编程中加了抖动程序,然而在硬件应用中抖动还是依然存在,于是又加了抗硬件抖动部分,在按键和单片机的I/O口连接处加滤波电容,更好的消除抖动。3)在进行每个按键的调试时,按键数字5和按键数字6都无法输入,我将每个按键按下,用万用表检测它们的连线电平状态,最后检测到按键5和按键6处的行线连接虚焊了。4)LCD显示的时候有些字符有点乱码,在程序中的光标定位进行正确的位置定位。通过整整一段时间的总体调试,期间我克服了很多困难,最后终于实现了数字密码锁的基本功能。2结论与展望此次设计的数字密码锁能够实现密码的输入,液晶显示屏的显示,报警提示等基本功能,当在开机的时候显示“EnterPassword!”,此时用户可以在数字键盘上输入数字密码,当密码输入与之前程序所存的密码相同时,液晶显示屏不仅显示“Passwordisright!”并且红灯亮了,表示电子锁开锁,当用户输入密码与之前设的密码不相同的时候,液晶显示屏显示“Passwordiswrong!”并绿灯亮了,提示你密码输入错误,此时用户还有两次输入密码的机会,要是连续三次密码都输入错误时,数字密码锁报警五秒,并且期间不能再输入密码了,这样有了更安全的保障,这个就模拟了银行卡的输入密码一次性不能超过三次,要是输入次数超过了三次就需要改天再输入密码,这样增加了安全性。此次设计的数字密码锁还可以进行密码的修改,当你输入了正确密码后,你想对自己的密码进行修改,你此时可以按“修改”键,但必须在再次输入密码正确的前提下,最后显示的是“Setok!”,表示你的密码修改成功,然而这次设计的密码锁修改的密码过大就可能出现存储不进去的情况,不太稳定这是这次设计的不完美之处,需要改进。此次设计的数字密码锁在输入密码的时候,不能逐步取消你的密码,一旦出现只输错一个密码,便需要重新开始输入所有密码,这样输入的操作次数无形增加,这就给用户带来了很多不便之处,这是这次设计的不完美之处。总体而言,此次设计的数字密码基本功能还是实现了,像密码的输入,密码输入过程的声、光提示,密码的修改,密码输入正确失败的报警等功能都能实现,最重要的是通过此次设计,我学到了很多东西,对单片机也更进一步了解,也学会了Proteus仿真,也学会了应用C语言来驱动单片机等知识。我相信在以后对密码锁的改进会更有心得,设计出更完美的作品。致谢四年的大学如白驹过隙,在这四年期间我学会了很多东西,我学会了怎么去做一个大学生,怎么去适应社会的发展,我学会了专业知识,学会了知识的重要性,学会了感恩,我要感谢我的父母,是他们从小就教育我要好好读书,是他们给了我机会来上大学,他们在家里忙碌辛苦就是为了我能够完成学业。我也要感谢我的大学—陕西理工学院,是它给了我学习的平台,当然我也感谢教过我的所有老师,是他们教会了我怎么去学习,教会了我怎么样将所学的理论知识应用到实践中去,在他们的陪同下,我度过了快乐而充实的大学四年。此次毕业设计我以基于单片机的数字密码锁的设计为题,设计过程中我以单片机为主脑,以C语言为驱动程序,将所学的知识用在了这次设计上,此次设计离不开我的论文指导老师—周平和老师,他多次询问我的论文进程,并且他为我指点迷津,帮助我开拓设计思路,屡次为我提供基础知识和资料,多次督促我去完成任务。此时我发自内心的感谢我的论文指导老师。第23页共24页 陕西理工学院毕业设计此次设计能够顺利完成我还要感谢的是陪我一起走过来的室友,在论文设计这段时间,他们也给我了些宝贵意见,让我受益匪浅。参考文献[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]FirstchipempressthesystemEDA/ICoftheelectronicsengineeringdesign[M].2008.6.30-60.[19]R.Dye.VisualObject-OrientatedProgramming[J].Dr.DobbsMacintoshJournal,1991.8(8):10-15.第23页共24页 陕西理工学院毕业设计附录A系统主程序#include"main.h"sbitLED=P3^4;sbitrelay=P3^5;sbitbee=P3^6;codeuchartable[]={"EnterPassw:"};codeuchartable1[]={"Sure?"};codeuchartable2[]={"Passwisrignt!"};codeuchartable3[]={"Passwiswrong!"};codeuchartable4[]={"Warning!!!"};codeuchartable5[]={"SetNewPassw:"};codeuchartable6[]={"SetOK!!!"};codeuchartableempty[]={""};codeucharnewmima[8]={0};codeucharoldmima[8]={1,2,3,4,5,6,7,8};ucharold1,old2,old3,old4,old5,old6,old7,old8;//原始密码000000ucharnew1,new2,new3,new4,new5,new6,new7,new8;//每次MCU采集到的密码输入ucharaddress;//记录地址和密码ucharPassw_Enter_flag;//密码输入完成标志位ucharwarning_passw_flag,warning_flag;//警告标志位ucharPassword_set_flag;//修改密码标志位longintpassword,password_memory=12345678;//输入密码,初始密码externucharkeynum;externcharwaring_time_flag;ucharPassw_Right_Flag;//密码输入正确标志位ucharPassw_right,Passw_wrong;ucharPassw_Set_again;ucharPassw_Finish_Flag;ucharPass_Save_Flag=1;ucharClr_Screen_Flag=1;voiddisplay_table(){datauchark;write_com(0x80+1);for(k=0;k<12;k++)write_data(table[k]);第23页共24页 陕西理工学院毕业设计}voiddisplay_table1(){datauchark;write_com(0x80+0x40+10);for(k=0;k<5;k++)write_data(table1[k]);}voiddisplay_table2()//输入正确{datauchark;write_com(0x80+0x40+0);for(k=0;k<16;k++)write_data(table2[k]);}voiddisplay_table3()//输入错误{datauchark;write_com(0x80+0x40+0);for(k=0;k<15;k++)write_data(table3[k]);}voiddisplay_table4()//错误警告{uchark;write_com(0x80+0x40+1);for(k=0;k<15;k++)write_data(table4[k]);}voiddisplay_table5()//设置密码{uchark;write_com(0x01);write_com(0x80+1);for(k=0;k<13;k++)write_data(table5[k]);write_com(0x80+0x40);for(k=0;k<16;k++)write_data(tableempty[k]);第23页共24页 陕西理工学院毕业设计}voiddisplay_table6()//输入正确{uchark;write_com(0x80+0x40+0);for(k=0;k<16;k++)write_data(tableempty[k]);}voiddisplay_table7()//Set正确{uchark;write_com(0x80+0x40);for(k=0;k<16;k++)write_data(table6[k]);}voidEnter_password_try(){keynum=16;//初始化keynumkeyscan();//按键扫描delay_us(3);if(keynum<10){write_com(0x80+0x40+1+address);write_data(0x30+keynum);//address++;//输入8个数字每次显示password=password*10+keynum;if(address==8){address=0;//display_table1();//确认sure?Passw_Enter_flag=1;//输入完成标志位置1}}}voidPassw_save(longintp_s){write_add(0x12,p_s/16777216);//16777216write_add(0x13,p_s%16777216/65536);第23页共24页 陕西理工学院毕业设计write_add(0x14,p_s%65536/256);write_add(0x15,p_s%256);//write_add(0x12,p_s/1000000);//write_add(0x13,p_s%1000000/10000);//write_add(0x14,p_s%10000/100);//write_add(0x15,p_s%100);}longintPassw_read(void){longintsave_num;ucharsave_n1,save_n2,save_n3,save_n4;save_n1=read_add(0x12);save_n2=read_add(0x13);save_n3=read_add(0x14);save_n4=read_add(0x15);save_num=save_n1*16777216+save_n2*65536+save_n3*256+save_n4;returnsave_num;}voidEnter_password_memory(){keynum=16;//初始化keynumkeyscan();//按键扫描delay_us(3);if(keynum>0&&keynum<9){write_com(0x80+0x40+1+address);write_data(0x30+keynum);address++;//输入8个数字每次显示password_memory=password_memory*10+keynum;if(address==8)//密码输入完毕{address=0;Passw_Set_again=1;//重新设置密码完成标志display_table1();Password_set_flag=0;}}}第23页共24页 陕西理工学院毕业设计voidInit_All(){LCD_init();//Time_Init();IIC_init();}voidbeep(intx){while(x--){bee=0;delay_ms(100);bee=1;delay_ms(100);}}voidbeep_s(intx){while(x--){bee=0;delay_ms(1000);bee=1;}}voidmain(){Init_All();while(1){if(Pass_Save_Flag==1){Passw_save(password_memory);Pass_Save_Flag=0;}if(Passw_Right_Flag==0&&Password_set_flag==0&&Passw_Finish_Flag==0)//不设置密码时检测输入密码{Clr_Screen_Flag=0;display_table();if(Passw_Enter_flag==0)第23页共24页 陕西理工学院毕业设计{Enter_password_try();//输入密码}elseif(Passw_Enter_flag==1)//密码输入完毕{//keyscan();//if(keynum==13){password_memory=Passw_read();//先读取初始密码,检查存储密码和输入是否一致delay_us(2);if(password==password_memory){display_table2();//一致时显示table2[]={"Passwisright"}LED=0;//LED灯亮Passw_Finish_Flag=1;//密码输入完毕Passw_Right_Flag=1;//密码输入正确relay=0;beep_s(1);//密码输入正确蜂鸣器响1sTR0=0;//关闭定时器}else{password_memory=0;password=0;//输入错误后清零以便判断下次输入display_table3();//显示table3[]={"Passwiswrong"};delay_ms(500);Passw_Enter_flag=0;//输入未完成,继续输入warning_passw_flag++;//记录输入的次数if(warning_passw_flag==3)//输入三次错误报警warning_flag=1;beep_s(5);//密码输错蜂鸣器响5swrite_com(0x01);//清屏}}}}if(warning_flag==1)//超时或者密码输入错误三次判断报警waring_time_flag==1||warning_flag==1{display_table4();beep(500);//警报10分钟break;第23页共24页 陕西理工学院毕业设计}if(Passw_Right_Flag==1&&Password_set_flag==0)//输入正确时可以选择重置密码{keyscan();delay_us(2);if(keynum==14)//确定输入密码正确后选择是否进行重新输入{password_memory=0;//清除原来的密码password=0;Password_set_flag=1;Passw_Right_Flag=0;}}if(Password_set_flag==1)//重设密码{if(Clr_Screen_Flag==0)//刷屏一次{display_table5();Clr_Screen_Flag=1;}Enter_password_memory();//输入设置的密码}if(Passw_Set_again==1)//重设密码{keynum=16;keyscan();if(keynum==13){Pass_Save_Flag=1;//保存一次密码Passw_Finish_Flag=0;//密码输入完毕Passw_Set_again=0;display_table7();beep_s(2);//密码设置成功蜂鸣器响2Sdelay_ms(500);Passw_Enter_flag=0;display_table6();write_com(0x01);}}}第23页共24页 陕西理工学院毕业设计}附录B图B总体电路仿真图第23页共24页 陕西理工学院毕业设计附录C图C1实物图正面图C2实物图反面第23页共24页

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭