简易电子密码锁课程设计.docx

上传人:b****5 文档编号:4242848 上传时间:2022-11-28 格式:DOCX 页数:25 大小:953.54KB
下载 相关 举报
简易电子密码锁课程设计.docx_第1页
第1页 / 共25页
简易电子密码锁课程设计.docx_第2页
第2页 / 共25页
简易电子密码锁课程设计.docx_第3页
第3页 / 共25页
简易电子密码锁课程设计.docx_第4页
第4页 / 共25页
简易电子密码锁课程设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

简易电子密码锁课程设计.docx

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

简易电子密码锁课程设计.docx

简易电子密码锁课程设计

江西理工大学应用科学学院

微机控制系统课程设计报告

题目:

简易电子密码锁

姓名:

学号:

专业班级:

指导教师:

完成时间:

 

设计报告

综合测试

平时

总评

格式

(10分)

内容

(10分)

图表

(5分)

功能测试

(35分)

答辩

(20分)

考勤

(20分)

指导教师签名:

第一章系统概述2

3.1.6报警器和发光二极管9

参考文献17

附录18

摘要

随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤其的突出,传统的机械锁 由于其构造的简单,被撬的事件也屡见不鲜,因此,人们在日常生活中越来越越离不开密码的使用。

在人们对安全的重视和科技的发展的同时,许多电子智能锁(指纹识别、IC卡辨认)已相继问世,但这类产品是针对特定指纹或有效卡,只能适用于保密要求高且仅供个别人使用的箱、柜、房间等。

另外,卡片式的IC卡易丢失和损坏,加上其成本较高,在一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平和市场的接收程度,电子密码锁是这类电子防盗产品的主流。

基于以上思路,本次设计使用PHILIPS公司的P89C51实现——基于单片机的电子密码锁的设计。

 

关键字:

P89C51单片机 密码 电子锁  

with the improvement of people living standards, how to achieve security of this family also changed particularly prominent, the traditional mechanical lock because of its simple structure, the incident was nothing new. therefore, more and more people in their daily life is inseparable from the use of passwords.as people attach importance to security and the development of technology, at the moment, many Electronic smart lock(fingerprint ,IC card identification)has been published at home and abroad. However these products are characterized by specific and effective fingerprint cards, can only apply to the confidentiality requirements of the box, counter, doors, and so on. And fingerprint recognition knowledge for use in public places if there easily damaged machinery, C card there are still easily lost, damaged, and so on. Coupled with its high cost, to some extent, limited the popularity of such products and promotion. Given the current level of technology and the market reception of electronic code lock is such a mainstream electronic anti-theft products.Based on the above ideas, this design uses the P89C51 PHILIPS achieve an electronic password—based SCM lock design.    

Key words:

 P89C51SCM password electronic locks

 

第一章系统概述

本次设计使用P89C51单片机实现简易电子密码锁的设计,其主要具有如下功能:

1.设8置位密码,密码通过键盘输入,此时黄灯亮,若密码正确则绿灯亮。

2.密码可以由用户自己修改设定,绿灯亮后后才能修改密码。

在输入新密码时候需要确认,以防止误操作。

3.报警、锁定键盘功能。

密码输入错误红色发光二极管和蜂鸣器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。

电子密码锁的设计主要由三部分组成:

3×4矩阵键盘接口电路、密码锁的控制电路、输出数码显示电路。

另外系统还有LED提示灯,报警蜂鸣器等。

密码锁设计的关键问题是实现密码的输入、确认、更改等功能:

1.密码输入功能:

按下数字键,输入密码长度。

2.密码确认功能:

当按下确认键时,表示密码输入完成。

3.密码设置功能:

将输入的值作为新的密码。

主要的设计实施过程:

首先,选用单片机P89C51,以及选购其他电子元器件。

第二步,使用DXP2004设计硬件电路原理图,并设计PCB图完成人工布线(后因时间和材料准备不充分,所以没做出实物)。

第三步,使用KeiluVision4软件编写单片机的C语言程序、仿真、软件调试。

第四部,使用PROTEUS软件进行模拟软、硬件调试。

