中断返回 =24? Y HOUR=0 Y =60? =60? Y SECOND=0,并MINITE加1 N 秒计数=0 SECOND加1 N =500? 秒计数加1 T0中断入口 显示时钟数据 MINITE=0,并HOUR加1 N
显示数据处理
图2.3.3-1 时钟运行流程图
2.3.4 时钟时、分修改子程序
在时钟运行界面是可以修改时钟的时和分,如图2.3.4-1所示,S2为时修改的按键,S3为分的修改按键.如按一下时、分加1。当分为59的时候,再按一下S3,分变为00,
20 而当时为23的时候,再按一下S2,时变为00.其流程图如图2.3.4-1所示。
图2.3.4-1 时钟时、分修改流程图 显示数据处理 Y HOUR=0 =24? HOUR加1 N Y 显示数据处理 N Y N =60? N 分按键识别成功? Y MINITE加1 MINITE=0 分按键识别成功?
2.3.5 掉电存储服务程序
当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然
21 后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中。AT24C02的时序程序如下所示。
当AT24C02的SCL引脚为高电平期间SDA引脚上产生的电平变化则表示I2C总线工作的“开始”或“停止”两种状态:当SCL为高电平,SDA由高电平转向低电平时表示“开始” 状态,而由低电平转向高电平时表示“结束” 状态。编程时要严格按照其时序要求。其时序图如图2.3.5-1所示。
图2.3.5-1 AT24C02时序图
AT24C02在读写数据时,无论是接受还是发送一个字节之后必须响应一个应答信号才能继续工作。图2.3.5-2为AT24C02的应答信号时序图。
图2.3.5-2 AT24C02的应答信号时序图
2.3.6 密码比较子程序
当输入密码后,调用AT24C02中的密码进行比较,若密码一致,就驱动开锁电路,即绿色发光二极管LED亮,若不一致,红色发光二极管LED亮,如果超过3次输入的密码不正确,此时报警电路就会响应,蜂鸣器响,以及锁住系统。其程序流程图如图2.3.6-1所示。
22
输入密码 N 密码正确 Y N+1 N N>3 Y 开锁 报警
图2.3.6-1 密码比较流程图
2.3.7 密码修改子程序
修改密码时,先输入旧密码,如果输入的密码正确,再输入新密码,否则返回;输入新密码后要求再次输入新密码,当两次输入的新密码一致时,然后存储到AT24C02中,否则重新输入新密码。修改密码时,如果连续三次输入的旧密码都不正确,报警电路响应。其程序流程图如图2.3.7-1所示。
23
输入旧密码 N 密码正确 Y N+1 输入新密码 N N>3 Y 报警 再次输入新密码 N 新密码是否一致 Y 存储密码
图2.3.7-1 密码修改流程图
3 结束语
本数字密码锁终于完成了。基本上实现了所要求的功能,能够输入密码、修改密码、报警等。从这些方面来说,与市场上的产品没有很大的区别。不过,本系统中电磁锁的部分是用发光二极管来表示。单从这点来说,差距就很大。如果要用上电磁锁,就要考虑更多方面。虽然还有些不足,其实可以做的更好。
在课程设计完成之际,我要特别感谢我的指导老师XX老师的热情关怀和悉心指导。在我撰课程设计的过程中,XX老师倾注了大量的心血和汗水,无论是在课程设计的选题、构思和资料的收集方面,还是在课程设计的研究方法以及成文定稿方面,我都得到了XX老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治
24