基于STC89C52的电子密码锁
- 格式:doc
- 大小:3.95 MB
- 文档页数:21
基于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单片机的电子密码锁
李建波
【期刊名称】《现代电子技术》
【年(卷),期】2008(31)23
【摘要】为了提高个人资料、部门文件档案的保密性和安全性,采用高速、低功耗且具备ISP、IAP、内部E2PROM功能的STC89C52单片机,设计了保密性更高的电子密码锁,并详细介绍STC89C52单片机内部E2PROM有关的特殊功能寄存器、读写子程序.该电子密码锁的上锁、开锁、修改密码都在片内进行,不涉及外围芯片,减小了PCB面积,降低故障率和成本,提高了可靠性、保密性,值得推广.
【总页数】3页(P154-156)
【作者】李建波
【作者单位】广东机电职业技术学院,广东,广州,510515
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.基于STC89C52单片机的电子密码锁设计 [J], 向长秋;胡湘娟;阳泳
2.基于C语言STC89C52单片机电子密码锁的设计与仿真 [J], 金桂;向国梁
3.基于STC89C52单片机的电子密码锁设计 [J], 汪建关; 邵春枫; 谷高明; 缪传付
4.基于STC89C52单片机的电子密码锁设计 [J], 汪建关; 邵春枫; 谷高明; 缪传付
5.基于STC89C52单片机的电子密码锁设计 [J], 向长秋;胡湘娟;阳泳
因版权原因,仅展示原文概要,查看原文内容请购买。
目录摘要 (II)1 绪论 (1)1.1 引言 (1)1.2 电子密码锁的背景 (1)1.3 电子锁设计的意义的本设计特点 (2)2 系统设计 (3)2.1系统总设计结构图 (3)2.2.开锁机构设计 (3)2.3 系统软件设计整体思路 (3)2.4系统软件设计流程 (4)2.5主控芯片STC89C52单片机的简介 (4)3 系统电路 (7)3.1系统电路的组成: (7)3.2 晶振时钟电路 (8)3.3串口引脚功能介绍 (8)3.4 其它引脚 (8)3.5电路图的绘制 (9)3.6元器件采购 (10)3.7电路焊接 (10)4 程序调试 (12)4.1 程序调试用到的软件及工具 (12)4.2 KEIL C51简介 (12)4.3 调试过程 (12)5 设计总结 (14)致谢 (14)参考文献附录摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。
本设计以单片机AT89C52作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。
根据52单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。
而且采用键盘输入的电子密码锁具有较高的优势。
采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。
软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。
测试结果表明,本系统各项功能已达到本设计的所有要求。
关键词:单片机;密码锁;单片机设计,电子锁。
Single Chip ControllerAbstractAlong with the exaltation of social science and the living level of people, how carry out the family to guard against theft, this problem also change particularly outstanding.Because of the simple construct of traditional machine lock,the affairs of theft is hackneyed.the electronics lock is safer because of its confidentiality, using the vivid good, the safe coefficient is high, being subjected to the large customer close.It can carry out the key information to register in the main on board initial attestation, the password information encrypt etc. Go to correspond by letter the principle according to the string between 52 machines, this is easy to encrypt and protect to the passwords information random. Adopt the numerical signal codes,not only can carry out many controls of the road information, raise the anti- interference that signal deliver, reduce the mistake action,but also the power consume is low, Respond quickly,the efficiency deliver is high, work stable credibility etc. The software design adoption the design thought from top to bottom, to make the system toward wear distribute type,turn to the direction development of small, strengthen the system and can expand the stability and circulate.Test the result enunciation, various functions of this system are already all request of this design.keyword:singlechip;cryptogram lock;singlechip design; electronics lock.1 绪论1.1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。
基于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级中断结构,全双工串行口。
另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM 容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
四、对应的管脚LED灯端口对应在STC89C52芯片上上是P1口;矩阵键盘与STC89C52芯片的P3_0~P3_3直接相连;如下图所示:芯片STC89C52LED电路4*4键盘矩阵五、键盘矩阵扫描确定矩阵式键盘上何键被按下的方法有高低电平翻转法和线反转法(或者称为行列翻转法) 。
高低电平翻转法:首先让P1口高四位为1,低四位为0,。
若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置。
然后让P1口高四位为0,低四位为1,。
若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。
线反转法(或者称为行列翻转法):首先,让单片机的行全部输出0,列全部输出1,读取列的值(假设行接P3口的高四位,列接低四位)。
即P3= 0x0f ; 此时读列的值,如果有键按下,则相应的列读回来的值应该为低。
譬如此时读回来的值为 0x0e ; 即按键列的位置已经确定。
这时反过来,把行作为输入,列作为输出,即P0 = 0xf0 ;知道了一个按键被按下的行和列的位置,那么就可以肯定确定它的位置了。
我们把读回来的行值和列值进行或运算。
即 0xe0 | 0x0e 即 0xee。
那么0xee 就是我们按下的按键的键值了。
本试验中应用的是行列反转法。
六、电路原理图密码锁开锁电路原理图七、流程图八、下载图九、程序代码#include<reg52.h>#define SCANPORT P3Unsigned char Key[4][4] ={0x00,0x01,0x02,0x03,0x10,0x11,0x12,0x13,0x 20,0x21,0x22,0x23,0x30,0x31,0x32,0x33};//所用键盘位置unsigned int lock_num = 456;//初始密码unsigned int input_num = 0;//输入数字unsigned char sig_num = 0;//支持的输入次数unsigned char lock=0;//密码输入错误次数sbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;//各个灯所对应的管脚void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时子程序}void main(){unsigned char row=0;unsigned char line=0;unsigned char state=0;unsigned char WhichKey=0x44;//(放在程序中间是错误的)P1 = 0xff;//灯全灭while(1){SCANPORT=0x0F;state=SCANPORT&0x0F;if(state != 0x0F){delay(5);state=SCANPORT&0x0F;}if(state != 0x0F){switch(sig_num){case 0:sig_num=1;P1_0=0;break; //按下第一个数字,第一个灯亮case 1:sig_num=2;P1_1=0;break; //按下第二个数字,第二个灯亮case 2:sig_num=0;P1_2=0;break;//按下第三个数字,第三个灯亮}switch(state){case 0x0E:line=0;break;case 0x0D:line=1;break;case 0x0B:line=2;break;case 0x07:line=3;break;default:line=5; //行扫描}SCANPORT=0xFF;SCANPORT=0xF0;state=SCANPORT&0xF0;switch(state){case 0xE0:row=0;break;case 0xD0:row=1;break;case 0xB0:row=2;break;case 0x70:row=3;break;default:row=5;//列扫描}WhichKey = Key[line][row];if(WhichKey == 0x33){if(lock_num == input_num){P1_7 = 0;input_num = 0;//输入密码和原始密码匹配时,第八个灯亮}else{lock += 1;P1=0xff;P1_6 = 0;input_num = 0;//输入密码和原始密码不匹配时,第七个灯亮}if(lock == 3){P1_5 = 0;//当三次输入密码错误时,第六个灯亮}}if(WhichKey == 0x23){input_num = 0;}switch(WhichKey){case 0x31:input_num =input_num*10+0;break;//键盘的'0' case 0x00:input_num =input_num*10+1;break;//键盘的'1' case 0x01:input_num =input_num*10+2;break;//键盘的'2' case 0x02:input_num =input_num*10+3;break;//键盘的'3' case 0x10:input_num =input_num*10+4;break;//键盘的'4' case 0x11:input_num =input_num*10+5;break;//键盘的'5' case 0x12:input_num =input_num*10+6;break;//键盘的'6' case 0x20:input_num =input_num*10+7;break;//键盘的'7'case 0x21:input_num =input_num*10+8;break;//键盘的'8'case 0x22:input_num =input_num*10+9;break;//键盘的'9' }delay(200);//延时}}while(lock==3);//连续三次输入错误时键盘锁闭}十、心得体会通过本次单片机的课程设计我对所学知识有了更加深刻的认识,对单片机及C语言有了更加深入的理解,在课程设计过程中,我遇到了很多困难,无论是程序设计方面的,还是调试下载方面的问题,但通过不断的尝试和老师的指导,这些问题终于一一得到解决。
同时也了解了在程序编写的时候容易出现的问题。
在程序编写开始时分不清那个管脚与那个管脚相连,但通过学习单片机原理图,渐渐明白了各个管脚并不是独立存在的,而是各个模块与单片机管脚相连。
通过一些简单程序的试验,使我明白了各个模块的使用方法及程序的编写。
虽然困难重重,但结果是喜人的,当我看到自己的设计结果时,心的喜悦和成就感是无以名状的。
通过课程设计全方位的培养和考察我们解决问题和处理是基于理论关系的能力,在设计编程到最后实现功能的过程中,我们必须经过思考。
我们必须在短期锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。
这次课程设计让我学到的不只是更多相关的知识,还让我了解到了努力、坚持的重要性。
也许在坚持一点.点成功就是属于你的。
同时也让我了解到同学间团结协作,互帮互助的作用,或许是一个不经意的提点就会让你收益匪浅。
由此可见,课程设计的意义是十分重大和深远的。
不仅丰富了我们的知识锻炼了我们的动手能力,还给以我们生活的提点,展示自己的平台。
今后,我会更加努力学习更多专业知识,不断提高自己的专业素质,把自己的综合水平提升一个高度,争取不断做出新而实用的设计。
. .。