0引言
随着科学技术的进步和社会经济的发展,电子密码锁取代传统的机械锁已成为一种必然的趋势。以往基于单片机的密码锁系统,直接将编好的密码程序存储在片内EPROM中,但不易实现密码的修改;如要完成修改密码功能,多采用片外串行E2PROM实现。本文研究并设计的一种基于单片机的红外遥控电子密码锁,不但具有普通密码锁智能控制上锁、*、报警等特点,而且在不扩展E2PROM的情况下,可以实现8位密码任意修改的功能,节省了硬件资源,减小了系统体积,这是本设计的一个创新点。另外还增加了遥控*的特点。所以该系统不但成本低、保密性强,更适用于那些正常人体不宜接近的特殊场合,比如高辐射区、高传染区等。
1 系统硬件设计方案
1.1 系统总体设计
系统主要由红外发射模块和本机处理接收模块两部分构成,系统总体设计框图如图1所示。发射模块和本机处理接收模块的核心分别采用AT89C2051和AT89S52单片机。红外信号的收发通过串口进行通信,两部分的串口工作方式及通信波特率的设置相同。
AT89C2051单片机是AT89C51的一种精简版本,只有20个引脚,体积小;具有2.7~6 V的宽电压工作范围;具备低功耗空闲和掉电模式。该单片机满足本系统低电压供电、低功耗、方便随身携带的要求。
在本机处理接收模块中,采用了AT89S52单片机,该单片机有3个定时器。设置密码和按键*时,均设计了按键间隔超过3s自动复位的功能,分别采用定时器T0和T1定时实现;定时器T2设置串口通信波特率。
1.2 红外发射模块的设计
红外发射模块仅仅是一手持遥控器,由AT89C2051单片机及键盘电路、按键K及红外发光二极管组成。发射电路原理图如图2所示。
发射模块设置的密码必须与本机接收模块相同(设置密码方法见2.2.1节),所设密码保存在RAM存储器的31H~38H单元。在待机状态下,系统工作在空闲方式,当按键K按下时,系统上电工作,依次发送密码信号。这样做的优点是,密码不但能跟随主机任意改动,而且遥控*时,仅按一键就可完成*,方便了用户。
1.3 本机处理接收电路的设计
本机处理接收电路的控制核心是AT89S52单片机。外接键盘电路、红外接收电路、*电路、报警电路和按键指示电路等,电路原理图如图3所示。
1.3.1 红外接收电路的设计
红外接收电路中使用一体化红外接收头TLl838接收红外信号。TLl838集红外接收和放大于一体,不需任何外接元件,就能完成从红外接收到输出与TTL电平兼容的所有工作,而体积和普通的塑封三极管大小一样。TL1838的输出波形如图4所示。当接收到频带内的红外信号时,TLl838会输出低电平,否则数据高电平,从而将“时断时续”的红外信号解调成原来的连续方波信号。
1.3.2 报警电路的设计
报警电路采用了蜂鸣器发声模拟报警,蜂鸣器接在CPU的引脚P2.1上,通过NPN型三极管做电流放大,通过单片机控制蜂鸣器的频率及蜂鸣时间。当输入错误的密码进行*时,由P2.1口输出高电平使得NPN型三极管9014导通,蜂鸣器两端加电,由蜂鸣器发出3 s的报警声,当连续三次出现密码错误时,系统将长时间报警,有效起到了防盗作用。
1.3.3 电源电路的设计
电源部分使用LM7805芯片进行稳压后提供单片机5 V的电压,其电路如图5所示。主要采用家用交流电,同时采用9 V电池作为备用电源。这样做的优点是,即使断电也不至于无法*。
1.3. 4 其他外围电路的设计
由于AT89S52单片机有4个并行输入输出口,硬件资源比较充足,键盘电路采用了相对简单的独立式按键;电路中用一继电器控制一绿色发光二极管代替具体的锁,当密码正确时,*5 s,然后自动上锁;P2.O口接一红色发光二极管,用其亮与灭来提醒用户按键是否按下。这样既巧妙地提醒了用户又有效地保护了密码。
2 系统软件设计及实现
软件部分的设计基于汇编语言,采用模块化设计思想,以主程序为核心设置了多个功能模块子程序。主程序主要起到一个导向和决策功能,决定什么时候系统该做什么,系统的各种功能主要是通过调用具体的子程序来实现。
2.1 红外发射模块程序的设计
发射模块的编码与调制工作是由软件编程实现的。当按键K按下时,密码信号依次送往数据缓冲器SBUF,然后利用“0”电平调制、“1”电平不调制的方法,将二进制信号调制成频率为38.5 kHz的间断脉冲串信号,通过P3.O口输出,驱动红外发光二极管,最后以波长940 nm的红外光发出红外遥控信号。红外发射模块程序流程图如图6所示。
38.5 kHz已调波的实现是依据汇编语言具有严格的指令周期来实现的,低电平与高电平均持续13个机器周期,这里采用的时钟晶振是12 MHz,所以产生的调制波的精确频率为38.46 kHz。
2.2 本机接收处理模块程序的设计
本机处理部分可以实现密码设置和修改、本机按键*、按键提示、密码错误报警、超次提示、遥控*和按键之间超过3 s自动复位等所有的功能。本机处理的主程序流程图如图7所示。
2.2.1 密码设置子程序的设计
系统只有内部上电复位的时候才能设置或者修改密码。当系统复位时,即进入了等待用户按键设置新密码状态,用户输入的8位密码依次保存在RAM存储单元的41H~48H单元。当8位密码设置完成后,蜂鸣器鸣响1 s提示密码已成功设置。当按键*时,输入的密码依次和RAM存储器中41H~48H单元的数相比较,只要有1位不相同,门锁不但不能打开,而且还发出报警信号。
2.2.2 按键间隔超时的判断及复位
前文提到了当按键间隔超过3 s有自动复位的功能,设置密码和按键*时分别采用定时器T0和T1来实现。两定时器均设为50 ms定时中断,连续产生60次中断的时间是3 s。当确实有键按下并弹起时,打开相应定时器中断并允许其计数。假如在下一按键按下时,发生定时中断还不到60次,则定时器停止计数并重设计数初值及定时中断次数;如果在下一按键按下之前,定时器已发生60次中断,表示3 s已到,则系统自动进行软件复位。设置密码时按键间隔超时的复位程序代码如下:
以上程序当执行完RETI指令后,PC指针指向0000H,程序从地址0000H处开始执行,即实现了软件复位。
当键盘*时,如果按键间隔超过3 s,这时的程序“复位”并不是从地址0000H处执行,而是回到“密码设置结束提示音”后的那一条指令处开始执行,利用单步执行指令的方法得到了此条指令的地址:0FC00H。
3 结语
该设计的亮点在于没有扩展任何E2PROM的情况下,实现了任意修改密码的功能,且采用软件复位的方法取消无效按键。