0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用单片机设计密码锁的详细资料和代码概述

Wildesbeast 来源:单片机 作者:h1654155169.2086 2020-05-05 15:11 次阅读

1.实验任务

根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。

2.电路原理

图4.32.1

3.系统板上硬件连线

(1). 把“单片机系统”区域中的P0.0/AD0用导线连接到“音频放大模块”区域中的SPK IN端子上;

(2). 把“音频放大模块”区域中的SPK OUT端子接喇叭和;

(3). 把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端子上;

(4). 把“单片机系统“区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L1端子上;

(5). 把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接到“独立式键盘”区域中的SP1和SP2端子上;

4.程序设计内容

(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。

(2). 密码的输入问题:

由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。

(3). 按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。

5.C语言源程序

#include 《AT89X52.H》

unsigned char code ps[]={1,2,3,4,5};

unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

unsigned char pslen=9;

unsigned char templen;

unsigned char digit;

unsigned char funcount;

unsigned char digitcount;

unsigned char psbuf[9];

bit cmpflag;

bit hibitflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa;

unsigned int bb;

bit alarmflag;

bit exchangeflag;

unsigned int cc;

unsigned int dd;

bit okflag;

unsigned char oka;

unsigned char okb;

void main(void)

{

unsigned char i,j;

P2=dispcode[digitcount];

TMOD=0x01;

TH0=(65536-500)/256;

TL0=(65536-500)%6;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(cmpflag==0)

{

if(P3_6==0) //function key

{

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) //digit key

{

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;

}

else if(funcount》1)

{

psbuf[funcount-2]=digitcount;

}

}

else

{

second3=0;

}

while(P3_7==0);

}

}

}

else

{

cmpflag=0;

for(i=0;i《pslen;i++)

{

if(ps[i]!=psbuf[i])

{

hibitflag=1;

i=pslen;

errorflag=1;

rightflag=0;

cmpflag=0;

second3=0;

goto a;

}

}

cc=0;

errorflag=0;

rightflag=1;

hibitflag=0;

a: cmpflag=0;

}

}

}

void t0(void) interrupt 1 using 0

{

TH0=(65536-500)/256;

TL0=(65536-500)%6;

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;

}

else if(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;

}

}

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634652
  • 存储器
    +关注

    关注

    38

    文章

    7484

    浏览量

    163763
  • 密码锁
    +关注

    关注

    6

    文章

    249

    浏览量

    34993
收藏 人收藏

    评论

    相关推荐

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

    本文档的主要内容介绍了如何基于STM32单片机设计电子密码锁详细资料概述
    发表于 09-05 16:00

    用PIC单片机设计电子密码锁

    用PIC单片机设计电子密码锁
    发表于 01-04 14:16 3次下载

    如何基于STM32单片机设计电子密码锁详细资料概述

    本文档的主要内容介绍了如何基于STM32单片机设计电子密码锁详细资料概述
    发表于 06-08 08:00 151次下载

    使用单片机设计的电子密码锁代码和protel电路图详细资料免费下载

    本文档的主要内容详细介绍的是使用51单片机设计的电子密码锁代码+电路图。代码亲测可用,详细原理
    发表于 12-17 08:00 18次下载
    使用<b class='flag-5'>单片机设</b>计的电子<b class='flag-5'>密码锁</b>源<b class='flag-5'>代码</b>和protel电路图<b class='flag-5'>详细资料</b>免费下载

    使用51单片机设计的密码锁程序资料免费下载

    本文档的主要内容详细介绍的是使用51单片机设计的密码锁程序资料免费下载,需要自取。
    发表于 12-18 08:00 16次下载
    使用51<b class='flag-5'>单片机设</b>计的<b class='flag-5'>密码锁</b>程序<b class='flag-5'>资料</b>免费下载

    STC89C52单片机电子密码锁源程序的详细资料说明

    本文档的主要内容详细介绍的是STC89C52单片机电子密码锁源程序的详细资料说明。
    发表于 12-18 16:11 34次下载
    STC89C52<b class='flag-5'>单片机</b>电子<b class='flag-5'>密码锁</b>源程序的<b class='flag-5'>详细资料</b>说明

    单片机程序入门之网络密码锁中计算机端程序的详细资料免费下载

    本文档的主要内容详细介绍的是单片机程序入门之网络密码锁中计算机端程序的详细资料免费下载。
    发表于 03-01 17:20 7次下载
    <b class='flag-5'>单片机</b>程序入门之网络<b class='flag-5'>密码锁</b>中计算机端程序的<b class='flag-5'>详细资料</b>免费下载

    单片机电子密码锁代码资料免费下载

    本文档的主要内容详细介绍的是单片机电子密码锁代码资料免费下载。
    发表于 04-11 18:28 15次下载
    <b class='flag-5'>单片机</b>电子<b class='flag-5'>密码锁</b>源<b class='flag-5'>代码</b><b class='flag-5'>资料</b>免费下载

    使用51单片机设计电子密码锁的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机设计电子密码锁的程序免费下载。
    发表于 07-26 17:36 50次下载
    使用51<b class='flag-5'>单片机设</b>计电子<b class='flag-5'>密码锁</b>的程序免费下载

    使用单片机设计电子密码锁LCD1602显示的程序免费下载

    本文档的主要内容详细介绍的是使用单片机设计电子密码锁LCD1602显示的程序免费下载。
    发表于 05-24 14:50 30次下载
    使用<b class='flag-5'>单片机设</b>计电子<b class='flag-5'>密码锁</b>LCD1602显示的程序免费下载

    使用51单片机设计指纹密码锁的电路原理图和PCB资料免费下载

    本文档的主要内容详细介绍的是使用51单片机设计指纹密码锁的电路原理图和PCB资料免费下载。
    发表于 07-05 08:00 75次下载
    使用51<b class='flag-5'>单片机设</b>计指纹<b class='flag-5'>密码锁</b>的电路原理图和PCB<b class='flag-5'>资料</b>免费下载

    使用51单片机设计的按键密码锁源程序和工程文件免费下载

    本文档的主要内容详细介绍的是使用51单片机设计的按键密码锁源程序和工程文件免费下载。
    发表于 07-08 08:00 9次下载
    使用51<b class='flag-5'>单片机设</b>计的按键<b class='flag-5'>密码锁</b>源程序和工程文件免费下载

    基于STM32单片机设计的数字密码锁工程文件免费下载

    本文档的主要内容详细介绍的是基于STM32单片机设计的数字密码锁工程文件免费下载。
    发表于 07-08 08:00 85次下载
    基于STM32<b class='flag-5'>单片机设</b>计的数字<b class='flag-5'>密码锁</b>工程文件免费下载

    使用51单片机设计的矩阵键盘密码锁程序免费下载

    本文档的主要内容详细介绍的是使用51单片机设计的矩阵键盘密码锁程序免费下载。
    发表于 08-07 08:00 8次下载
    使用51<b class='flag-5'>单片机设</b>计的矩阵键盘<b class='flag-5'>密码锁</b>程序免费下载

    基于51单片机密码锁(掉电可记忆密码)例程源代码

    基于51单片机密码锁(掉电可记忆密码)例程源代码
    发表于 05-16 11:13 25次下载