门禁电子密码锁说明书

发布时间:106 阅读次数:106

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

  1、微机原理及接口技术课程设计说明书 课题: 门禁电子密码锁 专业: 通信工程 班级: * 姓名: * 学号: 指导老师: 目录一、设计任务31、设计题目32、设计目的33、设计任务34、设计基本要求3二、总体方案设计与论证41、总体方案设计42、按键消抖方案设计与论证43、按键检测方案设计与论证54、数码管显示方案设计5三、总框图及总体软件设计说明51、系统总框图52、硬件模块功能说明53、软件设计说明6四、局部程序设计说明71、按键检测程序72、拆字程序83、显示程序104、核对密码程序115、中断服务程序14五、系统资源分配15六、系统功能与操作说明16七、调试记录及调试结果17八、课程设计

  2、总结17附录18一、 设计任务1、 设计题目:门禁电子密码锁2、 设计目的:通过小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高发展,通过实践的过程学习掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。3、 设计任务:设计一个以单片机为核心的门禁密码锁。具有密码开锁,不同权限的密码修改、密码输入安全设置、开门时段管理等功能。编程并在单片机实验板上模拟调试实现。4、设计基本要求:1、开机进行接口部件及数码显示器、指示灯、讯响器等自检。2、密码分为管理员密码和用户密码:管理员

  3、密码为8位09的数字,而用户密码为6位09的数字。3、设置“0”“9”的数字键及“ESC”和“ENT”等功能键。对按键输入信号须进行软件消抖处理。4、工作模式:(1)常态:数码管显示时钟。(2)开锁模式:需输入6位数字为09的密码进行开锁。密码数字可以由管理员事先设置保存共普通用户使用。(3)管理员操作模式:需输入8位09的密码,可以进行修改用户密码、修改管理员密码、修改进门时段等功能。5、常态下,八位LED 7段数码管显示时钟信息可包括小时、分钟、秒钟。6、只要按下09的数字键则转入开锁状态,每按一个数字键使数码管从左到右逐次显示“”。7、如果输入的密码为6位则和用户密码进行匹配,匹配一致则

  4、开锁,如果输入的密码为8位则和管理员密码进行匹配,匹配一致则进入管理员操作模式。8、在密码输入状态下,输入满6位或8位密码数据后,按“ENT”键才能进行密码匹配,如果没满6位或8位数字密码,按“ENT”则不作响应。9、输入的用户密码如果匹配则相应指示灯亮并且电动开门电磁铁线S开门后返回常态;如果输入不正确,则提示“E”,3S后返回常态,等待下一轮的密码输入。10、开锁模式下可以按“ESC”键取消开锁模式返回常态。11、管理员操作模式下,管理员可以选择功能,01功能代表设置用户密码、02功能代表重置管理员密码、03功能代表设置进门时间、04功能设置实时钟。利用ESC键返回常态。12、管理

  5、员操作模式下,01功能可以设置用户密码,输入新密码时需要进行确认。功能扩展提示:(选做)1、管理员操作模式下,02功能重置管理员密码;2、管理员操作模式下,03功能可以设置进门的开始时间和结束时间。只有在进门时间段输入用户密码才能开锁。如果开始时间和结束时间均设置为00:00,则为全天可以按密码开门;3、管理员操作模式下,04功能实时钟的设置,利用数字3和数字4按键实现对时和分钟的调校,按键操作时实现快调功能;4、如果在开锁模式下12S后没有按键操作则进入常态;5、如果在开锁状态下用户密码输入十次均错误则报警锁键15分钟;6、其他功能扩展。二、 总体方案设计与论证1、总体方案设计:以微处理器A

  6、T90C51为核心,利用P0,P1和P2.4、P2.5、P2.6、P2.7这些I/O口实现数据的传送;利用I2C总线芯片进行密码的核对和修改;44矩阵键盘用于密码的输入与修改以及时钟值的修改;数码管用于显示时间和密码输入和修改状态;密码输入正确后通过P2.4口控制继电器工作打开门;P1口用与读入按键状态来判断是否有按键按下然后执行相应的按键功能;P0口控制数码管的段码输出,P2.5,P2.6,P2.7连接到74ls138译码器来控制数码管的位选码输出。2、按键消抖方案设计与论证: 2.1、软件延时消抖法软件延时消抖通过调用延时子程序来判断按键是否是抖动,若是抖动

  7、,则延时后按键状态和无按键按下时状态一样,若不是抖动,则按键状态和无按键按下时状态不一样,确定为按键按下。 2.2、滚动滤波法消抖滚动滤波法通过采集按键最近的5次状态来判断是否有抖动,用5个连续的存数单元分别存按键最近的5次状态,再用2个单元来存放稳定时的状态值,每次扫描按键时把上一次的状态值都存入后一个单元,然后把当前按键的状态值存入第一个单元,这样依次进行下去,若不是抖动,则5个单元的值都相等,若是抖动,则5个单元的值不全相等;之后把5个单元相等时的值存入其中一个稳定状态存储单元,另一个则是存上一次的稳定值,当上一次稳定值是无按键按下时的值,当前稳定值不等于无按键按下时的值时,则判定为按键

  8、按下。软件延时会有一个等待按键释放的过程,因此按下按键数码管会灭一小段时间,结果不太理想,但滚动滤波法只判断按键按下的那个状态(下降沿),因此不会出现数码管灭的情况,因此采用滚动滤波法。3、按键扫描方案设计与论证: 3.1、逐行(列)扫描法逐行扫描法把行(列)线,然后观察列(行)线了,则把行首值+列值得到键值确定哪颗按键按下,若没变化在把后一行(列)线、线反转法线反转法先把行线设为输入,列线,然后读取行线的状态值暂存寄存器,然后行列线互换,列先设为输入,行线设为输出,读取列线的值之后和之前行线的值相或得到每个键的状态值

  9、,查表找出哪颗键被按下即可。逐行(列)扫描法比较麻烦,因此采用线、数码管显示方案设计:数码管显示数字时是把每个数字的段码送到数码管段选口,然后选通数码管位选码,则数码管就显示对应的数字,每个数字的段码采用查表的方式查找,把每个数字的段码都写在一个数组,通过数组下标查找到对应段码送出去显示。输入密码时数码管要显示输入的状态-,采用一个数组存储-,初始数组内容全0,数码管全灭,每输入一个密码,该数组对应位置就存入-的段码,然后通过缓冲单元输出到数码管。三、 总框图及总体软件设计说明1、 系统总框图:数码管继电器24C02单片机键盘 图12、硬件模块功能说明键盘模块:键盘共16个按键,10

  10、个是09数字键,1个返回键(ESC),1个确认件(ENT),1个设置用户密码键,1个设置管理员密码键,1个调整时钟键。当数字键是输入对应的09数字的,返回键是取消所有调整返回到常态显示时间的,确认键是对用户或管理员的操作进行确认的,管理员模式下修改密码按键才有效,调时钟按键按下则暂停时钟走时进行时间修改。按键的分配如图:注:123UU:设置用户密码;A:设置管理员密码;456AESC:返回;ENT:确认;789无ESC0ENT调时 图2数码管模块:常态下显示时间值,开锁模式下显示输入的密码状态,以-来显示,管理员模式下全部显示-,调整时间时显示所调整的时间值。继电器模块:当用户密码输入正确时由

  11、单片机发出指令让继电器工作打开门。24C02模块:保存用户密码和管理员密码,与单片机通过I2C总线C通信只有一根数据线SDA和一根时钟线SCL,通信前由单片机发出一个起始信号,之后在时钟线SCL高电平期间把数据线,在时钟线高电平期间数据先上的数据必须保持,SCL为低电平是SDA上的数据才能发生改变,当发送完一个字节后从器件24C02会向单片机发送一个应答信号,单片机接收到应答信号后可以发出终止信号终止通信。3、软件设计说明 主程序:主程序是整个程序的主体,可以对各个子程序进行调用,协调各个子程序之间的联系,控制着整个系统的工作流程。系统上电后进入

  15、开始先进行滚动存储,lb5这个数组用来存储最近5次按键状态值的,接着判断这5个单元内容是否相等,如果不等则退出该函数,相等则接着判断是否是按下,若pd1为0x0f且pd0不为0x0f则是按键按下,然后查表找到与当前按下的键状态值相等的位置,记录得到键值,执行对应键功能。查找按键按键是否按下开始程序流程如图: 否 是执行键功能返回 图42、 拆字程序代码如下:void cz() if(y=1&&(ms=0ms=4) /常态和继电器工作下拆时间单元 seg_disp0=sdmclk_value0/10; seg_disp1=sdmclk_value0%10; seg_disp2=

  17、isp6=jm_disp6; seg_disp7=jm_disp7; 拆字程序在常态不做任何调整下和打开门时把时间值存储数组里面的内容拆到数码管显示缓冲单元里面暂存,当处于开锁模式或管理员模式下则把jm_disp8数组里面的内容一一对应赋给数码管显示缓冲单元,开锁模式下,每输入一个密码,jm_disp8单元里面就回存一个-的段码,在界面上显示出密码输入的位数,管理员模式下,jm_disp8里面全部存一个相同的段码,让数码管显示当前是管理员操作界面。程序流程如图:时间拆字 界面显示拆字 Y=2或y=3? y=1? 开始 否 是 否 是返回 图53、 显示程序代码如下:void disp() in

  19、(7):LSA=1; LSB=1; LSC=1; break; if(y=0) seg=0xff; /刚启动时数码管段码全1逐个检测数码管 Delay1ms(500); /亮0.5秒 else seg=seg_dispi; /数码管显示缓冲单元的段码点亮数码管 Delay1ms(1); seg=0x00; /消除窜显刚启动系统时,显示程序逐个检测数码管,把数码管8段全部点亮,自检完成后,显示程序把数码管显示缓冲单元里的内容送出到数码管段码口点亮数码管,使之显示相应的数据,该程序里是8个数码管逐个点亮过去,每显示完一个数码管都会灭掉数码管,等下一次循环在点亮下一个数码管,目的是为了消除数码管之间

  23、x08; /恢复初始状态后返回 mimai=0x00; lock=0; ent=0; /密码没输完,确认标志重新清零密码存入缓冲单元 继电器工作(开门)密码正确? 读取正确管理员密码密码输入完成? 读取正确用户密码是用户密码?开始程序流程如图: 否 是 否 是核对管理员密码核对用户密码 错误提示 否 是 错误提示 进入管理员模式密码正确? 否 是返回 图7核对密码程序先判断密码是否输入完成,用户密码6位,管理员密码8位,若输入完成则判断是用户密码还是管理员密码,然后从24C02读取所存的正确密码进行核对,若密码是6位则进行用户密码的核对,若是8位则进行管理员密码的核对,用户密码正确则继电器工作

  25、clk_value1=60) /满1小时? clk_value1=0; /分单元清零 clk_value0=clk_value0+1; /时单元加1 if(clk_value0=24) /满一天? clk_value0=0; /时单元清零 开始T0计数中断一次时间还达不到1s,通过n1变量循环控制达到1s后再执行中断服务程序,秒单元加1,满60s后分单元又加1,满60小时时单元加1,满24小时时单元清零。程序流程如图:满1秒? 否 是秒单元加1满1分? 否 是分单元加1满1小时? 否 是时单元加1满1天? 否 是时单元清零返回 图8五、 系统资源分配表1:硬件资源分配名称功能P0口数码管段码控

  28、unsigned char记录密码输入的位数vunsigned char移位控制msunsigned charms=0不进行任何调整,ms=1调时间,ms=2设置用户密码,ms=3设置管理员密码,ms=4继电器工作六、 系统功能与操作说明该门禁电子密码锁系统通过输入数字密码来控制门的打开,常态下显示时间,当09数字键被按下时则进入开锁模式,数码管显示当前所输入的密码的状态,其中用户密码是6位,管理员密码是8位。输入6位的用户密码且按确认键后则进行开门的操作,若密码输入正确,门则打开,输入错误则显示密码错误信息E,3s后返回常态;输入8位的管理员密码且按确认键后进行管理员密码的核对,若输入正确则

  29、进入管理员模式,错误则提示错误信息E,3S后返回常态。若输入密码时长时间无按键动作则6秒后自动退出,返回常态。该系统有设置用户密码、设置管理员密码、设置时间和控制门的打开等功能。以下是每个功能的具体操作方法:1、 控制门打开功能:键盘上通过09数字键输入6位密码,按下确认键(ENT)则进行密码的核对,密码正确门打开;返回键(ESC)则取消操作,返回常态。2、 设置用户密码:键盘上通过09数字键输入8位管理员密码,按下确认键(ENT),正确则进入管理员模式,此时按下设置用户密码按键(U)则进行用户密码的修改,输入新的用户密码后确定则修改成功;返回键(ESC)取消所有操作返回常态。3、 设置管理员

  30、密码:键盘上通过09数字键输入8位管理员密码,按下确认键(ENT),正确则进入管理员模式,此时按下设置管理员密码按键(A)则进行管理员密码的修改,输入新的管理员密码后确定则修改成功;返回键(ESC)取消所有操作返回常态。4、 设置时间:按下调时按键则暂停时钟走时进行时间的调整,此时通过键盘上09数字键就可以修改时间,修改顺序:从时间的小时到分钟再到秒,最后按下确认则完成时间的修改;返回键(ESC)取消操作返回常态。七、 调试记录及调试结果调试中出现了一下问题:1、 开锁模式下密码输入位数大于8位则按下确定键无反应,返回键也无法返回常态2、 修改密码时输入6位和8位密码时不按确认键再多按几次数字

  31、键后再按确认键系统运行也乱掉3、 在修改时间时当时间输入完成不按确认键再多按几次数字键后再按确认系统也运行乱掉出现以上问题的原因是程序中没有加入容错处理,之后加入容错处理后,开锁模式下密码最多只能输入8位,满8位后再按数字键则不进行键功能处理,密码就只存前8次所输入的,后面的一律不管,修改密码和修改时间时也是一样的做法。修复后程序运行正常,不在出现以上错误,其他错误暂时没发现。八、 课程设计总结通过这次单片机的课程设计,让我对单片机有了更深一步的了解,能够更加熟练的用单片机控制外部器件去完成相应的功能,之前课堂上一直在用汇编写程序,用汇编是为了让我们对单片机内部寄存器有更深的了解,但这次课设我

  32、采用C语言编写程序,也体会到了两种语言各自的优缺点,也懂得了C对51单片机的一些操作方法,老师平时强调的程序模块化在这次的程序中也体现了出来,模块化思想也进一步加深。同时,对编写这种较长的程序也有了自己的思路,就是先搭起程序的框架,然后进行模块化的编写,然后整个程序就由这些模块组合起来,这样调试也方便,易于找错。要是想以前想起什么写什么会让程序的逻辑看起来很乱,调试起来也特别不方便,而且可读性也不高,只要程序进行模块化编写,运行时哪里出问题很容易知道是哪个模块的,然后找到相应模块去找错误,这样效率也大大提高了。这次设计用到了片外存储器24C02,里所存内容掉电不丢失,所以用来存储密码,单片机和

  33、24C02通信时用I2C总线进行的,这个模块之前也没接触过,在这次课设中也学习并懂得了I2C总行通信协议,也增加了自己在这方面的知识,学习了单片机更多的功能的使用。在之后的时间里我会更加努力,让自己在单片机方面更加熟练,对单片机的应用懂得更多。在最后这一段时间里,我会不断提升自己,朝着自己的目标发展。附录:源程序代码:/主函数main()#includereg51.h#includee_lock.h#includeI2C.huchar code sdm16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x

  1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

  2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

  3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

  5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

  7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

  2019-2020学年九年级化学上册《物质的变化和性质》练习题新人教版.docx