广东 杨旭方
随着科学技术的迅速发展和人们生活水平的不断提高,人们的安全意识也越来越强,传统机械钥匙不仅携带不方便、容易损坏,而且安全性能低,被撬事件屡见不鲜,机械锁已不能满足人们日常生活需要。电子密码锁利用软件加密、解密功能,从根本上克服了传统机械锁安全性能低的缺点,不仅使用方便、成本低,而且不用携带钥匙,寿命长,逐步成为现代家庭门锁的首要选择。
I2C总线 (Inter Integrate Circuit BUS)全称为芯片间总线,它是由PHILIPS公司开发的两线式串行总线,用于连接CPU及其外围设备。I2C总线产生于上世纪80年代,最初为音频和视频设备开发,现主要用在服务器管理中,其中包括单个组件状态的通信。I2C总线利用两根线实现全双工同步数据传送,具有连线少、可靠性高、成本低、不需要片选信号、支持热插拔等优点。
I2C总线支持主从和多主两种工作方式。在主从方式中,系统只有一个处理器,从器件的地址由I2C总线委员会分配,引脚地址决定芯片引脚外接电平。在主从方式的I2C总线系统中只需考虑主方式的I2C总线操作,没有总线的竞争等问题,系统相对简单,成本也较低,因此,密码锁采用主从工作方式设计。
I2C总线传送的数据每一个字节为8位,且高位在前,如图一所示。首先由起始信号启动I2C总线,其后为寻址字节,寻址字节由高7位地址和最低1位方向位组成,方向位表明主控器与被控器数据传送方向,方向位为“0”时,表明主控器对被控器进行写操作,为“1”时,表明主控器对被控器进行读操作,其后的数据传输字节数是没有限制的,每传送一个字节后都必须跟随一个应答位或非应答位,在全部数据传送结束后主控制器发送终止信号。
图一 I2C总线一次完整数据传输过程
密码锁硬件电路主要由AT89C51单片机、密码正误显示、AT24C02掉电存储、密码设置与输入、开锁驱动、报警以及电源等电路组成,如图二所示。
图二 密码锁硬件电路组成框图
图中,AT 89C51单片机是整个密码锁的控制中心,主要承担密码识别任务,并根据识别结果开锁或报警。AT24C02为E2PROM器件,既具有ROM掉电不丢失数据特点,又具有RAM随机读写特点,从而实现掉电保护功能。
在标准I2C总线中,总线状态监测由硬件完成,用户无须介入,但是具有I2C总线接口的MCS-51单片机毕竟不多,虽然AT89C51不带I2C总线,但只要通过软件模拟,即可达到I2C总线接口单片机功能。
在密码锁设计中,将AT 89C51的P3.4、P3.5分别作为时钟线SCL和数据线SDA,分别与E2PROM器件AT24C02的时钟线和数据线相连,根据I2C总线一次完整数据传输过程特点,通过软件模拟,调用启动(START)、停止(STOP)、发送应答位(ACK)、发送非应答位(NACK)、应答位检查(CACK)、发送一个字节数据(WRBYT)、接收一个字节数据(RDBYT)、发送 n个字节数据(WRNBYT)、接收 n个字节数据(RDNBYT)九个子程序,完成I2C总线数据传输过程。
密码锁主程序主要由单元地址定义、预置密码、用户密码输入、读设置密码、识别密码、密码正误显示等组成,如图三所示。
密码锁首先要进行初始化,主要用于定义I2C总线的数据线与时钟总线、读/写控制字节存放单元、发送/接收数据缓冲区首址以及设置密码与用户密码存放单元等。然后,系统调用预置密码子程序和输入用户密码子程序,并将两个密码进行比较,若密码一致,则驱动开锁电路实现开锁,同时通过显示器显示密码正确字符“Y”,否则,显示密码错误字符“N”,并报警提示。
图三 密码锁主程序流程图
电子密码锁作为一种新型的锁具,越来越受到人们的青睐。本文以AT89C51为主控芯片,结合AT24C02掉电存储、密码正误显示、密码设置与输入、开锁驱动等外围电路,设计了一款多种功能电子密码锁,克服了传统机械密码锁安全性能差、携带不方便的缺点,具有较高的推广价值。
[1]李建波.基于STC89C52单片机的电子密码锁.现代电子技术,2008(23).
[2]郑棣,徐迎春.基于单片机的电子密码锁设计.福建电脑,2012(9).
[3]刘振海.一种基于单片机和串行EEPROM的智能密码锁.微计算机信息,2007(23).
[4]朱璇,唐晓茜,殷建军.基于单片机的智能加密电子密码锁设计.轻工机械,2009(8).