《简单六位数字密码锁解析》由会员分享,可在线阅读,更多相关《简单六位数字密码锁解析(24页珍藏版)》请在金锄头文库上搜索。
1、目 录第1章 绪论11.1 设计任务11.2 设计要求1第2章 系统方案设计22.1 硬件设计思想22.2软件设计思想3第3章 电路设计43.1 电路原理43.2 电路原理图4第4章 程序设计54.1流程图54.2 算法描述5第5章 程序清单与仿真结果65.1 程序清单65.2 仿真结果16第6章 设计总结176.1 设计体会17参考文献18致 谢19实物展示20 第1章 绪论1.1 设计任务(1) 设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。(2) 在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁
2、。预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。(3) 输入密码时,数码管同步显示输入的数字。(4) 输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告)(5) 输入错误后可以重输,要有复位功能。1.2 设计要求利用AT89S52单片机的P2端口的P2.0-P2.6连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,P2.7接蜂鸣器。启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,若密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出
3、警报。第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显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警
4、处理。密码的设定,在此程序中密码是固定的,预设的密码为532416共6位密码。在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)输入密码时,数码管要在单片机的控制下同步显示输入的数字。第3章 电路设计3.1 电路原理单片机最小系统。一个AT89S52单片机做为控制电路,运用其P2口来实现密码的输入和蜂鸣器的报警,通过P0口给数码显示管高低不同电平信号,来实现输入密码的显示,P1接指示灯。3.2 电路原理图图3.2 电路原理图第4章 程序设计4.1流程图图4.1 系统流程图4.2 算法
5、描述1、设计一个延时子程序void delayms(unsigned int t)unsigned int i,j;for(i=t;i0;i-)for(j=114;j0;j-);2、 主程序 void init() void delayms(unsigned int t) void main()第5章 程序清单与仿真结果5.1 程序清单12#includesbit mm1=P20;/密码按键1-8sbit mm2=P21;sbit mm3=P22;sbit mm4=P23;sbit mm5=P24;sbit mm6=P25;sbit mmok=P26;sbit l1=P10;sbit l2=P
6、12;sbit fmq=P27;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(mm
7、sr=1)if(mm5=0) /系统8位 程序密码532416delayms(10);if(mm5=0)bn=1;P0=0xff;/消隐P0=0x92;/显示5 if(mm3=0)&(bn=1)delayms(10);if(mm3=0)&(bn=1)bn1=1;P0=0xff;/消隐P0=0xb0;/显示3if(mm2=0)&(bn1=1) delayms(10); if(mm2=0)&(bn1=1)bn2=1;P0=0xff;/消隐P0=0xa4;/显示2 if(mm4=0)&(bn2=1) delayms(10); if(mm4=0)&(bn2=1)bn3=1;P0=0xff;/消隐P0=
8、0x99;/显示4 if(mm1=0)&(bn3=1) delayms(10); if(mm1=0)&(bn3=1)bn4=1;P0=0xff;/消隐P0=0xf9;/显示1 if(mm6=0)&(bn4=1) delayms(10); if(mm6=0)&(bn4=1)bn5=1;P0=0xff;/消隐P0=0x82;/显示6 if(mm1=0) delayms(10); if(mm1=0) P0=0xff;/消隐 P0=0xf9;/显示1 if(mm2=0) delayms(10); if(mm2=0) P0=0xff;/消隐P0=0xa4;/显示2 if(mm3=0)delayms(10
9、);if(mm3=0)P0=0xff;/消隐P0=0xb0;/显示3 if(mm4=0)delayms(10);if(mm4=0)P0=0xff;/消隐P0=0x99;/显示4 if(mm5=0)delayms(10);if(mm5=0)P0=0xff;/消隐P0=0x92;/显示5 if(mm6=0)delayms(10);if(mm6=0)P0=0xff;/消隐P0=0x82;/显示8 if(mmok=0)delayms(10);if(mmok=0) if(bn=1)&(bn1=1)&(bn2=1)&(bn3=1)&(bn4=1)&(bn5=1) /密码成功 while(1)P0=0xff
10、;l2=0;delayms(100); else while(1)P0=0xff;fmq=0;l1=0;delayms(100);l1=1;delayms(100); 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(mm5=0) /系统8位 程序密码532416 delayms(10);if(mm5=0)bn=1;P0=0xff;/消隐P0=0x92;/显示5if(mm3=0)&(bn=1) if(mm1=0)&(bn3=1)delayms(10);if(mm1=0)&(bn3=1)bn4=1;P0=0xff;/消隐P0=0xf9;/显示1 if(mm6=0)&(bn4=1)delayms(10);if(