基于C语言STC89C52单片机电子密码锁的设计
- 格式:doc
- 大小:301.00 KB
- 文档页数:34
基于STC89C52的电子密码锁设计摘要该设计是基于STC89C52单片机的电子密码锁,以STC89C52单片机为硬件核心,结合4×4矩阵键盘电路,LCD显示电路,密码存储电路,开锁电路和声音报警电路等外围电路。
利用单片机灵活的编程方法和丰富的I/O端口,该系统能实现密码的输入,清除,密码正确开锁,密码错误报警,用户修改密码等功能。
本系统成本低廉,功能实用。
关键词:密码锁;单片机;液晶显示;声音报警Password motorcycle alarmAbstractThis paper introduces a design of electronic passward lock which is backed on the SCM of STC89C52. This design uses the SCM of STC89C52 as hardware core , combining with other peripheral circuits such as 4×4 matrix keyboard interface circuit, passward storage circuit, LCD display circuit, unlock circuit and voice alarm circuit. Using the flexible programming and the rich I/O port of the SCM, the system can accomplish the following functions:input ,clear or compare the password, unclock when the password is correct, alarm when the wrong enter password times is over and the user can change the password. The system cost-effective, functional and practical.Keywords: Single-Chip Microcomputer; electronic password lock; voice alarm; LCD display目录1 引言 (1)2 总体方案设计 (2)2.1方案论证 (2)2.2方案选择 (3)3 硬件设计 (4)3.1单片机部分 (4)3.24×4行列式键盘部分 (4)3.3开锁电路 (5)3.4AT24C02密码储存电路 (5)3.5声音报警电路 (6)3.6显示模块部分 (6)3.6.1显示模块选择 (6)3.6.2液晶引脚功能说明 (7)3.7总体设计 (9)4 软件设计 (11)4.1软件总框图设计 (11)4.2蜂鸣器声音提示部分 (12)4.3液晶显示部分 (12)4.4键盘输入部分 (12)4.4.1 程序设计内容 (12)4.4.2 按键程序框图 (12)5 电路板设计 (14)5.1原理图的绘制 (14)5.2电路板的生成制作 (14)5.2.1电路原理图的设计 (14)5.2.2产生网络表 (15)5.2.3印制电路板的设计 (15)5.2.4安装 (15)6 安装与调试 (16)6.1系统软件调试 (16)6.2元器件的检测 (16)6.3系统硬件的安装与调试 (16)设计结论 (18)总结与体会 (19)致谢 (20)参考文献 (21)附录附录1电路原理图附录2元件清单附录3实物图附录4程序基于STC89C52的电子密码锁1 引言随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。
word格式文档基于STC89C52的电子密码锁目录一、简介 (2)二、设计任务与要求 (3)三、所用芯片 (3)四、对应的管脚 (4)五、键盘矩阵扫描 (7)六、电路原理图 (8)七、流程图 (9)八、下载图 (10)九、程序代码 (11)十、心得体会 (19)一、简介电子密码锁是现代生活中常用的加密工具。
它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是的智能电子密码锁;不仅具有电子密码锁的功能”还可引人智能化管理功能,从而使密码锁具有更离的安全性和可靠性。
电子密码锁通常使用ARM和单片机控制,单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
二、设计任务与要求根据设定好的密码(456),采用矩阵键盘输入功能。
每输入一位密码,对应的LED灯亮。
当输入的密码完全正确时,第八位LED灯亮;当输入的密码错误时,第七位LED灯亮,且当密码连续三次输入错误时,第六位LED 灯亮,键盘锁闭。
三、所用芯片STC89C52RC在本实验中用到的是STC89C52RC单片机。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有系统可编程8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:8K字节Flash,512字节RAM,32位I/O口线,看门狗定时器,MAX810复位电路,内置4KB EEPROM,3个16位定时器/计数器,1个6向量2级中断结构,全双工串行口。
基于STC89C52单片机的电子密码锁设计
引言
以往个人资料保存、部门文件档案多用机械锁,需携带多把钥匙,使用极不方便,钥匙丢失后安全性差。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对门锁的使用要求、增加其安全性,电子密码锁应运而生,它具有防试探按键输入,智能控制上锁、报警、修改密码等多种功能f1 剖。
鉴于以往单片机的内部程序存储器不能由单片机自身修改,要完成修改密码功能,多采用片外串行E2PRoM 实现。
宏基公司生产的STC89 系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能,使不具有E2PRoM 的单片机具有了E2PRoM 的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、门禁系统等)及需远距离改变设备参数的产品(遥控设备等)。
采用STC89C52 单片机设计的电子密码锁,利用内部E2PROM 资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符合住宅、部门办公安全要求。
1 设计思路及软硬件实现
电子密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。
锁定状态时,输出锁定信号,供外部执行机构使用,实现上锁功能;正常状态时,锁定信号消失,供外部执行机构使用,允许用户进行密码修改。
电子密码锁设计分硬件和软件部分。
硬件电路见用1 个无符号字符型数组ValCode 和1 个无符号字符型变量ValNum 来存放键盘输入的数据大小和输入个数。
程序启动或复位后,清空数组ValCode 和变量ValNum,并初始化定时器、报警器;进入锁定状态时,启动报警功能,如发现用户按下开锁键,则。
/*-----------------------------------------------名称:液晶显示密码锁论坛:编写:shifang日期:2009.5修改:无内容:------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<stdio.h>#include"1602.h"#include"delay.h"#include"keyboard.h"unsigned char code password[]={1,2,3,4,5,6,7,8};//可以更改此密码做多组测试//定义密码,实际上密码需要存在eeprom中,可以通过程序更改。
请用户自行添加/*------------------------------------------------主程序------------------------------------------------*/main(){unsigned char num,i,j;unsigned char passwordtemp[16]; //最大输入16个unsigned char inputtimes; //密码输入错误次数unsigned char passwordlength,PLEN; //输入密码长度,实际密码长度bit Flag;PLEN=sizeof(password)/sizeof(password[0]);//用于计算出实际密码长度LCD_Init(); //初始化液晶屏DelayMs(10); //延时用于稳定,可以去掉LCD_Clear(); //清屏LCD_Write_String(0,0," Welcome! "); //写入第一行信息,主循环中不再更改此信息,所以在while之前写入LCD_Write_String(0,1,"Input password!"); //写入第二行信息,提示输入密码while (1) //主循环{num=KeyPro(); //扫描键盘if(num!=0xff) //如果扫描是按键有效值则进行处理{if(i==0) //输入是第一个字符的时候需要把改行清空,方便观看密码LCD_Write_String(0,1," ");//清除该行if(i<16){passwordtemp[i]=num;LCD_Write_Char(i,1,'*');//输入的密码用"*"代替}i++; //输入数值累加if((15==num)|| (i==16))//输入按键值15或者密码输入到最大值16,表示输入结束,需要进行比对{passwordlength=i-1; //计算输入密码长度i=0; //计数器复位if(passwordlength==PLEN)//长度相等则比较,否则直接输出错误{Flag=1;//先把比较位置1for(j=0;j<PLEN;j++)//循环比较8个数值,如果有一个不等则最终Flag值为0 Flag=Flag&&(passwordtemp[j]==password[j]);//比较输入值和已有密码}if(Flag)//如果比较全部相同,标志位置1{LCD_Write_String(0,1," ");//清除该行LCD_Write_String(0,1,"Right Open!>>>>");//密码正确显示的信息inputtimes=0;//输入正确则次数清零,重新计数Flag=0; //清除正确标志}else{LCD_Write_String(0,1," ");//清除该行LCD_Write_String(0,1,"Wrong! Retry!");//密码错误,提示重新输入inputtimes++;//连续输入错误,则次数累加if(inputtimes==3){LCD_Write_String(0,1," ");//清除该行LCD_Write_String(0,1,"Wrong 3 times!");//密码错误,提示重新输入while(1);//停止该位置,重启电源后才能输入,实际实用中则需要等到一定时间后才能再次输入。
基于STC89C52单片机的指纹密码锁系统设计与实现基于STC89C52单片机的指纹密码锁系统设计与实现一、引言指纹密码锁系统是一种使用纹理特征识别技术,实现安全门锁控制的现代化智能门禁系统。
本文以STC89C52单片机为核心,结合指纹识别算法和密码锁控制电路,设计并实现了一个基于STC89C52单片机的指纹密码锁系统。
二、系统设计1. 系统框架设计本系统采用分层结构设计,分为硬件层、算法层和用户层。
硬件层负责指纹采集模块、指纹识别模块、密码锁控制模块的连接和驱动;算法层负责指纹图像处理和指纹特征提取;用户层负责用户数据管理、指纹录入和门锁控制。
2. 硬件设计硬件设计主要包括指纹采集模块、指纹识别模块、密码锁控制模块和STC89C52单片机的连接和布局。
指纹采集模块采用光学传感器,可以实时采集用户的指纹图像;指纹识别模块采用指纹图像处理算法,可以识别指纹纹理特征;密码锁控制模块通过继电器控制门锁的开关。
STC89C52单片机作为整个系统的主控芯片,负责收发指令、数据处理和与其他模块的通信。
它与指纹采集模块、指纹识别模块和密码锁控制模块之间通过串口进行数据传输。
3. 算法设计算法设计主要包括指纹图像的预处理、特征提取和特征匹配三个步骤。
指纹图像的预处理包括图像增强、图像去噪、图像二值化等。
增强算法可以提升指纹图像的对比度,使纹理特征更加明显;去噪算法可以消除图像中的椒盐噪声,保留纹理细节;二值化算法可以将灰度图像转化为二值图像,便于特征提取。
特征提取算法是指通过对预处理后的指纹图像进行处理,提取出一组具有代表性的纹理特征。
常用的特征提取方法有细节增强、方向图提取和频域变换等。
特征匹配是将提取到的特征与数据库中的特征进行比对,确定两者之间的相似度。
常用的特征匹配方法有最小平方差匹配算法、相关匹配算法等。
4. 用户界面设计用户界面设计包括指纹录入、指纹识别和门锁控制三个功能。
指纹录入功能可以将用户的指纹信息存储到数据库中,并与UserId绑定,便于后续的指纹识别和门锁控制。
基于STC89C52单片机的智能密码门禁系统设计摘要智能密码门禁系统是21世纪生活中常用到的智能门禁系统之一,常用于小区门、家庭房门、防盗门、密码箱等等。
智能密码门禁系统克服了一般的机械式密码锁容易损坏、保护能力差的短处。
特别是采用微处理器系统装置的智能密码门禁系统, 除了一般的密码锁功能,还植入人机界面智能管理系统, 这样可以使该系统具有更高的保障性、简易性和可靠性。
该设计主要采用使C语言语序编写STC89C52单片机程序,硬件系统由4*4矩阵键盘、单片机最小系统、LCD显示器和蜂鸣器报警装置组成。
该智能密码门禁系统是由本人自定义一个 6 位数的密码, 将门上锁。
如果想开锁,必须在按“开锁”按键后,输入和自己设定的同样的密码时,门锁打开,密码输入错误就会自动报警,若三次密码输入错误,会提示三声。
为了确保方便和永久的密码更改,该系统采用的AT24C04芯片以便即使在电源故障环境下其内部的密码数据可以维持而不会丢失的。
关键词:智能密码门禁系统,单片机;矩阵键盘;lcd显示器;报警AbstractIntelligent password access control system is one of 21st century life are commonly used in the intelligent access control system, used for residential doors, home doors, security doors, password boxes, and so on. Intelligent password access control system to overcome a common mechanical lock easy to damage, protect the ability of weaknesses. Especially in a microprocessor system of intelligent password access control system, in addition to the standard password lock function, intelligent management system of embedded man-machine interface, so you can make the system more affordable, simple and reliable.The design mainly uses the c language word order to write STC89C52 program, hardware keyboard, single-chip microcomputer system by 4*4 matrix, LCD display and buzzer alarm device. The intelligent password under my custom access control system is a 6-digit password, locking the door. If you want to unlock, you must "put in come" button, and enter the same password and set, lock open, automatic password entry errors will alarm, if the password was incorrectly entered three times, the numeric keypad is automatically unlocked cannot be used. In order to ensure easy and permanent password changes, the system uses the AT24C04 chips so that even after a power failure under its internal password data can be retained and will not be lost。
电子密码锁的设计摘要:本设计阐述通过Proteus软件成功仿真的电子密码锁的实现过程,选用STC89C52单片机为核心的系统来实现按键输入、开锁和密码识别。
采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602A液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。
该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能。
关键词:Proteus;密码锁;单片机;C语言Design of Electronic Code Lock Using STC89C52 MCU Basedon C LanguageAbstract: The paper introduces the implementation of the electronic code lock which was successfully simulated by Proteus. It uses STC89C52 single-chip microcomputer to achieve key input, the unlocking and identification of the code. It adopts I2C bus based E2PROM chip to complete the code's storage, using LCD 1602A to prompt the program's running state and working procedures, adopting buzzer to imitate the alarm and LED to imitate the switch. It is convenient to modify and add function by using C language program, which is more transplantable and reliable compared to assembly language.Keywords: Proteus; code lock; single-chip microcomputer; C language一、 前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
随着单片机的问世,出现了电子密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。
电子密码锁通常使用ARM 和单片机控制[1],单片机相对ARM 实现较为简单,功能较为完善,因此使用单片机控制较多。
用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器 [2]。
但本设计使用移植性及可读性强的C 语言[3-5]编写;同时采用显示清楚、功率消耗小而且寿命长的1602A 液晶显示器。
从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报警等功能的电子密码锁,并通过Proteus [6]软件成功地进行了仿真。
二、 总体方案设计 2.1方案论证与比较方案一:以STC89C52单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A 显示器提示程序运行过程和开锁的步骤,利用AT24C02芯片实现掉电存储。
图1为单片机控制密码锁的系统原理框图。
图1 单片机控制密码锁的系统原理框图方案二:以74LS112双JK 触发器构成的数字逻辑电路控制方案,如图2。
STC89C52 单片机AT24C02存储芯片矩阵 键盘 控制LCD 1602A蜂鸣器提示电路电源模块LED密码校验提示图2 数字逻辑控制方案电子密码锁原理框图2.2方案选择由于利用单片机灵活的编程设计和强大的I/O 端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。
三、 单元模块设计 3.1硬件支持使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602A 、4×4矩阵键盘、报警蜂鸣器、发光二极管和三极管。
3.2功能单元模块设计3.2.1 开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。
如图3所示,为密码锁开锁电路原理图。
当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。
本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD 显示,并利用蜂鸣器和二极管声光指示。
其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。
输入按扭开关组输入锁存电路密码存储电路开锁控制电路机械动作构件5秒定时电路 20秒定时电路 声光指示电路图3 密码锁开锁电路原理图3.2.2 矩阵键盘设计电路每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M 条行线和N 条列线,即可组成具有M ×N 个按键的键盘。
由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O 线的数目,故使用矩阵键盘。
本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。
矩阵键盘设计电路图,如图4所示。
键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。
图4 矩阵键盘设计电路图开锁驱动电路STC89C52 单片机密码 正确 超次锁定电磁锁是否1 2 3 4 5 6 7 8 9 0 输入密码 确认 更改密码***3.2.3 声音提示电路设计声音提示电路采用小蜂鸣器提示。
蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。
蜂鸣器电路,如图5所示。
图5 蜂鸣器电路3.2.4 显示模块设计本设计中,显示电路采用1602A液晶显示器显示[7]。
如下所示,图6为1602A 液晶显示器的接口示意图,表1为接口说明。
图6 1602A液晶显示器的接口示意图表1 接口说明管脚序名称电平功能描述1 VSS 0V 接地2 VCC 5.0V 电源输入3 V0 —LCD驱动电压输入4 RS H/L 寄存器选择:RS=H,选择数据寄存器;RS=L,选择指令寄存器5 R/W H/L 读写信号线:R/W=H,读操作;R/W=L,写操作6 E H,H→L 使能信号7 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线 10 DB3 H/L 数据线 11 DB4 H/L 数据线 12 DB5 H/L 数据线 13 DB6 H/L 数据线 14 DB7 H/L 数据线 15 BLA 5.0V 背光电源正极 16 BLK 0V 背光电源负极本设计中液晶串口一共用到11根导线与单片机相连, 具体连接情况如表2显示模块与MCU 连接说明所示。
表2 显示模块与MCU 连接说明序号 1602A 液晶显示器引脚 STC89C52单片机引脚 1 RS 引脚 P2.5(A13) 2 R/W 引脚 P2.6(A14) 3 E 引脚 P2.7(A15) 4 D0引脚 P0.0(AD0) 5 D1引脚 P0.1(AD1) 6 D2引脚 P0.2(AD2) 7 D3引脚 P0.3(AD3) 8 D4引脚 P0.4(AD4) 9 D5引脚 P0.5(AD5) 10 D6引脚 P0.6(AD6) 11 D7引脚 P0.7(AD7)3.2.5 AT24C02掉电存储单元的设计本设计中掉电存储单元采用AT24C02外部存储器[8-9],其作用是在系统电源断开的时候,存储当前设定的密码数据。
AT24C02是一个2K 位串行CMOS E 2PROM ,内部含有256个8位字节, 含一个16字节页写缓冲器,具有写保护功能。
其采用两线串行的总线和单片机通讯,电压最低可以到2.5V ,额定电流为1mA ,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP 封装,使用方便。
如下所示,图7为AT24C02管脚示意图,表3为AT24C02管脚说明。
图7 AT24C02管脚示意图A0A1A2GNDSDASCLWPVCC123 4 8765C02表3 AT24C02管脚说明管脚名称功能管脚名称功能A0 A1 A2 器件地址选择SDA 串行数据/地址SCL 串行时钟信号WP 写保护VCC 1.8V-6.0V工作电压VSS 接地本设计中,AT24C02的SCL和SDA引脚接上拉电阻后与单片机的P3.4(T0)和P3.5(T1)脚相连,其电路图如图8所示。
图8 AT24C02掉电存储单元设计图四、程序设计与系统仿真4.1 模块介绍与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、1602A液晶显示模块等[10]。
系统程序流程如图9所示。
图9 系统程序流程图开始系统初始化调用E 2PROM 密码显示主界面输入密码 判断密码确定密码开锁模拟声光锁定键盘Y N返回 Y判断次数N超过N 次未超过N 次再次输入密码密码设置完毕 N 设置新密码Y 按键 N判断按键值返回主界面N Y设置解码次数产生随机密码输入密码N=0x84 N=0x82 N=0x114.1.1 主程序模块主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测按键;调用显示等功能。
4.1.2 密码比较判断模块该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。
其密码输入和比较判决流程图如图10所示。
输入密码核对N Y键盘锁定,开启报警电路开锁,灯亮,可密码修改复位图10 密码输入和比较判决流程图4.1.3 键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。
如图11所示,为键盘扫描流程图。
图11 键盘扫描流程图4.1.4 修改密码模块在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。