单片机课程设计文档-密码锁
单片机课程设计报告电子密码锁完整版
单片机课程设计报告电子密码锁HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间:—课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日目录3.总体设计 (2)4密码比较模块 (6) (6) (8) (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。
利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。
关键词:单片机、密码锁、修改密码1.设计要求本实验将实现六位数的电子密码锁。
要求使用4X4 行列式键盘作为输入,并用LCD 实时显示。
具体要求如下:1. 开机时LCD显示“welcome to use”,初始化密码为“123456”,密码可以更改。
2. 按下“10”,开始则显示“Enter Please:”。
3. 随时可以输入数值,并在LCD上实时显示‘*’。
当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。
4. 按下“13”键,则表示确定键按下,进行密码对比。
如相符则在LCD第一行显示“Open the door!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrong password!”,并且蜂鸣器同时提示一下。
基于单片机的电子密码锁
基于单片机的电子密码锁第一章:引言电子密码锁是随着科技的不断进步,应用于各个领域的一种新型门禁系统。
相较于传统的机械锁具,电子密码锁具有更高的安全性与便捷性。
而基于单片机的电子密码锁,则是通过单片机作为核心控制器,通过输入正确的密码才能进行开锁操作。
本文旨在介绍基于单片机的电子密码锁的原理、设计和实现过程。
第二章:电子密码锁的工作原理2.1 单片机简介单片机是一种集成了微处理器、存储器和各种输入输出接口于一体的微型计算机系统。
它具有体积小、功耗低、性能稳定等特点,适用于各种电子设备的控制系统。
2.2 电子密码锁的组成部分基于单片机的电子密码锁由输入模块、控制模块、显示模块和输出模块组成。
输入模块用于输入密码,控制模块用于验证密码的正确性和执行开锁指令,显示模块用于显示相关信息,输出模块用于控制锁的状态。
2.3 电子密码锁的工作原理当用户输入密码时,控制模块将用户输入的密码与预设密码进行比较。
如果输入的密码正确,则控制模块发送开锁指令,输出模块解除锁的限制,用户可以开启门。
否则,控制模块继续等待用户输入密码。
第三章:电子密码锁的设计步骤3.1 系统需求分析根据实际应用需求,确定电子密码锁系统的功能、性能和外观设计等方面的要求。
3.2 硬件设计根据系统需求,设计硬件电路,包括输入模块、控制模块、显示模块和输出模块等。
3.3 软件设计基于单片机的电子密码锁需要编写适用的软件程序。
根据密码验证算法,编写程序实现密码的比较和开锁指令的发送。
3.4 电子密码锁的制作流程根据硬件设计和软件设计的结果,进行电子密码锁的组装和制作。
3.5 电子密码锁的测试与调试对制作完成的电子密码锁进行测试,包括考虑用户输入的密码是否正确、开锁是否正常、显示是否准确等方面的问题。
第四章:电子密码锁的功能与特点4.1 密码设置与管理用户可以根据需要设置密码,并进行密码的管理,包括密码的增、删、改等功能。
4.2 多种开锁方式电子密码锁可以支持多种开锁方式,例如密码开锁、指纹识别、刷卡开锁等。
51单片机四位密码锁课程设计
51单片机四位密码锁课程设计51单片机四位密码锁是一种常见的电子锁,它使用51单片机作为控制核心,通过输入四位密码来控制锁的开关。
本文将介绍关于51单片机四位密码锁的课程设计。
我们需要明确设计的目标和要求。
本设计的主要目标是实现一个四位密码锁系统,并且需要满足以下要求:1.能够输入四位数字密码。
2.密码输入正确时,能够解锁并输出解锁信号。
3.密码输入错误时,不能解锁。
4.能够重置密码。
接下来,我们将详细介绍设计的步骤和实现。
1.硬件设计:在硬件设计方面,我们需要准备以下器件:- 51单片机-数码管显示模块-按键模块-继电器模块-电源模块2.软件设计:在软件设计方面,我们需要编写51单片机的程序,通过编程实现密码锁的功能。
以下是设计的主要步骤:-初始化:设置输入输出引脚,并初始化时钟和数码管显示。
-输入密码:设计密码输入的函数,通过按键模块获取用户输入的密码。
-检验密码:设计密码检验的函数,将用户输入的密码与预设的密码进行比对。
-解锁信号:如果密码输入正确,输出解锁信号,通过继电器控制开关,实现解锁。
-密码错误:如果密码输入错误,通过数码管显示密码错误的提示信息。
-重置密码:设计密码重置的函数,将新设置的密码保存。
3.程序流程:根据以上设计的步骤,我们可以得到以下主要的程序流程:-初始化引脚和时钟。
-设置初始密码。
-进入主程序循环。
-接收用户输入的密码。
-检验密码是否正确。
-如果密码正确,显示解锁信号并控制继电器解锁。
-如果密码错误,显示密码错误信息。
-进入下一次循环。
4.调试和测试:完成程序编写后,我们需要进行调试和测试。
在测试过程中,我们需要输入正确和错误的密码进行验证,检查程序是否能够正常运行,并且能够正确判断和处理用户输入的情况。
5.优化改进:如果在测试中发现问题或不足之处,我们可以对程序进行优化和改进。
例如,可以增加密码输入的最大尝试次数,增加延时等待时间,增加密码保护等功能。
总结:通过对51单片机四位密码锁的课程设计,我们学习了如何使用51单片机编写程序,实现密码锁的功能。
单片机课程设计 电子密码锁
第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.密码位数显示, 指示管会显示你输入了多少位密码.键位说明。
单片机课程设计密码锁设计
单片机课程设计密码锁设计在当今社会,安全问题越来越受到人们的重视,密码锁作为一种常见的安全防护设备,在保护个人财产和隐私方面发挥着重要作用。
本次单片机课程设计的任务就是设计一款基于单片机的密码锁。
一、设计要求本次设计的密码锁需要具备以下功能:1、能够设置和修改 4 位数字密码。
2、输入密码正确时,锁打开,并有相应的指示灯提示。
3、输入密码错误时,有错误提示,且错误次数超过 3 次则报警。
4、具备密码重置功能。
二、系统方案设计1、硬件设计单片机选型:选择 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。
输入模块:采用 4×4 矩阵键盘作为密码输入设备,可方便地输入数字和功能按键。
显示模块:选用 1602 液晶显示屏,用于显示密码输入状态、提示信息等。
存储模块:使用 EEPROM 芯片 AT24C02 来存储密码,以保证断电后密码不丢失。
报警模块:当密码输入错误次数超过 3 次时,通过蜂鸣器发出报警声音。
2、软件设计主程序:负责系统的初始化、键盘扫描、密码输入处理、密码验证、显示控制等。
键盘扫描程序:检测矩阵键盘上的按键动作,并将按键值返回给主程序。
密码处理程序:包括密码设置、修改、存储和验证等功能。
显示程序:控制 1602 液晶显示屏的显示内容。
三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振为单片机提供时钟信号,复位电路用于系统的初始化。
2、矩阵键盘电路由16 个按键组成 4×4 矩阵,通过行线和列线的扫描来确定按键值。
3、显示电路1602 液晶显示屏通过数据总线和控制总线与单片机相连,实现数据的传输和显示控制。
4、存储电路AT24C02 通过 I2C 总线与单片机进行通信,用于存储密码数据。
5、报警电路蜂鸣器通过三极管驱动,当单片机输出高电平时,蜂鸣器发声报警。
四、软件程序设计1、主程序流程系统初始化,包括单片机端口初始化、液晶显示屏初始化、EEPROM 初始化等。
单片机课程设计-密码锁
单片机课程设计- 密码锁1 设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“ P. ”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
1.2 总体方案介绍及工作原理说明⑴原始密码的设定,此密码是固定在程序存储器R0附,假设预设的密码为888888”共6 位密码。
(2) 密码的输入: 采用按键来完成密码的输入,输入时密码处于显示保密状态,输入六位密码后,自动结束输入,并判断其正确性(3) 密码若输入错误,显示输入错误提示信息,密码输入正确后,可以用键盘任意输入数字,若按下第八个按键,则进入修改密码(4) 密码修改: 可以任意输入“1 - 7”中的六位数字作为密码,密码输入时处于保密显示状态,六位密码输入结束确认后显示P. 。
电源模块报警装置AT89S52复位和振荡下载口单片机电路数码管显独立式键盘示模块图1 设计总框图2 密码锁硬件系统的设计12.1 密码锁硬件系统各模块功能简要介绍此次课程设计是基于单片机控制的电子密码锁,结合主要设计条件,本设计由单片机系统、独立式键盘、LED显示和报警系统组成,系统能完成开锁、错误报警、密码修改功能等功能,设计硬件系统如下(1) 单片机系统:此次课题采用一种是用以AT89S52为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的IO 端口,及其控制的准确性,进行电子密码锁的设计。
此次课题用单片机P1 口与键盘相连,做输入口,P0 口与显示器段控相连,输入段控码,P2 口输入位控码。
(2) 独立式键盘接口电路:此次课程设计采用独立式键盘,与P1 口相连,键按下则会使该端口变成低电平,单片机读P1 口,通过对P1 口数据的判断来确定哪一个键按下。
单片机课程设计——密码锁文档1
《单片机技术》课程设计说明书密码锁院、部:电气与信息工程学院学生姓名:黄柏燊指导教师:王韧职称副教授专业:自动化班级: 1101班完成时间: 2014年6月摘要在日常生活和工作中,主要采用机械式组合锁,成本高,机械结构复杂,难以使用,以满足人们对锁的安全性和可移植性的使用,电子密码锁应运而生。
随着电子技术和可编程器件的发展,电子密码锁的功能越来越强大,具有成本低,操作方便,使用更加方便,安全保密性强。
具有功能如代替密码量报警的电子密码锁是小,安全。
目前使用的电子密码锁大部分是基于单片机技术,单片机作为主设备。
本设计采用了一种低功耗,高性能CMOS8单片机,8 K系统可编程闪存单片机AT89S52作为主控芯片,通过具有掉电保护2 K位串行CMOS的功能,包括256个8位字节内存芯片24C02来存储密码。
密码输入错误时,系统会提示,输入三次错误的密码会蜂鸣器报警并限制限制下次输入,从而提高了安全性。
电子锁打开的状态下,用户可以修改密码,输入您的旧密码是一个改变需要密码,输入新密码两次输入确认密码,防止误操作。
密码锁系统由单片机系统,行列式键盘,LCD12864液晶显示,掉电保护模块和报警系统构成。
系统可以完成普通锁,超级锁,修改用户密码的基本的密码锁的功能。
关键词:密码锁;单片机;LCDABSTRACTIn daily life and work, combination lock mainly adopts mechanical, its cost is high, the mechanical structure is complex, and difficult to use, to meet people over the use of lock security and portability, electronic combination lock arises at the historic moment. Along with the development of the programmable devices and electronic technology, electronic combination lock function is increasingly powerful, there are many kinds, with low cost, easy to operate, it is more convenient to use, safe confidentiality is stronger. And has the functions such as alarm electronic combination lock instead of password quantity is little, security. Currently use electronic combination lock is mostly based on single chip microcomputer technology, single chip microcomputer as the main device, the encoder and decoder for software.This design adopts a kind of low power consumption, high performance CMOS8 microcontroller, with 8 k system programmable Flash memory AT89S52 as the main control chip, through which has the function of power-fail protection 2 k bit serial CMOS, contains 256 our fleet 8-bit bytes of memory chips to store passwords.Password input error when the system will prompt, when entered an incorrect password three times in a buzzer alarm, thereby improves security. Electronic lock open state, the user can modify the password, enter your old password is required for a change the password, enter a new password to enter it twice to confirm whether a password, to prevent wrong operation. This system by single chip microcomputer system, the block matrix keyboard, LCD12864 display, EEPROM of power-fail protection module and alarm system. System can accomplish the lock, super lock, modify user password basic combination lock function, such as system has not disappear the administrator password when power supply drop. Besides the above basic combination lock function, according to the actual situation can also add extensions. This system is low cost, function and practical.Key words: passwordlock;mcu;lcd目录1 密码锁设计介绍 (1)1.1 设计课题任务 (1)1.2 功能要求说明 (1)1.3 密码锁设计方案 (1)2 密码锁硬件系统的设计 (2)2.1 密码锁硬件系统模块功能介绍 (2)2.1.1 单片机最小系统 (2)2.1.2 键盘输入模块 (2)2.1.3 液晶显示模块 (2)2.1.4 24C02掉电保护模块 (2)2.1.5 电源模块 (2)2.2 密码锁电路原理图、PCB图、元器件布局图 (3)2.2.1 电路原理图 (3)2.2.2 电路PCB图 (3)2.2.3 元器件布局图 (3)2.3 设计课题元器件清单 (3)3 密码锁软件系统的设计 (4)3.1 密码锁系统的工作流程 (4)3.2 密码锁系统占用单片机资源的情况 (5)3.3 密码锁系统程序的设计 (5)3.3.1 主函数环节 (5)3.3.2 液晶显示环节 (5)3.3.3 行列式键盘环节 (6)3.3.4 基础函数以及掉电保护环节 (7)3.3.5 延时环节及报警环节 (10)4 密码锁系统调试 (11)4.1 密码锁设计结论及使用说明 (11)4.2 密码锁系统调试结果 (11)4.3 密码锁系统调试误差分析 (14)4.4 设计体会 (14)结束语 (15)致谢 (16)参考文献 (17)附录 (18)附录A: PROTEL原理图 (18)附录B: CAD原理图 (19)附录C: 电路顶层PCB图 (20)附录D: 电路底层PCB图 (21)附录E: 元器件布局图 (22)附录F: 元器件清单 (23)附录G: 密码锁主函数 (25)附录H: 液晶函数 (29)附录I: 键盘扫描函数 (31)附录J: 基础函数及24C02函数 (32)附录K: 延时函数及报警函数 (45)1 密码锁设计介绍1.1 设计课题任务课题:密码锁任务:设计一个具有指定功能的密码锁。
单片机电子密码锁课程设计
单片机电子密码锁课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握电子密码锁的基本工作原理。
2. 使学生掌握电子密码锁设计中涉及的编程知识,如C语言基础、寄存器操作等。
3. 帮助学生了解电子密码锁电路的组成,熟悉相关电子元器件的使用。
技能目标:1. 培养学生运用所学知识设计并实现一个简单的单片机电子密码锁的能力。
2. 提高学生动手实践能力,学会使用编程软件、烧录器和相关调试工具。
3. 培养学生团队协作和问题解决能力,学会分析电子密码锁故障并找出解决办法。
情感态度价值观目标:1. 激发学生对电子制作的兴趣,培养创新意识和动手能力。
2. 培养学生严谨的科学态度,注重实验数据和实验结果的准确性。
3. 引导学生关注单片机技术在日常生活中的应用,提高对科技的认识和热爱。
本课程针对高年级学生,他们在之前的学习中已经具备了一定的电子和编程基础。
因此,课程设计将注重实践操作,以项目为导向,让学生在动手实践中巩固知识,提高技能。
通过本课程的学习,学生将能够独立设计并实现一个具有实用价值的单片机电子密码锁,提升解决实际问题的能力。
二、教学内容1. 单片机基础原理:回顾单片机的组成、工作原理,重点讲解51单片机的内部结构、时钟电路和复位电路。
教材章节:第三章《单片机原理与接口技术》2. C语言编程基础:介绍C语言在单片机编程中的应用,讲解数据类型、运算符、控制语句等基本语法。
教材章节:第四章《单片机C语言编程》3. 电子密码锁原理:讲解电子密码锁的基本工作原理,分析锁体的电路组成和功能。
教材章节:第七章《单片机应用实例》4. 硬件设计:学习并设计电子密码锁的硬件电路,包括键盘输入、显示模块、锁驱动电路等。
教材章节:第五章《单片机接口技术》5. 软件设计:编写电子密码锁的控制程序,实现密码输入、校验、开锁等功能。
教材章节:第四章《单片机C语言编程》6. 系统调试与优化:学习使用调试工具,对电子密码锁系统进行调试和优化。
单片机课程设计-密码锁
单片机课程设计-密码锁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口送位控,八个数码管共用八根段控,由位控决定在哪一位显示。
51单片机密码锁课程设计
51单片机密码锁课程设计一、课程目标知识目标:1. 掌握51单片机的基本原理与编程方法;2. 了解密码锁的工作原理,理解51单片机在密码锁中的应用;3. 学会使用相关电路元件,如按键、显示屏等,实现与51单片机的交互;4. 掌握密码锁程序的设计与调试,学会使用开发工具进行编程。
技能目标:1. 能够运用C语言编写51单片机程序,实现密码锁的基本功能;2. 能够独立设计电路图,连接相关元件,搭建51单片机密码锁的硬件系统;3. 学会使用调试工具,对密码锁程序进行调试,找出并解决问题;4. 提高动手实践能力,培养团队协作和问题解决能力。
情感态度价值观目标:1. 培养学生对电子制作的兴趣和热情,激发创新意识;2. 培养学生严谨、细心的科学态度,提高学生对工程实践的认识;3. 增强学生的自信心和成就感,鼓励学生积极参与科技竞赛和实践活动;4. 培养学生的团队协作精神,提高沟通与表达能力。
课程性质:本课程为实践性课程,结合理论知识,注重培养学生的动手能力和实际问题解决能力。
学生特点:学生具备一定的电子基础知识,对单片机编程有一定了解,但实践经验不足。
教学要求:教师需引导学生从理论到实践,注重培养学生的创新意识和实际操作能力,关注个体差异,因材施教。
通过课程学习,使学生能够独立完成51单片机密码锁的设计与制作。
二、教学内容1. 理论部分:a. 51单片机原理及结构介绍;b. C语言编程基础,重点讲解与51单片机相关的语法和编程技巧;c. 密码锁工作原理及其在51单片机中的应用;d. 介绍相关电路元件的原理及使用方法。
2. 实践部分:a. 搭建51单片机密码锁硬件系统,包括按键输入、显示输出等;b. 编写密码锁程序,实现密码设置、修改、验证等功能;c. 使用调试工具进行程序调试,分析并解决可能出现的问题;d. 优化程序,提高密码锁的稳定性和安全性。
教学大纲:1. 第一周:51单片机原理介绍,C语言编程基础;2. 第二周:密码锁工作原理,电路元件介绍;3. 第三周:搭建硬件系统,编写基础程序;4. 第四周:调试与优化程序,完善密码锁功能;5. 第五周:总结与展示,课程评价。
单片机课程设计密码锁
单片机课程设计密码锁一、课程目标知识目标: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章。
基于单片机的电子密码锁设计
基于单片机的电子密码锁设计一、电子密码锁的工作原理电子密码锁主要由输入模块、控制模块、存储模块和执行模块组成。
用户通过输入模块(如键盘)输入密码,控制模块(单片机)对输入的密码进行处理和判断,并与存储模块中预先设定的密码进行比对。
如果输入密码正确,控制模块将向执行模块发送开锁指令,实现开锁;如果输入密码错误,则执行相应的错误处理操作,如报警、锁定等。
二、硬件设计(一)单片机的选择在本设计中,选用了_____型号的单片机。
该单片机具有性能稳定、功耗低、接口丰富等优点,能够满足电子密码锁的控制需求。
(二)输入模块输入模块采用了矩阵键盘,通过行列扫描的方式获取用户输入的密码。
矩阵键盘具有按键数量多、占用端口少的特点,能够有效节省单片机的资源。
(三)存储模块为了存储预设的密码,选用了_____型号的EEPROM芯片。
EEPROM具有掉电不丢失数据的特性,能够保证密码的安全性和可靠性。
(四)显示模块为了给用户提供反馈信息,使用了_____型号的液晶显示屏。
可以显示开锁状态、输入错误提示等信息。
(五)执行模块执行模块包括电磁锁和报警装置。
当输入密码正确时,单片机控制电磁锁打开;当输入密码错误次数超过设定值时,启动报警装置。
三、软件设计(一)主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、EEPROM读取预设密码等。
然后进入密码输入等待状态,当检测到有按键输入时,进行密码处理和判断,并根据判断结果执行相应的操作。
(二)密码输入处理在密码输入过程中,对输入的按键进行去抖处理,防止误判。
同时,对输入的密码进行加密处理,提高密码的安全性。
(三)密码比对将输入的密码与存储在EEPROM中的预设密码进行比对。
比对过程中,采用逐位比较的方式,确保密码的准确性。
(四)错误处理当输入密码错误时,记录错误次数。
如果错误次数超过设定值,则启动报警装置,并锁定键盘一段时间,防止暴力破解。
四、系统调试与测试(一)硬件调试首先检查电路连接是否正确,有无短路、断路等情况。
基于单片机的指纹密码锁系统设计
参考内容
基于单片机的指纹密码锁是一种集成了生物识别技术和嵌入式系统技术的安 全装置。它通过采集并比对指纹信息来决定是否授予访问权限。这种密码锁具有 很高的安全性和便捷性,因此在家庭、办公场所、工业等领域得到了广泛应用。
指纹密码锁的发展可以追溯到20世纪90年代,当时人们开始研究生物识别技 术在安全领域的应用。随着科技的发展和人们安全意识的提高,指纹密码锁逐渐 普及。现在,指纹密码锁已经成为市场上的主流产品,需求量不断增长。
指纹密码锁是一种利用指纹识别技术来控制锁的开启与关闭的设备。它通过 采集用户的指纹信息并存储在芯片中,在开锁时进行比对,以判断是否为合法用 户。单片机作为控制核心,负责处理指纹信息、控制开关门等操作。
设计指纹密码锁的主要步骤包括硬件设计和软件设计。硬件设计主要包括指 纹采集模块、控制开关和报警模块等的设计。软件设计主要涉及指纹信息的采集、 存储和比对等操作。具体步骤如下:
1、选取合适的单片机作为控制核心,例如STM32系列单片机。
2、安装指纹采集模块,并连接单片机。该模块可采用光学或电容式指纹识 别技术。
3、设计控制开关,连接单片机,实现通过单片机的控制进行开关门操作。 4、添加报警模块,如遇到非法入侵,通过单片机控制触发报警系统。
5、在单片机中编写控制程序,实现指纹信息的采集、存储和比对等功能。
总之,基于单片机的指纹密码锁是一种非常实用的安全装置,具有很高的安 全性和便捷性。随着科技的不断进步和应用场景的不断扩展,我们有理由相信它 将成为未来安全领域的重要发展方向。
参考内容二
在当今社会,随着科技的不断发展,人们对于自身财产的安全性越来越重视。 其中,门锁作为保护家庭或重要场所的第一道防线,历来受到广泛。传统门锁存 在被钥匙遗忘、复制钥匙等风险,因此,指纹密码锁作为一种新兴的安全防护设 备,逐渐进入人们的视野。本次演示将介绍一种基于单片机的指纹密码锁的设计。
单片机课程设计--密码锁
设计题目:密码锁目录摘要.................................................................................................... - 1 -1 设计课题任务、功能要求说明及总体方案介绍......................... - 2 -1.1设计任务 .. (2)1.2系统结构 (2)1.3系统组成 (2)1.4系统可行性分析 (3)2 硬件电路设计 ................................................................................. -3 -2.1硬件电路的组成及各模块功能说明 (3)3 程序分析及程序设计 ....................................................................... - 5 -3.1流程框图 .. (5)3.2电路原理图 (8)3.3系统板上硬件连线 (8)3.4程序设计内容 (9)3.5主程序清单 (9)4 结语................................................................................................ - 19 -4.1设计课题的设计结论及使用说明 .. (19)4.2设计体会 (19)参考文献.............................................................................................. - 19 -摘要在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
单片机课程设计-密码锁-附截图
设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
; 40H-45H 按键缓冲区,用于存放键码值; 50H-55H 显示缓冲区,用于存放要显示的段码; 70H-75H 密码区保存区,用于存放密码; 30H 单个单元存放段码地址(即存放50-55); 31H 单个单元存放键码地址(即存放40-45); 21H.0位判断是否按下了修改密码键K2; 21H.1位修改密码时用于判断是否正确输入了原密码; 21H.2位产生初始P. 只要有键按下,则该位置1,否则置0来不断输出P.ORG 0000HSJMP MAINORG 0030HMAIN:MOV SP,#60HMOV P2,#01H ;用来产生P.0的位控MOV R1,#70H ;密码区,初始密码为六个8T: MOV @R1,#08HINC R1CJNE R1,#76H,TACALL PPAJMP FIRSTPP: MOV R0,#50H ;显示缓冲区首地址Q: MOV @R0,#0FFH ;“灭”段码INC R0CJNE R0,#56H,Q ;让8个显示缓冲区初始值为“灭”状态,后面按一次则赋一次值MOV 30H,#4FH ;段码地址临时MOV 31H,#3FH ;按键后存放键码的缓冲区首地址ACALL DLRETPQ:MOV P0,#0CH ;输出P.ACALL DLRET;下面实现按键功能FIRST:ACALL DIRACALL KEY ;调用键处理函数K1: JNB ACC.0,K2 ;K1键确定键判0 转移MOV 30H,#4FH ;段码地址临时MOV 31H,#3FH ;按键后存放键码的缓冲区首地址JB 21H.0,KK ;按了K2改密键,再K1,则表示修改密码,FUN0改密函数LJMP FUN1KK: CLR 21H.0LJMP FUN0K2: JNB ACC.1,K3 ;K2键改密码,但必须在输入原密码之后修改,而且要修改两次才确定修改ACALL PP ;调用函数让数码显示管灭JNB 21H.1,FIRST ;如果21H.1为0,表示未输入原密码SETB 21H.0ACALL DIRAJMP FIRSTK3: JNB ACC.2,K4 ;K3ACALL DIRINC 31HMOV R0,31H MOV @R0,#03H AJMP FIRST洞洞板/万能板成品图片左下角有地址-有录像K4: JNB ACC.3,K5 ;K4ACALL DIRINC 31HMOV R0,31HMOV @R0,#04HAJMP FIRSTK5: JNB ACC.4,K6 ;K5ACALL DIRINC 31HMOV R0,31HMOV @R0,#05HAJMP FIRSTK6: JNB ACC.5,K7 ;K6ACALL DIRINC 31HMOV R0,31HMOV @R0,#06HAJMP FIRSTK7: JNB ACC.6,K8 ;K7ACALL DIRINC 31HMOV R0,31HMOV @R0,#07HAJMP FIRSTK8: JNB ACC.7,FIRST ;K8ACALL DIRINC 31HMOV R0,31HMOV @R0,#08HAJMP FIRSTKS:MOV A,P1CPL ARETKEY: ACALL KSJNZ AGAIN ;有键闭合则转向再次判断AJMP EXTI ;无键闭合则转向结束AGAIN:ACALL DIR ;延时16毫秒ACALL DIRACALL KSJNZ LKP ;两次判断有键闭合,则转向按键键值判断;MOV A,20HAJMP EXTI ;第二次判断无键闭合,则转向结束LKP:SETB 21H.2 ;有键闭合JB ACC.0,LK1 ;要排除K1和K2键,因为那是作为确认和修改密码的,不是密码值JB ACC.1,LK1LK0:INC 30H ;有键闭合,显示缓冲区地址加1MOV R0,30HMOV @R0,#0BFH ;有键闭合,则让显示缓冲区状态为横杠LK1:PUSH ACCLK: ACALL DIR ;判断是否键起ACALL KSJNZ LKPOP ACCEXTI:JB 21H.2,TTACALL PQTT: RETDIR: MOV R0,#50H ;50H为显示缓冲区首地址N1: MOV P2,#80H ;位控制MOV P0 ,@R0 ;输出段控码ACALL DL ;延时1毫秒N2: INC R0MOV A,P2RR AMOV P2,AMOV P0,@R0 ;输出横杠线ACALL DLN3: INC R0MOV A,P2RR AMOV P2,AMOV P0,@R0 ;输出横杠线ACALL DLN4: INC R0MOV A,P2RR AMOV P2,AMOV P0,@R0 ;输出横杠线ACALL DLN5: INC R0MOV A,P2RR AMOV P2,AMOV P0,@R0 ;输出横杠线ACALL DLN6: INC R0MOV A,P2RR AMOV P2,AMOV P0,@R0 ;输出横杠线ACALL DLN7: INC R0MOV A,P2RR AMOV P2,AMOV P0,#0FFH ;输出横杠线ACALL DLN8: INC R0MOV A,P2RR AMOV P2,AMOV P0,#0FFH ;输出横杠线ACALL DLEXTI0:RET;延时一毫秒函数DL: MOV IE,#00HMOV TMOD,#10H ;工作方式1,MOV TH1,#0FCH ;延时程序延时一毫秒MOV TL1,#18HSETB TR1STEP1:JBC TF1,STEP2AJMP STEP1STEP2:CLR TR1RETFUN0:MOV R2,#06HMOV R0,#40H ;修改密码把40H-45H里的内容放到70H-75H里面去MOV R1,#70HH: MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,HMOV R0,#50HZ: MOV @R0,#0F9H ;输出1表示密码修改正确INC R0CJNE R0,#56H,ZACALL DIRAJMP FIRSTFUN1:MOV R0,#40H ;输入的键码MOV R1,#70H ;密码区W: MOV A,@R0SUBB A,@R1JNZ NO_SAME ;非0就转移不相等就转移INC R0INC R1MOV A,@R0SUBB A,@R1JNZ NO_SAMEINC R0INC R1MOV A,@R0SUBB A,@R1JNZ NO_SAMEINC R0INC R1MOV A,@R0SUBB A,@R1JNZ NO_SAMEINC R0INC R1MOV A,@R0SUBB A,@R1JNZ NO_SAMEINC R0INC R1MOV A,@R0SUBB A,@R1JNZ NO_SAMESAME:MOV R0,#50HZ2: MOV @R0,#0F9H ;输出1表示密码正确INC R0CJNE R0,#56H,Z2ACALL DIR;ACALL PP ;如果有这条语句,则显示1后立刻消失SETB 21H.1AJMP FIRSTNO_SAME:MOV R0,#50HY: MOV @R0,#0C0H ;输出0表示密码错误INC R0CJNE R0,#56H,YACALL DIRAJMP FIRSTEND毕业论文题目:基于单片机的电子密码锁的设计专业:通信工程摘要单片机已经在家电领域中得到了广泛的应用,而且在安全密保方面,具有防盗报警功能的电子密码锁逐渐取代了传统的机械密码锁,克服了机械密码锁密码过少的安全性问题。
单片机课程设计——数字密码锁
课程设计课程名称:单片机原理与应用课题名称:数字密码锁设计所在学院名称:湖南大学电气与信息工程学院目录一、前言..................................... - 3 -二、总体方案设计.............................. - 3 -2.1方案论证与比较 ................................................................. - 3 -2.2方案选择............................................................................. - 4 -三、单元模块设计.............................. - 4 -3.1硬件支持............................................................................. - 4 -3.2功能单元模块设计.............................................................. - 4 -3.2.1 开锁机构 .................................................................. - 4 -3.2.2 矩阵键盘设计电路 ................................................... - 5 -3.2.3 声音提示电路设计 ................................................... - 6 -3.2.4 显示模块设计........................................................... - 7 -四、程序设计与系统仿真.......................... - 8 -4.1 模块介绍............................................................................ - 8 -4.1.1 主程序模块............................................................. - 10 -4.1.2 密码比较判断模块 ................................................. - 10 -4.1.3 键盘扫描模块......................................................... - 10 -4.1.4 修改密码模块......................................................... - 11 -五、系统功能 .................................. - 13 - 六.设计总结 .................................. - 13 - 七、附录:源程序............................... - 13 -一、 前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南工学院课程设计任务书课程:单片机技术课程设计题目:数字电子钟数字频率计数字电压表交通灯抢答器密码锁波形发生器数字温度计计算器数字式秒表适用班级:通信工程1201 时间: 2014~2015学年第一学期指导教师:凌云《单片机技术》课程设计任务书一、设计题目:数字电子钟、数字频率计、数字电压表、交通灯、抢答器、密码锁、波形发生器、数字温度计、计算器、数字式秒表。
二、适用班级:通信1201三、指导教师:凌云四、设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
五、设计内容与要求设计内容1、数字电子钟设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
2、数字频率计设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。
该频率计上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态。
按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。
3、数字电压表设计一个能够测量直流电压的数字电压表。
测量电压范围0~5V,测量精度小数点后两位。
该电压表上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态,按测量开始键则开始测量,并将测量值显示在显示器上,按测量结束键则自动返回“P.”状态。
4、交通灯设计一个具有特定功能的十字路口交通灯。
该交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
按开始键则开始工作,按结束键则返回“P.”状态。
要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。
有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。
5、抢答器设计一个具有特定功能的抢答器。
该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,显示器显示违规台号。
蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。
6、密码锁设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
7、波形发生器设计一个具有特定功能的波形发生器。
该波形发生器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该波形发生器可以分别产生幅值0~5V、频率100Hz~100KHz范围内的三角波、锯齿波、方波、梯形波和正弦波。
8、数字温度计设计一个具有特定功能的数字温度计。
该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
9、计算器设计一个具有特定功能的计算器。
该计算器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
能实现(1)基本的加、减、乘、除、平方、开方;(2)三角函数运算;(3)十进制、十六进制转换运算;(4)其他功能。
10、数字式秒表设计一个具有特定功能的数字式秒表。
该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能。
设计要求1、以上课题可以任选其一或多选,学生也可以自拟课题;2、编程语言:汇编或C51;3、计算机打印《单片机技术》课程设计说明书一份;4、设计时间:一周;5、实物制作;6、人员分组:一人一组一实物。
六、《单片机技术》课程设计说明书正文主要内容参照“《单片机技术》课程设计说明书正文主要内容”文件。
七、《单片机技术》课程设计说明书书写规范格式参照“《单片机技术》课程设计说明书书写规范格式”文件。
八、参考资料1、马忠梅,单片机的C语言Windows环境编程宝典[M], 北京:北京航空航天大学出版社,2003.6;2、李光飞,单片机C程序设计指导[M],北京:北京航空航天大学出版社,2003.01 ;3、李光飞,单片机课程设计实例指导[M],北京:北京航空航天大学出版社,2004.9。
电气自动化教研室2014年9月10日摘要利用AT89S52单片机芯片,实现基本的密码锁功能。
在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接24C02B芯片用于密码的存储,外接LCD12864显示器用于显示作用。
当用户修要开锁时,进入开锁界面之后按键盘的数字键0-9输入密码。
密码输入完成后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新新输入密码,当三次输入密码错误时则发出报警;当用户需要修改密码时,进入密码修改界面,接着输入原来的密码,只有当输入的原密码正确后才能设置新密码。
新密码输入后按下确认键后系统将得到存储,密码修改成功。
单用户忘记密码可启用管理员操作系统,实现系统初始化,其具体功能如下:(1) 具有系统原始密码888888,管理员密码999999。
(2) 用户可以自定义密码。
(3) 具有管理员密码,用于非常情况,可使系统恢复出厂设置,锁屏后可以通过超级密码进行重置密码。
(4) 密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息。
(5) 断电记忆功能。
(6) 原始密码只供普通用户修改一次,修改后原始密码无效,断电后,按修改后的密码解锁。
(7) 开机密码连续输入三次错误,自动报警,并且锁住屏幕,无法再次进入密码输入界面。
关键词:键盘输入;密码存储;显示;报警;开锁目录1 设计任务及功能介绍 (8)1.1 设计课题任务 (8)1.2 功能要求说明 (8)1.3 设计总体方案及工作原理说明 (8)2 密码锁硬件系统的设计 (9)2.1 密码锁硬件系统各模块功能简要介绍 (9)2.1.1 电路总体构成 (9)2.1.2 键盘输入部分 (9)2.1.3 密码存储部分 (10)2.1.4 复位部分 (10)2.1.5 晶振部分 (11)2.1.6 显示部分 (11)2.1.7 报警部分 (11)2.1.8 开锁部分 (11)2.2 密码锁电路原理图、PCB图、元件布局图 (11)2.3 密码锁元件清单 (11)3 密码锁软件系统设计 (12)3.1 密码锁使用单片机资源情况 (12)3.2 密码锁软件系统各模块功能简要介绍 (12)3.3 密码锁软件系统程序流程框图 (12)4 设计结果 (16)4.1 设计结论及使用方法 (16)4.2 心得体会 (16)4.3 教学建议 (16)结束语 (17)参考文献 (18)致谢 (19)附录 (20)附录A (20)附录B (21)附录C (22)附录D (23)附录E (24)1设计任务及功能介绍1.1设计课题任务本设计采用AT89S52型号的单片机和其外围电路包括电源输入口、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分。
根据实际情况键盘输入部分选择4×4矩阵键盘,显示部分选择字符型液晶显示LCD12864,密码存储部分选用AT24C02芯片来完成密码锁的开锁、密码修改和密码初始化。
用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。
密码可以由用户自己修改设定,锁打开后才能修改密码。
当用户不记得密码时可通过专业认证服务用管理员密码使密码锁恢复出厂设置,管理员密码为999999。
1.2 功能要求说明设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
1.3 设计总体方案及工作原理说明由于单片机总类繁多,各种型号都用一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。
一般来说在选择单片机时下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。
当用户修要开锁时,进入开锁界面之后按键盘的数字键0-9输入密码。
密码输入完成后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新新输入密码,当三次输入密码错误时则发出报警;当用户需要修改密码时,进入密码修改界面,接着输入原来的密码,只有当输入的原密码正确后才能设置新密码。
新密码输入后按下确认键后系统将得到存储,密码修改成功。
2 密码锁硬件系统的设计2.1 密码锁硬件系统各模块功能简要介绍2.1.1 电路总体构成采用以单片机为核心的控制方案,总体框图见图1。
在确定了选用什么型号的单片机后,就要确定外围电路。
其外围电路包括电源输入口、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分。
根据实际情况键盘输入部分选择4×4矩阵键盘,显示部分选择字符型液晶显示LCD12864,密码存储部分选用AT24C02芯片来完成。
其原理图见附录1。
采用以单片机为核心的控制方案,总体框图见图1图1 设计总体框图2.1.2 键盘输入部分按键采用矩阵式排列的独立式按键键盘,它由行线和列线组成,按键位于行列的交叉点上,密码锁的密码有按键输入完成,本设计中使用的这个4×4键盘不但能完成密码的输入还能作为特别功能键使用,比如清空显示功能等,键盘的每个按键功能在程序设计中设置。