搜档网
当前位置:搜档网 › 51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图
51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图(很详细) 一、基本组成:

单片机小系统+4*4矩阵键盘+1602显示+DC电机

基本电路:

键盘和和显示

键盘接P1口,液晶的电源的开、关通过P2.7口控制

电机(控制口P2.4)

二、基本功能描述:

1.验证密码、修改密码

a)锁的初始密码是123456(密码最长为10位,最短为1位)。

2.恢复初始密码

a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态

a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。

b)同时将LCD背光灯关闭

4.DC电机模拟开锁动作。

a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。

三、密码锁特点说明:

1.0 输入将被以字符形式输入,最长为10位。

超过10位时系统将自动截取前10位、但不作密码长度溢出提示。

2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。

3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。

4.0 若2分钟内无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。

5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。

6.0 修改密码键和恢复初始密码键最好置于室内。

这是Proteus仿真结果:

输入密码123456:

显示结果:

密码正确时电机启动、电机将持续5秒:

这是键盘:

开锁键是接INT0引脚接的一个独立按键,用于唤醒CPU工作、进而开启整个系统

密码正确时可以修改密码:

再次输入新密码,两次输入相同时、更改有效

当然你可以随时放弃修改密码

改进:

1.0 密码锁的秘密没有存储,因而在掉电时最新的密码将丢失,重新上电后

密码将恢复成为初始密码。这使得每次换电池或停电后密码都得恢复一次,给使用带来不便,但是为了要存储一个最多只有十几字节的密码就增加一个存储器、似乎不是很值,最好是所选的单片机自带这样的存储器(容量很小、如32B)。当然如果电源来自市电的话,就不会经常掉电了。

2.0 系统的最好再增加电源监测的设计,在电池电力不够时发出提示。这时还可以增加备用电池,这样就可以保证系统不会掉电。但是这些都要依赖于成本。

3.0 液晶的显示最好采用中文。通过对1602的CGRAM的操作可以实现中文显示,使得用户界面更好。

主函数:

确认函数_ confirm()操作:

0_将 '\0' 置于输入table_input[]结尾(table_input[]的长度返回值在length里面) 根据操作标识选择任务:

1_确认密码:判定输入密码正确与否

2_修改密码:确认第一次输入并保存

要求第二次输入

比较两次输入是否相同根据比较结果选择任务:

修改失败,进入输入密码态

修改成功,将输入复制到table_password[]

确认函数_confirm()相关标识位目录:

flag_display;//根据其值可以确定显示信息

flag_confirm;//确认键根据此标识判定任务,默认为0_即为确定密码状态flag_allow;//允许修改密码标识,在密码比较正确时置1

flag_amend;//第一/二次输入新密码标识

flag_M;//允许电机开锁标识

相关变量

sbit M=P3^6;//电机控制口

flag_confirm;//操作任务标识位

flag_compare;//比较输入与密码|相等时返回1,否则返回0

static flag_amend;//修改密码时的标识

第一次输入前=1,输入后置2

第二次输入前=2,输入后置0

flag_display=0;//确认键操作的返回值根据返回值可以确定显示信息

flag_allow;//允许改密码标识,在密码比较正确时置1,不正确时置0

process_char()函数::_M;//DC电机控制口

process_char()函数::_length;//跟踪记录输入table_input[11]的字符长度( <=10 )

lcd_display()函数中标识位flag_display的值与意义:

=0:不显示|不刷新显示

=1:密码错误

=2:密码正确

=3:请输入新密码

=4:请再次输入新密码

=5:密码修改成功

=6:密码修改失败

=7:显示输入密码状态_The password!

=8:放弃修改密码

=9:已开锁

流图不怎么清晰、不过下一篇就是程序了,可以从程序推出流图。

程序比较多,所以写成了几个文件,同时应用了相当多的标识位来进行信号传递。

我觉得边看程序边画它的流程图会更好地帮助我们读程序。

1.0 main.c文件

#include

#include

#include"mydefine_2.h"

static void delay(unsigned int N)//N ms延时_12MHz/准确性高{

unsigned int i=0,j=0;

for(i=1;i<=N;i++)

for(j=1;j<=355;j++) ;

}

void clock()

{

key_clock=0;

delay(15);

key_clock=1;

}

void init()

{

key_LCD=0;

init_1602();

TMOD=0x01;

TH0=0x3C;//=(65535-5000)/256

TL0=0xAF;//(65535-5000)%256

EA=1;

ET0=1;

TR0=0;

EA=1;//外部中断0唤醒CPU(空闲方式)

EX0=1;

IT0=1;

command(0x80);

lcd_display(7);

}

void main()

