数字密码锁.docx

上传人:b****4 文档编号:12260728 上传时间:2023-04-17 格式:DOCX 页数:28 大小:189.37KB
下载 相关 举报
数字密码锁.docx_第1页
第1页 / 共28页
数字密码锁.docx_第2页
第2页 / 共28页
数字密码锁.docx_第3页
第3页 / 共28页
数字密码锁.docx_第4页
第4页 / 共28页
数字密码锁.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数字密码锁.docx

《数字密码锁.docx》由会员分享,可在线阅读,更多相关《数字密码锁.docx(28页珍藏版)》请在冰豆网上搜索。

数字密码锁.docx

数字密码锁

数字式密码锁

 

学院:

南昌航空大学科技学院

专业:

电子信息科学与技术

班级:

0882081

学号:

19

******

指导老师:

 

2011年6月30日星期四

摘要

在生活中锁是不可缺少的必备用品,从普通的钥匙锁到银行中的保险柜的密码锁。

它给生活带来极大的方便,但是在生活中小型的机械密码锁能够用于保存一些物品,但是,如果需要保存贵重物品时,大型的机械式密码锁结构复杂,体积比较庞大,不便使用在小型的贵重物品上,于是,小型的电子密码锁就能够为大家解决这些问题,在本文中介绍了由C51单片机为核心的数字电子密码锁,在此密码锁中,通过编写一个程序,在通过液晶显示器实现输入过程,在液晶显示器上,能够完成我们需要完成的一些要求,当输入的密码为设定的密码时,锁就会打开,当输入错误时,则系统就会提醒再次输入,当三次输入的密码全为错时,则系统就会报警,在输入正确的密码后,可通过功能键来修改需要修改的,例如,修改密码,进行推格,清屏等功能,能有效地保护所需要保存的物品。

 

关键词:

电子密码锁,自动报警,密码验证,密码修改,单片机,液晶显示

 

1绪论……………………………………………………………………………………2

2设计内容及要求…………………………………………………………………………3

3系统的设计………………………………………………………………………………4

3.1系统设计结构图………………………………………………………………………4

3.2系统的工作原理说明……………………………………………………………………4

4系统硬件设计…………………………………………………………………………5

4.1复位以及振荡电路……………………………………………………………………5

4.24×4矩阵键盘………………………………………………………………………5

4.3报警电路……………………………………………………………………………6

4.4液晶显示电路………………………………………………………………………6

5电路程序设计……………………………………………………………………………7

6课程设计心得体会…………………………………………………………………14

7参考文献………………………………………………………………………………14

附录1设计总体电路图…………………………………………………………………15

附录2数字密码锁源程序………………………………………………………………16

 

一绪论

在日常的生活和工作中,人们的住宅与各种部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

由于住宅各单位需要保护的与保存的并不需要那种大型的机械式钥匙式密码锁,若使用机械式钥匙开锁,人们常常需要携带多把钥匙,使用时需要寻找,极不方便,且钥匙容易丢失,钥匙丢失后,安全性即大打折扣。

随着科学技术的发展,人们对日常生活中的安全保险要求越来越高,为了满足人们对锁的要求,且增加其锁的安全性与其方便性,不需要携带钥匙,用密码代替钥匙的密码锁越来越受到人们的喜爱。

数字式密码锁具有成本低,安全系数高,容易操作等优点。

随着生活的发展,人们对锁的要求是能够简单易行,需求成本低,使用灵活性好,使用安全系数高。

数字式密码锁的设计相对合理,能够符合人们的住宅、办公室用锁要求,具有很好的推广价值,且数字式电子密码锁采取电子电路控制,能够通过密码输入来控制电路与及芯片的工作从而完成开锁、闭锁任务。

而且能够改变密码,能够更加安全。

本次设计使用C51单片机构成最小系统,接以键盘,报警系统,液晶显示构成人性化的方便易用的电子密码锁。

能够实现我们需要的一些功能。

 

二设计内容及要求

课程设计中,锁体用LED代替(如“绿灯亮”表示锁体被打开,“黄灯亮”表示密码输入错误,锁体为被打开,“红灯亮”表示三次密码输入都不正确,系统报警)。

其密码为方4位到6位数字组成,由自己设定。

开锁指令为串行输入码,当开锁密码与所设置的密码一致时,则绿灯亮,锁体将被打开。

当开锁密码与所设置的密码不一致时,则黄灯亮,提示密码错误,可再次输入密码。

若连续三次输入密码错误,未将锁体打开,则会红灯亮,电路则报警并实现自锁。

