为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

电子密码锁

2011-09-05 11页 doc 102KB 27阅读

用户头像

is_268827

暂无简介

举报
电子密码锁机电信息工程学院 机电信息工程学院 单片机系统课程设计报告 系: 自动化系 专 业: 自动化 班 级: 081班 设计题目: 电子密码锁 学生姓名: 阮晓越 苏莉立 指导教师: 刘岩川 张艳 完成日期:2011年3月18日 目 录 TOC \o "1-2" \h \z \u 一、设计任务和性能指标 2 1.1设计任务 2 1.2性能指标 2 二.设计方案 2 三、系统硬件设计 3 HYPERLINK \l "_Toc168796760" 3.3 复位电路 8 HYPERLINK \l "_Toc168796761" 3.4 振...
电子密码锁
机电信息学院 机电信息工程学院 单片机系统课程设计报告 系: 自动化系 专 业: 自动化 班 级: 081班 设计题目: 电子密码锁 学生姓名: 阮晓越 苏莉立 指导教师: 刘岩川 张艳 完成日期:2011年3月18日 目 录 TOC \o "1-2" \h \z \u 一、设计任务和性能指标 2 1.1设计任务 2 1.2性能指标 2 二.设计 2 三、系统硬件设计 3 HYPERLINK \l "_Toc168796760" 3.3 复位电路 8 HYPERLINK \l "_Toc168796761" 3.4 振荡电路 8 HYPERLINK \l "_Toc168796764" 3.7 电动锁 10 12 四、系统软件设计 13 HYPERLINK \l "_Toc168796768" 4.1 软件设计流程图 14 HYPERLINK \l "_Toc168796769" 4.2 具体功能软件实施 15 五、调试及性能 16 5.1调试步骤 16 5.2性能分析 16 六、心得体会 17 参考文献 18 附录1 系统硬件电路图 19 附录2 程序清单 20 一、设计任务和性能指标 1.1设计任务 利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个电子密码锁,其中4*4小键盘主要用来输入密码、修改密码或者修改时间,LCD显示器则用来显示时间以及显示用户所输入的密码。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有较强的可读性)。 1.2性能指标 LCD模块用来提示用户所输入的密码,平时可以显示时间和日期。当本系统加上电源时,LCD模块会显示日期和时间。 此时,用户可以在4*4小键盘输入密码,而所输入的密码则显示在下一行中。 2. 当用户按下4*4小键盘的按钮A时,可以修改时间。 3. 当用户按下4*4小键盘的按钮B时,可以输入密码。此时,用户可以在 4*4小键盘输入密码,而所输入的密码则显示在下一行中。 4. 2.设计方案 按照系统设计的功能的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示。主控芯片使用51系列AT89C52单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。 时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302。采用DS1302作为主要计时芯片、可以做到计时准确。更重要的是,DS1302可以在很小的电流的后备电源(2.5~5.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流对后备电源进行慢速充电,可以保证后备电源基本不耗电。采用串行数据传输,与单片机硬件连接简单,如果使用时钟芯片DS12887,将采用并行数据传输,占用更多的硬件资源。因此为节省单片机端口,时钟芯片采用DS1302。 图 2..1 日历时钟显示系统构成框图 显示模块采用普通的共阴LED数码管,也可采用LCD显示,但考虑其造价较高浪费资源,故使用LED显示。键盘采用线性连接,连接方式相对简单,使用查询法实现调整功能。 三、系统硬件设计 3.1单片机的最小系统 ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用11.0592MHz,复位电路采取按键复位方式。具体连接见附录1。 3.2时钟电路DS1302 1.DS1302的性能 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 用于高速数据暂存的31*8位的RAM; 最少引脚的串行I/O; 2.5-5.5V的电压工作范围; 2.5V时耗电小于300nA; 用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; 简单的3线接口; 可选的慢速充电(至Vcc1)的能力。 DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带AM(上午)/PM(下午)的12h。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。DS1302有主电源和后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源,在这种运用方式中,Vcc1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。 2.DS1302数据操作原理 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248个字节数。 如果在传送过程中置RST脚为低电平,则会中止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST脚必须保持低电平.只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图3.1所示,表3.1为各引脚功能。 图3.1 DS1302引脚及内部结构 表3.1 DS1302引脚功能 引脚号 引脚名称 功 能 1 Vcc2 主电源 2,3 X1,X2 振荡源,外接32.768KHZ晶振 4 GND 地线 5 RST 复位/片选线 6 I/O 串行数据输入/输出端(双向) 7 SCLK 串行数据输入端 8 Vcc1 后备电源 DS1302与单片机的具体连接见附录1,它的控制字如图3.2所示。控制字的最高有效位(位7)必须是逻辑1;如果为0,则不能把数据写到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5-1(A4-A0)指示操作单元的地址。最低有效位(位0)如果为0,表示要进行写操作;为1表示要进行读操作。控制字节总是从最低位开始输入/输出。 7 6 5 4 3 2 1 0 1 RAM CK A4 A3 A2 A1 A0 RAM K 图3.2 DS1302的控制字 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟有关,存放的数据为BCD码形式。其日历、时间寄存器及其控制字见表2.2,其中奇数为读操作,偶数为写操作。DS1302的晶振选用32.768KHz。 3.3显示电路的设计 显示部分采用普通的共阴数码管显示,使用动态扫描,以便减少硬件电路。考虑到一次扫描7位数码管显示时会出现闪烁情况,设计时采用多次调用显示子程序解决这个问题。驱动数码管的芯片采用驱动能力较强的74HC373,使用单片机的P0口作为并行输出,74HC373是高电平锁存,用P1.4口作为74HC373时钟控制端口,即置‘1’控制端。由于数码管采用共阴接法,使用P2.0口-P2.6口作为数码管的位选,同时加入74LS04作为反向驱动。74HC373在得到高电平后,将8位数据锁存,并行输出送至数码管各段选控制口。 由于P0口内部无上拉电阻,因此需要采用外接上拉电阻的方法,以提高带负载能力,同时还使用发光二极管来指示阴历的闰月。具体连接见附录1。 3.4键盘接口的设计 键盘只有4个,其中1个用于单片机上电复位,其余三个用普通按键接10KΩ上拉电阻,分别控制移位(对应硬件电路图中的S4键,)、翻屏(对应硬件电路图中的S3)、加一键(对应硬件电路图中的S2),使用查询法来完成读键功能。其具体连接见附录1。 四、系统软件设计 4.1主程序设计 因为使用了时钟芯片DS1302,阳历只需从DS1302各寄存器中读出年、周、月、日、时、分、秒等数据,再经处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。然后调用阴历更新程序,根据阳历日期推算出阴历日期。 在调用更新阴历程序后,要读取键值。此时如果控制键有效,则进入时间调整部分。调整时间用3个调整按键,1个作为移位、控制用,1个定义为控制按键,用于翻屏,另外1个按键用作加1键。在调整时间过程中,要调整的位与未调整位应有所区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁的原理就是,让调整的一位每隔一定时间熄灭一次,利用计数器0,方式1,初值设为0,因为晶振为11.0592MHZ,所以当计数达到60ms左右时会溢出,让计数器T0中断6次,就送给调整位熄灭符,再次中断6次时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。 主程序流程图见图4.1。 4.2阴历子程序设计 阴历程序的实现是依靠阳历日期来推算的。要根据阳历来推算阴历日期,首先要设计算法。推算的方法是根据阳历当前日期在一年中的天数来计算阴历日期。计算出的阳历天数为该年的第几天,存放在R2和R3中。计算出天数后,如果大于#FFH,则把#FFH存放在R2中,余数存放在R3中。由于整体算法很复杂,需要计算从2000年到2050年阴、阳历之间的关系,制成表格,用DPTR查表的方法来送显示,因此这里只给出流程图解释说明,阴历程序流程图如图4.2和图4.3所示。 4.3显示子程序设计 为编程方便将翻屏部分放到了显示子程序中,在子程序入口首先判断翻屏键是否有效,如果有效将翻屏标志位加1,取相应的显示缓冲区首地址,即从另一存储单元开始显示,达到翻屏效果。373为高电平锁存,其CLK端接单片机P1.4,在给它地址锁存信号时只需将P1.4置1,应注意置1后要将其归0,方便锁存。程序流程图如图4.5所示。 五、调试及性能分析 5.1调试步骤 调试分为硬件调试和软件调试。 硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。具体步骤及测试结果如下: (1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,测试结果所有连接线都已连接好; (2)检验DS1302和单片机的晶振是否起振,用示波器观察波形;测试结果波形都很好; (3)检查各芯片的功能是否正常,检测按键的导通情况。测试结果正常。 软件调试主要是程序调试,将整个日历时钟显示程序按照实现功能分为各子模块进行调试,首先都要在实验台上进行调试。具体步骤如下: (1)显示程序调试。在单片机实验课中我们已经做过LED显示实验,所以这部分相对简单,很快便调试无误了。我们设计的硬件显示部分与实验台虽然并不相同,但相差并不多,经改动后在单路板上也调试通过了; (2)时间调整程序的调试。这部分也先在实验台上调试过,此时显示程序已经无误,我们直接观察数码管的显示情况,首先在单片机的内存单元中置成了当时的时间,然后看时间调整键是否好用,这部分在实验台上调试无误后可直接在电路板上使用; (3)阴历子程序的调试。由于阴历程序非常长,我们在敲完程序后就检查了几便。其调试方法是在存放阳历的内存单元中置成当天的日期,在程序执行后看转换的是否正确。阴历子程序主要是根据参考书编写的,在调试过程中发现在阳历为一月份时转换的不对,经我们在实验台上单步调试找到了错误的原因,阴历子程序调试成功,在电路板上直接使用即可 (4)阳历日期和时间的读取。实验台中并没有时钟芯片,这部分只能在电路板焊接完成后才能进行调试,经我们查阅资料后,这部分在电路板上一次性通过。 5.2性能分析 单片机上电复位后,七个数码管显示为全零状态,这是因为还没有给DS1302初值,它此时并没有开始振荡,所以从DS1302读取的值都是0;按下控制键进入时间调整状态,此时在我们调整哪一位时哪一位就会处于闪烁状态,按下加1键被调整的那一位就会加1,而且没有按键抖动现象;在给DS1302写入初值后,它开始振荡,通过移位控制键、翻屏键的作用可以查看显示的年、月、日、周、时、分、秒是否正确,在调试时我们写入的初值是当时的时间:06年12月21日14点55分,通过翻屏,可以看到数码管显示的很稳定,时间的显示也很准确;在翻到显示阴历那一屏是可以看到当时的阴历日期是十一月二日,阴历转换没有错误;当我们将日期置为2006年9月1日时,因为当天是阴历闰七月的初九,用于指示阴历闰月的发光二极管正常发光。 由于课程设计时间比较短,我们没有大量的时间去观察时钟走的是否精确,在走过一段时间后时间显示上可能会有一定的误差,我们可以再外接GPS,采用GPS授时校正,提高时间的精度。我们的日历可以把阳历任意置成某一天然后查看当时的阴历是几月初几,实现了阴历的自动转换,星期的自动转换也可以编写程序实现,这样既可以跳到指定日期查看阴历,也可以查看当天是星期几了,所以我们的日历在性能上还有不完善的地方,在以后的学习当中,我们将尽力把这些功能也完善好。 六、心得体会 这次课程设计是对我们学习微机原理及单片机课程的检验及实际应用能力的一次提高。我们所设计的是电子日历时钟显示系统。所能指示的时间范围从2000年到2050年。由于是时间显示系统,因此在时间显示上我们力求做到精准。时钟芯片DS1302本身并无阴历计数功能,因此我们采用软件实现了阳历到阴历的部分。阴历算法十分复杂,我们找到相关资料,实现阳历与阴历的转换。显示部分是整个系统的核心部分,因此我们重点集中在这一部分的模块调试上。由于我们采用的是P0口作为并行输出,但却没有考虑到其内部无上拉电阻,P0口输出电压较低,因此数码管无法显示。我们在老师的帮助下加入了上拉电阻,数码管开始正常显示,但亮度不够,我们仔细的分析了用于驱动数码管显示的74HC273,终于找到了其中的原因。74HC273驱动能力不强,输出电压不够,导致了数码管显示不清晰,为此我们改变了驱动芯片,使用74HC373作为显示驱动芯片,数码管的显示终于达到了预期的较为理想的效果。为了更逼近真实的情况,在调整时间时我们又加入了闪烁程序,以示区别。 原理图的设计时我们使用了Protel 99 SE这个强大的绘图工具,由于一些实际的器件在器件库中无法找到,我们只有自己制作,在这个过程中我们学到了很多的知识和方法。在制作PCB印刷电路板的时候,很多器件的封装与实际尺寸存在很大的差别,为了获得准确的封装,我们实际测量了所给器件的大小与规格,自己制作与之匹配的封装库,这让我们明白实践是出真知的唯一途径,只有亲自动手,实际才能测试才能获得最可靠的设计数据。当然我们也出现了严重的失误,由于对电源与地的距离估计不足,导致两者过近,出现了短接的危险。因此我们不得不重新处理这个问题,这个教训也告诫了我们,对于任何小的细节都不能掉以轻心,小的疏忽也会造成大的损失。对于电路图和电路板都应当采取科学谨慎的态度,这是保证是的基本实验结果产生的前提,在正式焊接前,对电路板的核查测试应当细心备至,反复检测才不会导致最终的失败。 程序的编写过程也给了我们很大的收获。在编写程序之前,我们查阅了大量的相关资料,力求做到清晰。在把握了整体的思路后,我们先从程序流程图着手, 将整个程序分成若干模块,分开编写,一边发现问题一边解决问题,并在实验板上检验程序测试情况,根据现象不断修改。在这个过程中我们体会到编程的技巧,设置子程序的合理性,同时对单片机最小系统的设计有了整体的理解和深刻的体会,使我们的思维的锻炼与能力培养有了很大的提高和长足的进步。 本次课程设计虽然时间很短,但收获却很大。首先我们对单片机最小系统的设计有了整体的把握,对程序编写的合理与规范性有了深刻的理解,建立起程序设计的一般思路,以及Protel 99 SE的使用方法,其强大的功能给我们提供了很大的帮助,通过原理图的设计过程,使我们认识到了这个软件的重要性,我们会以此为契机,在日后的学习中会继续使用它,使其发挥更大的功能。 经过三个星期的课程设计,我们得到了充分的锻炼,不仅对单片机的学习有了深刻的理解,同时也增强了我们的毅力和处理突发问题的能力。学习是要付出一定的艰辛与努力的,做事情一定要有不怕困难的吃苦精神,唯有坚持不懈,发扬团队协作才能够克服困难,取得最后的胜利。 相信本次课程设计对我们以后的学习将会有很大的影响,我们一定会积极地总结经验与教训,改进不足,争取在日后做得更好。当然要感谢老师和同学们的帮助,在我们束手无策,陷入困境的时候给予热情的帮助,使我们顺利渡过难关。 课程设计是一次很好的实践动手机会,通过实践,我们的知识得到了应用,真正实现了知识的学以致用,理论联系实际,我们会更加注重实践能力的锻炼,注重动手能力的培养。 参考文献 [1] 徐维祥、刘旭敏. 单片微型机原理及应用. 大连:大连理工大学出版社,1996 [2] 李光飞、楼然苗、胡佳文、谢象佐. 单片机课程设计与实例指导. 北京: 北京航空航天大学出版社,2004 [3] 余永权. 89系列FLASH单片机原理及应用. 北京:电子工业出版社,2002 [4] 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,2001 [5] 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,2003 附录1 系统硬件电路图 附录2 程序清单
/
本文档为【电子密码锁】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索