简单六位数字密码锁.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单六位数字密码锁

目 录 第1章 绪论 1 1.1 设计任务 1 1.2 设计要求 1 第2章 系统方案设计 2 2.1 硬件设计思想 2 2.2软件设计思想 3 第3章 电路设计 4 3.1 电路原理 4 3.2 电路原理图 4 第4章 程序设计 5 4.1流程图 5 4.2 算法描述 5 第5章 程序清单与仿真结果 6 5.1 程序清单 6 5.2 仿真结果 16 第6章 设计总结 17 6.1 设计体会 17 参考文献 18 致 谢 19 实物展示 20 第1章 绪论 1.1 设计任务 设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。 在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。 输入密码时,数码管同步显示输入的数字。 输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告) 输入错误后可以重输,要有复位功能。 1.2 设计要求 利用AT89S52单片机的P2端口的P2.0--P2.6连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,P2.7接蜂鸣器。启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,若密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出警报。 第2章 系统方案设计 2.1 硬件设计思想 2.1.1 键盘设计 本设计使用7按键,从上到下,从左至右依次设为确认键,数字1,数字2,数字3,数字4,数字5,数字6,用来输入密码,如下图 图2.1 键盘仿真图 2.1.2 数字显示设计 使用共阳极七段数码管来显示输入的数字,图如下: 图2.2 显示仿真图 2.1.3 检验密码电路设计 使用LED灯和蜂鸣器来提示输入的密码是否正确,若密码正确,绿灯亮,若密码错误,红灯闪烁,蜂鸣器响,电路如图: 图2.3 密码验证系统仿真图 2.2软件设计思想 电子密码锁工作的主要过程是从键盘开始输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。 密码的设定,在此程序中密码是固定的,预设的密码为532416共6位密码。 在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字) 输入密码时,数码管要在单片机的控制下同步显示输入的数字。 第3章 电路设计 3.1 电路原理 单片机最小系统。一个AT89S52单片机做为控制电路,运用其P2口来实现密码的输入和蜂鸣器的报警,通过P0口给数码显示管高低不同电平信号,来实现输入密码的显示,P1接指示灯。 3.2 电路原理图 图3.2 电路原理图 第4章 程序设计 4.1流程图 图4.1 系统流程图 4.2 算法描述 1、设计一个延时子程序 void delayms(unsigned int t) { unsigned int i,j; for(i=t;i0;i--) for(j=114;j0;j--); } 主程序 void init() void delayms(unsigned int t) void main() 第5章 程序清单与仿真结果 5.1 程序清单 #includereg52.h sbit mm1=P2^0;//密码按键1-8 sbit mm2=P2^1; sbit mm3=P2^2; sbit mm4=P2^3; sbit mm5=P2^4; sbit mm6=P2^5; sbit mmok=P2^6; sbit l1=P1^0; sbit l2=P1^2; sbit fmq=P2^7; void init() { P0=0xff;//禁止数码管显示 mm1=1; mm2=1; mm3=1; mm4=1; mm5=1; mm6=1; mmok=1; fmq=1; l1=1; l2=1; } void delayms(unsigned int t) { unsigned int i,j; for(i=t;i0;i--) for(j=114;j0;j--); } void main() { unsigned char mmsr,bn,bn1,bn2,bn3,bn4,bn5; mmsr=0; bn=0; bn1=0; bn2=0; bn3=0; bn4=0; bn5=0; mmsr=1; init(); while(1) { if(mmsr==1) { if

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档