基于单片机AT89C51RC的红外遥控密码锁的设计与实现
扫描二维码
随时随地手机看文章
1 引言
根据用户的要求和需要,主要为了解决当前市场上无遥控密码锁的问题,以提高门禁系统的可靠性和安全性,适应市场需要而设计的该红外红外遥控密码锁系统。该系统具有普通电子密码锁功能的同时,还增加了遥控功能。该锁采用6位数作为密码,总密码组有106组,完全满足用户对密码安全性高的要求。该系统具有较强的实际应用价值,所涉及的技术包括:红外载波数据传输技术、单片机控制技术、红外遥控系统编码及译码技术、电路设计与演示板制作技术等。
2 系统硬件设计与实现(单元电路设计)
2.1 硬件结构图:
系统以单片机AT89C51RC为核心。系统结构框图如图1所示。本系统的功能设计目标应该包括以下几个方面:红外发射功能模块,红外线接收转换模块、单片机模块、蜂鸣器报警功能模块、LED数码管显示模块、按键功能模块,开锁功能模块等。下面详细介绍一下各单元的硬件电路和实现的功能。
图1 红外遥控密码锁硬件结构图
2.1.1电源部分设计
本系统的电源部分使用LM7805芯片进行稳压后提供单片机5V的电压。其电源部分电路的设计如图2所示。
图2 红外遥控密码电源部分的电路原理图
该电源部分电路,使用四个1N4004二极管构成整流桥,可以输入直流或是交流9V电源,然后再通过7805稳定到5V供单片机工作。固定式三端稳压电源7805是由输出脚Vo,输入脚Vi和接地脚GND组成,它的稳压值为+5V,它属于LM78XX系列的稳压器,输入端接电容可以进一步的滤波,输出端也要接电容可以改善负载的瞬间影响,电路的稳定性也比较好。 2.1.2 红外接收头部分和LED显示部分设计
红外信号接收部分是使用KS38BL红外接收头实现的,其电路如图3所示。 图3是红外线遥控器信号接收头的简易电路,它可接收载波频率从33~57KHz的遥控器信号。100Ω电阻起到限流的作用,470uF电容滤波减少干扰。以逻辑笔接触红外线接收模块的信号输出端(OUT),便可以侦测当按下红外线遥控器某一按键时,红外线数字信号的发射。若有发射红外线数字信号则经过红外线接收模块取出数字信号数据,逻辑笔脉冲LED便会闪动。这样可以检测到当前有没有红外信号发射最简单的方法。
图3 红外线接受部分
如图4所示,系统的显示是使用MAX7219实现的8位稳定静态显示,MAX7219是串行共阴极数码管动态扫描显示驱动芯片,仅使用3线串行接口传送数据,可直接与单片机接口,用户还可以方便地修改其内部参数以实现多位LED显示,因此可以方便地使用单片机的串口送出显示数据,并且其占用的时间少,方便编程及对信号的检测。
图4 利用MAX7219设计显示部分
2.1.5密码存储部分的电路设计
为了保存用户设置的密码,该系统使用AT24C04用来保存用户设置的密码,单片机AT89C51RC的P3.6接AT24C04的SCLK口作为它的串行移位时钟,AT89C51RC的P3.7接AT24C04的SDA口作为它的串行数据或地址输入输出。该电路要注意的是SCLK、SDA必须加上一上接电阻,阻值为10K。用户设置的密码存放在AT24C04中,当需要更改或读取用户密码时,只需对AT24C04里的数据更改或读取。由于主芯片AT89C51RC没有I2C总线,故本系统采用软件程序模拟I2C总线时序来完成AT89S51来与AT24C04的连接。
2.1.6 报警电路设计
本系统设计时考虑到防盗而设计了报警电路,由蜂鸣器发声进行报警,蜂鸣器接在CPU的引脚P0.4上,通过PNP型三极管做电流放大,因此可以通过单片机控制蜂鸣器的频率及蜂鸣时间。当输入错误的密码进行开锁时,系统会报警,由P0.4口输出低电平使得PNP型三极管导通,蜂鸣器两端加电,由蜂鸣器发出1秒的报警声,当连续三次出现密码错误时,则系统会长时间报警,此举为了防止别人非法试探开锁。
2.1.7 本机处理与遥控处理功能选择电路设计
本系统设计了一个自锁按键用来选择本机处理或者遥控处理,在设置密码时一定要处于本机处理状态下,而开锁则可以选择遥控开锁也可以选择本机开锁,当此按键按下时,红灯亮表示选择了本机处理,此时可以设置密码,修改密码,也可以本机开锁,而不能遥控开锁;当此开关开没按下时,红灯灭选择遥控开锁,此时可以通过遥控器输入密码进行开锁,在遥控开锁时不能进行本机开锁以及设置密码。
3 系统软件设计
本系统有遥控处理和本机处理两种工作状态,两种工作状态相互独立。通过自锁开关K可以选择当前工作状态,当K闭合时选择本机处理,断开时选择遥控处理。遥控处理部分只有开锁功能,所以设计相对简单,而本机处理部分可以实现开锁、设置和修改密码等所有的功能。
要完成本系统功能,首先要需要解决对红外信号的译码问题,并在存储式示波仪上观察其具体波形,这就要要求了解其编码规则。一般的编码发射的一帧码含有一个引导码,用户码和键数据码。引导码由一个较长的载波波形和一段关断时间构成,它作为随后发射的码的引导。用户码和键数据码是由逻辑“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位稳定的静态显示,只需要单片机的三个引脚即可,可以更加方便地使用单片机的串口送出显示数据,并且其占用的时间少,方便编程及对信号的检测,与此同时本系统所设计的电源部分和解码译码部分经过反复的测试,证明了电路有极高的稳定性和译码准确性、高效性。