引言
以往个人资料保存、部门文件档案多用机械锁,需携带多把钥匙,使用极不方便,钥匙丢失后安全性差。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对门锁的使用要求、增加其安全性,电子密码锁应运而生,它具有防试探按键输入,智能控制上锁、报警、修改密码等多种功能f1剖。鉴于以往单片机的内部程序存储器不能由单片机自身修改,要完成修改密码功能,多采用片外串行E2PRoM实现。宏基公司生产的STC89系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能,使不具有E2PRoM的单片机具有了E2PRoM的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、门禁系统等)及需远距离改变设备参数的产品(遥控设备等)。采用STC89C52单片机设计的电子密码锁,利用内部E2PROM资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符合住宅、部门办公安全要求。
1 设计思路及软硬件实现
电子密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。锁定状态时,输出锁定信号,供外部执行机构使用,实现上锁功能;正常状态时,锁定信号消失,供外部执行机构使用,允许用户进行密码修改。
电子密码锁设计分硬件和软件部分。硬件电路见图1,包括稳压、晶振、复位、3×4键盘、指示灯、报警和电机驱动电路。软件编程思路如图1所示。
用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禁止改变FI.ASH内容;1允许改变内容。
SWBS:软件选择从用户区启动还是从ISP启动。
0从用户区启动;1从ISP启动。
SWRST:软件复位操作。0不操作;1产生软件系统复位,硬件自动清零。
读、写、擦除扇区时间由控制寄存器设置。
2.2.2 ISP TRIG命令触发寄存器
在ISP CONTR最高位ISPEN=1时,对ISPTRIG先写46H,再写B9H,读写E2PROM的命令才会生效。
2.2.3 ISP CMD命令寄存器
ISP CMD对读写或擦除FLASH进行控制,其功能见表4。
2.2.4 ISP—DATA,ISP—ADDRH,ISP—ADDRL
使用单片机内部FLASH E2PROM写入数据或擦除数据时,需要用专门的存储器存放处理的数据和地址,ISP DATA用来存放数据,ISP ADDRH用来存放地址高字节,ISP ADDRL用来存放地址低字节。
2.2.5 特殊功能寄存器的声明
2.3主要功能模块
2.3.1 允许FLASH E2PROM的操作
2.3.2 禁止FLASH E2PROM操作,清除有关寄存器
2.3.3读单片机内部E2PROM
2.3.4 写单片机内部E2PROM
2.3.5 擦除单片机内部E2PROM扇区
3 结语
采用STC89C52单片机设计的电子密码锁,实现智能电子密码锁的控制功能,克服了机械密码锁密码量少的缺点;采用内部E2PROM保存密码,比采用片外E2PROM具有更高的安全性、可靠性,可广泛用于家居、办公等智能控制系统中。
关键字:STC89C52
引用地址:
基于STC89C52单片机的电子密码锁设计
推荐阅读最新更新时间:2024-03-30 21:48
51单片机学习笔记:连续读写STC89C52RC内部EEPROM存储器
STC单片机的内部EEPROM是用DATAFLASH模拟出来的,不是真正的EEPROM存储器,不能用普通的方法来操作 下面是一些注意点: 1.字节写之前要先将这个字节所在扇区的其它有效数据读取到RAM暂存(这步不是必须的) 2.暂存完之后再对整个扇区(512字节)进行擦除操作,擦拭完后,整个扇区每个地址中数据都变成0xFF 3.将欲写入的N个字节数据,用字节写函数写入EEPROM 4.将暂存到RAM的其它有用的EEPROM值再用字节写函数写回EEPROM 5.STC用FLASH模拟出来的EEPROM的字节写功能只能将1变成0,而不能将0变成1, 只有扇区擦除后数据才是全1, 例如:在地址0x21f0处第1次写11010110,
[单片机]
STC89C52单片机的UART串行通信设计
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的,要发送 8 次才能发送完一个字节。 STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。 波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。 通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后发送 8
[单片机]
GY521 mpu-6050调试经验与教训
昨天开始接触mpu6050,在网上查了很多资料,下载程序,准备一展身手。首先看了mpu6050中文资料,之后又看了那个mpu6050的测试程序,把这些看明白之后就开始写程序了。我不是直接把程序复制过去,只是复制mpu6050的地址和初始化,IIC并没有复制,就复制我上次写的24C02的那个程序,想不到,这给了我血与泪的教训,我原来是直接把IIC复制过来的,并没有多留意。之后初始化mpu6050,写入地址,读出数据,下载到单片机之后,LCD上显示000001,我感到郁闷,之后又调试,以为是显示不对,又写显示,之后又下载,结果还是老样,这样半天就过去了。驱动没成功,又怀疑芯片或引脚有问题,继续调试,也没成功。就一一对应地看了地址,又看
[单片机]
基于STC89C52单片机的智能窗设计
当今世界,建筑智能化已成为一种发展趋势,这即是人们生活的需要,也是文明程度的体现。然而,现在人们所使用的窗户依然是传统的手动开关控制,更不用提智能化。如果有一种智能窗,不仅可以实现全自动开关窗,而且具有防盗、防雨、防风等多种功能,就会使生活变得更加安全和方便。随着科技的进步,嵌入式技术已成功应用在社会生活的各个领域中,使用嵌入式技术实现专用功能的控制系统已成为现实。 本设计提出了一种基于STC89C52单片机的智能窗系统。系统使用各种传感器对周围环境的湿度、温度、可燃气体、窗外是否有人等因素进行信号采集并传入单片机,经过单片机对数据进行分析和处理,发出动作指令,控制步进电机执行开/关窗动作。智能窗可以根据环境变化及时作出反应,通过开
[单片机]
基于STC89C52单片机的可测温式电子万年历
随着科技的发展,生活中电子万年历越来越普遍,功能也越来越多。根据人们的日常基本需求,设计一种电子万年历,可以实现测温、闹钟、秒表和语音报警等功能,为人们的日常生活提供舒适和便捷,具有重要的使用价值。 本文设计了一种基于单片机STC89C52 的可测温式电子万年历,能实时地将当前时间和周围的环境温度显示出来,并具有闹钟、秒表、语音报时的功能。万年历主要使用温度传感器DS18B20 采集温度信息,与单片机实现双向通信;时钟芯片DS1302 实现时钟,准确计时;并通过语音芯片完成整点报时和温度报警功能。该万年历电路结构简单,具有时间精确、抗干扰能力强、功耗低、可靠性高等优点。 该可测温式电子万年历主要由STC89C52、
[单片机]
一种简单实用的STC89C52RC编程器设计方案
1 引言 STC(宏晶科技)公司推出的STC 89C/S 51XX/52XX 等系列单片机,具有价格便宜、无法解密、低功耗、高速、高可靠、强抗静电、强抗干扰等优点,其指令代码完全兼容传统8051 单片机,片内资源非常丰富,且均内置可反复擦写的Flash 存储器,并提供了ISP(In-System Programming)编程模式。STC89C52RC 作为STC 89C/S51XX/52XX 系列单品机的一个典型代表,其特征主要有,8K 字节可编程闪烁存储器、1000 次写/ 擦循环寿命、10 年的数据保留时间、三级程序存储器锁定、512 内部RAM、32 可编程I/O 线、两个16 位定时器/ 计数器、5 个中断源、可编程串
[电源管理]
基于STC89C52单片机和DS18B20温度传感器实现温度采集系统的设计
随着现代信息技术的高速发展,数据采集方面的技术也在不断地向前发展,并在信息技术中占有重要地位,是否及时准确采集数据以及数据是何方式采集都成为关注的焦点。随着嵌入式技术的不断发展,各种数据采集系统不断应用于各个领域。温度采集在智能家居、工业控制、智能农业等方面都应用。本温度采集系统下位机采用STC89C52单片机为主控制器,采用DS18B20温度传感器采集温度,上位机使用VB编写程序,通过串口采集数据,存入Access数据库,并实时在界面上显示温度变化曲线。 1 系统的整体设计 本温度采集系统的总体框图如图1所示,系统下位机即单片机系统采用的是现成的开发板,开发板上自带了DS18B20的温度传感器,开发板也自带了能够维持单片机正
[单片机]
STC89C52单片机 定时器
怎么去设置定时? 例如: 定时 50微秒 首先 50000 ÷ 1.085 = 46,082.94930875576 从 0 开始加 19,453 次会溢出 这样的计算会有误差,但是影响比较小可以忽略不计 TH0 = (65535 - 46082) / 256; // 将商放在高八位 TL0 = (65535 - 46082) % 256; // 将余数放在低八位 或者 65535 - 46082 = 19453 十六进制得到:4BFD 二进制得到:0100 1011 1111 1101 将得到的十六进制分别放入 TH0 和 TL0; TH0 = 0x4
[单片机]