根据自己的设定,设置密码输入的时间,且时间可以任意修改,在规定的时间内没有输入密码时,系统会自锁且报警。

密码可以更新,可以根据自己的需求,修改密码,实现更安全的保护。

 

三系统的设计

3.1系统设计结构图

如下图所示,此为设计原理框图:

图3.1系统设计框图

如图3.1所示,此系统主要是由4×4矩阵键盘,复位电路,LED显示灯,蜂鸣器,以及液晶显示电路组成。

3.2系统的工作原理说明

本系统采用C51单片机为核心的系统,加以4×4矩阵键盘、LED显示灯、蜂鸣器等组成。

系统通过运行后,通过提示进行输入密码,输入密码后,按确认键,如果输入密码正确时,则会绿灯亮,表示锁体已打开。

如果密码输入不正确时,则会黄灯亮,可再进行输入密码,且为了防止有人恶意尝试,故此可以设置输入密码的次数,假设设置次数为三次,若连续三次密码输入错误,则红灯亮,发出报警声,并且自锁,防止有人盗窃行为。

而且可以设置输入密码的时间,当在设定的时间内输入密码时则有效,反之,未在设定的时间内输入密码时,系统也自动报警,并自锁。

 

四系统硬件设计

4.1复位以及振荡电路

如下图所示,既为C51单片机系统的复位和振荡电路的结构:

图4.1系统的复位电路

图4.1所示,在此电路中,时钟电路进行工作后,在管脚上加两个机器周期的高电平,当芯片内部开始工作,进行初始复位,此次设计中的晶振选择的频率为12MHZ,电容选择33pF。

因此,此单片机工作胡机器周期为:

12×(1÷12M)=1us

 

4.24×4矩阵键盘

如图4.2所示,本系统中采用的是4×4矩阵式的键盘输入,16个按键分为输入数字键:

0、1、2、3、4、5、6、7、8、9;功能键:

左移、右移、退格、Enter、AC。

按键的键盘与C51单片机相连接,其连接方式如图4.2所示:

图4.24×4矩阵键盘电路

 

4.3报警电路

在此次设计中,由于没有轰鸣器,故此用LED显示其结果,当我们输入密码时,当输入的密码为正确的设定密码,则显示绿灯以表示输入正确密码,锁体已被打开,当输入的密码错误时,第一次显示黄灯,表示输入密码错误,请从新输入,当三次输入错误时,则显示红灯,并锁定,此为报警电路。

 

4.4液晶显示电路

为了能够使得数字式电子密码锁更加人性化,能够让人们看到输入了几位密码,我们可通过LED数码显示管显示,通过显示管来显示我们的输入,能够更加的直观,明朗。

 

五电路程序设计

在本系统中,我们根据硬件电路可得所需要的程序流程,本程序可用C语言编写,也可用汇编编写此程序,程序主要的功能要实现允许输入三次密码,三次后报警,存放原始的密码,然后进行密码对比。

比较密码的对错,并进行判断,当密码正确时,锁体解开,亮绿灯,密码错误时亮黄灯,三次密码错误后,亮红灯,并报警。

且能够实现修改密码。

如图5.1所示:

图5.1 程序框图

 

运用C语言编写的程序如下:

#include

#include

#include

unsignedcharcodeps[]={1,2,3,4,5};

unsignedcharcodedispcode[]=

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsignedcharpslen=9;

unsignedchartemplen;

unsignedchardigit;

unsignedcharfuncount;

unsignedchardigitcount;

unsignedcharpsbuf[9];

bitcmpflag;

bithibitflag;

biterrorflag;

bitrightflag;

unsignedintsecond3;

unsignedintaa;

unsignedintbb;

bitalarmflag;

bitexchangeflag;

unsignedintcc;

unsignedintdd;

bitokflag;

unsignedcharoka;

unsignedcharokb;

voidmain(void)

