电子密码锁设计.doc_第1页
电子密码锁设计.doc_第2页
电子密码锁设计.doc_第3页
电子密码锁设计.doc_第4页
电子密码锁设计.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CHANGZHOU INSTITUTE OF TECHNOLOGY科研实践题目:基于单片机的电子密码锁设计二级学院(直属学部): 延陵学院 专业: 电气工程及其自动化 班级: 学生姓名: 学号: 指导教师姓名: 职称: 副教授 2013年12月30日至2014年1月10日目录第一章 绪论11.1 课题背景和意义11.2 电子密码锁发展趋势2第二章 总体设计方案的确定32.1 电子密码锁设计的具体要求32.2总体设计方案选定32.3 显示方案的选择42.4 密码输入方式的选择5第三章 电子密码锁软件主程序设计63.1 系统整体框图63.2系统主程序73.3延时时间的计算73.4系统程序模块及流程图83.4.1 初始化及按键识别83.4.2 按键重定位83.4.3 保存密码103.4.4 确认键处理113.4.5 改密键处理123.4.6 校验新密码12第四章 电子密码锁软件子程序设计144.1 按键识别子程序144.2 液晶显示子程序154.3 AT24C02子程序16第五章 系统调试与测试185.1 proteus软件的介绍及使用185.2 Keil软件的介绍及使用185.2.1什么是keil软件 185.3电子密码锁protues的仿真195.4调试故障及原因分析22结论24参考文献25附录26元器件清单26电子密码锁整体设计图27电子密码锁程序源代码27实物图47第一章 绪论1.1 课题背景和意义随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加电子元器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用1.2 电子密码锁发展趋势 电子密码锁应用于金融业,其根本的作用是“授权”,即被“授权”的人才可以存取钱、物。广义上讲,金融业的“授权”主要包括以下三种层次的内容:1、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。目前,金融行业电子密码锁的应用主要集中在前两个层面上。下面将介绍几种在金融行业中使用较多的电子密码锁以及它们的技术发展方向。当然,以上所说的授权技术再高超,都必须由精良的“锁具”担当承载结构部件,实现开启、闭锁的功能,而且承担实体防护作用,抵抗住或尽量延迟破坏行为,让电子密码锁“软、硬不吃”。一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件的强度、锁止型式、配合间隙和布局。提高电子密码锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物理防范和人力防范两种作用。报警的前提是具备探测功能,根据电子密码锁的使用场所和防护要求,可选择多种多样的探测手段。在中国的城市金融业中,实现联网报警已经成为对各金融网点的基本要求。根据国内外的实践经验,金融业实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子密码锁的性能至关重要。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。 第二章 总体设计方案的确定2.1 电子密码锁设计的具体要求(1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。(2)设计开锁密码位六位密码的电子密码锁。(3)能够LCD显示在密码正确时显示PASSWORD OK,密码错误时显示PASSWORD ERROR,输入密码时显示INPUT PASSWORD。(4)实现输入密码错误超过限定的三次电子密码锁定。(5)44的矩阵键盘其中包括0-9的数字键和A-F的功能键(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。 (7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作 。2.2总体设计方案选定方案一:基于8D锁存器74LS373的锁存密码电路此方案采用两个8D锁存器74LS373用于存储密码和接收输入信号,两者进入比较器进行比较。共设有八个用户输入键,74LS373为密码存储器件。先将74LS373的C和OC端置低电平,使其处于送数状态。当输入密码后将OC置于高电位,则锁存器将密码信号锁存,然后按键复位。当下次开锁时只有在规定时间内,规定次数内输入密码才会发出开锁信号,否则不能开锁。并且,当时间或输入次数到达一定值后,电路会自锁一段时间,并发出警报声。警报结束后,电路回复原状,计时及计数归零,直至下一次开锁动作。第一部分是密码输入部分,由八个开关构成,密码输入共有28=255种输入方式(注:从0000-1111 共256种组合),但能正确开锁的输入方式只有1种,安全性较高。第二部分是由74LS373组成的密码锁存电路,通过控制74LS373的芯片管脚特性来控制芯片的工作状态。第三部分是由74LS85组成的比较器(或者是同或门组成的比较电路),来比较输入信号与寄存密码的相等与否。第四部分是有二极管构成的开锁信号电路,黄灯处于待开状态,绿灯表示开锁正确,红灯及警报声表示开锁错误或者是锁存状态。第五部分是计时及计数部分,计时表示从准备开锁到开锁完成所规定的时间,以及锁存时期的锁存时间,计数记录的是误操作的次数。方案二:以STC89C52为核心的单片机控制方案选用单片机STC89C52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键09输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后可以设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接显示器,键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,而且单片机编程设计灵活、I/O端口丰富、控制的准确性高,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制等附加功能,此外单片机方案有较大的活动空间,不但能实现所要求的功能,还能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。综上分析:方案一虽然设计简单但密码输入控制复杂、实用性不是很强,并且不能实现密码保存。而方案二设计复杂,使用方便,安全性好,功耗低,成本低,而且容易操作保密性强。故在此设计中,我们选用第二种方案,即利用单片机实现密码锁的控制。2.3 显示方案的选择方案一:使用LCD1602进行显示 图21 液晶显示由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,因此液晶显示器画质高;同样液晶屏的功率消耗比较小;液晶是平板型结构,由两片玻璃组成的夹层盒,面积可大可小,安装时占用面积小减小了设备的体积;液晶的信息量大相同的面积上与数码管比可以显示更多的信息;且他本身没有老化问题寿命极长;与数码管相比液晶屏显示的更能够看懂,他能将英文细腻的显示出来是数码管做不到的。然而液晶屏也可在阳光下工作,具有防风、防雨、防水功能。这就说明能够使用在室外。但是液晶在阳光强的时候会反光是视角模糊看不清楚,对于这个现象由于屏幕较小可以用手挡住阳光是自己看的清楚一点。 方案二:用数码管来显示与液晶相同也能显示数字和字母,但是在显示字母的时候没有液晶那么细腻很难辨认,而且用数码管显示一个较长的英文就会用到好几个数码管扩大了空间,就显得美观。数码管的优点是在强光下也能看清上面显示的内容。图22 数码管显示 综合两方案的比较用液晶显示比较合适。2.4 密码输入方式的选择方案一:指纹输入识别指纹识别技术主要设计四个功能:读取指纹图像、提取特征、保存数据和对比。通过指纹读取设备读取到人体指纹的图像,然后对原始图像进行初步的处理,使之更加清晰,再通过指纹识别软件建立指纹的特征数据。软件从指纹上找到被称之为“节点”的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据通常被称之为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否。方案二:矩阵键盘输入识别由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,每当一个按键按下就会由某一条行线与某一条列线接触,只要确定接触的是哪两条I/O口线,就可以确定哪一个按键被触动。行线初始置于高位,通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读取行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。 方案比较:方案一虽然比较安全,不容易忘记密码但是软硬件太过复杂,很难操控且成本很高。而方案二简单易行,可以进行程序控制,成本较低。故选取方案二作为设计的输入部分。第三章 电子密码锁软件主程序设计3.1 系统整体框图STC89C51键盘输入复位电路晶振电路显示电路报警电路开锁电路图3-1 系统整体框图各模块功能如下:1. 键盘输入模块:分为密码输入按键和几个功能按键,用于完成密码锁输入功能。2. 显示模块:用于完成对系统状态显示及操作提示功能。3. 复位电路:完成系统的复位4. 报警电路:用于完成输错密码时候的警报功能5. 密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存6. 开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及显示 3.2系统主程序开始初始化模式选择识别按键密码输入手动清除密码比较开门旧密码输入新密码输入存入缓存区再次输入密码重新输入设置完毕返回NNBY 图3-2 主程序的流程图 3.3延时时间的计算 延时函数:通过软件和晶振电路的配合实现提供5ms的延时程序,当调用ms函数时,通过嵌套调用10次100us、再调用2次50us、最后调用10次5us来实现5ms的输出。 当调用到_nop_()时,需要调用机器周期,为了得到1us的机器周期,所徐晶振的大小计算如下: 所以在选择时钟电路时晶振可以选择12MHz的,但又考虑到实验中的误差所以选择11。0592MHz的晶振,型号为UM-5。 蜂鸣器发声函数:蜂鸣器发声的原理是不同的频率输出发出不同的声音,但是本电路对声音要求不是很高,所以只需要蜂鸣器发出声音即可,即通过函数实现蜂鸣器每秒发出0.4s声音频率。3.4系统程序模块及流程图3.4.1 初始化及按键识别如图3-3,系统的初始化包括堆栈起始地址的设定,两个定时/计数器的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的初始化,蜂鸣器初始化发声等操作。如果AT24C02里没有存储密码,或者读取AT24C02失败,则载入系统初始化密码;如果AT24C02里有掉电存储的密码,则会读出该密码。系统初始化并读取密码完成后,液晶显示Password:,提示用户可以输入密码。此时程序即不断测试按键,检查是否有按键被按下。如果有,则进行按键识别;行列扫描法识别出的键位与对应BUFF的值如表3-1所示。如果没有按键按下,或者按下的按键没有被识别,BUFF赋值0FFH,并跳转至按键测试。实际程序运行时,绝大部分时间都在测试按键,等待用户输入。图3-3 初始化及按键识别流程图有按键按下?否是按键测试子程序按键识别子程序按键重定位延时0.5S否识别成功?是开始系统初始化读取密码提示输入密码读取成功?否是载入初始密码3.4.2 按键重定位之所以要进行按键重定位,是因为按键识别子程序的功能只限于确认某个按键被按下,不包括确认按键的意义。根据表3-1可知,识别出的按键排列不符合用户使用习惯,也不利于程序的后续处理,需要重新定位。对BUFF重新赋值,新的键位值见表3-2,按键左3列仿照手机的9宫格按键,便于用户输入密码。剩下的6个按键为功能按键,各键位对应的功能设定如表3-3。根据不同的按键,程序跳转至不同的程序段,进行对应按键处理,具体流程可见图3-3。程序开始时,先驱动蜂鸣器发声0.1秒,提示用户程序已经检表3-3 按键对应功能表3-1 BUFF初值表3-2 BUFF重赋值测到刚才的按键。然后根据BUFF的初始值进行一系列的对比。如果BUFF的值是0,1,2,4,5,6,8,9,D中的一个,则按键是属于数字键。分别将BUFF重赋值为1,2,3,4,5,6,7,8,9,0。然后程序跳转至保存密码部分,将数字密码保存至密码缓冲区。除了两个未定义功能键(BUFF=0BH或0FH)程序不作任何处理,删除键(BUFF=0EH)程序直接清空密码缓冲区,然后返回至按键测试之外,其他3个功能按键也有各自的处理程序段。开始蜂鸣器发声0.1S数字键?是否确认键?是否删除键?是否开锁键?是否改密键?是否未定义键确认键处理数字重定位保存密码开锁键处理改密键处理清空密码缓冲区跳转至按键测试图3-4 按键重定位流程图确认键处理当确认键按下后的程序流程,开锁键处理当开锁键按下后的准备开锁流程,改密处理当确认键按下后的预备修改密码流程,稍后将分别详细介绍。开始密码长度+1长度为17?是否保存密码至对应缓冲区跳转至按键测试提示密码超长清空密码缓冲区显示密码长度个*号图3-5 保存密码流程图3.4.3 保存密码如图3-5,该程序段的功能是将密码信息保存至对应的缓冲区。程序设置了一个16字节的密码缓冲区(PS1PS16)和一个16字节缓冲区存储正确的密码(AT1AT16)。为便于比较,第一次输入的密码保存至PS1,第二次输入的密码保存至PS2,依此类推。后面没有输入的位填充默认值0FFH。为保密起见,输入的密码不能在液晶显示器上显示出来,而以“*”号代替。每输入一位密码,增加一位星号,便于用户直观察觉已经输入的密码位数。另外,密码超长也在此程序段处理。因为密码超长并不涉及其他功能键,在保存密码之前可判断当前密码的长度。如果超过缓冲区16位长度,即认为密码超长,无法继续保存密码。此时清空密码缓冲区所有密码,等待重新输入。3.4.4 确认键处理该程序段就是在识别到按键为确认键之后程序的执行流程,如图3-6所示。输入密码完成后会按确认键,但是输入的密码有三种情况:旧密码,新密码第一次,新密码第二次,三种情况所做的操作也不一样。程序设置有新密码第一次标志位PS_NEW1和新密码第二次标志位PS_NEW2,默认都是0。如果PS_NEW1被置1,则表明输入的密码是新密码第一次,需将缓冲区PS1PS16的信息转存至NEW1NEW16,然后PS_NEW1清0,PS_NEW2置1,提示重新输入新密码第二次。如果PS_NEW2被置1,则输入的密码是新密码第二次,会进行新密码校验,调用密码校验子程序判断两次输入的新密码是否一致,然后将PS_NEW2清0。如果两个标志位均没有被置1,则没有进行改密操作,程序进行密码校验,调用密码校验子程序判断输入密码是否正确。密码正确会有声光提示,并且密码正确标志位PSW_F置1,然后提示用户选择开锁(A)还是改密(B)。如果密码错误,系统也有声光警示,此时无法进行开锁或改密操作。程序开始后会首先判别BUFF值是否匹配(BUFF=0F5H),如果BUFF值不匹配,说明程序异常,不是从按键重定位处跳转过来的,应重启程序。以下几个按键的处理程序段开头也有类似的BUFF值检测,不再做赘述。如果密码长度小于等于2,则密码太短,不进行任何比较,直接清空缓冲区重新检测,可节省程序运行时间。图3-6 确认键处理流程图跳转初始化程序出错跳转至按键测试清空密码缓冲区开始BUFF=F5?否是长度2 ?否是新密码一次?否是转存新密码提示输入新密码提示密码太短新密码二次?否是新密码校验密码校验子程序密码正确?否是提示选择A or B?提示密码错误跳转初始化程序出错开始BUFF=F2?否是密码正确?否是跳转至按键测试提示输入新密码提示密码错误清空密码缓冲区图3-7 改密键处理流程图3.4.5 改密键处理 如图3-7,可以看出,改密键的处理流程跟开锁键类似,都需检查密码正确的标志位,只有PSW_F被置1才可以进行改密。不同之处在于,如果密码正确,程序会将新密码第一次的标志位PS_NEW1置位,这样在下一次按确认键时,程序可以判别出此次输入的密码是新密码第一次。3.4.6 校验新密码新密码的校验用于当新密码第二次的标志位PS_NEW2=1时,按下确认键后程序判定当前新密码已经输入两次,继而执行新密码校验,即判断两次输入的新密码是否一致。如图3-8所示,校验两次输入的新密码是否一致的方法仍然是调用密码校验子程序段。然后查询密码正确标志位PSW_F,如果PSW_F=1,则表明两次输入的新密码一致,可以修改密码,即可调用AT24C02写子程序保存新密码。若PSW_F=0,则两次输入不一致,无法修改密码;程序提示密码修改失败,清空密码缓冲区,重新测试按键。图3-8 校验新密码流程图清空密码缓冲区跳转至按键测试开始密码校验子程序密码一致?否是写入AT24C02读出AT24C02密码一致?否是调用初试密码提示改密成功提示密码错误因为新密码写入存储器的过程可能发生异常,故写入后马上调用AT24C02读子程序读出密码,然后调用密码校验子程序进行对比,即可判断密码是否被正确写入。如果PSW_F=1,则密码写入无误,才提示用户修改密码成功。如果PSW_F=0,则表明读出的密码跟要用户准备修改的密码不一致,密码修改异常。此时程序可尝试调用AT24C02写子程序重新写一遍,再次读出并对比。若仍然不一致,则只能调用系统初试密码,这个密码是系统最初写入单片机ROM内部的密码,仅在AT24C02无法正常读写的时候启用。第四章 电子密码锁软件子程序设计4.1 按键识别子程序按键检测子程序按键按下?否是开始没有按键P1口低4位写1读P1口P1口高4位写1读P1口P1.0=0?否是BUFF=00HP1.0=0?否是BUFF=04HP1.0=0?否是BUFF=08HP1.0=0?否是BUFF=0CHP1.4=0?否是BUFF+00HP1.5=0?否是BUFF+01HP1.6=0?否是BUFF+02HP1.7=0?否是BUFF+03H返回BUFF=0FFH图4-1 按键识别子程序流程图按键识别子程序的功能是行列扫描矩阵键盘并识别按键送入BUFF值,如图4-9所示。尽管进入子程序的前提条件是按键检测子程序检测到有按键被按下,但扫描前仍再次调用按键检测子程序;因为人为按键的速度再快也会持续几十毫秒,远远低于程序的处理速度,所以若是用户正常按下按键,此处的按键检测子程序仍可检测到。此处调用按键检测子程序可以防止因按键抖动产生的不必要识别。前面提到,薄膜按键没有上拉电阻,扫描行列之前需先给行列写1。程序的处理方法是在读行线之前先给P1口低4位送高电平,然后再读P1口低4位;被按下的按键所在行高电平会因为行列导通,高电平被拉低;故P1口低4位中低电平所在行就是被按下的行。同理,在读列线之前先给P1口高4位送高电平,然后再读出,低电平所在的列就是被按下的列。确定BUFF初值的方法是行扫描时送该行第一个按键的值入BUFF,4行的首个按键键值分别为00H,04H,08H,0CH。然后在列扫描时给BUFF加上按键所在列的值,分别加00H,01H,02H,03H。即可得到BUFF初值。至于BUFF的重赋值,则在按键重定位中根据初值对应修改。4.2 液晶显示子程序开始清显示写指令入IR字符地址入DPTR字符=00H?否是字符代码送入P0口写数据入DR地址+1返回写结束图4-2 液晶显示子程序流程图 液晶显示子程序在每次更新显示内容时都会被调用,其流程如图4-10所示。每次更新显示内容前,需清显示清空LCD原先的显示内容,清屏指令的指令码为01H,即将P0口赋值01H,然后写入指令寄存器IR。LCD1602要显示的内容是根据其控制器内置的字符码表,事先列出要显示的ASCII字符串。每次送一个字符的ASCII码入P0口,然后写入数据寄存器DR,最后将字符地址加一,LCD1602会将写入的ASCII码对应的字符依次显示出来。由于显示字符串的长度不尽相同,约定每串字符以00H结尾;程序检测到字符码为00H时,即停止写入,返回。LCD显示的内容在下次更新前会一直保持。4.3 AT24C02子程序AT24C02的子程序包括从AT24C02中读取信息和将信息写入AT24C02,首先介绍AT24C02的读程序。如图4-3所示,单片机作为主器件,发送起始信号和要寻址的从器件的地址;因为此时即随后的发送读取地址操作都是单片机往AT24C02写入控制信息,所以R/W要置0。本设计中只用一个AT24C02,从器件地址为0,对应代码为0A0H。AT24C02接收到信号后,发送应答信号。单片机接收到应答信号后,再发送要读取信息在从器件上的地址;本设计中从0地址开始读,则送00H。再次接收到从器件的应答信号后,单片机重新发送起始信号和读模式信号,将R/W位置1,对应代码为0A1H,正式开始读取信息。本设计中需要连续读取16字节的信息,所以选择连续读方式;即是单片机每接收到一字节的信息后,存入正确密码缓冲区(AT1AT16),然后产生一个应答信号,告知AT24C02要求更多的数据。当单片机不发送应答信号而发送停止信号时表示读取结束。图4-3 读AT24C02子程序流程图发送读取地址接收应答信号成功?是否开始发送起始信号发送从器件地址写模式接收应答信号成功?是否发送起始信号发送读模式信号接收应答信号成功?否是读一字节数据发送应答信号地址+1读完成?否是提示读取失败不发送应答信号发送停止信号提示读取成功返回写入AT24C02的子程序流程如图4-4所示。单片机发送起始信号,接着发送从器件AT24C02所在地址(0A0H)。这里与读AT24C02子程序不同的是,从开始到结束都是单片机控制AT24C02写入信息,所以R/W置1无需更改。对应地址上的从器件AT24C02接收到地址信号后发送应答信号。主器件在接收到应答信号后,发送要写入信息欲保存在从器件上的地址,本设计中从0地址开始保存,故地址为00H。单片机再次接收到从器件的应答信号后即可开始写入信息。本设计中采用字节写模式,即AT24C02在每接收一个8位字节之后响应一个应答信号,单片机在接收到应答信号后认为该字节成功写入,便准备下一字节的数据。直到所有数据发送完毕,单片机发送停止信号,结束写操作。图4-4 写AT24C02子程序流程图发送写入地址接收应答信号成功?是否成功?是否开始发送起始信号发送从器件地址写模式接收应答信号提示写入失败发送停止信号提示写入成功返回地址+1写完成?否是成功?否是接收应答信号写一字节数据第5章 系统调试与测试5.1 proteus软件的介绍及使用5.1.1什么是Proteus软件Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如按键、LED、数码管等等。通过Proteus仿真软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。5.1.2 怎样操作Proteus仿真软件我使用的Protues软件是7.10版本的,仿真时只需在AT89C52单片机中加载Keil软件生成的.HEX格式文件,即可启动仿真。5.2 Keil软件的介绍及使用5.2.1什么是keil软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境、将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5.2.2 怎样操作keil仿真软件我使用的keil软件是keil uvision4版本的,protues仿真前要通过工程选项,在output选项卡把生成.HEX文件勾选上,然后编译生成.HEX文件供protues软件仿真使用。5.3电子密码锁protues的仿真绘制密码锁器的软件仿真图步骤分一下四步:(1)查找所需要的元器件;(2)根据电路图进行连线;(3)是用来写线所对应的坐标,即下图所示的P11等坐标;(4)加载所写完的C程序生成的.HEX文件即可以仿真。通过以上步骤,来实现抢答器设计的仿真实现,仿真如下图所示:仿真开始时的仿真如图5-1: 图5-1仿真开始时的仿真图输入密码后的仿真如图5-2图5-2输入密码后的仿真图再次输入密码后的仿真如图5-3图5-3再次输入密码后的仿真图输入新密码按下修改密码健后的仿真如图5-4图5-4输入新密码按下修改密码健后的仿真图再次输入新密码后的仿真如图5-5 图5-5再次输入新密码后的仿真图忘记密码后输入六位数后的仿真如图5-6图5-6忘记密码后输入六位数后的仿真图5.4调试故障及原因分析系统的软硬件设计都完成后,还不能直接上电运行;需要对系统进行详细的调试,以消除在设计过程中出现的各种错误。单片机系统的硬件调试和软件调试是不能分开的,很多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。所以硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段。首先应该确认电源电压是否正常,用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压。接下来就是检查复位引脚电压是否正常。分别测量按下复位按钮和放开复位按钮的电压值,看是否正确。然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的“X10”档。另一个办法是测量复位状态下的IO口电平,按住复位键不放,然后测量IO口(没接外部上拉的P0口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。另外还要注意的地方是,如果使用片内ROM的话,一定要将EA引脚拉高,否则会出现程序乱跑的情况。如果系统运行不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uF的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uF的。遇到系统不稳定时,就可以并上电容,越靠近芯片越好。系统的键盘输入电路,蜂鸣器发声电路,AT24C02密码存储电路,继电器开锁电路,液晶显示电路,这几个部分在检查硬件无误后,需要结合软件调试。可编写单独控制某一部分的程序,运行看是否可以正确控制。如蜂鸣器发声电路,可编写程序控制单片机P2.1口电平,上电运行看是否正常发声。一些无法直接观测出运行效果的电路,如键盘输入电路和密码存储电路,则需结合液晶显示器调试。如键盘输入电路,需加上按键显示程序显示被按下按键的BUFF值。结论 设计的基于单片机的电子密码锁实现了密码锁的常用功能和技术指标。在指导老师精心指导和自己的不懈努力下完成了软件和硬件的各项工作,现在系统各项功能运行正常,基本上完成了任务书中的要求和任务。系统中用LCD1602A来显示提示信息,使系统更加实用。电子密码锁最重要的方面就是具有较高的可靠性,本文设计的密码锁具有密码数据保护功能和备用电源等措施来增加系统的可靠性。在数据保护方面,应用单片机内部的eeprom,这样使硬件资源利用率大大提高。由单片机控制器系统控制密码锁在空闲状态显示当前时间的同时不断的检测那几个功能键是否被按下,如果有功能键按下,之后系统就马上进入相应的功能状态。 本设计利用单片机AT89S52作为主控芯片,配合液晶显示器LCD1602,串行传输存储器AT24C02,4*4矩阵薄膜键盘,蜂鸣器以及其他外围电路,用单片机C语言编写的控制程序,成功设计出一款利用密码开锁,可以随时改密,丰富声光提示信息,具有适用价值的电子密码锁。本系统发挥出单片机应有的价值,完成了电子密码锁的基础功能。利用单片机控制矩阵键盘输入密码,液晶显示器显示英文字符,密码锁开锁,蜂鸣器发声等部件都运转良好,密码锁运行的效果也可以正确呈现。参考文献1 孙涵芳,徐爱卿。MCS-51/96系列单片机原理及应用M。北京:北京航空航天大学出版社,19962 李广弟,朱月秀,冷祖祁。单片机基础M。北京:北京航空航天大学出版社,20073 董继成。一种新型安全的单片机密码锁J。电子技术,2004,(03)4 石文轩,宋薇。基于单片机MSC-51的智能密码锁设计S。武汉工程职业技术学院学报,2004,(01)5 吴春国,李文石。单片机控制电子锁技术剖析S。东北林业大学学报,2002,(05)6 李景宏,马学文。电子技术实验教程M。沈阳:东北大学出版社,20047 贾正松。单片机系统复位电路设计J。科技资讯,2007,(36)8 袁新燕。浅谈单片机应用系统的调试J。自动化与仪器仪表,2000,(03)9 王晖,薛永存。基于MCS-51单片机的复位电路抗干扰分析与设计J。现代电子技术,2006,(08)10 datasheet of Microcontroller AT89S52.Atmel,Inc.11 datasheet of Serial EEPROM 2K(256*8) AT24C02.Amel,Inc.12 通用LCD1602液晶显示模块使用手册(J/OL)。伟纳电子.13 51单片机综合学习系统蜂鸣器、继电器篇(J/OL)。维普资讯 .14 单片机控制继电器实验(J/OL)。电子驿站 .15 9012,9013,9014,9015,9018晶体三极管技术手册(J/OL)。电子爱好者 .16 蔡金生。SUPERPRO编程器使用指南(J/OL)。沪生电子 .附录元器件清单1) 9*15万用板2) 矩阵按键或16个小按键3) 1602液晶4) 16p插针5) 5.1k电阻*26) 1k电阻*27) 10k电阻*18) 103排阻9) 8550*210) 有源蜂鸣器11) 40脚座12) 89c5113) 10uf电容14) 30pf电容*215) 小按键16) 自锁开关17) 8脚座18) 24c0219) 12m晶振20) Led(3MM绿色)21) 电源接口22) 导线若干23) 焊锡若干24) usb电源线(电池盒+DC插头)电子密码锁整体设计图电子密码锁程序源代码#include #include#define LCM_Data P0#define uchar unsigned char #define uint unsigned int#define w 6/定义密码位数sbit lcd1602_rs=P27;sbit lcd1602_rw=P26;sbit lcd1602_en=P25;sbit Scl=P34;/24C02串行时钟sbit Sda=P35;/24C02串行数据sbit ALAM = P21;/报警sbit KEY = P36;/开锁sbit open_led=P22;/开锁指示灯bit operation=0;/操作标志位bit pass=0;/密码正确标志bit ReInputEn=0;/重置输入充许标志bit s3_keydown=0;/3秒按键标志位bit key_disable=0;/锁定键盘标志unsigned char countt0,second;/t0中断计数器,秒计数器void Delay5Ms(void);unsigned char code a=0xFE,0xFD,0xFB,0xF7; /控盘扫描控制表unsigned char code start_line= password: ;unsigned char code name = =Coded Lock=;/显示名称unsigned char code Correct = correct ; /输入正确unsigned char code Error = error ; /输入错误unsigned char code codepass= pass ; unsigned char code LockOpen= open ;/OPENunsigned char code SetNew = SetNewWordEnable;unsigned char code Input = input: ;/INPUTunsigned char code ResetOK = ResetPasswordOK ;unsigned char code initword= Init password.;unsigned char code Er_try= error,try again!;unsigned char c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论