当前位置:文档之家› 简单六位数字密码锁

简单六位数字密码锁

目录第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 仿真结果 (14)第6章设计总结 (17)6.1 设计体会 (17)参考文献 (18)致谢 (19)实物展示..................................... 错误!未定义书签。

第1章绪论1.1 设计任务(1)设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。

(2)在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。

预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。

(3)输入密码时,数码管同步显示输入的数字。

(4)输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告)(5)输入错误后可以重输,要有复位功能。

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;i>0;i--)for(j=114;j>0;j--);}2、主程序void init()void delayms(unsigned int t)void main()第5章程序清单与仿真结果5.1 程序清单#include<reg52.h>sbit mm1=P2^0;//密码按键1-8sbit 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;i>0;i--)for(j=114;j>0;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(mm5==0) //系统8位程序密码532416 {delayms(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;//显示3}}if((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=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);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;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;//显示5}}if((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((mm6==0)&(bn4==1)){bn5=1;P0=0xff;//消隐P0=0x82;//显示6 }}if(mm1==0){delayms(10);if(mm1==0){P0=0xff;//消隐P0=0xf9;//显示1P0=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;l2=0;delayms(100);}}else{while(1)P0=0xff;}5.2 仿真结果1,开始仿真,按下开关,红灯亮图5.1 仿真图2,输入正确的密码(532416),数码管显示相应的数字图5.2 输入数字“5”图5.3 输入数字“3”图5.4 输入数字“2”图5.5 输入数字“4”图5.6 输入数字“1”图5.7 输入数字“6”3,(正确密码)按下确认键,绿灯亮图5.8 输入正确密码状态图4,若输入错误密码,则红灯闪烁,蜂鸣器响(图内为导通状态)图5.9 输入错误密码状态图第6章设计总结6.1 设计体会通过这次课程设计和设计中遇到的问题,我积累了一定的经验,刚开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译才能得到正确的程序。

这说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。

设计中要求有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确。

对错误的检查要求我要有足够的耐心,这对以后从事集成电路设计工作会有一定的帮助。

本次课程设计是我到目前为止觉得受益匪浅也是收获最大的一次实习。

身为通信专业的学生,设计是我们将来必需具备的技能。

而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。

从通过理论设计,到仿真软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。

相关主题