{

    unsignedchari,j;

    P1=dispcode[digitcount];

    TMOD=0x01;

    TH0=(65536-500)/256;

    TL0=(65536-500)%256;

    TR0=1;

    ET0=1;

    EA=1;

    while

(1)

    {

     if(cmpflag==0)

     {

     if(P3_6==0)//functionkey

       {

       for(i=10;i>0;i--)

         for(j=248;j>0;j--);

         if(P3_6==0)

         {

           if(hibitflag==0)

          {

           funcount++;

        if(funcount==pslen+2)

           {

            funcount=0;

           cmpflag=1;

           }

           P1=dispcode[funcount];

          }

           else

          {

            second3=0;

          }

         while(P3_6==0);

          }

        }

       if(P3_7==0)//digitkey

       {

         for(i=10;i>0;i--)

         for(j=248;j>0;j--);

           if(P3_7==0)

            {

         if(hibitflag==0)

{

                digitcount++;

               if(digitcount==10)

                {

                 digitcount=0;

                 }

               P2=dispcode[digitcount];

               if(funcount==1)

               {

                pslen=digitcount;

                templen=pslen;

                }

               elseif(funcount>1)

                {

                psbuf[funcount-2]=digitcount;

                }

              }

              else

            {

             second3=0;

           }

             while(P3_7==0);

         }

         }

        }

        else

        {

        cmpflag=0;

         for(i=0;i

          {

           if(ps!

=psbuf)                {

              hibitflag=1;

             i=pslen;

              errorflag=1;

             rightflag=0;

              cmpflag=0;

              second3=0;

               gotoa;

                }

            }

            cc=0;

            errorflag=0;

            rightflag=1;

            hibitflag=0;

a:

            cmpflag=0;

        }

    }

}

voidt0(void)interrupt1using0

{

    TH0=(65536-500)/256;

    TL0=(65536-500)%256;

    if((errorflag==1)&&(rightflag==0))

    {

        bb++;

        if(bb==800)

        {

            bb=0;

            alarmflag=~alarmflag;

        }

        if(alarmflag==1)

        {

            P0_0=~P0_0;

        }

        aa++;

        if(aa==800)

        {

            aa=0;

            P0_1=~P0_1;

        }

        second3++;

        if(second3==6400)

        {

            second3=0;

            hibitflag=0;

            errorflag=0;

            rightflag=0;

            cmpflag=0;

            P0_1=1;

            alarmflag=0;

            bb=0;

            aa=0;

        }

    }

    if((errorflag==0)&&(rightflag==1))

    {

        P0_1=0;

        cc++;

        if(cc<1000)

        {

            okflag=1;

        }

        elseif(cc<2000)

        {

            okflag=0;

        }

        else

        {

            errorflag=0;

            rightflag=0;

            hibitflag=0;

            cmpflag=0;

            P0_1=1;

            cc=0;

            oka=0;

            okb=0;

            okflag=0;

            P0_0=1;

        }

        if(okflag==1)

        {

            oka++;

            if(oka==2)

            {

                oka=0;

                P0_0=~P0_0;

            }

        }

        else

        {

            okb++;

            if(okb==3)

            {

                okb=0;

                P0_0=~P0_0;

            }

        }

    }

六心得体会

通过为期两个星期的课设学习,了解了很多关于C51单片机系统的一些知识是,通过简易的CPU芯片,编写一些程序,了解了如何利用它组成一些小系统并实现所要求的功能。

其次是对仿真软件的应用,学会使用这些仿真软件,了解如何进行单片机的仿真。

 

七参考文献

[1] 胡汉才.单片机原理与接口技术.北京:

清华大学出版社,1996

[2]张洪润.单片机应用技术.北京:

清华大学出版社,1997

[3]刘守义.单片机应用技术.西安:

西安电子科技大学出版社,2002

[4]张先庭单片机原理,接口与C51应用程序设计国防工业出版社2010年

附录1设计总体电路图

 

 

总体设计电路图

 

附录2数字密码锁源程序

ORG0000H

MAIN:

MOV43H,#03H;允许输入错误密码三次记数单元

MOV50H,#00H;6个显缓单元存放输入密码单元

MOV51H,#00H

MOV52H,#00H

MOV53H,#00H

MOV54H,#00H

MOV55H,#00H

MOV57H,#06H;存放原始密码位数记数单元

MOV58H,#01H;存放原始密码

MOV59H,#02H

MOV5AH,#03H

MOV5BH,#04H

MOV5CH,#05H

MOV5DH,#06H

MOVP1,#0FFH;关灯

;

START:

MOV56H,#00H;存放输入密码位数初始化

MOV42H,#50H

MOVSP,#60H

MOVP2,#0FFH

MOV7EH,#11H;6个显示管初始值

MOV7DH,#10H

MOV7CH,#10H

MOV7BH,#10H

MOV7AH,#10H

MOV79H,#10H

MOVA,#81H;控制字

MOVDPTR,#0FF23H;控制口

MOVX@DPTR,A;显示控制字内容

MOVR0,#59H;R0初始地址59H

MOVA,#7EH

MOVX@R0,A;R0初始地址内容为7E7E的内容为11H

LCALLLCK0

LCALLPTDS0

PTDS0:

MOVR0,#79H;密码地址R0

MOVA,22H

ACALLPTDS

MOVA,21H

ACALLPTDS

MOVA,20H

ACALLPTDS

RET

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1