![硬件电路](http://www.21ic.com/d/file/201106/7ebd637573f914b5fa91f6f6d032addc.jpg)
用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所示。
![STC89C52RC单片机内部Data Flash(E2PROM)地址](http://www.21ic.com/d/file/201106/9d7fefa5ab78a1895c5d170515193018.jpg)
2.2 相关特殊功能寄存器 与使用STC89C52RC单片机内部E2PROM有关的特殊功能寄存器见表2。
![与单片机内部(E2PROM)有关的特殊功能寄存器](http://www.21ic.com/d/file/201106/074524dda76a00803f580d5cc606dc15.jpg)
2.2.1 ISP CONTR控制寄存器 ISP CONTR控制寄存器的功能见表3。
![lSP—CONTR控制寄存嚣功能](http://www.21ic.com/d/file/201106/8c40c1cd64050a4096f0c58d2a7ffbba.jpg)
ISPEN:功能允许位。0禁止改变FI.ASH内容;1允许改变内容。 SWBS:软件选择从用户区启动还是从ISP启动。 0从用户区启动;1从ISP启动。 SWRST:软件复位操作。0不操作;1产生软件系统复位,硬件自动清零。 读、写、擦除扇区时间由控制寄存器设置。
![电子密码锁设计流程图](http://www.21ic.com/d/file/201106/54571899102109fd0a70e958cb5a656f.jpg)
2.2.2 ISP TRIG命令触发寄存器 在ISP CONTR最高位ISPEN=1时,对ISPTRIG先写46H,再写B9H,读写E2PROM的命令才会生效。 2.2.3 ISP CMD命令寄存器 ISP CMD对读写或擦除FLASH进行控制,其功能见表4。
![ISP—CMD命令寄存器功能](http://www.21ic.com/d/file/201106/768abeb055302bca8f04aa169ae658a3.jpg)
2.2.4 ISP—DATA,ISP—ADDRH,ISP—ADDRL 使用单片机内部FLASH E2PROM写入数据或擦除数据时,需要用专门的存储器存放处理的数据和地址,ISP DATA用来存放数据,ISP ADDRH用来存放地址高字节,ISP ADDRL用来存放地址低字节。 2.2.5 特殊功能寄存器的声明
![](http://www.21ic.com/d/file/201106/d57283bf78c566a4f75350b7a6da1b6c.jpg)
2.3主要功能模块 2.3.1 允许FLASH E2PROM的操作
![](http://www.21ic.com/d/file/201106/e2140a8657c4f27997d050783ca352f5.jpg)
2.3.2 禁止FLASH E2PROM操作,清除有关寄存器
![](http://www.21ic.com/d/file/201106/e868d8cd48ae869e2075397d860b8401.jpg)
2.3.3读单片机内部E2PROM
![](http://www.21ic.com/d/file/201106/a5429f2d0dc6e124ea88f74c77a975b8.jpg)
2.3.4 写单片机内部E2PROM
![](http://www.21ic.com/d/file/201106/2389555b7f194170867bbd303ac6d2ce.jpg)
2.3.5 擦除单片机内部E2PROM扇区
![](http://www.21ic.com/d/file/201106/ae186555e5233ab826eda98b54dc7d1a.jpg)
3 结语 采用STC89C52单片机设计的电子密码锁,实现智能电子密码锁的控制功能,克服了机械密码锁密码量少的缺点;采用内部E2PROM保存密码,比采用片外E2PROM具有更高的安全性、可靠性,可广泛用于家居、办公等智能控制系统中。