电子密码锁的设计课程设计.docx

上传人:b****7 文档编号:8748448 上传时间:2023-02-01 格式:DOCX 页数:14 大小:183.42KB
下载 相关 举报
电子密码锁的设计课程设计.docx_第1页
第1页 / 共14页
电子密码锁的设计课程设计.docx_第2页
第2页 / 共14页
电子密码锁的设计课程设计.docx_第3页
第3页 / 共14页
电子密码锁的设计课程设计.docx_第4页
第4页 / 共14页
电子密码锁的设计课程设计.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

电子密码锁的设计课程设计.docx

《电子密码锁的设计课程设计.docx》由会员分享,可在线阅读,更多相关《电子密码锁的设计课程设计.docx(14页珍藏版)》请在冰豆网上搜索。

电子密码锁的设计课程设计.docx

电子密码锁的设计课程设计

单片机课程设计报告书

课题名称

电子密码锁的设计

 

一、设计任务及要求:

设计任务:

1、用4*3组成0~9数字键及确认键、删除键。

2、用3位数码管组成显示电路提示信息,当输入密码时,只显示“-”。

3、当密码位输入完毕按下确认键时,对输入的密码与设定的密码(666)进行比较,若密码正确,则开锁,此处用1个发光二极管点亮表示。

4、当密码不正确时,发光二极管处于熄灭状态,同时用1个蜂鸣器发出报警声。

要求:

首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。

在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。

然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。

最后进入联机调试,采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。

最后写出设计

 

指导教师签名:

年月日

二、指导教师评语:

 

指导教师签名:

年月日

三、成绩

 

指导教师签名:

年月日

一、绪言

随着信息化时代也进入我们的家庭,人们对家居,文件资料及各种私人隐私的安全要求不断提高。

如何实现防盗这一问题也变的尤其突出,传统的机械锁由于其构造的简单,被橇的事件屡见不鲜,电子密码锁由于其保密性高,使用灵活性好,安全系数高,易于主人随时更换密码,一学即会,大大满足了人们对密码锁的要求,受到广大用户的喜爱。

二、方案比较与论证

2.1系统整体流程

电子密码锁的总体功能原理是以AT89S52单片机为主要的控制核心,通过外接4*4矩阵式键盘作为信号源,数码管显示器作为显示器件,蜂鸣器作为提示音器件,单片机实时的去执行相应的功能。

在数码管上显示出来,而此时通过蜂鸣器和二极管告知用户输入的信息是否正确。

CPU控制原理图如图1

2.2电子密码锁的控制方案论证

用4*3的行列式键盘组成0~9数字键及确认键、删除键,从矩阵键盘输入8位数密码,起始密码由程序设定,输入完后按确定键开锁,取消键清除所有输入。

用8位数码管组成显示电路提示信息,当输入密码时,只显示“-”,当密码位输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。

当密码不正确时,禁止按键输入3秒,同时启动蜂鸣器发出“嘀、嘀”报警声。

2.3单片机的选择方案论证

方案一:

采用可编程逻辑期间CPLD作为控制器。

CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。

采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。

但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案

方案二:

采用Atmel公司的AT89S52单片机作为控制器。

AT89S52是一个低功耗,高性能的51内核的CMOS8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。

综合考虑,选择方案二,采用Atmel公司的AT89S52单片机作为控制器。

2.4键盘选择方案论证

方案一:

采用独立式键盘。

由于各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。

此种键盘适用于按键较少或操作速度较高的场合。

但本题发挥部分要求12个功能键,按键数目较多,这就需要较多的输入口线,而且电路结构复杂。

故此方案不可取。

方案二:

采用行列式键盘。

它由行线和列线组成,按键位于行列的交叉点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法判定按键的位置,此方案适用于按键较多的场合。

通过对电子密码锁题目的分析,采用4*3行列式键盘。

2.5显示模块的选择方案论证

方案一:

采用带字库LCD模块显示。

能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。

但是价格昂贵。

方案二:

采用LED数码管显示。

数码管能显示数字和符号,但是占用IO口资源较多,对于简单的电路可以选用此方案。

电子密码锁,电路简单,选用方案二,显示所需信息。

2.6模块的选择方案论证

当输入密码时,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。

当密码不正确时,禁止按键输入3秒,同时发出“嘀、嘀”报警声,为实现此功能我们选用LED发光二极管和蜂鸣器混合使用。

三、硬件电路设计

3.1电子密码锁控制电路图

图2电子密码锁控制线路图

3.2行列式式键盘的设计

键盘电路如图3所示。

设计数字键0~9的键号依次为0~9,取消键的键号为10,确认键的键号为11,键号可按键值=行首键号(0、4、8、12)+列键号(0、1、2、3)公式计算。

图3键盘电路

3.3数码管显示电路的设计

数码管驱动采用8个共阴极数码管显示,由于单片机的驱动能力有限,采用74LC245作为数码管的驱动,在7段码输出线上串联100欧姆电阻起限流作用。

其电路如图4所示。

图4数码管显示电路

3.4蜂鸣器驱动电路的设计

蜂鸣器的驱动采用NPN三极管2484来驱动,低电平有效。

其电路如图5所示。

图5蜂鸣器驱动电路

3.5主要元器件选择

主要元器件选用型号和数量如表1所示:

表1主要元器件清单

序号

材料名称

规格型号

数量

元件代号

1

单片机

AT89C51

1

U1

2

晶振

12MHz

1

X1

3

电容

22PF

2

C1、C2

4

键盘

4*3

12

5

数码管

MPX8

1

6

蜂鸣器

