简单六位数字密码锁
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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 仿真结果 (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.1 电路原理
单片机最小系统。一个AT89S52单片机做为控制电路,运用其P2口来实现密码的输入和蜂鸣器的报警,通过P0口给数码显示管高低不同电平信号,来实现输入密码的显示,P1接指示灯。
3.2 电路原理图
图3.2 电路原理图
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
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;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);