{

init();

while(1)

{

temp=keyboard_matrix();//扫描输入

if(temp)//有按键输入信息

{

clock();//按键声

TR0=0;//关闭计时

timer=0;

receive(temp);//输入的字符串长度为length( <= 10)

if(i!=length)//输入时显示"*"

{

command(0xC0+length);//为显示密码输入设定位置

display('*');

i=length;

}

switch(temp)//根据按键号调用任务

{

//修改密码

case 12: if((flag_allow) && (flag_amend==0))//输入密码正确的条件下可以更改

{

table_input[0]='\0';

flag_display=3;//请输入新密码

flag_confirm=1;//确认键进入确认修改密码功能

flag_amend=1;//每次按下修改键时都是第一次输入新密码

length=0; //重按修改键时也是第一次输入新密码

i=0;

}

else

{

flag_confirm=0;//恢复初始态

flag_amend=0;

lcd_display(1);//密码不正确

delay(500);

flag_display=7;

length=0;

i=0;

}

break;

case 11: //取消

command(0xC0+length);//擦出显示

display(' ');//显示后光标_显示地址又加了1

command(0xC0+length);//重置光标_显示地址|实为将光标拉回来 i=0;

if(length > 0)

{

length--;//input[]位置后退一位

}

break;

case 10: confirm();//确定

i=0;

break;

case 13: //修改密码的过程中取消修改密码|将系统置于初始态即可 if((flag_amend==1) || (flag_amend==2))

{

flag_amend=0;

flag_confirm=0;

lcd_display(8);

delay(500);

flag_display=7;

length=0;

i=0;

}

break;

}

lcd_display(flag_display);

}

else

{

TR0=1;//开始计时等待

}

DC_Moter();

resume_password();

if(flag_clear)//恢复密码和开锁键_外部中断有效时重新计时

{

flag_clear=0;

timer=0;

}

if(timer==100)//10秒后不允许更改密码

{

flag_allow=0;

flag_amend=0;

flag_confirm=0;

length=0;

i=0;

lcd_display(7);//显示初始态,以提示修改超时 }

if(timer==1200)//≈2分钟后休眠|空闲方式

{

TR0=0;

timer=0;

clear_system();//恢复初始态

i=0;

key_clock=0;

delay(250);

key_clock=1;

PCON|=0x01;

lcd_display(7);//唤醒CPU后显示初始态

}

}

}

void int0() interrupt 0

{

key_LCD=0;//开液晶电源

key_clock=0;

delay(250);

key_clock=1;

flag_clear=1;

}

void Timer0() interrupt 1 //50ms

{

TH0=0x3C;//(65535-50000)/256

TL0=0xAF;//(65535-50000)%256

timer++;

}

2.0 负责实现具体操作的 process_char.c 文件

#include

#include

#include"mydefine.h"

sbit key_self=P2^1;//独立按键,用于恢复初始密码

sbit key_LED=P2^0;

sbit key_M=P2^4;//DC电机控制口

sbit key_LCD=P2^7;//液晶电源控制口

extern bit flag_clear;//恢复密码和开锁键_外部中断的有效标识

extern unsigned int timer;//定时器0计数时段标记_50ms一次定时中断extern unsigned char length=0;//跟踪记录输入table_input[11]的字符长度( <=10 )

extern unsigned char flag_display=0;//根据其值可以确定显示信息

extern unsigned char flag_confirm=0;//确认键根据此标识判定任务,默认为0_即为确定密码状态

extern unsigned char flag_allow=0;//允许修改密码标识,在密码比较正确时置1

extern unsigned char flag_amend=0;//第一/二次输入新密码标识

unsigned char flag_M=0;//允许电机开锁标识

extern void command(unsigned char command);

extern void display(unsigned char date);

//向I2C地址为address处写入数据date

extern void write_I2C(unsigned char address,unsigned char date);

//读出I2C地址为address处的数据

extern unsigned char read_I2C(unsigned char address);

static void delay(unsigned int N)//N ms延时/准确性高

{

unsigned int i=0,j=0;

for(i=1;i<=N;i++)

for(j=1;j<=355;j++) ;

}

//休眠前清除table_input中的值

extern void clear_system()

{

table_input[0]='\0';//恢复初始态

length=0;

flag_allow=0;

flag_confirm=0;

flag_amend=0;

flag_clear=0;

key_LCD=1;//关液晶电源

}

//接收键盘输入|以字符形式存入table_input[11]

extern void receive(unsigned char temp)

{

//按键在松手时读取按键号,故不会重复读取按键值

if(temp && length<=9)//如此,则无按键时执行效率高

{

switch(temp)

{

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

case 8:

case 9: table_input[length++]=temp+48;//以字符形式存入table_input[11]

break;

case 14: table_input[length++]=48;//字符0

}

}

}

//根据任务选择显示信息

extern void lcd_display(unsigned char temp)

{

unsigned char i=0,*p=NULL;

if(temp)

{

switch(temp)//选择显示信息

{

case 1: p=table_error;//密码不正确

break;

case 2: p=table_pass;//密码正确

break;

case 3: p=table_new;//请输入新密码

break;

case 4: p=table_again;//请再次输入新密码

break;

case 5: p=table_changed;//密码修改成功

break;

case 6: p=table_fail;//密码修改失败

break;

case 7: p=table_enter;//显示输入密码:The password!

break;

case 8: p=table_abandon;//放弃修改密码

break;

case 9: p=table_close;//锁闭

break;

case 10: p=table_resume;//锁闭

break;

}

command(0x01);

delay(1);

command(0x80);

while(*p!='\0')

{

display(*(p++));

}

flag_display=0;//显示后清0,避免重复显示

}

}

//确认

extern void confirm(void)

{

unsigned char flag_compare=0;//用于记录比较输入与密码的结果|相等时返回1,否则返回0

unsigned char flag_compare_2=0;//用于记录对两次输入的新密码的比较结果|相等时返回1,否则返回0

unsigned char i=0;

if(length > 0)//输入不为空

{

table_input[length]='\0';

length=0;//输入字符串长度清0

if(flag_confirm)//修改密码

{

switch(flag_amend)

{

case 1: strcpy(table_newpassword,table_input);//第一次输入新密码

table_input[1]='\0';//避免第一次输入的内容在放弃修改时再次被利用

flag_amend=2;

flag_display=4;//请再次输入密码

break;

case 2:

flag_compare_2=strcmp(table_input,table_newpassword);//第二次输入新密码

flag_amend=0;//清0,允许再次修改

flag_confirm=0;//进入初始之确认密码状态

if(!flag_compare_2)//两次输入相同==0

{

strcpy(table_password,table_input);

table_input[1]='\0';//避免修改完成后再次被利用,造成重复修改,同时避免刚修改了就是pass状态

lcd_display(5);//修改成功

delay(500);

flag_display=7;

}

else

{

lcd_display(6);//修改失败

delay(500);

flag_display=7;

}

break;

}

}

else//验证密码

{

flag_compare=strcmp(table_input,table_password);

if(!flag_compare)//密码正确==0

{

flag_allow=1;//允许修改密码

flag_M=1;//允许开锁

flag_display=2;//密码正确信息:Pass!

table_input[1]='\0';//改变输入,使不致出乱

}

else//密码错误

{

flag_allow=0;//不允许修改密码

lcd_display(1);//密码错误信息:Error!

delay(500);

flag_display=7;

}

}

}

}

//电机控制

extern void DC_Moter()

{

if(flag_M)//允许开锁

{

flag_M=0;

key_M=0;//开锁

key_LED=0;

delay(1250);

key_M=1;

key_LED=1;

timer=0;

lcd_display(7);//进入初始态

}

}

//恢复初始密码

extern void resume_password()

{

if(!key_self)//==0

{

delay(3);

if(!key_self)//==0

{

while(!key_self) ;//==0

strcpy(table_password,table_original); flag_clear=1;

lcd_display(10);

delay(500);

lcd_display(7);

}

}

}

确认函数_ confirm()操作:

0_将 '\0' 置于输入table_input[]结尾

(table_input[]的长度返回值在length里面)

根据操作标识选择任务:

1_确认密码:判定输入密码正确与否

2_修改密码:确认第一次输入并保存

要求第二次输入

比较两次输入是否相同

根据比较结果选择任务:

修改失败,进入输入密码态

修改成功,将输入复制到table_password[]

确认函数_confirm()相关标识位目录:

flag_display;//根据其值可以确定显示信息

flag_confirm;//确认键根据此标识判定任务,默认为0_即为确定密码状态flag_allow;//允许修改密码标识,在密码比较正确时置1

flag_amend;//第一/二次输入新密码标识

flag_M;//允许电机开锁标识

相关变量

sbit M=P3^6;//电机控制口

flag_confirm;//操作任务标识位

flag_compare;//比较输入与密码|相等时返回1,否则返回0

static flag_amend;//修改密码时的标识

第一次输入前=1,输入后置2

第二次输入前=2,输入后置0

flag_display=0;//确认键操作的返回值根据返回值可以确定显示信息

flag_allow;//允许改密码标识,在密码比较正确时置1,不正确时置0

process_char()函数::_M;//DC电机控制口

process_char()函数::_length;//跟踪记录输入table_input[11]的字符长度( <=10 )

lcd_display()函数中标识位flag_display的值与意义:

=0:不显示|不刷新显示

=1:密码错误

=2:密码正确

=3:请输入新密码

=4:请再次输入新密码

=5:密码修改成功

=6:密码修改失败

=7:显示输入密码状态_The password!

=8:放弃修改密码

=9:已开锁

3.0 定义各个数组的头文件mydefine.h

extern unsigned char table_input[11]={0}; //接收键盘输入

unsigned char table_password[11]="123456"; //密文

unsigned char table_newpassword[11]="456"; //接收新密码

unsigned char code table_original[11]="123456"; //初始密码

//显示信息

unsigned char code table_pass[]="Pass!"; //成功进入

unsigned char code table_error[]="Operate Error!"; //密码错误信息unsigned char code table_enter[]="The password:"; //输入密码

unsigned char code table_new[]="New password:"; //输入新密码

unsigned char code table_again[]="Enter again:"; //再次输入新密码unsigned char code table_changed[]="Changed!"; //密码修改成功

unsigned char code table_fail[]="Fail changce!"; //密码修改失败unsigned char code table_abandon[]="Abandon changce!";//放弃修改密码

unsigned char code table_close[]="Locked!";//锁闭

unsigned char code table_resume[]="Resumed!";//恢复初始密码

4.0 头文件mydefine_2.h

定义了各个外部文件向主函数用到的操作函数和外部变量#ifndef _mydefine_2_h_

#define _mydefine_2_h_

sbit key_LED=P2^0;

sbit key_clock=P3^3;//蜂鸣器

sbit key_LCD=P2^7;//液晶电源控制口

extern bit flag_clear=0;//恢复密码和开锁键_外部中断的有效标识

extern unsigned int timer=0;//定时器0计数时段标记_50ms一次定时中断

static unsigned char i=0;//显示*用变量

unsigned char temp=0;//用于接收键盘输入(按键在松手时读取按键号) extern unsigned int table_input[11];//接收输入

extern unsigned char flag_allow;//允许改密码标识,在密码比较正确时置1

extern unsigned char flag_confirm;//确认键根据此标识判定任务,默认为0_即为确定密码状态

extern unsigned char flag_display;//确认键操作的返回值,根据返回值可以确定显示信息

extern unsigned char flag_amend;//第一/二次输入新密码标识

extern unsigned char length;//输入input的字符长度(length <= 16) //1602液晶:extern_1602.c

***************************************************************** extern void init_1602();

extern void command(unsigned char command);

extern void display(unsigned char date);

//键盘:extern_keyboard_no_T0_2.c

********************************************************* //矩阵键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key extern unsigned char keyboard_matrix();//(在松手时读取按键号****检

测高四位)

