找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4264|回复: 3
打印 上一主题 下一主题
收起左侧

真正的适用的电子密码锁

[复制链接]
跳转到指定楼层
楼主
真正的适用的电子密码锁

摘自张志良编著《80C51单片机实用教程基于Keil cProteus

由单片机控制的电子密码锁是一种智能化的电子产品,近年来得到较多应用。

电路设计

电子密码锁电路如8-27所示,该电路具有EPROM存储开锁密码、LCD显示、4×4矩阵键盘输入和声光报警功能。
右半部分为4×4矩阵式键盘电路,与8-26电路相同。其中,K0K9为密码数字键,其余6键为功能键:K10为开锁键OpenK11为确认键EnterK12为设置键SetK13为闭锁键CloseK14为复位键ResetK10为清除键Clear
左上部分为LED灯状态显示电路,VD0为闭锁灯,VD1为开锁灯,VD2为报警灯,分别由P2.3P2.2P2.1控制,开锁灯VD1模拟开锁机械动作。

左中部分为LCD1602显示屏电路,8-10电路相同(控制端改为P2.5P2.7)。

左下部分为串行EPROM AT24C02存储开锁密码电路,7-28b电路相同(数据线和时钟线分别为P3.6P3.7)。

蜂鸣器(警报发声)接80C51P2.0

功能设计

开机。闭锁灯VD0亮(红),表示闭锁;其余灯灭。

开锁。

按开锁键Open(键编号10),发按键嘟声,LCD16021行显示:inputpassword(输入密码)。

键入8位密码,16022行依次显示键入的8位隐形密码:********。每键入一位密码数字,发一次按键嘟声。

8位密码输入完毕,按确认键Enter(键编号11)后,系统核对密码。

若密码正确,16021行显示:password ok!(密码正确通过),闭锁灯VD0灭(红),开锁灯VD1亮(绿),表示已开锁。

若键入密码中途发现键入有误,可按清除键Clear(键编号15)。按一次Clear键,已键入的隐形密码“*”退一格。

若键入8位密码有误,16021行显示:errortry again(错,再输入一次),允许用户输错3次(有error1error2error3提示)。

若连续4次输入错误,16021行显示:inputfail!(输入失败),并发出警车声,报警灯VD2(黄)闪烁,中间不能打断。

开锁操作有时限,从按下开锁键后,60秒内未键入正确密码,声光报警。

警车声停后,仍可正常操作(为便于验证操作演示,警车声频率升降循环3次,实用时可大大延长警车声时间,用作锁定功能)。

设置。

本例初始密码为12345678,由生产厂商在出厂前录入串行EPROM AT24C02,用户使用时,可设置新的密码;或者用户需要修改原用密码,前提是先用原有效密码打开密码锁。

按设置键Set(键编号12),16021行显示:input password(输入密码)。

先按开锁操作步骤和过程键入8位有效密码,密码验证正确后,16021行显示:password ok!(密码正确通过),第2行显示:set new password(设置新密码)。

若不能键入原有效密码,则不能进入设置程序。并在第4次输入错误后,声光报警。

系统提示设置新密码后,键入8位新密码,16022行依次显示键入的8位隐形密码:********。操作步骤和功能同开锁过程。

Enter键后,16021行显示:input again(再输入一遍)。

再次输入第一次键入的8位新密码,按Enter键后,若二次密码相同,16021行显示:new password ok!(新密码设置完成)。

若二次密码不相同,16021行显示:errortry again(错,再输入一次),允许用户输错2次(有error1error2提示)。若第3次输入错误,16021行显示:input fail!(输入失败)。

设置操作有时限,从按下设置键后,60秒内未键入正确密码,声光报警。

复位。用于用户忘记密码,无法开锁时,由生产厂商高级维修人员将密码锁初始化。因此,复位操作的功能需要保密和隐蔽,并不对用户和无关人员公开,以防被非法利用。

按复位键Reset(键编号14),1602LED灯均无反应(对无关人员表示Reset键无作用),但若按下复位键后10秒内,不能进行正确的第二步操作,立刻声光报警。

正确的第二步操作是在10秒内,按下清除键Clear(键编号15)。

正确的第三步操作是键入8位复位密码(81815151)。若依次键入密码中,有一位出错,16021行立刻显示:error,并声光报警。出错后,须再次按复位键Reset,才能重新进入复位操作。

正确键入8位复位密码后,开锁灯VD1亮(绿),16021行显示:reset ok!(复位成功),第2行显示:12345678(初始密码)。

复位操作进入第三步操作后,仍有时限要求,若30秒内未正确键入8位复位密码,声光报警。

关闭。用于上述几种操作完成后退出。

按闭锁键Close(键编号13),停显示、停嘟声、灭灯。但在进入上述4种键操作程序或报警过程中,按闭锁键无效,需待程序和报警执行完毕,才有效。

程序设计

程序流程图

密码锁程序流程图如8-28所示。



C51程序

