基于STC89C52的电子密码锁

合集下载

基于STC89C52的电子密码锁设计

基于STC89C52的电子密码锁设计

基于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 引言随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。

基于STC89C52的电子密码锁

基于STC89C52的电子密码锁

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单片机的电子密码锁设计

基于STC89C52单片机的电子密码锁设计

基于STC89C52单片机的电子密码锁设计
引言
以往个人资料保存、部门文件档案多用机械锁,需携带多把钥匙,使用极不方便,钥匙丢失后安全性差。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对门锁的使用要求、增加其安全性,电子密码锁应运而生,它具有防试探按键输入,智能控制上锁、报警、修改密码等多种功能f1 剖。

鉴于以往单片机的内部程序存储器不能由单片机自身修改,要完成修改密码功能,多采用片外串行E2PRoM 实现。

宏基公司生产的STC89 系列单片机,高速、低功耗、新增在系统/在应用可编程(ISP,IAP)功能,使不具有E2PRoM 的单片机具有了E2PRoM 的功能,可以在线对现场历史数据的存储功能,适用于一些需经常改变数据的应用产品(如计费器、门禁系统等)及需远距离改变设备参数的产品(遥控设备等)。

采用STC89C52 单片机设计的电子密码锁,利用内部E2PROM 资源,不需要外接程序存储器就能完成修改密码等多种功能,并且保密性高、成本低、简单易行,符合住宅、部门办公安全要求。

1 设计思路及软硬件实现
电子密码锁工作时分为两种工作状态,分别是正常状态和锁定状态。

锁定状态时,输出锁定信号,供外部执行机构使用,实现上锁功能;正常状态时,锁定信号消失,供外部执行机构使用,允许用户进行密码修改。

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

硬件电路见用1 个无符号字符型数组ValCode 和1 个无符号字符型变量ValNum 来存放键盘输入的数据大小和输入个数。

程序启动或复位后,清空数组ValCode 和变量ValNum,并初始化定时器、报警器;进入锁定状态时,启动报警功能,如发现用户按下开锁键,则。

基于89C52单片机C语言的电子密码锁程序

基于89C52单片机C语言的电子密码锁程序