//密码处理:process_char.c

**************************************************************** //电机控制

extern void DC_Moter();

//接收键盘输入|以bit形式存入input__返回值为输入的字符串长度length(length <= 10)

extern void receive(unsigned char temp);//涉及文件间变量length //确认按键操作

extern void confirm(void);//涉及跨文件调用的变量

flag_confirm,flag_allow,flag_amend

//根据任务选择显示信息

extern void lcd_display(unsigned char flag_display);//涉及跨文件调用的变量flag_display

extern void clear_system();//恢复初始态

extern void resume_password();//恢复初始密码

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

基于51单片机电子密码锁设计

一、设计目的 1.1课题简介 如何实现防盗是很多人关心的问题,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,使人们的人身及财产安全受到很大威胁。电子密码锁是一种依靠电子电路来控制电磁锁的开和闭的装置,开锁需要输入正确密码,若密码泄露,用户可以随时更改密码。因此其保密性高,使用灵活性好,安全系数高,可以满足广大用户的需要,现在广泛使用的有红外遥控电子密码锁,声控密码锁,按键密码锁等。 1.2课题研究目的 本设计是一种基于单片机的密码锁方案,根据基本要求规划单片机密码锁的硬件电路和软件程序,同时对单片机的型号选择、硬件设计、软件流程图、单片机存储单元的分配等都有注释。现在很多地方都需要密码锁,电子密码锁的性能和安全性大大超过了机械锁,为了提高密码的保密性,必须可以经常更改密码,以便密码被盗时可以修改密码。 本次设计的密码锁具备的功能:LED数码管显示初始状态“——————”,用户通过键盘输入密码,每输入一位密码,LED数码管相应有一位变为“P”,若想重新输入密码,只需按下“CLR”键。密码输入完毕后按确认键“#”,密码锁控制芯片将输入的密码和密码锁控制芯片中存储的密码相比,若密码错误,则不开锁,会有红灯亮提示,同时显示“Error”。若正确,则开锁,会有绿灯亮提示,同时显示“PASS”。用户可以根据实际情况随意改变密码值或密码长度,密码输入正确后可以按下“CHG”修改密码,输入新密码时每输入一位新密码相应有一位变为“H”,以便提示用户此时输入的是新密码,修改新密码时若想重新输入新密码只需按下“CLR”键即可。输入新密码后按确认键即修改成功,新密码写入单片机内部RAM中,以便以后用来确认密码的正确性。按下复位键,系统恢复初始状态,密码也恢复初始密码,本设计中初始密码是“096168”。 本次设计中硬件主要由我完成,软件主要由张振完成。 二、硬件设计 2.1概述 本系统主要由单片机最小系统、电源电路、输入键盘电路、输出显示电路、开锁电路等组成,系统框图如图1所示:

基于51单片机的流水灯设计说明

基于51单片机的流水灯设计 一.基本功能 利用AT89c51作为主控器组成一个LED流水灯系统,实现8个LED 灯的左、右循环显示。 二.硬件设计 图1.总设计图

1.单片机最小系统 1.1选用AT89C51的引脚功能 图2. AT89C51 XTAL1:单芯片系统时钟的反向放大器输入端。 XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。 RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得部特殊功能寄存器容均被设成已知状态。 P3:端口3是具有部提升电路的双向I/O端口,通过控制各个端口的高低电平了实现LED流水灯的控制。

1.2复位电路 如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。 图3.复位电路 1.3时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。 在AT89C51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。

图4.时钟电路 2.流水灯部分 图5.流水灯电路 三.软件设计 3.1编程语言及编程软件的选择 本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言

单片机电子密码锁_(可以修改设置密码)——基于51单片机与AT24C02与LCD1602显示

单片机电子密码锁(可以修改设置密码)——基于51单片机与AT24C02与LCD1602显示 其电路图连接如下:本人已经用硬件实验,程序可用。正确~~ 本程序特点:装载后读者可以自改密码,然后需要再次载入程序时:可以把主程序aa=Sendstring(0xa0,1,table2,6);这一句去掉。然后程序的电子锁密码就是你个人设置的密码。 程序代码为: #include #include #include #define uchar unsigned char #define uint unsigned int #define LCDIO P2 #define delay4us() _nop_();_nop_();_nop_();_nop_(); uchar buffer[6]={0}; sbit sda=P3^7; sbit scl=P3^6; sbit beep=P3^5; bit flag=0,aa; //用户蹲渊义定时溢出标志位 uchar DSY_BUFFER[16]=" ";

uchar DSY_BUFFER1[16]=" "; uchar Userpassword[6]={0}; sbit rs=P0^4; sbit rd=P0^3; sbit lcden=P0^2; sbit led=P3^0; uchar code table2[]="123456"; uchar code table[]="Your Password..."; void delayms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void delay() //短延时,两个机器周期,做总线的延时用{;;} void write_com(uchar com) { rs=0; rd=0; lcden=0; P2=com; delayms(3); lcden=1; delayms(3); lcden=0; } void write_date(uchar date) { rs=1; rd=0; lcden=0; P2=date; delayms(3); lcden=1; delayms(3); lcden=0; } void Display_String(uchar *p,uchar com) { uchar i; write_com(com); for(i=0;i<16;i++) {