最后,联合软、硬件调试电路板,完成本次设计。

 

第二章基本功能设计

2.1实验任务

通过对本题目的设计掌握单片机控制系统设计的相关方法与技巧。

用P89C51RC2HBP设计一个简单电子密码锁,完成密码的识别功能。

2.2基本设计要求

2.2.1基本要求

(1)设置(0~9)十个按键和一个设置/确认按键,当系统正常工作时可通过设置/确认按键修改密码,使用时初始密码为12345678,随后可任意设置密码。

(2)当密码输入正确时,用一个发光二极管和蜂鸣器作为指示。

当密码输入错误时,则提示密码输入错误。

(3)当密码连续输入错误3次后锁定键盘,锁定时间为1分钟。

2.2.2发挥部分

不改变硬件电路,增加蜂鸣器音乐输入功能,即编出三种音乐分别对应密码输入正确、输入错误和键盘锁定三种状态。

2.3主要元件介绍

2.3.1P89C51芯片

P89C51RB2/RC2/RD2具有16K/32K/64K并行可编程的非易失性FLASH程序,存储器并可实现对器件串行在系统编程ISP和在应用中编程(IAP)在系统编程ISP(In-System Programming)。

当MCU安装在用户板上时允许用户下载新的代码,在应用中编程IAP(In-Application Programming),MCU可以在系统中获取新代码并对自己重新编程。

这种方法允许通过调制解调器连接进行远程编程片内ROM中,固化的默认的加载程序,Boot Loader允许ISP通过UART将程序代码装入Flash存储器而Flash代码中,则不需要加载程序对于IAP用户程序擦除和重编程。

Flash Memory的操作是通过使用片内ROM中的标准程序该器件的1个机器周期由6个时钟周期组成因此运行速度是传统80C51的2倍一个OTP配置位可让用户选择传统的12时钟周期该系列单片机是80C51微控制器的派生器件是采用先进CMOS工艺制造的8位微控制器指令系统与80C51完全相同有4组8位I/O口3个16位定时/计数器多个中断源4个中断优先级嵌套中断结构个增强型UART片内振荡器及时序电路新增的特性使得89C51RB2/RC2/RD2成为功能更强大的微控制器更好地支持应用于脉宽调制高速I/O递增/递减计数能力如电机控制等场合。

 

图2.1P89C51的DIP封装及管脚功能

 

2.4系统框图

图2.2系统框图

第三章硬件设计

3.1硬件电路的设计

3.1.1硬件工作接线口

P0口接数码管,用来显示按键是否按下,P1口接报警器和发光二极管。

P3口接3x4矩阵键盘,分别为(0~9)和设置/确认按键。

3.1.2LED显示器结构与原理

LED显示块是由发光显示二极管显示字段的显示器件。

在单片机中我们通常用七段LED,这种显示共有共阴极和共阳极两种,本设计是用共阴极,如图3.1所示。

图3-1LED数码显示部分

显示字符

共阴极段选码

显示字符

共阴极段选码

0

3FH

A

77H

1

06H

B

7CH

2

5BH

C

39H

3

4FH

D

5EH

4

66H

E

79H

5

6DH

F

71H

6

7DH

7

07H

8

7FH

9

6FH

 

表3.1LED显示块

通常的七段显示块中共有8个发光二极管,其中7个发光二极管构成七笔字形“8”,一个发光二极管构成小数点。

七段显示块与单片机接口非常容易。

只要将一个8位并行输出与显示块的发光二极管引脚相连即可。

8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制发光二极管的8位字节数据称为段选码。

3.1.3复位电路

图3.2复位电路

时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位(如图3.2)。

3.1.4振荡电路

图3.3振荡电路

本设计晶振选择频率为12MHZ,电容选择22pF,如图3.3所示。

 

3.1.5按键设置

按键方式有独立式和行列式两种,本设计是采用行列式,共设置12个按键。

能减少键盘与单片机接口时所占用的I/O线的数目。

如图所示:

S1~S10分别为0~9数字按键,S11为设置/确认按键。

如图3-4,当没有键按下时,行线和列线之间是不相连的,若第N行与第M列的键被按下,那么第N行与第M列的线就被接通。

