background image

                           基于 STC89C52 单片机的电子密码锁
以往个人资料保存、部门文件档案多用机械锁,需携带多把钥匙,使用极不方便,钥匙丢失后安全性差。随着科
学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对门锁的使用要求、增加其
安全性,电子密码锁应运而生,它具有防试探按键输入,智能控制上锁、开锁、报警、修改密码等多种功能。鉴
于以往单片机的内部程序存储器不能由单片机自身修改,要完成修改密码功能,多采用片外串行

E2PROM 实现。

STC89 系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能,使不具有 E2PROM 的单片机
具有了

E2PROM 的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、

门禁系统等

)及需远距离改变设备参数的产品(遥控设备等)。采用 STC89C52 单片机设计的电子密码锁,利用内

E2PROM 资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符

 

合住宅、部门办公安全要求。

 

设计思路及软硬件实现

  电子密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。锁定状态时,输出锁定信号,供外部执
行机构使用,实现上锁功能;正常状态时,锁定信号消失,供外部执行机构使用,实现开锁功能,并允许用户进

 

行密码修改。

  电子密码锁设计分硬件和软件部分。硬件电路见图

1,包括稳压、晶振、复位、3×4 键盘、指示灯、报警和电

 

机驱动电路。

  用

1 个无符号字符型数组 Val_Code 和 1 个无符号字符型变量 Val_Num 来存放键盘输入的数据大小和输入个

数。程序启动或复位后,清空数组

Val_Code 和变量 Val_Num,并初始化定时器、报警器;进入锁定状态时,启

动报警功能,如发现用户按下 开锁 键,则读入从微键盘输入的数字序列,更新数组

Val_Code 和变量

Val_Num;然后比较数组 Val_Code 与单片机内部 E2PROM 中的密码是否相同,如密码相同则开锁、执行开锁动
作、输出开锁信号、进入正常状态,否则继续等待用户开锁

(为防止非法用户恶意多次试探密码,可在程序中设置

当连续三次输入错误密码后自动报警,直至开锁后解除

)。在正常状态时,可以进行重新设置密码、上锁等操作,

重新设置密码时,首先验证原始密码,如相同则可进行密码更改,然后将新密码保存至单片机内部

E2PROM

 

中。

2 STC89C52 单片机内部 E2PROM

 

及使用

2.1 STC89C52RC 单片机内部 E2PROM 

STC89C52 单片机中有 2 kB 的 E2PROM 存储器,分 8 个扇区,每个扇区 512 B,擦写次数可达 10 万次以上,

写人数据有效保存时间可达

100 年。片内 DataFlash(E2PROM)地址如表 1

 

所示。

2.2 

 

相关特殊功能寄存器

与使用

STC89C52RC 单片机内部 E2PROM 有关的特殊功能寄存器见表 2  

2.2.1 ISP CONTR

 

控制寄存器

ISP_CONTR 控制寄存器的功能见表 3  

ISPEN:功能允许位。0 禁止改变 FLASH 内容;1

 

允许改变内容。

SWBS:软件选择从用户区启动还是从 ISP 启动。0 从用户区启动;1 从 ISP

 

启动。

SWRST:软件复位操作。0 不操作;1

 

产生软件系统复位,硬件自动清零。

 

读、写、擦除扇区时间由控制寄存器设置。

2.2.2 ISP_TRIG

 

命令触发寄存器

ISP_CONTR 最高位 ISPEN=1 时,对 ISP_TRIG 先写 46H,再写 B9H,读写 E2PROM

 

的命令才会生效。