C51程序见张志良编著《80C51单片机实用教程基于Keil cProteus》(高等教育出版社ISBN 978-7-04-044532-9P.332

程序条例清晰,每条语句均有注释,真实可靠可信可行,便于阅读理解。

涉及程序如下:

void  STAT ( );                     //启动信号子函数STAT7.4.2

void  STOP ( );                     //终止信号子函数STOP7.4.2

void  ACK ( );                      //发送应答A子函数ACK7.4.2

void  NACK ( );                     //发送应答子函数NACK7.4.2

bit  CACK ( );                      //检查应答子函数CACK7.4.2

void  WR1B ( );                     //写一字节子函数WR1B,形参x:发送数据7.4.2

unsigned char  RD1B ( );              //读一字节子函数RD1B,返回值:接收数据7.4.2

void  WRNB ( );                    //AT24Cxx n字节子函数,7.4.3

void  RDNB ( );                     //AT24Cxx n字节子函数,7.4.3

void  in1602 (unsigned char  x);       //并行数据输入1602子函数,形参:输入数据x见例8-7

void  init1602 ( );                    //1602初始化设置子函数,见例8-7

void  wr1602(unsigned char d[],a);      //1602子函数,形参:写入数组d[],地址a见例8-7

unsignedchar  k_scan ( );              //键扫描子函数,返回值:闭合键序号见例8-11

void  input ( );                       //入密码子函数

void  alm ( );                        //警报子函数

void  open ();                       //开锁子函数

void  set ( );                         //设置子函数

void  clos ( );                        //闭锁子函数

void  reset ( );                        //复位子函数

void  main ( );                      //主函数

void  t1 ( ) interrupt 3 { }             //T1中断函数(50ms定时中断)

void  int0 ( ) interrupt 0{ }            //外中断0中断函数(键闭合中断)

void  t0 ( ) interrupt 1 { }             //T0中断函数(警报声中断)

Proteus仿真

实验1所述Proteus仿真步骤,打开Proteus软件,按8-17选择和放置元器件,并连接线路,画出Proteus仿真电路如8-39所示。

左键双击Proteus ISIS仿真电路中AT89C51,装入Keil调试后自动生成的Hex文件。

8.3.3节电子密码锁功能设计要求,可逐条验证开锁、设置、复位、闭锁、显示、嘟声、亮灯、出错和超时报警等功能,此处不再重复。

需要说明的是,本例初始密码为12345678,已录入电子密码锁仿真DSN文件随带的AT24C02片内ERROM 50H中,打开AT24C02片内Memory(左键单击暂停按钮“    ”,然后左键单击主菜单“Debug”→“I2C Memory Internal Memory –U3”),可看到该AT24C02片内Memory 0x50~0x57区域已存有该初始密码:0102030405060708。设置新的密码后,可再次打开AT24C02片内Memory,查看写入AT24C02的新密码。但是,关闭Proteus软件时,并不能一并将新密码留存,必须左键单击主菜单“File”→“Save Design”保存,才能实际保存新密码。这样,下次启动Proteus软件,打开电子密码锁仿真DSN文件,随带的AT24C02片内ERROM 50H中,就是新密码了,否则还是原密码。

终止程序运行,可按停止按钮。

读者可先下载Proteus ISIS仿真电路DSN文件和驱动程序Hex文件,在电脑上仿真验证,确认有效后,再购买《80C51单片机实用教程基于Keil cProteus》,查看程序。

欢迎质询,张志良Emailzzlls@126.com,有信必复。

1.gif (5.79 KB, 下载次数: 16)

1.gif

2.gif (7.04 KB, 下载次数: 24)

2.gif

3.gif (16.27 KB, 下载次数: 34)

3.gif
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-4-11 21:35 | 只看该作者
谢谢分享 楼主能上传电路图和程序吗?
回复

使用道具 举报

板凳
ID:111634 发表于 2016-4-13 08:39 | 只看该作者
admin 发表于 2016-4-11 21:35
谢谢分享 楼主能上传电路图和程序吗?

电路图(word文档图)和Proteus仿真电路图已经上传了,但不知为什么贵站未显示?请告诉我上传方法。还有怎样上传rar压缩文件?
我是一个老师,已经编著了十几本单片机和电工、电子教材。其中有《单片机实验实训100例—基于Keil c和Proteus》北航社2015.1出版ISBN 978-7-5124-1603-1、《80C51单片机实用教程—基于Keil c和Proteus》高教社2016.1出版ISBN 978-7-04-044532-9、《单片机原理与控制技术—双解汇编和C51》(第3版)机工社2013.8出版ISBN 978-7-111-42393-5、《80C51单片机Proteus仿真设计实例教程——基于Keil C和Proteus》清华社2016.5出版ISBN 978-7-302-41682-1。以前很少上网,现在拟逐步上传我书中的一些案例。



回复

使用道具 举报

地板
ID:148321 发表于 2017-2-23 08:59 | 只看该作者
谢谢分享 楼主能上传电路图和程序吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表