/*-----------------------------------------------名称:液晶显示密码锁论坛:编写: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单片机的指纹密码锁系统设计与实现一、引言指纹密码锁系统是一种使用纹理特征识别技术,实现安全门锁控制的现代化智能门禁系统。

本文以STC89C52单片机为核心,结合指纹识别算法和密码锁控制电路,设计并实现了一个基于STC89C52单片机的指纹密码锁系统。

二、系统设计1. 系统框架设计本系统采用分层结构设计,分为硬件层、算法层和用户层。

硬件层负责指纹采集模块、指纹识别模块、密码锁控制模块的连接和驱动;算法层负责指纹图像处理和指纹特征提取;用户层负责用户数据管理、指纹录入和门锁控制。

2. 硬件设计硬件设计主要包括指纹采集模块、指纹识别模块、密码锁控制模块和STC89C52单片机的连接和布局。

指纹采集模块采用光学传感器,可以实时采集用户的指纹图像;指纹识别模块采用指纹图像处理算法,可以识别指纹纹理特征;密码锁控制模块通过继电器控制门锁的开关。

STC89C52单片机作为整个系统的主控芯片,负责收发指令、数据处理和与其他模块的通信。

它与指纹采集模块、指纹识别模块和密码锁控制模块之间通过串口进行数据传输。

3. 算法设计算法设计主要包括指纹图像的预处理、特征提取和特征匹配三个步骤。

指纹图像的预处理包括图像增强、图像去噪、图像二值化等。

增强算法可以提升指纹图像的对比度,使纹理特征更加明显;去噪算法可以消除图像中的椒盐噪声,保留纹理细节;二值化算法可以将灰度图像转化为二值图像,便于特征提取。

特征提取算法是指通过对预处理后的指纹图像进行处理,提取出一组具有代表性的纹理特征。

常用的特征提取方法有细节增强、方向图提取和频域变换等。

特征匹配是将提取到的特征与数据库中的特征进行比对,确定两者之间的相似度。

常用的特征匹配方法有最小平方差匹配算法、相关匹配算法等。

4. 用户界面设计用户界面设计包括指纹录入、指纹识别和门锁控制三个功能。

指纹录入功能可以将用户的指纹信息存储到数据库中,并与UserId绑定,便于后续的指纹识别和门锁控制。

基于52单片机电子密码锁的设计

基于52单片机电子密码锁的设计

1、电阻和电容的选择:为了确保电路的稳定性和可靠性,我们选用了常见 的贴片电阻和电容,并根据实际需求进行合理布局。
2、单片机的连接方式:将STC89C52单片机与输入键盘、LED显示和开锁机构 通过合适的接口进行连接,实现密码的输入、显示和开锁功能。
软件编程
本设计的软件编程采用C语言,主要包括以下几个部分:
二、基于STC89C52单片机的电 子密码锁
1、材料和方法实现基于STC89C52单片机的电子密码锁需要准备以下材料和 设备:
1、STC89C52单片机
2、液晶显示屏(LCD)
3、键盘输入模块
4、报警模块
5、电源模块
6、门禁系统主板
实验设计方法主要包括以下步骤:
1、电路连接:根据设计要求,将单片机、液晶显示屏、键盘输入模块、报 警模块等连接起来。
1、密码设定:用户可以通过键盘输入模块设定6位数字密码,密码可随时修 改。
2、密码验证:当用户输入密码时,系统会自动验证密码是否正确。如果密 码正确,则单片机控制门禁系统主板打开门锁;如果密码错误,系统会发出报警 提示,同时锁定键盘输入和开锁功能,保护系统不被恶意攻击。
3、开锁功能:当密码验证通过后,门锁会自动打开,同时液晶显示屏会显 示“开锁成功”字样。如果需要记录开锁信息,可以通过扩展串口将开锁信息传 输到计算机或云平台进行存储和分析。实验结果表明,基于STC89C52单片机的电 子密码锁具有较高的安全性和便利性。
基于52单片机电子密码锁的设 计
01 设计思路
002 软件设计 04 调试与优化 06 参考内容
随着社会的进步和科技的发展,人们越来越注重生活的安全性和便捷性。电 子密码锁作为一种新型的安全防护设备,具有高安全性、使用方便等优点,逐渐 被广泛应用于家庭、办公室等领域。本次演示将基于52单片机设计一款电子密码 锁,以实现输入密码的安全保护功能。

基于C语言STC89C52单片机电子密码锁设计

基于C语言STC89C52单片机电子密码锁设计
二、系统功能
本设计中系统可实现功能如下:
(1)通过切换,对输入的6位密码进行显示或隐藏;
(2)6位密码修改;
(3)在密码遗失情况下,通过初始密码进行密码再设置;
(4)采用AT24C02外部存储器,完成断电密码保护功能;
三、 单元模块设计
3.1硬件支持
使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602A、4×4矩阵键盘。
delayms(10);
P2=0x0f;
while(1)
{
if(P2!=0x0f)
{
temp=Keys_Scan();
switch(temp)
{
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
for(i=0;i<n;i++)
{
if(!sendbyte(buffer[i])) return 0;
}
stop();
return 1;
}
void clear_password()
{uchar i;
for(i=0;i<6;i++)
{
Userpassword[i]=' ';
}
for(i=0;i<16;i++)
scl=1;
delay4us();
scl=0;
sda=0;
}
uchar recbyte()
{
uchar i,rd;
rd=0x00;
sda=1;
for(i=0;i<8;i++)

基于STC89C52单片机的电子密码锁

基于STC89C52单片机的电子密码锁

基于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], 向长秋;胡湘娟;阳泳
因版权原因,仅展示原文概要,查看原文内容请购买。

基于stc89c52单片机的电子密码锁设计

基于stc89c52单片机的电子密码锁设计

运行速度更快,接口电路更加丰富,而且功耗更低 。 [2-3] 这款单片机的供电低电压范围为 3.8V ~ 5.5V。内部
具有 8K 的 Flash 和 512 字节的 RAM,具有 4 个 P0-P3 端 口,32 个 I/O 端口,其中 P3 端口具有双重功能,除了具有 普通 I/O 端口的功能,还具有定时器、串口、外部中断等 复用端口的功能 [4]。单片机在运行时最大的晶振频率可以达 到 35MHz。程序可以通过 UASRT 串口进行下载。单片机 在外形上有两种封装,分为 LQFP 封装和 DIP 封装 [5]。本次 设计选择 DIP 封装。
1 系统方案设计
本次设计的电子密码锁采用 STC89C52 单片机为核心 控制器件,与复位电路加晶振电路构成单片机最小系统电 路 [1]。通过矩阵键盘输入开锁密码,当密码输入正确时,开 锁驱动电路实现开锁功能。当开锁密码连续错误输入达 3 次,报警电路自动报警并锁定。存储电路采用 AT24C02 存 储芯片储存设置的密码。本系统主要包括单片机系统、晶振 电路、复位电路、电源模块、继电器模块、LCD1602 液晶 显示模块、4×4 键盘模块、存储模块和报警模块。
Abstract:Electronic password lock has the advantages of high security and good confidentiality. This paper designs an electronic password lock system based on STC89C52 single chip computer. The input password function is realized by matrix keyboard module controlled by single chip computer. LCD1602 LCD module displays the information related to password lock. The relay module controls the unlocking. It has the functions of successful prompt for unlocking,password error alarm,password modification,etc. and has a very wide range of applications in anti-theft occasions.

STC89C52单片机用C语言设计的密码锁(含电路图,功能操作说明)M

STC89C52单片机用C语言设计的密码锁(含电路图,功能操作说明)M

P2 = 0xfb; P0 = table[h6]; delay1(1);// P0=0XFF;
delay2(1);
delay1(1);//
P2 = 0xf7; P0 = table[h5];
P0=0XFF;
delay1(1);// delay2(1);
P2=0xEF; P0=table[h4];
P0=0XFF;
glob_b[m2] = 2; delay(150);
uchar j; m = key_scan2();
switch(glob_c) { case 0x00:
break; case 0xee:
break; case 0xed:
glob_b[m2] = 3; delay(150);
glob_b[m2] = 4; delay(150);
uchar w1,w2;
P1=0X0F;
//
//
//
//
glob_k=0;
//
} }
//按键密码输入值函数 void value1(void) { // uchar m;
uchar i; //
if(key==1) //key=1 表示有按键按下 {
w1=P1&0X0F; if(w1!=0x0f) {
if(K1==0) {
delay(2);
出 6 位密码
} if(K2==0)
{
}
//确定键
if(K1==0) { glob_k=0; key5=1; get_6dat(); //读
}
delay(2); if(K2==0) { key4++;
//表示第二次按下就把设定的密码输入 iic

基于STC89C52单片机的电子密码锁毕业答辩

基于STC89C52单片机的电子密码锁毕业答辩

3.1 矩阵键盘电路
• 矩阵键盘是用4条I/O线作为行线,4条I/O线作为 列线,在行线和列线的每一个交叉点上设置一个 按键。其中1-10是数字键0-9,11为确认键,12是 退格键 ,13是全部删除键,14修改密码键,其 连接电路如下图所示。
3.2 LCD液晶显示模块
• 显示模块主要由 LCD1602显示屏 组成,他显示的 是键盘输入的码 以及密码正确与 错误的提示。出 于安全性的考虑, 显示的密码是由 *号代替,为暗 密。连接电路如 图所示。
五 系统调试及分析
• 5.1 硬件调试
• 硬件调试首先检查是否出现虚焊、漏焊、线路短 接、元器件引脚焊接错误等问题,然后检查电路 中某些元器件是否起作用,最后检查所有电源线 和地线是否都接上。
• 检测单片机是否工作可通过观察示波器显示的波 形是否衰减,或者利用万用表测一下18,19脚的 电压,有2-3V就说明起振了。
5.2软件调试及功能分析
• 当进入输入密码阶段时,依次按下密码后再按下 确定键11键后,显示屏上显示正确且二极管灯亮, 如图所示。
• 密码错误时,二极管不亮且显示屏上显示Error, 如图所示。
5.3 系统调试及结果
• 系统调试即是将源程序在KEIL里运行产生的可执 行文件HEX写入到单片机中,然后通电初始化,检 查是否能实现密码锁的功能。其结果分析如下所 示:
2012届本科毕业答辩
电子密码锁的设计与制作
姓 名: 学 号:0807040107 专业年级:电信工程2008级 指导老师:
电子密码锁的设计与制作
• 一 绪论 • 二 电子密码锁的总体方案设计 • 三 电子密码锁的硬件设计 • 四 电子密码锁的软件设计 • 五 系统调试 • 六 结论与展望 • 七 谢辞

基于单片机STC89C52 电子密码锁的设计

基于单片机STC89C52 电子密码锁的设计

目录摘要 (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 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的喜爱。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于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语言有了更加深入的理解,在课程设计过程中,我遇到了很多困难,无论是程序设计方面的,还是调试下载方面的问题,但通过不断的尝试和老师的指导,这些问题终于一一得到解决。

同时也了解了在程序编写的时候容易出现的问题。

在程序编写开始时分不清那个管脚与那个管脚相连,但通过学习单片机原理图,渐渐明白了各个管脚并不是独立存在的,而是各个模块与单片机管脚相连。

通过一些简单程序的试验,使我明白了各个模块的使用方法及程序的编写。

虽然困难重重,但结果是喜人的,当我看到自己的设计结果时,心的喜悦和成就感是无以名状的。

通过课程设计全方位的培养和考察我们解决问题和处理是基于理论关系的能力,在设计编程到最后实现功能的过程中,我们必须经过思考。

我们必须在短期锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。

这次课程设计让我学到的不只是更多相关的知识,还让我了解到了努力、坚持的重要性。

也许在坚持一点.点成功就是属于你的。

同时也让我了解到同学间团结协作,互帮互助的作用,或许是一个不经意的提点就会让你收益匪浅。

由此可见,课程设计的意义是十分重大和深远的。

不仅丰富了我们的知识锻炼了我们的动手能力,还给以我们生活的提点,展示自己的平台。

今后,我会更加努力学习更多专业知识,不断提高自己的专业素质,把自己的综合水平提升一个高度,争取不断做出新而实用的设计。

. .。

相关文档
最新文档