51单片机密码锁制作的程序和流程图

51单片码锁制作的程序和流程图(很详细) 一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。 b)同时将LCD背光灯关闭 4.DC电机模拟开锁动作。 a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。 三、密码锁特点说明: 1.0 输入将被以字符形式输入,最长为10位。 超过10位时系统将自动截取前10位、但不作密码长度溢出提示。 2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。 3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。 4.0 若2分钟无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。 5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。 6.0 修改密码键和恢复初始密码键最好置于室。 这是Proteus仿真结果: 输入密码123456: 显示结果: 密码正确时电机启动、电机将持续5秒:

单片机说明

第一章 LAB2000单片机仿真系统的使用 1.1 单片机仿真系统的介绍 1.1.1 概述 本仿真实验系统可实现MCS51/MCS196单片机原理与接口的一系列实验,并在硬件上预留了自主开发实验的空间。该实验系统对基本实验仅需少量连线就可进行,以减轻学生的工作量,同时也提供了一些需较多连线的扩展性实验以进一步锻炼学员的动手能力(详见第2部分)。此外,它还为学生们提供了强大的软硬件调试手段。本仿真实验系统由板上仿真器、实验仪、伟福仿真软件、开关电源构成。 1.仿真器系统构成 本仿真实验系统具有三种使用方法: (1)无系统机,仅用实验仪的板上仿真器进行仿真和实验。 (2)有系统机,用系统机上的WINDOWS/DOS软件驱动板上仿真器进行仿真和实验。 (3)有系统机、用外接仿真器进行仿真和实验。 (4)无实验仪、无仿真器,仅在系统机上采用软件模拟方式进行仿真。 2.实验系统自带键盘和显示器,自带系统监控程序。如果没有系统机也照样进行各种学习和实验。 3.配备有DOS,Windows两套PC机系统软件,在有系统机的情况下,通过外接仿真器实现64K全空间的硬件断点和仿真。 4.PC机和系统机软件具有全集成化仿真环境,中、英文两种界面,软件仿真与硬件仿真两种模式,软件仿真可以在无仿真仪的情况下进行。 5.其中实验实例及实验程序,可采用机器码、汇编、C等三种语言编写,以适应不同层次的学生的需求。 本实验仪可以方便灵活地构成各种实验方案,在有无系统机和实验仪的情况下,都能进行相应的编程实验,从而具有极为广泛的应用围,板上提供了基本的实验电路,减少繁琐的连接线过程,板上也提供了DIP40/28/24/20/16/14插孔和CPU的地址数据总线引出插孔,供学生自己扩展其它实验,培养实际动手能力,加强对实验电路的理解。实验程序采用多种语言适应不同层次的学生的需要。高级语言编写应用程序,是一种时代的需要,通过应用高级语言的编程和实验,可使学生掌握高级语言的编程方法,为今后进入社会实践打下坚实的基础。而汇编语言又能让学生了解机器深层的原理。 1.1.2 伟福实验系统的支持软件 1.板上单片机仿真部分(使用WAVE集成调试软件) (1)支持DOS、Windows'95/98双平台 (2)具有编辑、汇编、编译、调试和软件模拟等功能,所有操作均可通过窗口和菜单的 选择来完成。方便用户编写和调试软件、直观反映程序运行情况,提高软件开发效率。 (3)支持汇编语言、C、PLM高级语言源程序调试。 (4)可观察数组,记录等各种复杂变量。 (5)脱开实验系统单独进行软件模拟,这种方式尤其适用于软件实验 注意:(1)无论是集成电路的插拔、通讯电缆的连接、跳线器的设置还是实验线路的连接,都应确保在断电情况下进行,否则可能造成对设备的损坏。 (2)实验线路连接完成后,应仔细检查无误后再接通电源。 1.2 WAVE的开发环境

51单片机电子密码锁

目录 第1节引言 (1) 1.1 电子密码锁述 (1) 1.2 本设计主要任务 (1) 1.3 系统主要功能 (2) 第2节系统硬件设计 (3) 2.1 系统的硬件构成及功能 (3) 2.2 AT89C2051单片机及其引脚说明 (3) 第3节系统软件设计 (5) 3.1 系统主程序设计(流程图) (5) 3.2 软件设计思想 (5) 3.3 储单元的分配 (5) 3.4 系统源程序 (6) 3.5 系统应用说明 (9) 3.6 小结 (9) 结束语 (10) 参考文献 (11) 附录 (12)