本系统的键盘扫描方法是利用P3口的低四位作为行扫描线,P3口的高四位作为列回扫线。

具体实施方法为:

先使P3.0口输出低电平,P3口其他口输出高电平,然后对P3.4、P3.5、P3.6三个口分别作判断。

若此三口都为高电平,则没有键按下;若有键按下,P3.4、P3.5、P3.6三个口必定有一个口输入为低电平,再判断P3.4、P3.5、P3.6哪个口为低电平则可判断按键在哪列上。

如P3.4、P3.5、P3.6没有低电平,再使P3.1为低电平,其他口为高电平,依次扫描下去,找到按键所在的行,再判断P3口的高四位哪一位为低,便可知道键在哪一列上。

图3.4按键设置

3.1.6报警器和发光二极管

图3.5报警器与发光二极管

如果按下设置/确认按键,则黄灯亮。

当密码输入正确时,绿灯亮。

输入密码错误时,红灯亮且蜂鸣器响。

当第三次输入错误时,锁定键盘一分钟。

3.2硬件电路图

图3.6硬件电路Protel图

图3.6硬件电路PCB图

图3.7硬件电路PCB3D图

第四章软件设计

本系统程序部分使用C语言编写,C语言是一种高级程序设计语言,它的优点是简洁明了、可移植性高。

主要完成,先按下设置/确认键输入密码,系统会将所输入与系统密码进行比对。

若输入密码正确则绿灯亮。

然后可以任意设置密码。

每设置完一次都要按确认键。

期间操作出现失误,红灯亮蜂鸣器响,操作错误超过3次,系统会锁定键盘一分钟,并报警用以防止恶意试探密码。

4.1系统软件设计

本系统软件设计由主程序、初始化程序、数码显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。

主要程序设计流程图如下所示:

 

图4.1程序设计流程图

图4.2开锁流程图

4.1.1密码开锁功能

本系统使用数组PASSW[]存储密码,系统初始化对数组赋值PASSW[]={1,2,3,4,5,6,7,8}。

输入密码的时候,先将输入的每一位密码分别放置在数组PASST[]中,然后再将PASST[]与PASSW[]的每一位分别对照。

若每一位都相等,密码检查通过。

 

第五章系统PROTUSE仿真图

图5.1PROTUES仿真图

 

图5.2PROTUES仿真加载HEX文件

在下图中,当按下设置/确认键时,黄灯亮,然后输入密码。

如密码输入正确,则绿灯亮。

如输入错误,红灯亮且蜂鸣器响。

当出现三次错误时,同时要锁定键盘一分钟。

经调试,所需要的功能都能实现。

图5.3按下设置/确认键黄灯亮

图5.4密码正确时绿灯亮

 

图5.5当密码错误时红灯亮

图5.6设置新密码时黄灯绿灯同时亮

第6章设计总结

通过这次课程设计,掌握了单片机的一些基本知识,并将计算机控制以及所有关知识联系起来,本来有些原理还是懵懂的,但是在找电子密码锁的基本知识时,我发现只有动手做才会掌握一些技巧。

通过这次的设计,我们熟悉并熟练掌握了Protel和Protues的技巧;在C语言程序设计中,学到了如何使用C语言对单片机进行编写程序,熟悉了使用KEIL软件,并且加深了对单片机的编程技巧。

在做这个设计的过程中,我遇到了不少的问题。

这锻炼了我们筛选、查阅资料,并将理论结合到自己的设计中的能力。

一步一步的排除故障原因,找到故障的原因并解决故障。

这次的设计使我们对模拟电子、数字电子知识加深了了解,尤其是在对电路进行调试以及对C语言程序的编写和调试的时候,出现了很多这些方面的问题,通过对以往知识的复习巩固,将问题解决。

在此设计中,学到了很多知识,不仅对于技术有了更深入的学习,而且对于一个项目的完成的工作时序、任务分配也有了一定的了解。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

这次课程设计终于顺利完成了,在设计中遇到了些问题,最后在老师和各位同学的辛勤指导下终于解决了。

我们学得到很多实用的知识,在此表示感谢!