1

7

发光二极管

1

D1

8

驱动

74LS45

1

U2

9

三级管

2484

1

Q1

10

排阻

10k

1

RP1

4、程序流程图

图6密码输入流程图

五、电子密码锁控制器仿真

在完成了电子密码锁硬件设计和软件设计以后,便进入系统的调试阶段。

系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。

调试后的仿真结果如下图所示。

5.1Keil调试

 

图7keil仿真结果

 

5.2Proteus调试

图8Proteus仿真结果

六、结束语

通过这次课程设计,使我了解了我学的知识如何用在实践上,得到了一次用专业知识和专业技能去分析问题、解决问题全面系统的锻炼。

在这期间,我学会了用科学去解决问题,许多看似简单的问题其间却有很多奥妙。

另外这次实践使我在单片机的基本原理、单片机应用系统开发过程,以及用c语言设计程序的思路技巧等方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

在现代化的人们生活中,电子产品变得尤为重要,电子锁是信息时代发展的产物,应时而生,我相信随着科技的不断发展,将来的电子锁会更加适应广大群众的要求,灵活性能和安全性能更加满足人们的需要。

七、参考文献

[1]苏家键等.单片机原理及应用技术[M].北京:

高等教育出版社,2004:

56-57.

[2]阎石主编.数字电子技术基础[M].北京:

高等教育出版社,1998:

89.

[3]黄智伟.凌阳单片机课程设计指导[M].北京:

北京航空航天大学出版社,2007:

39-42.

[4]张志建.单片机设计思想研究[M].桂林:

广西师范大学出版社,1989:

36.

[5]吴丽普.c语言程序设计论选[C].上海:

上海译文出版社,1979:

5-9.

[6]谭浩强.C程序设计[M].北京:

清华大学出版社,2005:

125.

[7]钟睿.MCS-51单片机原理及应用开发技术[M].北京:

中国铁道出版社,2006:

34.

[8]蓝清华等.单片机应用教程[M].北京:

清华大学出版社,1999:

79.

[9]范蟠果.工控单片机原理及应用[M].北京:

清华大学出版社,2007:

63.

[10]白秀水.Protues应用和实证研究[D].北京:

北京师范大学出版社,1898:

17-19.

[11]李广弟等.单片机基础[M].北京:

北京航空航天出版社,2001:

48.

[12]范柳絮,李宏,陈娟,谷志敏.基于CPLD的电子密码锁设计[J].电子测量技术,2008,03:

180-182+186.

[13]吴秋兰,耿霞.基于ISP技术的电子密码锁设计[J].电子工程师,2004,12:

78-80

附录1部分源程序

软件部分源程序如下:

 #include

#defineucharunsignedchar

#defineuintunsignedint

ucharcount;//密码位计数

ucharpw[4];//初始密码存储区

ucharpwbuf[4];//输入密码存储区

ucharselfdefinebuf[4];//自定义密码存储区

ucharerror_cnt;//错误次数计数器

bitenterflag;//确认键按下与否标志

bitpwflag;//密码正确与否标志

bitlast_pwflag;//前一次密码输入正确与否标志

sbitopen=P2^5;//锁开指示灯,绿灯。

低电平亮

sbitbeep=P2^0;//蜂鸣器,低电平叫

sbitred=P2^1;//红灯,低电平亮

sbitclose=P2^7;//锁合指示灯,黄色。

低电平亮

sbityouxiao=P2^3;//蓝灯,按键有效指示。

低电平亮

voidflashred_L(void);//闪红灯,表示可输入自定义密码

voidflashred_S(void);//快闪红灯,重新输入自定义密码

voidflashall(void);//三盏灯全亮,不能继续输入

/*键消抖延时函数*/

voiddelay(void)

{

uinti;

for(i=8000;i>0;i--);

}

//蓝灯亮一下,再灭,用来表示按键按下有效

voidyouxiaoled()

{

youxiao=0;

delay();

youxiao=1;

}

//蜂鸣器短叫报警

voidbaojing()

{

beep=0;

delay();

beep=1;

delay();

beep=0;

delay();

beep=1;

}

 

/*键扫描函数*/

ucharkeyscan()//键盘扫描函数

{

uchartemp;

P1=0xfe;

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay();//键盘去抖,

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{youxiaoled();//按键有效指示灯亮,即蓝灯亮

temp=P1;

switch(temp)

{

case0xee:

return1;break;

case0xde:

return2;break;

case0xbe:

return3;break;

case0x7e:

return11;break;//确定键11

}

while(temp!

=0xf0)//按键抬起检测

{

temp=P1;

temp=temp&0xf0;

}

}

elsereturn0;//无键按下返回0

}

P1=0xfd;

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay();

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{

youxiaoled();

temp=P1;

switch(temp)

{

case0xed:

return4;break;

case0xdd:

return5;break;

case0xbd:

return6;break;

case0x7d:

return12;break;//取消键12

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

elsereturn0;

}

P1=0xfb;

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay();

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{youxiaoled();

temp=P1;

switch(temp)

{

case0xeb:

return7;break;

case0xdb:

return8;break;

case0xbb:

return9;break;

case0x7b:

return13;break;//重设密码键13

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

elsereturn0;

}

P1=0xf7;

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{

delay();

temp=P1;

temp=temp&0xf0;

if(temp!

=0xf0)

{youxiaoled();

temp=P1;

switch(temp)

{

case0xe7:

return10;break;//数字0

default:

break;

}

while(temp!

=0xf0)

{

temp=P1;

temp=temp&0xf0;

}

}

elsereturn0;

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1