门禁电子密码锁单片机课程设计说明书

上传人:shaoy****1971 文档编号:108175465 上传时间:2019-10-22 格式:DOCX 页数:41 大小:435.75KB
返回 下载 相关 举报
门禁电子密码锁单片机课程设计说明书_第1页
第1页 / 共41页
门禁电子密码锁单片机课程设计说明书_第2页
第2页 / 共41页
门禁电子密码锁单片机课程设计说明书_第3页
第3页 / 共41页
门禁电子密码锁单片机课程设计说明书_第4页
第4页 / 共41页
门禁电子密码锁单片机课程设计说明书_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《门禁电子密码锁单片机课程设计说明书》由会员分享,可在线阅读,更多相关《门禁电子密码锁单片机课程设计说明书(41页珍藏版)》请在金锄头文库上搜索。

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

2、结果17八、课程设计总结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、输入的用户密码如果匹配则相应指示灯亮并且电动开门电磁铁线圈通电1S开门后返回常态;如果输入不正确,则提示“E”,3S后返回常态,等待下一轮的密码输入。10、开锁模式下可以按“ESC”键取消开锁模式返回常态。11、管理员操作模式下,管理员可以选择功能,01功能代表设置用户密码、02功能代表重置管理员密码、03功能代表设置进门时间、04功能设置实时钟。利用ESC键

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

6、案设计:以微处理器AT90C51为核心,利用P0,P1和P2.4、P2.5、P2.6、P2.7这些I/O口实现数据的传送;利用I2C总线通信协议和24C02芯片进行密码的核对和修改;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、逐行(列)扫描法逐行扫描法把行(列)线其中一位置为0,然后观察列(行)线电平变化,若为0了,则把行首值+列值得到键值确定哪颗按键按下,若没变化在把后一行(列)线置为0,依次扫描过去。 3.2、线反转法线反转法先把行线设为输入,列线设为输出且输出0,然后读取行线的状态值暂存寄存器,然后行列线互换,列先设为输入,行线设为输出,读取列线的值之后和之前行线的值相或得到每个键

9、的状态值,查表找出哪颗键被按下即可。逐行(列)扫描法比较麻烦,因此采用线反转法。4、数码管显示方案设计:数码管显示数字时是把每个数字的段码送到数码管段选口,然后选通数码管位选码,则数码管就显示对应的数字,每个数字的段码采用查表的方式查找,把每个数字的段码都写在一个数组,通过数组下标查找到对应段码送出去显示。输入密码时数码管要显示输入的状态-,采用一个数组存储-,初始数组内容全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总线协议进行通信,I2C通信只有一根数据线SDA和一根时钟线SCL,通信前由单片机发出一个起始信号,之后在时钟线SCL高电平期间把数据线SDA上的数据发送给24C02,在时钟线高电平期间数据先上的数据必须保持,SCL为低电平是SDA上的数据才能发生改变,当发送完一个字节后从器件24C02会向单片机发送一个应答信号,单片机接收到应答信号后可以发出终止信号终止通信。3、软件设计说明 主程序:主程序是整个程序的主体,可以对各个子程序进行调用,协调各个子程序之间的联系,控制着整个系统的工作流程。系统上

12、电后进入主程序,先对系统各个模块自检,后对系统初始化,之后就循环进行主流程工作。主程序流程图:控制工作拆字按键检测初始化开机自检开始显示核对密码 图3四、 局部程序设计说明1、 按键检测程序代码如下:void sm_key() int i=0,j;uchar a,b,c,k;key=0x0f;lb4=lb3;lb3=lb2;lb2=lb1;lb1=lb0;lb0=key; /滚动滤波存储for(j=0;j4;j+) if(lbj!=lbj+1) /还要有两个单元不相等则退出函数 return; k=lbj+1; pd1=pd0; pd0=k; /稳定状态的值存入pd1和pd0 if(pd1=0

13、x0f)&(pd0!=0x0f) /pd1是0x0f,pd0不是0x0f则按下 key=0x0f; a=key&0x0f;key=0xf0; b=key&0xf0;c=a|b; /线反转后键状态值存入cwhile(c!=key_codei) i+; /查找第几个按键按下keyvalue=i;if(y=0) seg=sdmkeyvalue; /按键对应段码送出显示 x+; /记录按键按下次数 return; switch(keyvalue) /执行相应按键功能 case(0):k0(); break; case(1):k1(); break; case(2):k2(); break; case(3):k3(); break; case(4):k4(); break; case(5):k5(); break; case(6):k6(); break; case(7):k7(); break; case(8):k8(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号