同时,对给过我们帮助的所有同学和指导老师再次表示忠心的感谢!

 

参考文献

[1]当方.微型计算机控制技术[M].中国水利水电出版社,2001年

[2]胡汉才.单片机原理及其借口技术[M].清华大学出版社,1996年

[3]赵新民.智能仪器设计基础[M].哈尔滨工业大学出版社,1999年

[4]潘新,民王,燕芳.微型计算机控制技术[M].电子工业出版社,2003年

[5]李钟实.实用电子报警器精选百例[M].北京:

科技技术文献出版社,2002年

[6]陈爱弟.Protel99se实用培训教程[M].人民邮电出版社,2000年。

[7]阎石.数字电子技术基础[M].高等教育出版社,1998年

[8]童诗白.模拟电子技术基础[M].高等教育出版涉,1998年

 

附录

1.源程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uchari,j,num,temp,wrong;

ucharpassw[]={1,2,3,4,5,6,7,8};

ucharpasst[]={0,0,0,0,0,0,0,0};

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0x76,0x79,0x38,0x3f,0};

bitlockflag;

biteditflag;

bitcmpflag;

bitpressflag;

sbitalarm=P1^3;

sbitrled=P1^0;

sbitgled=P1^1;

sbityled=P1^2;

uintt0,a;

ucharright;

voiddelay(uintz)

{uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidlock()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

TR0=1;

while

(1)

{if(t0<1200)

{

alarm=0;

for(a=2000;a>0;a--)

{

}

rled=~rled;

delay(1000);

}

else

{

alarm=0;

rled=1;

TR0=0;

t0=0;

break;

}

}

}

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

}

ucharkeyscan()

{

P3=0xfe;

temp=P3;

temp=P3&0xf0;

while(temp!

=0xf0)

{

delay(50);

if(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xee:

{num=0;pressflag=1;}//11101110

break;

case0xde:

{num=1;pressflag=1;}//11011110

break;

case0xbe:

{num=2;pressflag=1;}//10101110

break;

case0x7e:

{num=3;pressflag=1;}//01111110

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfd;

temp=P3;

temp=P3&0xf0;

while(temp!

=0xf0)

{

delay(50);

if(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xed:

{num=4;pressflag=1;}

break;

case0xdd:

{num=5;pressflag=1;}

break;

case0xbd:

{num=6;pressflag=1;}

break;

case0x7d:

{num=7;pressflag=1;}

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

P3=0xfb;

temp=P3;

temp=P3&0xf0;

while(temp!

=0xf0)

{

delay(50);

if(temp!

=0xf0)

{

temp=P3;

switch(temp)

{

case0xeb:

{num=8;pressflag=1;}

break;

case0xdb:

{num=9;pressflag=1;}

break;

case0xbb:

{num=10;pressflag=1;}

break;

}

while(temp!

=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

}

}

returnnum;

}

voidinput()

{

while(num!

=10)

{

keyscan();

}

if(num==10)

{

pressflag=0;

yled=0;

for(i=0;i<8;i++)

{

while(!

pressflag)

{

keyscan();

}

pressflag=0;

temp=num;

if(temp!

=10)

{

if(!

editflag)

passt[i]=temp;

else

passw[i]=temp;

P0=table[num];

}

else

break;

}

yled=1;

cmpflag=~editflag;

delay(200);

P0=0;

num=0;

}

}

main()

{

i=0;

j=0;

lockflag=0;

editflag=0;

pressflag=0;

P0=0;

while

(1)

{

input();

if(cmpflag)

{

cmpflag=0;

for(j=0;j<8;j++)

{

if(passw[j]!

=passt[j])

{

if(wrong==2)

{

wrong=0;

lock();

}

else

{

gled=1;

rled=0;

alarm=0;

for(a=5000;a>0;a--)

{

}

delay(500);

rled=1;

alarm=1;

wrong++;

}

break;

}

else

{

if(j==7)

{

rled=1;

gled=0;

editflag=1;

input();

editflag=0;

gled=1;

wrong=0;

}

}

}

}

}

}

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

当前位置:首页 > 小学教育 > 数学

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

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