基于AT89C51RC的红外遥控密码锁的设计与实现
就要要求了解其编码规则。一般的编码发射的一帧码含有一个引导码,用户码和键数据码。引导码由一个较长的载波波形和一段关断时间构成,它作为随后发射的码的引导。用户码和键数据码是由逻辑“0”和逻辑“1”组成的具有规定长度的字符串。
逻辑“0”和逻辑“1”是用高低电平的不同组合来表示的,那么可以用单片机的两个定时计数器,对其高低电平进行计数,具体是这样的:当单片机检测到第一个低电平,则定时计数器T0立即开始计数,等到检测到高电平出现,T0停止计数,T1又立即开始计数,在T1计数的同时,对T0的计数保存,再次出现低电平,T1停止计数,T0又开始计数,在T0计数的同时保存T1的计数,这样就有了一组低和高的组合,通过判断这个组合属于哪个范围即可译码“0”或者“1”,如此循环,直到译出所有的位。这样我们就可以根据译码所得的值命令单片机系统去完成相应的操作。要注意的是:只有键数据码参与解码,客户码是事先(由某公司或个人)规定好了的。
软件部分的设计基于汇编语言,采用模块化设计思想。以主程序为核心设置了很多功能模块子程序,是大量的功能在子程序中实现的主流程,如图5所示。
图5 主流程图
软件工作流程包括6个部分:系统的初始化、AT24C04的读写操作、校对开锁、出错报警处理、对接收的信号进行译码。初始化主要包括: MAX7219芯片、中断和定时器的初始化,以及系统参数等的初始化;对AT24C04的读写操作主要完成对原先密码进行更改或相关设置的目的,然后将更新后的密码保存到其中。校对开锁是要对输入的密码和保存在存储器中的密码相比较,相同着通过,否则要进入出错报警阶段。出错报警主要处理输入的密码和保存在AT24C04中密码不同时要进行报警1秒钟,如果报警后再次输入密码后再次报警达到3次,即3次都输入的是错误密码,那么系统将长时间报警并自锁一个小时。译码部分主要完成在遥控处理状态下对遥控器所发出的信号进行解码,以得到相应到完成相应功能的码值。
4 结论
本文的创新点在于本系统除了具有传统的固定键盘式电子密码锁系统的功能外,也就是将操作键盘固定在锁具的面板上,还增加了用遥控远端控制的功能,因此给人们带来很多便利,这一点也正是作者开发和设计此系统的根本原因。在本系统中,与以往的利用74LS164芯片驱动数码管的显示不同,在本系统中采用了更加强大的多功能串行LED显示驱动器MAX7219来实现8位稳定的静态显示,只需要单片机的三个引脚即可,可以更加方便地使用单片机的串口送出显示数据,并且其占用的时间少,方便编程及对信号的检测,与此同时本系统所设计的电源部分和解码译码部分经过反复的测试,证明了电路有极高的稳定性和译码准确性、高效性。
- 基于单片机AT89C51RC的红外遥控密码锁的设计与实现(12-09)
- 基于51单片机的红外遥控密码锁的设计与实现(11-16)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)