湖南工程学院单片机课设-密码锁.
单片机课程设计-基于单片机的密码锁设计报告
课程:单片机课程设计密码锁设计报告系专业班级姓名指导教师学年学期大三上学期一、设计任务书功能:1、可以设置4位密码。
设置好后有指示灯显示已经设置。
2、如果输错三次,要有报警灯亮。
3、输入正确后,发出声音报警信号。
使用K1到K4作为密码的设置开关和输入开锁密码设置开关,接到P1.0-P1.3上。
使用k5和k6作为外部中断0和外部中断1作为密码设置和密码确定开关,接到p3.2和p3.3。
使用发光管作为报警灯和指示灯,黄灯、绿灯和红灯分别接到p1.5、p1.6和p1.7上。
二、设计思路:使用中断对密码进行设置和解密。
1、密码输入:使用四个拨码开关输入密码。
2、密码设置:四个拨码开关共有16个密码可设定,当密码设好后,三个LED灯熄灭。
在用户设置好四位密码后,按K5键,便可开锁,在本次设计中,用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。
利用外部中断/INT0:按下K4键对密码进行设置,此时绿灯亮。
利用外部中断/INT1:按下K5键对密码进行解密,如果密码输入正确绿灯进行了慢闪烁,解密成功,然后对密码进行重新设置,将K4键设为高电平就可以重新设置。
3、密码修改:当设定的用户密码不小心外泄时,这时就要及时通过密码修改程序来更改密码了,当选用用户密码修改时,首先要正确输入原用户密码然后按K5键,如果原密码正确则进入密码修改程序。
接下来输入四位新密码,接着新密码即被存入CPU中,至此用户密码修改成功。
4、密码错误报警当用户键入错误密码并按下K5键时,密码错误指示黄灯快闪烁;当连续三次出现密码错误时,红灯闪烁并将密码锁锁定一段时间,可有效防止非法操作。
这是本设计安全性的体现。
三、硬件设计原理图密码锁的原理是:用拨码开关输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,错则要求重新输入,并记录错误次数,如果三次错误,则被强制锁定并报警。
实验核心元件:89C51芯片、6个拨码开关(4个拨码作为设置密码和输入密码,一个用作设置密码,一个用作确定)、三个发光二极管、P1.0到P1.7、P3.2、P3.3AT89C51的优点:AT89C51单片机是把中央处理器CPU、随即存储器RAM、只读存储器ROM、定时/计数器、I/O接口电路等主要计算机部件集成在一块电路芯片上的单片微型计算机 本设计中单片机应用的主要功能就是控制LED显示器的显示、报警电路以及开锁电路 还用作键盘的扫描等。
单片机课程设计-密码锁
《单片机技术》课程设计说明书密码锁院、部:学生姓名:指导教师:职称:专业:班级:完成时间:摘要随着现代科技的发展,锁变得更加的多样化,实用性和安全性最为重要的,于是电子密码锁毋庸置疑的成为了最受欢迎的锁类。
电子密码锁具有众多的优点,保密性强、不需要钥匙、修改密码方便等。
该课程设计是一个基于51单片机的液晶显示电子密码锁的设计。
单片机技术是智能化检测与控制领域应用非常普及并且拥有很大潜力的技术。
本设计硬件方面采用美国Atmel公司的AT89S52单片机作为系统处理核心, AT24C02作为数据存储器,用于断电保护,液晶显示器则是采用LCD12684,作为系统输出设备,显示系统提示信息,4*4矩阵键盘作为输入设备,再加以蜂鸣器、电源等电路构成整个系统硬件;软件方面则采用C语言编写。
关键词:密码锁;at89s52;at24c02;lcd12684ABSTRACTWith the development of modern technology, diversification of the lock becomes more, practicality and safety is the most important, so the electronic password lock undoubtedly become the most popular lock. Electronic cipher lock has numerous advantages, strong confidentiality, do not need to modify the password key, convenient etc.The curriculum design is a design of electronic password lock based on MCU 51 LCD display. SCM technology is the application of intelligent detection and control field is very popular and have great potential technique. The design of hardware with USA Atmel company AT89S52 microcontroller as the core processing system, AT24C02 is used as the data memory, for power-off protection, liquid crystal display is the use of LCD12684, as the system output device, display system information, 4*4 matrix keyboard as input device, and then the buzzer, the power supply circuit of the whole system hardware; software using C language.Key words:password-lock; at89s52; at24c02; lcd12684目录1 设计课题任务、功能要求说明及总体方案介绍 (1)1.1 设计课题任务 (1)1.2 功能要求说明 (1)1.3 设计课题总体方案介绍及工作原理说明 (1)2 设计课题的硬件系统设计 (3)2.1 设计课题硬件系统各模块功能简要介绍 (3)2.2 设计课题电路原理图、PCB图、元器件布局图 (4)2.3 设计课题元器件清单 (4)3 设计课题软件系统的设计 (5)3.1 设计课题使用单片机资源的情况 (5)3.2 设计课题软件系统各模块功能简要介绍 (5)3.3 设计课题软件系统程序流程框图 (6)4 设计结论、仿真结果、误差分析、教学建议等等 (8)4.1 设计课题的设计结论及使用说明 (8)4.2 设计课题的仿真结果 (9)4.3 设计课题的误差分析 (13)4.4 设计体会 (13)参考文献: (14)致谢 (15)附录 (16)附录 A (16)附录 B (16)附录 C (17)附录 D (19)附录 E (20)1 设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计并制作一个液晶电子密码锁,具有密码修改,超级密码,报警等功能。
单片机课程设计 电子密码锁
第1章设计目的1.利用所学单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
2.我们这次的课程设计是以单片机为基础,设计出一个具有一定功能的电子密码锁。
3.掌握一些重要芯片的功能特性及使用方法,并能运用其组合成一个简单的单片机机应用系统。
4.锻炼同学们的动手能力和独立思考的能力,巩固理论知识,加深对课堂内容的理解。
5.培养同学们对单片机的兴趣,通过课程设计调动同学们的积极性,使更多的人将来能在单片机领域有所建树。
第2章设计要求及总体思路2.1设计要求1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密“12345”共5位密码。
2、密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。
在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
3、按键禁止功能:初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
2.2 总体思路系统总体设计方案框图如下:图2-1一般而言,要实现相同的功能,硬件复杂的系统其软件一般较简单,而软件复杂的系统其硬件一般相对简单,本着经济性的原则,我们应该尽可能少用硬件,根据这个设计理念和设计要求,本单片机系统的设计思路如下:1)电子密码锁所用的数据的存储和运算用单片机来完。
2)因为没有专用的输入键盘,所以按键输入用计算器输入键盘代替。
按键密码从P3口输入。
3)用六位显示器显示五位密码,显示器选择动态扫描,用P0口作段控,用P2口作位控。
4)开锁信号从P1.1口输出,报警信号从P1.0口输出。
5) 按键分为功能键和数字键,具体如表2-1。
6)输入五位密码后按确认键,系统验证密码是否正确,若密码正确,则产生开锁信号,若接连三次输入错误密码,则产生报警信号。
7) 当错误输入某位密码时,可按删除键进行删除,也可按清零键对所输入的数进行整体清除。
单片机课程设计多功能密码锁
任务及设计要求1.设计一多位电子密码锁,输入密码用“F”表示,输入密码正确,绿灯亮(或显示其它标志、蜂鸣器替代),输入密码错误,红灯亮(或显示其它标志、蜂鸣器替代).2.具有确定键和取消键,在未确定之前可以取消,重新输入.3.连续输入三次错误密码,红灯闪烁,报警电路动作,键盘锁定.4.具有密码重置、修改功能.5.具有密码输入等待操作时间限制功能,超过限定时间报警.6.显示北京时间,时间可调整.7.可利用蜂鸣器添加提示音.系统原理框图硬件原理图元件清单硬件原理图仿真用原理图由于元件库缺少ADUC848,故使用了STC89C51代替仿真,因为端口两个芯片的P1口输入输出的设置不同,在仿真中修改了键盘扫描函数,以适用STC89C51的仿真.电源模块原理图有如下3种供电方式:1/5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽).2/7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽).3/USB供电(开关往下拨).RS232串口连接原理图该模块中采用maxin公司的max232作电平转换,接上串口转换下载线就可以从计算机上下载程序了.数码管显示模块原理本开发板采用共阴极数码管,段码由PNP三极管驱动,位码由NPN型三极管驱动.本设计中使用了低5位的数码管.蜂鸣器原理图本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制.PWM1为片内PWM模块的输出.蜂鸣器的驱动采用普通NPN三极管.按键输入模块原理图由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可.P2.0~P2.3为4X4矩阵式键盘列扫描信号.程序主要程序流程图程序#include <aduc848.h>#include<intrins.h>/****************************************************************************** *****类型定义******************************************************************************* *****/#define uint unsigned int#define uchar unsigned char/****************************************************************************** *****状态定义******************************************************************************* *****/#define opened 0#define new1 15#define new2 16#define succed 5#define fanin 10#define null 11#define error 12#define different 13#define tover 14/****************************************************************************** *****按键定义******************************************************************************* *****/#define enter 10#define back 11#define trevise 12#define revise 13#define cancel 14#define vain 15#define off 16#define end 17#define finish 18/****************************************************************************** *****函数声明******************************************************************************* *****/void p_base();void p_revise();void p_new1();void p_new2();void p_trevise();void p_show();uchar p_scan();void p_record();void p_delay(uint f_n);void p_state(uchar f_s);uchar p_compare(uchar *f_k1,uchar *f_k2);void p_copy(uchar *f_s,uchar *f_k);void p_rsave();void p_wsave();void p_rtime();void p_stime();void p_start();void p_stop();bit p_rack();void p_nack();uchar rbyte();void p_wbyte(uchar f_b);uchar p_rdata(uchar f_a);void p_wdata(uchar f_a,uchar f_d);/****************************************************************************** *****I/O口定义******************************************************************************* *****/sbit p00=P0^0;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;sbit p13=P1^3;sbit p14=P1^4;sbit p15=P1^5;sbitp16=P1^6;sbit p17=P1^7;sbit p20=P2^0;sbit p21=P2^1;sbit p22=P2^2;sbit p23=P2^3;sbit p24=P2^4;sbit p25=P2^5;sbit p26=P2^6;sbit p27=P2^7;sbit p30=P3^0;sbit p31=P3^1;sbit p32=P3^2;sbit p33=P3^3;sbit p34=P3^4;sbit p35=P3^5;sbit p36=P3^6;sbit p37=P3^7;/****************************************************************************** *****全局变量定义******************************************************************************* *****/ucharbot,key1[9],key2[9],save[9],stime[4],s,min,h,mino,mint,ho,ht,n1=1,n2=1,lock,minu,sign,tov, state,n,sound,point=1,ts,flash=7,bright33=1,bright35=1,bright36=1,bright37=1;showlist[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x71,0xff,0x21,0x85,0xe 1,0x7f,0x7d};uintms;/****************************************************************************** *****主函数******************************************************************************* *****/void main(){EA=1;ET0=1;TMOD=0x11;TH0=0xf9;TL0=0xdb;TR0=1;I2CCON=0xe8;sound=0;tov=1;P1=0x00;p_rsave();sign=p_rdata(40);if(sign!=1)p_new1();p_base();}/****************************************************************************** *****基础解锁函数******************************************************************************* *****/void p_base(){n=0;state=fanin;while(1){if(n==0)state=fanin;elsestate=n;bot=p_scan();if(n!=0&&tov==0){p_state(tover);main();}switch(bot){case vain:break;case enter:key1[n]=end;if(p_compare(key1,save)){p_state(succed);lock=0;point=1;state=opened;openedwhile(1){ bot=p_scan();switch(bot){case off:main();break;case back:while(1){bot=p_scan();switch(bot){case off:main();break;case enter:p_wdata(40,0);main();break;}}}}}else{p_state(error);p_record();main();}break;case cancel:main();break;case back:if(n!=0)key1[n--]=end;break;case revise:p_revise();break;case trevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key1[n++]=bot;}}}/****************************************************************************** *****密码修改函数******************************************************************************* *****/void p_revise(){n=0;p_state(fanin);state=fanin;while(1){if(n==0)state=fanin;elsestate=n;bot=p_scan();if(tov==0){p_state(tover);main();}switch(bot){case vain:break;case enter:key1[n]=end;if(p_compare(key1,save)){lock=0;point=1;p_state(succed);p_new1();}else{p_state(error);;p_record();main();}break;case cancel:main();break;case back:if(n!=0)key1[n--]=end;break;case revise:p_revise();case off:break;case trevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key1[n++]=bot;}}}/****************************************************************************** *****新密码输入函数******************************************************************************* *****/void p_new1(){n=0;state=new1;while(1){if(n==0)state=new1;elsestate=n;if((tov==0&&sign==1)||(n!=0&&tov==0)){p_state(tover);main();}bot=p_scan();switch(bot){case vain:break;case enter:key1[n]=end;p_new2();break;case cancel:main();break;case back:if(n!=0)key1[n--]=end;break;case revise:if(sign==1)p_revise();break;case trevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key1[n++]=bot;}}}void p_new2(){n=0;state=new2;while(1){if(n==0)state=new2;elsestate=n;bot=p_scan();if(tov==0){p_state(tover);main();}switch(bot){case vain:break;case enter:key2[n]=end;if(p_compare(key1,key2)){sign=1;p_copy(save,key2);lock=0;p_state(succed);p_wsave();p_wdata(40,1);main();}else{p_state(different);main();}break;case cancel:main();break;case back:if(n!=0)key2[n--]=end;break;case revise:if(sign==1)p_revise();break;case off:break;case trevise:p_trevise();break;default:if(n+1==9){p_state(error);main();}key2[n++]=bot;}}}/****************************************************************************** *****键盘扫描函数******************************************************************************* *****/uchar p_scan(){uchar f_s=vain;P2=P2&0xf0;if(P1!=0xff){p_delay(10);if(P1!=0xff){tov=1;P2=P2&0xf0;P2=P2|0x07;switch(P1){case 0xfe:f_s=1;break;case 0xfd:f_s=4;break;case 0xfb:f_s=7;break;case 0xf7:f_s=back;break;}while(P1!=0xff){sound=1;}sound=0;P2=P2&0xf0;P2=P2|0x0b;switch(P1){case 0xfe:f_s=2;break;case 0xfd:f_s=5;break;case 0xfb:f_s=8;break;case 0xf7:f_s=0;break;}while(P1!=0xff){sound=1;}sound=0;P2=P2&0xf0;P2=P2|0x0d;switch(P1){case 0xfe:f_s=3;break;case 0xfd:f_s=6;break;case 0xfb:f_s=9;break;case 0xf7:f_s=enter;break; }while(P1!=0xff){sound=1;}sound=0;P2=P2&0xf0;P2=P2|0x0e;switch(P1){case 0xfe:f_s=cancel;break;case 0xfd:f_s=off;break;case 0xfb:f_s=revise;break;case 0xf7:f_s=trevise;break; }while(P1!=0xff)sound=1;}sound=0;p_delay(10);}}return f_s;}/****************************************************************************** *****1毫秒中断函数.数码管显示函数******************************************************************************* *****/void time() interrupt 1{TH0=0xf9;TL0=0xdb;TR0=1;ms++;ms=ms%1000;p_show();if(sound)p26=!p26;if(ms==0){ts=!ts;tov++;tov=tov%11;s++;s=s%60;if(s==0){minu++;minu=minu%30;if(minu==0)lock=0;min++;min=min%60;mino=min%10;mint=min/10;if(min==0)h++;h=h%24;ho=h%10;ht=h/10;}}}}void p_show(){switch(n1){case 1:P3=0x80;if(bright37==1)P0=showlist[ht];elseP0=showlist[null];n1++;break;case 2:P3=0x20;if(bright35==1)P0=showlist[mint];elseP0=showlist[null];n1++;break;case 3:P3=0x00;p24=1;P0=showlist[state];n1++;p00=point;break;case 4:p24=0;P3=0x08;if(bright33==1)P0=showlist[mino];elseP0=showlist[null];n1++;break;case 5:P3=0x40;if(bright36==1){P0=showlist[ho];p00=0;}elseP0=showlist[null];n1=1;break;}}/****************************************************************************** *****时间修改函数******************************************************************************* *****/void p_trevise(){n2=1;p24=0;flash=7;state=null;p_stime();while(1){switch(flash){case 7:bright37=ts;break;case 3:bright33=ts;break;case 6:bright36=ts;break;case 5:bright35=ts;}if(tov==0){bright37=0;bright33=0;bright36=0;bright35=0;P3=0x00;p_state(tover);bright37=1;bright33=1;bright36=1;bright35=1;p_rtime();main();}if(bot!=finish)bot=p_scan();switch(bot){case vain:break;case finish:bright37=1;bright33=1;bright36=1;bright35=1;h=ho+ht*10;min=mino+mint*10;s=1;main();break;case enter:break;case cancel:bright37=1;bright33=1;bright36=1;bright35=1;p_rtime();main();break;case back:case revise:if(sign==1){bright37=1;bright33=1;bright36=1;bright35=1;p_rtime();p_revise();}break;case off:break;case trevise:bright37=1;bright33=1;bright36=1;bright35=1;p_rtime();p_trevise();break;default:switch(n2){case 4:mino=bot;bright33=1;bot=finish;flash=0;break;case 3:if(bot<=5){mint=bot;n2++;flash=3;bright35=1;}break;case 2:if(ht==2&&bot<=3||ht<=1&&bot<=9){ho=bot;n2++;flash=5;bright36=1;}break;case 1:if(bot<3){ht=bot;n2++;flash=6;bright37=1;}break;}}}}/****************************************************************************** *****时间存储函数******************************************************************************* *****/void p_rtime(){mino=stime[0];mint=stime[1];ho=stime[2];ht=stime[3];}/****************************************************************************** *****时间读取函数******************************************************************************* *****/void p_stime(){stime[0]=mino;stime[1]=mint;stime[2]=ho;stime[3]=ht;}/****************************************************************************** *****错误计数标志函数******************************************************************************* *****/void p_record(){lock++;minu=0;while(lock==3){sound=1;point=0;state=error;p_delay(99999);state=null;p_delay(99999);}}/****************************************************************************** *****结果显示函数******************************************************************************* *****/void p_state(uchar f_s){uchar f_n=3;while(f_n--){state=f_s;sound=1;p_delay(99999999);state=null;sound=0;p_delay(99999999);}}/****************************************************************************** *****密码读写函数******************************************************************************* *****/void p_rsave(){uchar f_n=9;while(f_n--)save[f_n]=p_rdata(f_n+10);}void p_wsave(){uchar f_n=9;while(f_n--)p_wdata(f_n+10,save[f_n]);}/****************************************************************************** *****延时函数******************************************************************************* *****/void p_delay(uint f_n){f_n=100*f_n;while(f_n--);}/****************************************************************************** *****数组比较函数******************************************************************************* *****/uchar p_compare(uchar *f_k1,uchar *f_k2){uchar f_k=0,f_n=0;{if(*(f_k1+f_n)==end&&*(f_k2+f_n)==end){f_k=1;break;}else if(*(f_k1+f_n)!=*(f_k2+f_n)){f_k=0;break;}f_n++;}return f_k;}/****************************************************************************** *****数组复制函数******************************************************************************* *****/void p_copy(uchar *f_s,uchar *f_k){uchar f_n;for(f_n=0;*(f_k+f_n)!=end;f_n++)*(f_s+f_n)=*(f_k+f_n);*(f_s+f_n)=end;}/****************************************************************************** *****EEPRom读写函数******************************************************************************* *****/uchar p_rdata(uchar f_a){uchar f_d;p_start();p_wbyte(0xd0);p_wbyte(f_a);p_rack();p_stop();_nop_();p_start();p_wbyte(0xd1);p_rack();f_d=rbyte();p_nack();p_stop();_nop_();return f_d;}void p_wdata(uchar f_a,uchar f_d) {p_start();p_wbyte(0xd0);p_rack();p_wbyte(f_a);p_rack();p_wbyte(f_d);p_rack();p_stop();_nop_();}void p_start(){MDE=1;MDO=1;MCO=1;MDO=0;}void p_stop(){MDE=1;MDO=0;MCO=1;MDO=1;}bit p_rack(){bit f_f;MCO = 0;MDE=1;MDO = 1;MCO = 1;MDE=0;f_f = MDI;MCO = 0;return f_f;}void p_nack(){MDE=1;MDO = 1;MCO = 1;MCO = 0;}uchar rbyte(){uchar f_b,n;f_b=0;MDE=1;MDO = 1;MDE=0;for (n=0;n<8;n++){MCO = 0;_nop_();MCO = 1;f_b<<=1;if (MDI)f_b|=0x01;}MCO = 0;return(f_b);}void p_wbyte(uchar f_b){uchar f_n;MDE=1;for(f_n=0;f_n<8;f_n++){MCO = 0;MDO = (f_b&0x80)>>7;_nop_();MCO = 1;f_b<<= 1;}MCO = 0;}使用说明书本产品为多功能密码锁.01.第一次启动后需要设定新密码,此时指示管显示一,输入新密码后按ENTER.然后需要确定新密码,此时指示管显示二,输入相同的密码后.指示管显示s闪烁3次,表示新密码设定成功.若两次密码不相同,则指示管显示d闪烁3次,然后指示管重新显示一,表明你需要重新输入新密码并确定.02.密码设定成功后,指示管显示f,表明你可以输入密码打开密码锁了.输入密码并按ENTER,如果密码正确,指示管显示s闪烁3次然后指示管显示o.表明密码锁已经打开.若密码不正确,指示管显示e闪烁3次.并且指示管重新显示f,此时你需要重新输入正确的密码.03.若密码锁已经打开,你需要按下OFF以关闭密码锁.04.如果你想要重设密码,请按下REVISE,然后,指示管显示f闪烁三次后,你需要输入原始密码后按ENTER,然后按第一步的方法设定密码.05.本产品有时间显示功能,如果你想修改时间,你可以按下TREVISE.这时候你可以调整你的时间了,此时需要调整位闪烁,若修改时间不符合实际,则无法修改.提示01.密码最多8位,超过8位会显示错误.02.无法输入不合理的时间.03.在半小时内连续输入错误的密码3次,键盘会锁定,无法进行任何操作, 蜂鸣器报警且指示管显示e一直闪烁直到半小时过去,并且指示管点亮起,提醒有人试图打开保险箱,直至再次输入正确的密码.04.BACK键可退格.05.CANCLE可返回表层.06.10秒操作超时, 蜂鸣器报警.07.按下任何一个键蜂鸣器都会响起提醒按键成功.08.本产品具有掉电储存功能,关闭电源后依然会记录密码.09.回复出厂设置,在OPENED状态下,先按BACK然后再按ENTER即可回复出厂设置.10.密码位数显示, 指示管会显示你输入了多少位密码.键位说明。
单片机课程设计报告电子密码锁
山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间: 2015.6.1—2015.6.12课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日一、设计内容及要求本实验基于51单片机利用矩阵按键、步进电机、lcd1602等模块实现电子密码锁的输入密码、密码比对、步进电机的驱动、修改密码等功能。
设计内容包括:1)lcd1602显示;2)矩阵按键的输入;3)24C08的储存于读取;4)步进电机的驱动;5)线路的链接。
设计要求:1)能演示;2)能回答答辩过程中提问的问题;3)完成设计报告。
二、设计原始资料单片机原理及接口技术李全利 2010年 1月单片机原理及应用教程范立南 2006年 1月单片机原理及应用教程刘瑞新 2003年07月三、设计完成后提交的文件和图表1.计算说明书部分1)方案论证报告打印版或手写版2)程序流程图3)具体程序2.图纸部分:具体电路原理图打印版四、进程安排教学内容学时地点资料查阅与学习讨论 2天 406实验室分散设计 4天 406实验室编写报告 2天 406实验室成果验收 2天 406实验室按分组选择不同的实验台,每组3人,题目可重复选择,但每题目不得超过10人。
五、主要参考资料《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月《单片机原理及接口技术》张毅刚人民邮电出版社.2008年《实用电子系统设计基础》姜威 2008年1月《单片机系统的PROTEUS设计与仿真》张靖武 2007年4月指导老师成绩答辩小组成绩总成绩目录摘要 (1)1.设计要求 (2)2.功能概述 (2)3.总体设计 (2)4.硬件设计 (3)4.1矩阵按键设计 (3)4.2 LCD显示设计 (4)4.3步进电机模块设计 (5)4.4密码修改设计 (5)4.5密码比较模块 (6)5.软件设计及流程图 (6)6.个人体会 (8)7.参考文献 (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
单片机课程设计 密码锁 湖南工学院
《单片机技术》课程设计说明书密码锁系、部:电气与信息工程系学生姓名:黄生旺指导教师:吴乐职称讲师专业:电气工程及其自动化班级:电气本0904完成时间:2011.12.25摘要日常生活和现代办公中,住宅与办公室的安全防范,单位的文件档案,财务报表以及一些个人资料的保存等多以加锁的办法来解决,若使用机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性大打折扣,为满足人们对门锁的使用要求,增加其安全性,用密码电子锁代替传统机械锁应运而生。
目前使用的电子密码锁种类繁多,各具特色,本设计从经济实用的角度出发,以80C51单片机为控制核心,研制了一款电子密码锁。
本设计的硬件部分即为简单的单片机最小系统,通过编程,实现其电子密码锁的功能。
该密码锁设计方法合理,简单易行,成本低,符合住宅,办公室用锁要求,具有一定的推广价值。
关键词:密码锁;单片机ABSTRACTDaily life and the modern office, residential and office security, the unit of paper files, as well as some personal financial statements andother information stored in locked solutions to, the use of mechanical key lock, people often need to carry more than the keys, very convenient to use, and security compromised key is lost, to satisfy people's demands for the use of locks to increase their security, electronic lock with a password replace the traditional mechanical locks came into being. Currently use a wide range of electronic locks, distinctive, the design from the point of view, for the control of the 80C51 microcontroller core, developed an electronic lock.The design of the hardware part is simple smallest single-chip system, through programming, to achieve its electronic code lock functionThe lock design is reasonable, simple, low cost, in line with re- sidential, office with a lock request, the promotion of a certain valueKEYWORDS:code-lock;Single Chip Micro-Computer目录1 密码锁设计课题任务、功能要求说明及总体方案介绍 (1)1.1 密码锁课题任务及功能要求 (1)1.2 密码锁设计总体方案介绍及工作原理说明 (1)2 密码锁硬件系统的设计 (2)2.1 密码锁硬件系统各模块功能简要介绍 (2)2.2 密码锁电路原理图、PCB图、元器件布局图各1份 (2)2.3 密码锁元器件清单 (2)3 密码锁软件系统的设计 (3)3.1 密码锁设计使用单片机资源的情况 (3)3.2 密码锁设计软件系统各模块功能简要介绍及流程图 (3)3.2.1 键盘扫描程序 (4)3.2.2 显示程序 (5)3.2.3 密码判断程序 (6)3.2.4 错误报警程序 (7)3.3 密码锁设计程序清单 (7)4 设计结论、缺陷分析、心得体会、教学建议 (8)4.1 密码锁的设计结论及使用说明 (8)4.2 密码锁设计的缺陷分析 (8)4.3 心得体会 (8)4.4 教学建议 (8)结束语 (9)致谢 (10)参考文献 (11)附录 (12)1 密码锁设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的密码锁。
单片机课设--密码锁
1 设计课题任务、功能要求说明及方案介绍1.1设计课题任务与要求设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“0”,进入准备工作状态。
该密码锁具有系统原始密码也是万能密码为,用户可以在原始密码输入正确后,即开锁后才可以设定并存储用户密码,当用户设置密时,万能密码仍可以解锁,输入的新密码并按下设定时回到系统初始状态。
密码锁锁定时,密码输入应处于保密显示状态,显示“0”,密码输入正确时应显示密码输入正确提示信息8个“8.”,即数码管全亮,否则,显示密码输入错误提示信息:8个“-”并且蜂鸣器响一会,当输入错误3次时,蜂鸣器报警一直报警,显示错误信息8个“-”,并且锁死系统。
1.2设计课题总体方案及工作原理此密码锁主要由单片机芯片AT89S52、4X4矩阵键盘、8位数码管显示电路和复位电路构成,设计课题的系统框图如图 1.1 所示:图 1.1系统框图实现密码锁功能的软件程序存放在AT89S52的ROM中。
2 设计课题硬件系统的设计2.1 设计课题硬件系统各模块介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块(1)单片机最小系统模块:AT89S52单片机芯片;复位电路;晶振电路。
本模块AT89S52系统控制核心,单片机系统复位由按键电平复位电路完成,通过按键S1来控制,单片机通过芯片引脚XTAL1、 XTAL2,外并接石英晶体振荡器和两只电容。
这样就为能为单片机提供频率为12MHz的晶振。
(2)4X4矩阵键盘模块:四条列线接P1.7-P1.4;四行线接P1.3-P1.0 (3)显示模块:本次设计显示为8位,采用两个四位一体数码管(共阳极)作为显示窗口,既可以节约成本又能简化电路。
数码管用8个PNP三极管驱动。
(4)电源模块:直接由PC的USB接口提供。
2.2 各功能模块详细介绍2.2.1 AT89S52介绍(1) 具有8KB可改写的Flash 内部程序存储器,可写/擦1000次;(2) 256字节内部RAM;(3) 32根可编程I/O口;(4) 3个16位定时器/计数器。
单片机课程设计电子密码锁设计模板
1.2设计电子密码锁的意义及相关技术指标当前虽然许多智能锁(如指纹辨别、人声识别、IC卡识别等)已相继问世,但这类产品是针对特定指纹、声音或有效卡,只能用于保密要求高且仅供个人使用的箱、柜、房间等。
另外,卡片式的IC卡易丢失和损坏,加上其成本较高,在一定程度上限制了这类产品的普及和推广。
而电子密码锁具有安全性能高、成本低、低功耗、操作简单等优点,经济好用,易于推广和普及。
本次单片机课程设计内容为设计一个电子密码锁,技术指标如下:输入正确密码开锁指示灯亮,否则开锁指示灯灭;应包含0-9和设置、输入,删除12个键的键盘;输入密码可由数码管显示;连续3次密码输入错误,则控制蜂鸣器发声报警。
第2章总体设计及方案论证为完成电子密码锁的功能设计,需要通过不同的模块来共同实现。
设计思路及总体设计如图图2.1主程序流程图在电源供电下,单片机通过控制各个模块共同构成一个电子密码锁,3×4键盘作为人机交互的界面使用,加上复位电路的作用是在程序运行出错或陷入死循环时能从头开始执行程序。
2.3数码管显示模块LED显示器有静态显示和动态显示两种显示方式。
2.3.1 LED静态显示方式所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截止,并且显示器的各位可同时显示。
静态显示时,较小的驱动电流就能得到较高的显示亮度。
静态显示方式的缺点是N位静态显示器要求有N 8根的I/O口线,占用I/O口线资源较多。
2.3.2 LED动态显示方式所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。
相比于静态显示方式而言,8位LED动态显示电路只需要两个8位I/O口,充分利用了I/O口资源。
电子密码锁的显示电路设计需要用到8位数码管来显示密码,为节约I/O口资源,显示电路应采用LED动态显示方式。
单片机课程设计---电子密码锁
题目名称电子密码锁课程名称单片机原理及应用课程设计学生姓名学号系、专业信息工程系、电子信息工程指导教师2013年6 月26 日摘要随着人们生活水平的不断提高,一切向着数字化控制,智能化控制方向发展。
单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,同时也给人们带来了意想不到的安全,其中电子密码锁就是一个典型的例子。
单片机AT89C51具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点。
所以在本设计中采用单片机AT89C51作为控制器来控制电路本系统以单片机为核心,辅以键盘,显示电路,使用按键来输入到开锁密码,并将其反馈到单片机,用单片机测出是否正确,从而判断是否开门,电路简单可靠,成本低廉。
关键字:单片机;行列式键盘;数码显示管;继电器目录1 概述 (4)2 设计指标与要求 (4)3 设计方案 (4)4 电路设计原理和电路图4.1主要构成电路 .......................................... 错误!未定义书签。
4.2按键输入电路 ........................................ 错误!未定义书签。
4.3显示电路 ................................................ 错误!未定义书签。
4.4报警电路 ................................................ 错误!未定义书签。
5 采用的主要元器件 56 编程实现错误!未定义书签。
7 仿真结果与分析 ................................................. 错误!未定义书签。
参考文献.. (9)1 概述应用MCS-51单片机设计电子密码锁电路。
电子密码锁电路选用4位控制,连续三次输入错误密码,密码锁则警报8秒钟,之后又可以重新开始输入密码三次。
单片机课程设计-电子密码锁-实验报告-
单片机课程设计电子密码锁实验报告学院:电子信息工程学院班级:自***姓名:***学号:******指导教师:***单片机课程设计电子密码锁实验报告(一)实验目的1、了解电子密码锁工作原理和八段LED数码管显示原理。
2、掌握LED数码管显示器与单片机接口电路设计方法。
3、掌握实现密码锁功能的编程方法。
(二)设计实现功能(1)由程序设定初始密码,密码输入正确时锁打开,指示灯亮,发出“叮咚”的声音;密码输入不正确时,指示灯闪亮四次,发出“嘀嘀嘀滴”报警声。
(2)具有保护密码的功能,输入密码在数码管上显示可改为“88888”的方式,防止别人偷窥密码。
(3)具有修改密码的功能,密码输入错误可按DEL键进行删除。
(4)具有防止多次试探密码的电子密码锁并加报警功能,密码输入错误超过三次,将一直发出“滴滴滴滴。
”报警声。
(5)具有设定新密码的功能,输入密码后按CHG键,密码将被重新设定。
(三)整体电路设计思路核心用单片机AT89S52来实现此实验的要求。
用4*4键盘来输入密码。
每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接V CC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
用8个7段数码管来显示密码。
数码管的显示用扫描的方式,利用动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。
《单片机技术》课程设计课题任务书(密码锁)
2、密码锁的软件系统
(1)、系统监控程序模块
(2)、显示程序模块
(3)、键盘程序模块
(4)、掉电存储程序模块
(5)、报警程序模块
三、设计要求
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息并报警提示。
主要参考资料
[1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6.
[2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12.
[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:北京航空航天大学出版社,2003.6.
[4]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01.
[5]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9.
教研室
意见
教研室主任:(签字)
年月日
湖南工学院《单片机技术》课程设计课题任务书
学院:电气与信息工程学院专业:电气1301~2
指导教师
王韧
学生姓名
课题名称
密码锁
内容及任务
一、设计任务
设计一个具有特定功能的密码锁。
二、设计内容
1、密码锁的硬件系统
(1)、单片机最小系统模块
(2)、供电模块
(3)、显示模块
(4)、键盘模
单片机课程设计-密码锁
单片机课程设计-密码锁11 设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
1.2 总体方案介绍及工作原理说明(1) 原始密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“888888”共6位密码。
(2)密码的输入: 采用按键来完成密码的输入,输入时密码处于显示保密状态,输入六位密码后,自动结束输入,并判断其正确性(3)密码若输入错误,显示输入错误提示信息,密码输入正确后,可以用键盘任意输入数字,若按下第八个按键,则进入修改密码(4)密码修改:可以任意输入“1-7”中的六位数字作为密码,密码输入时处于保密显示状态,六位密码输入结束确认后显示P.。
电源模块报警装置AT89S52复位和振荡下载口单片机电路数码管显独立式键盘示模块图1 设计总框图12 密码锁硬件系统的设计2.1 密码锁硬件系统各模块功能简要介绍此次课程设计是基于单片机控制的电子密码锁,结合主要设计条件,本设计由单片机系统、独立式键盘、LED显示和报警系统组成,系统能完成开锁、错误报警、密码修改功能等功能,设计硬件系统如下:(1)单片机系统:此次课题采用一种是用以AT89S52为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
此次课题用单片机P1口与键盘相连,做输入口,P0口与显示器段控相连,输入段控码,P2口输入位控码。
(2)独立式键盘接口电路:此次课程设计采用独立式键盘,与P1口相连,键按下则会使该端口变成低电平,单片机读P1口,通过对P1口数据的判断来确定哪一个键按下。
(3)数码管显示模块:此次课程设计采用的是共阴数码管,P0口段控,P2口送位控,八个数码管共用八根段控,由位控决定在哪一位显示。
单片机课程设计密码锁
单片机课程设计密码锁一、课程目标知识目标:1. 理解单片机的基础知识,掌握其基本原理和编程方法;2. 学习并掌握密码锁的原理与设计,能够运用单片机实现密码锁功能;3. 了解并掌握相关传感器和执行器的使用,实现密码锁的输入和输出控制。
技能目标:1. 能够运用所学知识,设计并编写出实现密码锁功能的单片机程序;2. 掌握使用相关调试工具,对单片机程序进行调试和优化;3. 提高学生的动手能力,培养实际操作中解决问题的能力。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养创新意识和实践精神;2. 培养学生团队协作精神,学会与他人共同解决问题;3. 引导学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感。
课程性质:本课程为实践性较强的课程,旨在通过单片机实现密码锁的设计与制作,让学生在动手实践中掌握单片机知识。
学生特点:学生处于高年级阶段,已具备一定的单片机基础,对实际应用有较高的兴趣。
教学要求:结合学生特点和课程性质,注重实践操作,强调理论知识与实际应用相结合。
通过课程学习,使学生能够独立完成一个具有实际应用价值的单片机项目。
在教学过程中,关注学生的学习进展,及时调整教学策略,确保课程目标的实现。
将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. 单片机基础知识回顾:C语言编程基础,单片机工作原理,I/O口编程。
教材章节:第一章单片机基础。
2. 密码锁原理与设计:- 密码锁的组成和工作原理;- 矩阵键盘原理与编程;- 密码比对算法;教材章节:第三章输入输出接口,第六章矩阵键盘。
3. 单片机与外部设备接口:- 传感器与执行器的应用;- 单片机与继电器、电磁锁等执行器的连接;教材章节:第四章传感器与执行器,第五章单片机与外部设备接口。
4. 程序设计与调试:- 程序结构设计;- 程序编写与调试;- 优化程序性能;教材章节:第七章程序设计与调试。
5. 实践操作:- 搭建电路,连接硬件;- 编写程序,实现密码锁功能;- 调试与优化;教材章节:实践操作部分。
单片机密码锁课程设计
单片机密码锁课程设计一、课程目标知识目标:1. 学生能够理解单片机的基本原理,掌握密码锁设计的硬件组成和工作原理。
2. 学生能够运用C语言编写简单的程序,实现密码锁的功能。
3. 学生了解密码锁的安全性,掌握基本的安全防护措施。
技能目标:1. 学生能够独立完成单片机密码锁的硬件连接,具备实际操作能力。
2. 学生能够运用所学知识,编写和调试程序,实现密码锁的开锁和关锁功能。
3. 学生能够通过小组合作,分析问题,解决问题,提高团队协作能力。
情感态度价值观目标:1. 学生培养对单片机及电子制作的兴趣,激发创新精神。
2. 学生树立安全意识,认识到技术在实际应用中的重要性。
3. 学生在团队协作中,学会尊重他人,提高沟通表达能力。
课程性质:本课程为实践性课程,结合理论知识,培养学生的动手操作能力和实际应用能力。
学生特点:学生处于初中阶段,对新鲜事物充满好奇,具备一定的逻辑思维能力,但实践经验不足。
教学要求:教师需注重理论与实践相结合,引导学生主动探究,关注学生的个体差异,提高学生的实践操作能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
1. 理论知识:- 单片机原理与结构:介绍单片机的基本组成、工作原理及功能。
- C语言基础:讲解C语言的基本语法、数据类型、运算符、控制结构等。
- 密码锁原理:分析密码锁的硬件组成、工作原理及安全性。
2. 实践操作:- 硬件连接:指导学生完成单片机、键盘、显示模块等硬件的连接。
- 程序编写:教授学生编写密码锁程序,实现开锁、关锁等功能。
- 调试与优化:引导学生分析程序运行过程中出现的问题,并进行调试和优化。
3. 教学大纲:- 第一周:单片机原理与结构学习,C语言基础学习。
- 第二周:密码锁原理学习,讨论密码锁的安全性。
- 第三周:硬件连接,小组合作进行程序编写。
- 第四周:程序调试与优化,总结与反思。
4. 教材章节:- 单片机原理与结构:教材第1章。
- C语言基础:教材第2章。
单片机课程设计--密码锁
单片机课程设计论文设计题目:密码锁学院:班级:成员名单:1、姓名:3、姓名:指导教师:课程设计时间:目录摘要.................................................................................................... - 2 -1 设计课题任务、功能要求说明及总体方案介绍......................... - 3 -1.1设计任务 .. (3)1.2系统结构 (3)1.3系统组成 (3)1.4系统可行性分析 (4)2 硬件电路设计 ................................................................................. - 4 -2.1硬件电路的组成及各模块功能说明 (4)3 程序分析及程序设计 ....................................................................... - 6 -3.1流程框图 .. (6)3.2电路原理图 (9)3.3系统板上硬件连线 (9)3.4程序设计内容 (10)3.5主程序清单 (10)4 结语................................................................................................ - 20 -4.1设计课题的设计结论及使用说明 .. (20)4.2设计体会 (20)参考文献.............................................................................................. - 20 -摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
单片机课程设计--密码锁
1 绪论在日常生活和工作中,住宅与部门的安全防患、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的方法解决。
目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
针对这些所具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。
由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。
随着电子元件的进一步发展,电子密码也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的但密码输入发展到现在的,密码加感应元件,实现了真正的电子加密,用户只有密码或电子钥匙中一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提1高出现了越来越多的电子密码锁。
出于安全、方便等方面的需要许多电子密码锁已相继问世。
但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。
由于数学、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺,魔高一丈”、组合使用信息也能够使电子防盗锁获得无穷扩展的肯,是产品多样化,对用户而言是“千挑百选、自得其所"。
可以看出组合使用电子信息是电子密码锁以后的发展的趋势。
本次设计使用AT89S52单片机构成最小系统,接以键盘,报警系统,液晶显示构成人性化的方便易用的电子密码锁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第1章概述 ---------------------------------------------------------------------------------- 4第2章系统总体方案设计------------------------------------------------------------ 62.1系统总体设计框图-----------------------------------------------------------------------62.1.1系统总体设计方案框图2.1: ---------------------------------------------------62.1.2电子密码锁结构流程图2.2: ---------------------------------------------------72.2初步设计思路 ----------------------------------------------------------------------------8第3章硬件电路设计------------------------------------------------------------------ 93.1单片机主控电路 -------------------------------------------------------------------------9----------------------------------------------------------------------------------------------------93.2液晶1602显示电路 ------------------------------------------------------------------- 103.3键盘电路设计 --------------------------------------------------------------------------- 113.4开锁电路--------------------------------------------------------------------------------- 143.5报警电路 --------------------------------------------------------------------------------- 143.6时钟电路--------------------------------------------------------------------------------- 153.7存储模块 --------------------------------------------------------------------------------- 153.71主要元件介绍-------------------------------------------------------------------- 16第4章软件设计----------------------------------------------------------------------- 174.1软件设计思路 --------------------------------------------------------------------------- 174.2各子程序设计 -------------------------------------------------------------------------- 184.2.1 键盘扫描子程序 --------------------------------------------------------------- 18第5章系统调试----------------------------------------------------------------------- 19第6章心得体会----------------------------------------------------------------------- 22附录-------------------------------------------------------------------------------------- 24附录A:源程序清单 ---------------------------------------------------------------------- 24附录B:硬件原理图 ----------------------------------------------------------------- 29电气信息学院课程设计评分表----------------------------------------------------------- 32第1章概述随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。
为了更好地推广单片机在家电领域中的应用,本文介绍一种应用AT89C52 单片机设计的智能电子密码锁。
经实际制作表明该密码锁具有安全、实用、成本低等特点,符合现代用锁的要求,具有一定的现实意义。
本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、C语言源程序及详细注释等内容。
随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。
传统的门锁既要备有大量的钥匙,又担心钥匙丢失后的麻烦。
随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。
从而使密码锁具有很高的安全性、可靠性。
目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。
但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。
第2章系统总体方案设计2.1系统总体设计框图本系统采用89C52作为主控制器,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。
STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
当在4x4的按键上输入8位数字密码时,89C52通过分析输入的8位数值与所预存的数值比较,在LCD上显示输入密码,以及在LCD上提示用户输入信息。
当输入密码正确时,电子密码锁开锁成功,当输入密码连续3次输入错误时,系统自动报警,LED指示关锁状态并由蜂鸣器发出持续10至20秒的报警信号根据设计要求与设计思路,确定系统的设计方案,图2.1为系统组成原理框图。
硬件有以下几部分组成:单片机、键盘电路、串行EEPROM扩展电路、LCD液晶显示电路、LED 指示灯电路、蜂鸣器电路等。
2.1.1系统总体设计方案框图2.1:图 2.1 系统总体设计方案框图2.1.2电子密码锁结构流程图2.2:图 2.2 系统总体设计方案流程图2.2 初步设计思路根据设计要求,初步思路如下:1、系统的原始密码放在RAM区,在运行过程中可以实时更改系统密码。
.2、利用串行EEPROM存储芯片,可以随时读取新密码,且具有掉电保护功能。
3、人机交互通过键盘输入,系统根据键值做出相应的处理,完成具体的功能。
4、液晶12864通过驱动电路,显示相应的状态。
5、系统运用LED指示灯来反映开关锁的情况,如果连续输入三次密码错误蜂鸣器就会报警。
6、此系统共设计了4个基本功能键:密码设置键、确认键、复位键、撤销键。
密码设置键:当用户需更改密码时,可通过此功能键方便地修改原先的旧密码。
确认键:当完成密码输入后,可按此功能键即可实现密码的比较和处理。
复位键:当密码三次输入错误时,系统进入死锁状态,可按此功能键跳出此状态。
第3章硬件电路设计3.1 单片机主控电路STC89C52具体介绍如下:①主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线②外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端③控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
图3.1 1602显示电路1602引脚功能:D0~D7 双向的数据总线,LCD数据读写方式可以分为8位及4位两种,以8位数据进行读写则D0~D7皆有效,若以4位方式进行读写,则只用到D4~D7.RS 寄存器选择控制线,当RS=0时,并且做写入的动作时,可以写入指令寄存器,若RS=0时,并且做读取的动作时,可以读取忙碌标志及地址计数器的内容。
如果RS=1则用于读写数据寄存器。
R/W LCD读写控制线,直接接地,由于R/W=0时,LCD执行写入的动作,R/W=1时则执行读取的动作。
EN 启用控制线,由P1.1控制,高电平动作。
高电平时LCD动作有效。
VCC 电源正端VO 亮度调整控制引脚,直接接地,使字符显示最亮。
GND 电源地端3.3键盘电路设计本项目运用4x4的矩阵键盘设定密码位数为八位,具有不容易套取的作用,运用不同功能的按键处理不同的程序。
在此系统设计中,键盘行列与单片机P3口连接,通过单片机程序实现对按键码的识别。
键盘上有好多键,每一个键对应一个键码,以便将键码转到相应的键处理子程序,进一步实现数据输入和命令处理的功能。
键识别的流程图如图3.2所示。
图3.2 键识别的流程图使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
其原理如图3.3图3.3 矩阵键盘在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。