找回密码
 立即注册

QQ登录

只需一步,快速开始

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

真正的适用的电子密码锁

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

摘自张志良编著《80C51单片机实用教程—基于Keil c和Proteus》

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

⒈ 电路设计

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

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

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

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

⒉ 功能设计

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

⑵ 开锁。

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

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

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

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

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

⑥ 若键入8位密码有误,1602第1行显示:error,try again(错,再输入一次),允许用户输错3次(有error1、error2、error3提示)。

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

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

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

⑶ 设置。

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

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

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

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

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

⑤ 按Enter键后,1602第1行显示:input again(再输入一遍)。

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

⑦ 若二次密码不相同,1602第1行显示:error,try again(错,再输入一次),允许用户输错2次(有error1、error2提示)。若第3次输入错误,1602第1行显示:input fail!(输入失败)。

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

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

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

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

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

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

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

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

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

⒊ 程序设计

⑴ 程序流程图

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



⑵ C51程序

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

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

涉及程序如下:

void  STAT ( );                     //启动信号子函数STAT,见7.4.2节

void  STOP ( );                     //终止信号子函数STOP,见7.4.2节

void  ACK ( );                      //发送应答A子函数ACK,见7.4.2节

void  NACK ( );                     //发送应答子函数NACK,见7.4.2节

bit  CACK ( );                      //检查应答子函数CACK,见7.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区域已存有该初始密码:01、02、03、04、05、06、07、08。设置新的密码后,可再次打开AT24C02片内Memory,查看写入AT24C02的新密码。但是,关闭Proteus软件时,并不能一并将新密码留存,必须左键单击主菜单“File”→“Save Design”保存,才能实际保存新密码。这样,下次启动Proteus软件,打开电子密码锁仿真DSN文件,随带的AT24C02片内ERROM 50H中,就是新密码了,否则还是原密码。

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

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

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

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

1.gif

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

2.gif

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

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 单片机教程网

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