电子密码锁 第1节引言 1.1 电子密码锁概述 随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。从而使密码锁具有很高的安全性、可靠性。目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。 很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。 设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。 1.2 本设计主要任务 (1)共8位密码,每位的取值范围为1~8。 (2)用户可以自行设定和修改密码。 (3)按每个密码键时都有声、光提示。 (4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。

基于51单片机的智能密码锁

单片机的电子密码锁 目录 第一章绪论......................................................... . (2) 1.1电子密码锁简介......................................................... .. (2) 1.2电子密码锁设计的背景及意 义............................................................................. . (3) 第2章总体设计............................................................................. . (3) 2.1设计分析............................................................................. (3) 2.2系统结构............................................................................. (4) 第3章硬件电路设计............................................................................. (5) 3.1单片机最小系统设计............................................................................. . (5) 3.1.1时钟电路............................................................................. (5) 3.1.2 复位电 路 ............................................................................ . (6) 3.1.3 最小系 统 ............................................................................

基于单片机的密码锁

基于单片机的密码锁 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开 锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。 随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。 为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。 密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在 技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是 单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外, 还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、 可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只

能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容 易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子 密码锁是这类电子防盗产品的主流。 基于以上思路,本次设计使用ATMEL公司的AT89C51实现一基于单片机的电子密码锁的设计,其主要具有如下功能: (1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。 (2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能 修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要 二次确认,以防止误操作。 (3)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示, 若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。 电子密码锁的设计主要由三部分组成:4×4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。 密码锁设计的关键问题是实现密码的输入、清楚、更改、开锁等功能: (1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的 数码管上,同时将先前输入的所有“-”向左移动一位。 密码清除功能:当按下清除键时,清除前面输入的所有值,并清(2) 除所有显示。 (3)密码更改功能:将输入的值作为新的密码。 (4)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如 果正确锁打开,否则不打开。

基于51单片机的无线电子密码锁课程设计

单片机课程设计报告书 基于89C51单片机 课题名称 无线电子密码锁的设计姓名刘武 学号131220330 学院通信与电子工程学院 专业电子信息工程 指导教师祝秋香讲师 2015年12月20日

基于89C51单片机无线电子密码锁的设计 1 设计目的 (1)了解MCS-51单片机使用方法和熟悉蓝牙模块; (2)掌握AT89C51芯片的使用方法及蓝牙模块的连接与使用; (3)熟悉单片机程序仿真软件Proteus的使用; (4)了解MCS-51单片机开发板工作原理以及芯片的组合; (5)熟悉无线电子密码锁的设计及实现。 2设计思路 2.1 选择设计电路 设计51单片机与蓝牙连接的电路。 2.2 所选设计电路的原因 (1)由于无线电子密码锁的设计需要用到蓝牙模块,用到的单片机资源并不是很多,而51单片机的资源有8位CPU、4KB的ROM、128B的RAM、2个16位定时/计数器、4组8位的I/O、1个串口和5个中断源,可以更有效率的利用到51单片机的资源。 (2)可现实无线功能的模块有:蓝牙模块、无线模块、红外遥控模块,因为相对之下,蓝牙模块更容易实现,更容易操作,最后选择蓝牙模块实现手机远程控制。 (3)为了提高效率,可以利用51单片机开发板的硬件,用LED灯模拟密码锁的开关,当LED灯亮起时代表锁已经开启,熄灭则代表密码锁被关闭。应用在实际中可用继电器替代LED的亮灭去控制强电开关。 3 设计过程 3.1 设计总框图 无线电子密码锁分为两个主要功能模块:51单片机模块,蓝牙实现模块。这两个模块共同工作完成本电路的功能实现。其中利用AT89C51芯片来实现51单片机模块功能,完成数码管、发光二极管的实现,同时利用HC06蓝牙模块来

51单片机密码锁程序

自己做的基于单片机的密码锁设计(c语言设计) 时间:2011-08-16 21:08:01 来源:作者: 自己做的基于单片机的密码锁设计(c语言设计) 系统说明 该系统如图所示使用了80C51单片机、普通键盘、排阻、1602液晶。 该系统的功能: ①该系统输入正确的密码LED灯会亮(其实就是很多操作都可以,用LED只是 代表作用,主要是操作简单,效果明显。) ②系统可以修改密码;(系统断电后重启后必须用初始密码(初始密码是:000000) 重新改密,当然修改的密码可以与掉电前的一样。) 具体操作: ①系统开机时显示请输入密码的提示,直接输入密码#键确认 ②系统会自动提醒密码错误,数秒后系统会再次提醒重新输密码。 ③在系统提醒输入密码的界面可以按*键修改密码,系统会提醒输入两次密码,并 且会检查两次密码是否相同。同则修改成功。否则在数秒后可以重新按*键修改。 ④在改密前(就是按了*键后系统)会提醒身份识别,请输入旧密码,系统判断旧 密码正确方可更改密码。 源程序 #include #define uchar unsigned char #define uint unsigned int sbit lcdrs=P3^0; sbit lcdrw=P3^1; sbit lcden=P3^2; sbit h1=P1^0; sbit h2=P1^1; sbit h3=P1^2; sbit sa=P1^3; sbit sb=P1^4; sbit sc=P1^5; sbit sd=P1^6; sbit kd=P3^7; uchar code table[]=" PLEASE INPUT "; uchar code table1[]="CODE: "; uchar code table2[]=" *****WIN*****"; uchar code table3[]=" PLEASE AFFIRM"; uchar code table4[]=" *****FAIL*****"; uchar code table5[]=" MODIFICATION"; uchar code table6[]=" IDENTITY LIMITS "; uchar unm,M1,M2,M3,M4,M5,M6,sex,k1,k2,k3,k4,k5,k6,flge,flge1; uchar q1,q2,q3,q4,q5,q6,w1,w2,w3,w4,w5,w6,g;

基于51单片机的电子密码锁设计

基于51单片机的电子密码锁设计 摘要:本文设计了一种基于单片机的电子密码锁,由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超次锁定、报警、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有掉电存储、声光提示等功能。本密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。 关键词:STC89C52;电子密码锁;矩阵键盘 1绪论 1.1 课题背景 随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。 1.2 课题设计目标 本设计采用STC89C52单片机为主控芯片,通过软件程序组成电子密码锁系统,能够实现: (1) 密码输入错误,蜂鸣器报警。 (2) 密码为6位,可以随意更改, (3) 采用矩阵按键输入。 (4)通过LCD1602液晶显示。 (5) 有开锁指示灯。 (6)查阅有关文献与资料,深入学习单片机硬件原理图及软件编程相关知识。 2系统方案论证 系统将从主控部分和密码输入方式两方面进行论证。

基于单片机数字密码锁的设计要点

摘要 随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。 单片机也被称微控器,是因为它最早被用在工业控制领域。单片机是靠程序运行的,并且可以修改。 本设计系统主机采用8052单片机,MCS-51单片机的程序存储器和数据存储器的地址空间是相互独立的,而且程序存储器一般为ROM或EPROM,只能读出不能写入。扩展用的程序存储器芯片大多采用EPROM芯片,最大可扩展到64K字节。该设计使用矩阵键盘输入。LED数码管显示输入密码,用74HC245驱动数码管发光显示数码,LCD1602控制显示。密码正确,二极管发光。输入密码错误次数超过三次系统报警,蜂鸣器发出报警音。 关键词:单片机软件电路硬件电路

目录 第一章设计要求 (1) 第二章系统组成及工作原理 (2) 第三章硬件电路设计 (3) 3.1 STC89C52单片机的介绍 (3) 3.2单片机最小系统 (5) 3.3键盘电路设计 (6) 3.4 LCD1602显示电路 (8) 3.5开锁电路 (11) 3.6报警电路 (11) 3.7仿真效果图 (12) 第四章软件设计 (13) 4.1 PROTEUS仿真软件 (13) 4.2 KEIL编译设计 (15) 4.3 普中ISP自动下载软件 (16) 4.4程序流程图 (18) 第五章设计、调试和测试结果与分析 (19) 第六章设计小结 (23) 参考文献 (24) 附录 (25)

第一章设计要求 采用单片机、LCD等芯片,设计电子密码锁,能随时修改密码,具有防多次试探功能,连续输入密码达到一定次数,发出光声报警密码输入错误时有报警功能,连续输入3次错误,键盘自锁,等待管理解锁;开锁后或修改密码后可以选择退出,返回开锁前状态。掌握Proteus软件的基本应用,用于设计与仿真,需要用PROTEUS软件绘制电路原理图及局部原理图;掌握单片机编程语言,可选用汇编语言或C语言; 本次课程设计是要设计一个数字密码锁,设计要求如下: 1、设计一个数字式密码锁。 2、密码由4 – 6位数字组成。 3、密码相符开锁,三次不符报警。 4、密码可以更新。

基于51单片机的电子锁

基于51单片机的电子锁 设计说明书 一、概述: 随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。 本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构(本设重点介绍主机设计),实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。而且采用键盘输入的电子密码锁具有较高的优势。采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,本系统各项功能已达到本设计的所有要求。 着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。(如指纹、眼底视网膜等)来控制锁的开启。从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。 二、设计目的和任务: 1.熟悉8051单片机的内部结构和功能,合理使用其内部寄存器 2.能完成相关软件编程设计工作。为实现预期功能,能够对系统进行 快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。 3.对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方 面得到较全面的锻炼和提高。 4.密码由用户自己设定,在开锁状态下,用户可自行修改密码。 5.具有自动报警功能。自动报警分现场报警和远程报警两种。现场报 警由扬声器发出报警声。 三、方案选择:

51单片机简易密码锁

学号: 单片机课程设计说明书设计题目:简易电子密码锁

成绩评定表

摘要 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 本课程设计介绍了基于单片机电子密码锁的设计,该设计硬件主要由AT89C52最小系统、矩阵电路、1602LCD显示电路、电源电路和报警电路等几部分组成。软件主要由C语言编程。该密码锁由单片机技术,通过矩阵电路设置、修改密码、保护密码,并由LCD显示密码输入,从而实现对密码的设置、保护。 关键词:单片机,密码锁, 1602,最小系统,矩阵键盘

Abstract In daily life and work, the department of housing and security, unit documents, financial statements and some personal information to save more in order to lock the ways to solve. If use the traditional mechanical key to open the lock, people often need to carry multiple keys, use very convenient, and the key missing after security is compromised. With the continuous development of science and technology, people in daily life the demand is higher and higher safety insurance device. To meet the requirements of people on the use of the lock, increase its safety, use the password instead of the key combination lock arises at the historic moment. Combination lock with high safety, low cost, low power consumption, easy operation, etc. In the field of security technology to guard against, with electronic combination lock anti-theft alarm function gradually replace the traditional mechanical combination lock, overcoming the mechanical combination lock password quantity is little, the shortcomings of poor safety performance, make the combination lock both in technology and step in performance are improved greatly. With the development of large scale integrated circuit technology, especially the single chip microcomputer, appeared with the intelligent combination of the microprocessor, it besides has the function of electronic combination lock, also introduced the intelligent management, expert analysis system, and other functions, so that the combination lock of high security, reliability, and increasingly widely used. The course design of electronic combination lock based on MCU is introduced, the design of the hardware is mainly composed of AT89C52 minimum system, matrix circuit, 1602 LCD display circuit, power circuit and alarm circuit and so on several parts. Software is mainly composed of C language programming. The combination lock by the single chip microcomputer technology, through the matrix circuit setting, change passwords, password protection, and by the LCD display password input, so as to realize the password Settings, protection.

51单片机基本程序

1第一位隔一秒闪烁一次 #include<> #define uint unsigned int sbit led1=P1^0; uint i; uint j; void main() { while(1) { % led1=0; for(i=1000;i>0;i--) for(j=110;j>0;j--); led1=1; for(i=1000;i>0;i--) for(j=110;j>0;j--); } } ; 2复杂广告灯 #include<> #define uint unsigned int #define uchar unsigned char uchar discode[]={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,sbit k2=P3^5; sbit k3=P3^6; sbit k4=P3^7; sbit d=P1^2; sbit c=P1^3; , uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; void delayms(uint); uchar numt0,num; void display(uchar numdis) //显示59s的常用方式 !

{ uchar shi,ge; shi=numdis/10; ge=numdis%10; P1=0xff; //控制十位数字 P1=0xfd; P0=table[shi]; delayms(10); P1=0x00; 。 P1=0xff; //控制个位数字 P1=0xfe; P0=table[ge]; delayms(10); P1=0x00; } void delayms(uint xms) //简单的延时程序/ { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void init() //初始化函数 { TMOD=0x01; TH0=(65536-45872)/256; ) TL0=(65536-45872)%256; EA=1; ET0=1; } void keyscan() //控制键盘的程序{ if(k1==0) { delayms(10); //去抖动延时 \

基于单片机的电子密码锁设计和实现

河南理工大学万方科技学院课程设计报告 2015— 2016学年第一学期 课程名称单片机原理及应用 设计题目电子密码锁设计 学生姓名杨会毫 学号 1516353019 专业班级计算机15升 指导教师苏百顺 2016 年 1 月 5 日

摘要 近年来,随着改革开放的深入发展,电子电器的飞速发展。人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而不法分子也是越来越多,原因在于大部分人防盗意识还不够强,造成偷盗现象屡见不鲜。越来越多的居民家庭对财产安全问题十分担忧。因此,出于安全方便等方面的需求,电子密码锁相继问世。 本设计是以单片机AT89S51为主控芯片,并结合外围液晶显示LCD1602、存储芯片AT24C02、红外遥控HS0038,以及键盘输入、复位、电源等电路组合而成。系统能够完成开锁、报警、修改密码等基本功能,还能够通过红外来控制单片机的开锁,以及掉电储存密码的功能。整个设计在Keil开发环境下,用C语言编写主控芯片的控制程序来实现具有多功能的电子密码锁。 关键词:密码锁 AT89S51 储存显示红外

目录 摘要............................................................ I 引言. (1) 1 概述 (2) 1.1 课题背景和意义 (2) 1.2电子密码锁的发展趋势 (2) 2 系统总体设计思路 (3) 2.1 系统设计要求 (3) 2.2系统设计方案 (3) 3 系统硬件设计与实现 (4) 3.1主控芯片AT89S51 (4) 3.2 存储模块AT24C02 (6) 3.3红外模块HS0038 (9) 3.4 显示模块LCD1602 (10) 3.5 电源电路模块 (11) 3.6 键盘输入模块 (12) 3.7 报警电路 (13) 3.8 开锁电路 (13) 3.9 复位电路 (14) 3.10串行通信电路 (14) 3.11 系统整体原理图 (16) 4系统软件设计 (17) 4.1 主程序设计 (17) 4.2键值判断设计 (18) 4.3开锁设计 (19)

基于STC89C51单片机的密码锁END

基于STC89C51单片机的电子密码锁 学生姓名:赵丽丽宋帅高秋利 学生学号: 1104101005 1104101021 1104101001 院(系):机电工程学院 年级专业: 11级电子信息工程1班 指导教师:王秀山 二〇一五一月

目录 1 绪论 1.1电子密码锁简介 (3) 2 设计方案 (4) 3 主要元器件 (5) 3.1 主控芯片STC89C51 (5) 3.2 晶体振荡器 (5) 3.3 LCD显示密码模块的设计 (7) 3.3.1 LCD1602简介 (7) 3.3.2 LCD1602液晶显示模块与单片机连接电路 (8) 4 硬件系统设计 (9) 4.1 设计原理 (9) 4.2 电源输入电路 (9) 4.3 矩阵键盘 (10) 4.4 复位电路 (10) 4.5 晶振电路 (11) 4.6 报警电路 (12) 4.7 显示电路 (12) 4.8 开锁电路 (12) 4.9 电路总体构成 (13) 5 软件程序设计 (14) 5.1 主程序流程介绍 (14) 5.2 键盘模块流程图 (15) 5.3 显示模块流程图 (17) 5.4 修改密码流程图 (18) 5.5 开锁和报警模块流程图 (19) 6 电子密码锁的系统调试及仿真 (21) 6.1硬件电路调试及结果分析 (21) 6.2软件调试及功能分析 (21) 6.2.1调试过程 (21) 6.2.2 仿真结果分 (22) 6.3 仿真全图 (24) 7 结论 (25) 参考文献 (26) 附录: (27)

1 绪论 1.1电子密码锁简介 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下: 1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因 人员的更替而使锁的密级下降。 3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。 4) 无活动零件,不会磨损,寿命长。 5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。 6) 电子密码锁操作简单易行,一学即会。

相关主题