单片机实训论文Microsoft Word 文档.docx
《单片机实训论文Microsoft Word 文档.docx》由会员分享,可在线阅读,更多相关《单片机实训论文Microsoft Word 文档.docx(13页珍藏版)》请在冰豆网上搜索。
单片机实训论文MicrosoftWord文档
编号:
17
实训设计(论文)说明书
题目:
单片机电子密码锁的设计
院(系):
电子信息工程系
专业:
电子信息工程技术
学生姓名:
学号:
指导教师:
职称:
题目类型:
理论研究实验研究工程设计工程技术研究软件开发
2010年12月30日
Abstract
Withthegrowingsocialandmaterialwealthandpeople'slivingstandards,securityhasbecomeamodernoneoftheissuespeoplearemostconcernedabout.ElectronicCodeLockadvantages:
simplehardwarestructure,feature-rich,usingSCMtorealizetheelectroniccodelock,tofollowinthedesignofthesoftwareinsteadofhardware,softwarecanusethehardwaretodothethingstodo,andcannotchangethehardwarecase,thecorrespondingsoftwarechanges,differentfunctionsderivedproducts;passwordcombinationmoresafety,convenience.Withtheadventofsinglechip,therehasbeensmartwithmicroprocessorlock,exceptithastheelectroniccodelockfunction,butalsotheintroductionofintelligentmanagement,expertanalysissystemandotherfunctions,sothatthelockwithhighsecurityandreliability.Atpresent,Chinadevelopedelectroniclocktechnologyisstillrelativelybackward,thedevelopmentofelectroniclockstheyuseaseparateelectroniccomponentsorthecommondigitalcircuitdesignandproduction,althoughcomparedwiththemechanicalkeylockhasmanyadvantages,butthelowlevelofintelligence,codingcombinationisstillsmall.Thedigitalclockisasinglechiptodo(AT89C51)asthecore,combinedwiththecomponents(digitalandmatrixkeys,etc.),whichtogetherwiththecorrespondingsoftware,toachievethepurposeofmakingsimplepassword,thedifficultyliesinhardwarecomponentsselection,layoutandsubsequentdebugging.
Keywords:
SingleChipMicrocomputerAT89C51Digitron
摘要
随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
电子密码锁的优点:
硬件结构简单,功能丰富,采用单片机来实现的电子密码锁,在设计时遵循以软件代替硬件,能用软件实现的东西就不用硬件去做,而且可以在硬件不变的情况下,改动相应的软件,派生出不同功能的产品;密码组合多,安全性好,方便。
随着单片机的问世,出现了带微处理器的智能密码锁,它除了具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性。
目前我国开发的电子密码锁的技术还比较落后,开发的电子密码锁大多采用分离电子元件或普通数字电路设计生产的,尽管与机械钥匙锁相比有许多优点,但智能化程度低,编码组合仍较少。
本次做的密码锁是以单片机(AT89C51)为核心,结合相关的元器件(数码管以及矩阵按键等),再配以相应的软件,达到制作简易密码的目的,其硬件部分难点在于元器件的选择、布局及后面的调试
目录
引言2
1、课程设计目的3
2、实训内容3
3、密码锁原理图4
4、系统介绍6
5、系统工作原理7
6、密码锁各模块的程序设计分析9
7、系统调试13
8、检测元器件14
9、检测各个引脚信号15
10、结论16
引言
人类的经济活动已经到了工业经济时代,并正在转入高新技术产业迅猛发展的时代。
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
电子密码锁是现代生活中常用的加密工具。
它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。
1、课程实验目的
(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤;
2、实验内容
4×4键盘及8位数码管显示构成的电子密码锁
(1)用4×4组成0-9数字键及确认键
(2)用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”
(3)当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开
(4)此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声
(5)若密码不正确,禁止按键输入3秒,同时发出“嘀、嘀”报警声
(6)若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止
3、密码锁原理图
4、系统介绍:
A.16个按键组成矩阵按键,用来输入数字0~F,设置第十个按键(A)为确认键。
B.单片机P1口控制矩阵按键,进行按键扫描。
C.单片机P3.0,P3.1,P3.2口分别控制LED1,LED2,蜂鸣器。
D.单片机P0口接数码管a~f段选,P2口控制数码管的八个位选。
E.上拉电阻、74HC573是P0口的驱动芯片,提高P0口的电流,以驱动数码管工作。
5、系统工作原理
本系统以AT89X52单片机为核心,使用4×4矩阵键盘作为数据输入方式,74HC573驱动数码管显示提示程序运行过程和开锁的步骤。
本系统的密码判断过程如下:
当使用者输入5位密码后按下BESURE键,单片机通过密码逐个比较,如果输入的5位密码和设定的密码完全相同,那么能成功驱动开锁模拟灯LED1将锁打开,并且蜂鸣器响一声。
若输入5位密码与设定的密码不相同,按下BESURE键后,另一个模拟灯LED2亮,可以按复位键重新输入。
由于输入密码过程中难免输入失误,如果密码输错,可直接按下复位键重新输入,但是系统不允许无限次地输入错误,以免密码被套用,当3次密码输入都错误,单片机将驱动蜂鸣器报警。
6、密码锁运行程序
本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、数码管显示模块及指示报警程序等模块。
系统程序流程如图所示。
主程序模块:
******************************************
主函数
******************************************/
voidmain()
{
TMOD=0x01;
TH0=0xfe;
TL0=0x36;
TR0=1;
ET0=1;
EA=1;
SMG_bit=0x7f;
key_poart=0xff;//拉高P1口,准备按键扫描
while
(1)
{
if(input_flag)//是否有键按下
{
input_flag=0;
begain[input_time]=8;//显示8
input_time++;//输入密码个数计入
if(input_time>5)
{
input_time=0;
}
}
input_number[input_time]=scan_key();key_num=16;
}
}
按键输入、密码比较判断与确认键模块:
该模块的功能是当确认键按下时将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则模拟灯1亮蜂鸣器响一声;若不正确模拟灯2亮,蜂鸣器响两声,则按下复位键,重新输入密码,每输入错误一次,输入次数将自加1,当3次都出错则禁止输入一段时间。
/**************************************
矩阵按键扫描
返回key_num
**************************************/
unsignedcharscan_key()
{
unsignedcharLINE;
key_poart=0xfe;
if(key_poart!
=0xfe)
{
delay(20);
if(key_poart!
=0xfe)
{
LINE=key_poart&0xf0;input_flag=1;
switch(LINE)
{
case0xe0:
key_num=0;break;
case0xd0:
key_num=1;break;
case0xb0:
key_num=2;break;
case0x70:
key_num=3;break;
}
}while(key_poart!
=0xfe);
}
key_poart=0xfd;
if(key_poart!
=0xfd)
{
delay(20);
if(key_poart!
=0xfe)
{
LINE=key_poart&0xf0;input_flag=1;
switch(LINE)
{
case0xe0:
key_num=4;break;
case0xd0:
key_num=5;break;
case0xb0:
key_num=6;break;
case0x70:
key_num=7;break;
}
}while(key_poart!
=0xfd);
}
key_poart=0xfb;
if(key_poart!
=0xfb)
{
delay(20);
if(key_poart!
=0xfb)
{
LINE=key_poart&0xf0;input_flag=1;
switch(LINE)
{
case0xe0:
key_num=8;break;
case0xd0:
key_num=9;break;
case0xb0:
key_num=10;if(input_number[0]==sec_code[0]&&input_number[1]==sec_code[1]&&input_number[2]==sec_code[2]&&input_number[3]==sec_code[3]&&input_number[4]==sec_code[4])
{error=0;input_number[0]=16;input_number[1]=16;input_number[2]=16;input_number[3]=16;input_number[4]=16;
led1=0;bepeer=0;delay(500);bepeer=1;}//当按键为10时,密码进行比较,即确认键
else
{error=1;error_time++;input_number[0]=16;input_number[1]=16;input_number[2]=16;input_number[3]=16;input_number[4]=16;
led2=0;bepeer=0;delay(50);bepeer=1;delay(10);bepeer=0;delay(50);bepeer=1;}
if(error_time>=3)TR0=~TR0;delay(50);break;//密码比较
case0x70:
key_num=11;break;
}
}while(key_poart!
=0xfb);
}
key_poart=0xf7;
if(key_poart!
=0xf7)
{
delay(20);
if(key_poart!
=0xf7)
{
LINE=key_poart&0xf0;input_flag=1;
switch(LINE)
{
case0xe0:
key_num=12;break;
case0xd0:
key_num=13;break;
case0xb0:
key_num=14;break;
case0x70:
key_num=15;break;
}
}while(key_poart!
=0xf7);
}
returnkey_num;
}
显示模块:
switch(bit_select)
{
case0:
SMG_bit=bittab[7];if(error)SMG_Data=numtab[15];//显示F
else{SMG_Data=0x31;};break;//显示T
case1:
SMG_bit=bittab[6];SMG_Data=0x40;break;
case2:
SMG_bit=bittab[5];SMG_Data=numtab[input_time];break;
case3:
SMG_bit=bittab[4];SMG_Data=numtab[begain[4]];break;
case4:
SMG_bit=bittab[3];SMG_Data=numtab[begain[3]];break;
case5:
SMG_bit=bittab[2];SMG_Data=numtab[begain[2]];break;
case6:
SMG_bit=bittab[1];SMG_Data=numtab[begain[1]];break;
case7:
SMG_bit=bittab[0];SMG_Data=numtab[begain[0]];break;
default:
break;
}
7、系统调试以及元件的检测
完成电路板的制作后,接下来是电路板的调试。
做成第一块板出现的问题:
烧入程序后,数码管没有显示,测量各个元件的引脚,发现P0口以及驱动芯片573上都没有电压,所以不能驱动数码管亮,于是在P0口并上一个上拉电阻,问题解决了,烧入程序后,可是数码管显示乱码,F段不显示,刚开始怀疑程序错误,于是写了一个简单的程序烧入,发现数码管的H段不亮,检测H段的电压及导通情况,发现H段的引脚接到了F段,这样就导致错误发生;另外,蜂鸣器不响,测量三极管各引脚的电压,三极管处于放大状态,把与蜂鸣器相接的电阻短路后,蜂鸣器响了。
为了方便调试,还对密码锁进行了仿真。
6.心得体会
在本次课程设计开始时我就希望能通过这次课程设计学习到尽可能多的知识,帮助自己提高自信,同时也想看看自己到底学会了些什么。
因为以前自己并没有完全独立的做好一些东西,对自己的能力有很大的怀疑,所以希望通过这次的实训,自己真正的做出自己想做的东西并且从中学到知识。
在课程设计的第一次调试过程中,出现了许多我无法解决的问题,使我有些灰心,但是在认真检测及调试后,我发现硬件出现的问题大部分是因为自己的粗心,还有理论和实际上的差别,在修改完这些问题以后,接下来的调试就比较顺利了,在程序上,按照要求一步步的实现,不断修改,不断改进。
在这次的实训里,我发现自己真的学到了很多,也让我明白真正的做出一块板与仿真的差别,特别是电路板的调试以及对出现的各问题的处理,再也不是只会一味的求助别人了,让我深刻的体会到别人帮做的永远只会是别人的,只是自己亲手做的,亲自己解决的才能让自己学到更多的东西,才能够发自己内心的喜悦。