单片机课程设计报告电子密码锁

单片机课程设计报告电子密码锁
单片机课程设计报告电子密码锁

单片机课程设计报告电子

密码锁

This manuscript was revised on November 28, 2020

山东交通学院单片机原理与应用课程设计

院(部):轨道交通学院

班级:自动化121

学生姓名:

学号:

指导教师:

时间: 2015.6.1—2015.6.12

课程设计任务书

题目电子密码锁设计

系 (部) 轨道交通学院

专业班级自动化121

学生姓名

学号

06 月 01 日至 06 月 12 日共 2 周

指导教师(签字)

系主任(签字)

年月日

目录

3.总体设计 (2)

4

4.5密码比较模块 (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!”,并且蜂鸣器同时提示一下。如果密码连续三次错误则蜂鸣器连续响5下,并且持续5秒不能进行任何操作 5.在开锁状态下按下“12”键,进入修改密码状态,LCD同时提示“Enter new code!”。

6.14为删除按键,出入之后可以进行删除。

7.15按键为关闭按键,只有在打开状态下才可以关闭,按下之后LCD显示“Close the door!”。

2.功能概述

此设计分为四个功能模块。

第一模块:按键输入模块,用于密码的输入以及其他的密码操作按键。

第二模块:LCD模块,是与使用者交流的界面,用于显示各种状态下的内容。

第三模块:步进电机模块,用于控制密码锁的打开与关闭。

第四模块:24C08模块,用于储存输入的密码并读出来。

3.总体设计

本次设计作品的主要构成部分包括80C51单片机、LCD1602、24C08、矩阵按键、LED 等、蜂鸣器。如图1总体仿真图,图2实物图。

图1 总体电路图

图2 密码锁实物图

4.硬件设计

4.1 矩阵按键设计

如图3所示矩阵按键由P1口控制,了加强密码的保密性,采用一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性,同时也能减少与单片机接口时所占用的I/O口线的数目,节省了单片机的宝贵资源,在按键比较多的时候,通常采用这种方法。

每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N根行线与M根列线,即可组成具有N × M 个按键的矩阵键盘。

在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确

认有无按键按下的程序段。

当确认有按键按下后,下一步就是要识别哪一个按键被按下。对键的识别方法通常有两种:一种是通用的组行扫描查询法;另一种是速度较快的线反转法。

此系统中,我们采用线反转法。首先辨别键盘中有无按键被按下,在单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。具体方法是:向行线输出全扫描字00H,把全部列线置成低电平,然后将列线的电平状态读入累加器A中。如果有按键被按下,总会有一根行线电瓶被拉至低电平从而使行线不全为1。

判断键盘中哪一个按键被按下通常是通过将列线逐列至低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的按键不在此列;如果不全为1,则所按下的按键必在此列,而且是在与零电平行线相交的交点上的那个按键。

图3 矩阵按键电路

4.2 LCD显示设计

显示电路是为了给使用者以提示而设置的,显示部分由液晶显示器LCD1602(如图4所示)取代普通的数码管完成。P0口作为数据传输口P2.0、P2.1、P2.2分别连接RS、RW、E。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,如果输入的密码正确的话, LCD显示“open the dore!”。如果密码不正确,LCD 显示屏会显示“Wrong password!”,同时红灯亮起。通过LCD显示屏,可以清楚地判断出密码锁所处的状态。

图4 LCD显示屏

4.3步进电机模块设计

步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度步进角。您可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A...),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-...),八拍(A-AB-B-BC-C-CD-D-DA-A...)。如图4所示。由ULN2003来控制,ULN2003的1、2、3、4引脚分别连接P3.0、P3.1、P3.2、P3.3口。

图5 步进电机模块

4.4 密码修改设计

AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。下面是它的电路图。

图5中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C51

试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA 为串行数据输入/输出,数据通过这条双向I2C 总线串行传送,在AT89C51试验开发板上和单片机的P3.5连接。第6脚SCL 为串行时钟输入线,在AT89C51试验开发板上和单片机的P3.4连接。SDA 和SCL 都需要和正电源间各接一个5.1K 的电阻上拉。第7脚需要接地。

通过使用24C02便可以实现对密码的储存于读取进一步实现密码锁的改密码功能。

图6 AT24C02

4.5密码比较设计

该模块将输入密码字符串与设定密码字符串比较。如果相同,执行开锁动作并将输入错误次数清零;如果不同,累计错误次数,如果是第三次输入错误,系统锁死并发出声光告警;如果小于三次,显示密码错误信息,返回密码输入环节。逻辑框图如图6所示。

图7 密码比较流程图 5.软件设计及流程图 系统的软件设计采用汇编语言编码。设计方法是先用文本编辑器编写源码,然后用软件Keil C51编译,如果没有错误,可连接生成.HEX 格式的文件。如果有错误则无法连接,但可在生成的.OBJ 文件中找到代码错误的地方,便于修改。当然也可以直接在Keil 中编码。生成的HEX 文件是记录文本行的ASCII 文本文件,在HEX 文件中,每一行是一个HEX 记录,由十六进制数组成的机器码或者数据常量。HEX 文件经常被用于将程序或数据传输存储到ROM 、EPROM ,大多数编程器和模拟器使用HEX 文件。 图8 单片机控制总体电路 图7为单片机控制总体电路,图8软件运行流程图。

图9 软件运行流程图 6.个人体会 通过这次课程设计,让我更加深刻了解课本知识,和以往对知识的疏忽得以补充,在设计过程中遇到一些模糊的操作和专业用语,比如说单片机定时器,以及中断的选

择,通过对单片机的操作实现自己设计的功能, 在使用手册时,有的数据很难查出,但是这些问题经过这次

设计,都一一得以解决,我相信单片机这本书中还有很多我为搞清楚的问题,但是这次的课程设计给我相当的基础知识,为我以后工作打下了严实的基础。

虽然这次课程是那么短暂的2周时间,我感觉到这些天我的所学胜过我这一学期所学,这次任务原则上是设计,其实就是一次大的作业,是让我对课本知识的巩固和应用,对程序的设计,修改以及调试,使我做事的耐心和仔细程度得以提高。课程设计是培训学生运用本专业所学的理论知识和专业知识来分析解决实际问题的重要教学环节,是对三年所学知识的复习和巩固。同样,也促使了同学们的相互探讨,相互学习。 因 此 , 我 们 必 须 认 真 、谨 慎 、踏 实、一步一步 的 完 成 设 计。如 果 时 间 可 以 重来,我可能会认真的去学习和研究,也可能会自己独立的完成一个项目,我相信无论是谁看到自己做出的成果时心里一定会很兴奋。

模块启动

验证密码

判断错误

次数

显示错误并且

锁定10秒 发出报警 系统锁死 作出相应 的动作 连续错误次数小于三次 密码正确 密码错误

此次设计让我明白了一个很深刻的道理:团队精神固然很重要,但人往往还是要靠自己的努力,自己亲身去经历,这样自己的心里才会踏实,学到的东西才会更多。

参考文献

[1] 马建国、孟宪元.电子设计自动化技术基础.机械工业出版社.2004.

[2]姜威.实用电子系统设计基础.北京理工大学出版社.2008.

[3]张靖武.单片机系统的PROTEUS设计与仿真.电子工业出版社.2007.

[4] 孙福成.KEIL C项目教程.西安电子科技大学出版社.2012.

[5] 张毅刚.单片机原理及接口技术.人民邮电出版社.2008.

8.附录:源程序

#include

#include

#define OP_READ 0xa1 // 器件地址以及读取操作,0xa1即为1010 0001B

#define OP_WRITE 0xa0 // 器件地址以及写入操作,0xa1即为1010 0000B

#define uint unsigned int

#define uchar unsigned char

#define KEY P1

#define No_key 20

#define lcddata P0

sbit SDA=P3^5; //将串行数据总线SDA位定义在为P3.5引脚

sbit SCL=P3^4; //将串行时钟总线SDA位定义在为P3.4引脚

sbit lcden=P2^2;

sbit lcdrs=P2^0;

sbit lcdrw=P2^1;

sbit light=P2^3;

sbit light1=P2^4;

sbit deng=P3^7;

sbit BEEP= P3^6;

uchar j,z,y,j1,j2; //h使用修改后的密码开锁标志位

uchar n=0,h=0; //中间标志位用于传递信息保证密码修改过后按复位按键密码修改标志位不改变

uchar aa;

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //反转编码

uchar code table[] ="Welcome to use!";

uchar code table1[]="Open the door! ";

uchar code table2[]="Enter Please: ";

uchar code table3[]="Close the door!";

uchar code table4[]="Wrong password!";

uchar code table5[]="Enter new code!";

uchar code table6[]="New code finish";

uchar code key_table[16]={1,2,3,10,

4,5,6,11,

7,8,9,12,

0,13,14,15};

uchar Password[]={1,2,3,4,5,6}; //设置的初始密码

uchar save[15];

uchar mima[15];

uchar conflag; //确认标志

uchar lockflag; //键盘锁定标志

uchar startflag; //开始标志

uchar open; //门打开标志位

uchar begain; //开始标志

void delay1(uint t);

void delay(uint z);

void wright_com(uchar com); //写命令函数

void wright_data(uchar date); //写数据函数

void init(); //初始化函数

void display_open(); //显示open the door

void display_close(); //显示close the door

void display_wrong();

void display_newcode(); //显示输入新密码

void display_codefinish(); // 显示新密码成功

void delete(); //删除输入的最后一个数

uchar keyscan(); //带返回值的键盘扫描程序

void enter_code(uchar t); //

void enter_code1(uchar t);

void enter_code2(uchar t);

void confirm(); //确认密码对不对,把输入的数据与密码逐一对比void confirm1();

void succeed_an(); //密码正确时的响应

void fail_an(); //密码失败时的响应

void alarm(); //发出警报声

void reset(); //复位函数

void reset_save();

void display_enter(); //显示输入

void motor_ffw();

void motor_rev();

/*****************************************************

函数功能:延时1ms

(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒

***************************************************/

void delay1ms()

{

uchar i,n;

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

for(n=0;n<33;n++)

;

}

/*****************************************************

函数功能:延时若干毫秒

入口参数:n

***************************************************/

void delaynms(uint n)

{

uchar i;

for(i=0;i

delay1ms();

}

void start() // 开始位

{

SDA = 1; //SDA初始化为高电平“1”

SCL = 1; //开始数据传送时,要求SCL为高电平“1”

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SDA = 0; //SDA的下降沿被认为是开始信号

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SCL = 0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递)

}

void stop() // 停止位

{

SDA = 0; //SDA初始化为低电平“0”_n

SCL = 1; //结束数据传送时,要求SCL为高电平“1”

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SDA = 1; //SDA的上升沿被认为是结束信号

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SDA=0;

SCL=0;

}

//**********从AT24Cxx读取数据********

unsigned char ReadData()

// 从AT24Cxx移入数据到MCU

{

unsigned char i;

unsigned char x; //储存从AT24Cxx中读出的数据

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

{

SCL = 1; //SCL置为高电平

x<<=1; //将x中的各二进位向左移一位

x|=(unsigned char)SDA; //将SDA上的数据通过按位“或“运算存入x中

SCL = 0; //在SCL的下降沿读出数据

}

return(x); //将读取的数据返回

}

//*******函数功能:向AT24Cxx的当前地址写入数据********

//在调用此数据写入函数前需首先调用开始函数start(),所以SCL=0

bit WriteCurrent(unsigned char y)

{

unsigned char i;

bit ack_bit; //储存应答位

for(i = 0; i < 8; i++) // 循环移入8个位

{

SDA = (bit)(y&0x80); //通过按位“与”运算将最高位数据送到S

//因为传送时高位在前,低位在后

_nop_(); //等待一个机器周期

SCL = 1; //在SCL的上升沿将数据写入AT24Cxx

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SCL = 0; //将SCL重新置为低电平,以在SCL线形成传送数据所需的8个脉冲

y <<= 1; //将y中的各二进位向左移一位

}

SDA = 1; // 发送设备(主机)应在时钟脉冲的高电平期间(SCL=1)释放SDA 线,

//以让SDA线转由接收设备(AT24Cxx)控制

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

SCL = 1; //根据上述规定,SCL应为高电平

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

_nop_(); //等待一个机器周期

ack_bit = SDA; //接受设备(AT24Cxx)向SDA送低电平,表示已经接收到一个字节

//若送高电平,表示没有接收到,传送异常

SCL = 0; //SCL为低电平时,SDA上数据才允许变化(即允许以后的数据传递)

return ack_bit; // 返回AT24Cxx应答位

}

//***************向AT24Cxx中的指定地址写入数据*****************)

void WriteSet(unsigned char add, unsigned char dat)

// 在指定地址addr处写入数据WriteCurrent

{

start(); //开始数据传递

WriteCurrent(OP_WRITE); //选择要操作的AT24Cxx芯片,并告知要对其写入数据

WriteCurrent(add); //写入指定地址

WriteCurrent(dat); //向当前地址(上面指定的地址)写入数据

stop(); //停止数据传递

delaynms(4); //1个字节的写入周期为1ms, 最好延时1ms以上

}

unsigned char ReadCurrent() //从AT24Cxx中的当前地址读取数据

{

unsigned char x;

start(); //开始数据传递

WriteCurrent(OP_READ); //选择要操作的AT24Cxx芯片,并告知要读其数据

x=ReadData(); //将读取的数据存入x

stop(); //停止数据传递

return x; //返回读取的数据

}

unsigned char ReadSet(unsigned char set_addr) //从AT24Cxx中的指定地址读取数据

{

start(); //开始数据传递

WriteCurrent(OP_WRITE); //选择要操作的AT24Cxx芯片,并告知要对其写入数据WriteCurrent(set_addr); //写入指定地址

return(ReadCurrent()); //从指定地址读出数据并返回

}

void gaimima() //****改密码程序****

{

uchar temp,i;

SDA=1;

SCL=1;

if(z==1)

{

while(1)

{

temp=keyscan();

enter_code(temp);

if(temp==13)

{

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

{

WriteSet(i,save[i]);

delaynms(10);

}

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

{

mima[i]=ReadSet(i);

delaynms(10);

}

display_codefinish();

reset_save();

break;

}

if(temp==14)

{

delete();

}

}

}

}

void main(void)

{

uchar temp;

y=0;

open=1; //open门开关标志位 1为关闭 0为打开

while(1)

{

init();

if(h==1)

{

deng=0;

}

while(1)

{

begain=0;

if(lockflag)

{

temp=keyscan(); //按键期间也要进行键盘扫描

if(temp!=No_key) //重新计时三秒

{

aa=0; //重新在定时器中计数

}

}

else

{

temp=keyscan(); //反复扫描输入,等待随时输入

if(temp!=No_key) //有按键按下才能进行下一步

{

if(temp==10&&open==1)

{

reset();

startflag=1; //开始标志位

}

if(startflag)

{

if(h==0) //更改密码前的密码确认

{

enter_code(temp); //每扫描一次键盘就要进行一次处理保存输入的数值

if(temp==13&&open==1) //按下确认键进行密码确认

{

confirm(); //进行确认判断

if(conflag)

{

succeed_an(); //密码正确作出相应的反应

open=0;

z=1;

reset_save();

}

else

{

fail_an(); //密码错误作出相应的反应

}

}

}

else //更改密码后的密码确认

{

enter_code(temp); //每扫描一次键盘就要进行一次处理保存输入的数值

if(temp==13&&open==1) //按下确认键进行密码确认

{

confirm1(); //进行确认判断

if(conflag)

{

succeed_an(); //密码正确作出相应的反应

open=0;

z=1;

}

else

{

fail_an(); //密码错误作出相应的反应

}

}

}

if(temp==14)

{

delete();

}

if(temp==12&&z==1)

{

reset();

display_newcode();

gaimima();

h=1; // 改密码成功标志位用于以后选择密码对比

}

if(temp==15&&z==1)

{

uchar r;

open=1;

display_close();

for(r=0;r<18;r++)

{

motor_rev(); //电机反转

}

}

}

}

}

if(temp==11&&begain==0&&open==1)

{

begain=1;

break;

}

}

}

}

void motor_rev() //电机反转函数

{

uchar i;

uint j;

z=0;

for (j=0; j<8; j++) //转1×n圈

{

for (i=0; i<8; i++) //一个周期转45度

{

P3 = REV[i]; //取数据

delay1(2); //调节转速

}

}

}

void motor_ffw() //电机转动函数

{

uchar i;

uint j;

for (j=0; j<8; j++) //转1*n圈

{

for (i=0; i<8; i++) //一个周期转45度

{

P3 = FFW[i]; //取数据

delay1(2); //调节转速

}

}

}

void display_enter() //显示enter

{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table2[num]);

}

}

void display_close() //显示close

{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table3[num]);

}

}

void display_open() //显示open

{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table1[num]);

}

}

void display_wrong() //显示wrong

{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table4[num]);

}

}

void display_newcode() //显示输入新密码

{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table5[num]);

}

}

void display_codefinish() //显示新密码完成{

uchar num;

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table6[num]);

}

}

void delete() //删除最后一个

{

wright_com(0x80+0x40+j-1); //确定删除对象

wright_data(' '); //显示空格即为删除

save[--j]=0; //删除后数据清零

wright_com(0x80+0x40+j); //为下次输入数据时写好位置

}

void reset() //复位函数

{

uchar num;

display_enter();

wright_com(0x80+0x40); //擦除屏幕上的显示

for(num=0;num<15;num++)

{

save[num]=0; //对输入的数值进行清零

wright_data(' ');

}

wright_com(0x80+0x40);

lockflag=0;

conflag=0;

j=0;

}

void reset_save()

{

uchar num;

wright_com(0x80+0x40); //擦除屏幕上的显示

for(num=0;num<15;num++)

{

save[num]=0; //对输入的数值进行清零

wright_data(' ');

}

wright_com(0x80+0x40);

}

void succeed_an() //输入密码正确进行响应的函数

{

uchar r;

light=0;

display_open();

for(r=0;r<18;r++)

{

motor_ffw(); //电机正转

}

delay(1000);

light=1;

}

void fail_an() //输入密码错误进行响应的函数

{

uchar j,i=0;

while(1)

{

light1=0;

display_wrong();

for(j=3000;j>0;j--) //蜂鸣器响大约500MS

{

BEEP = ~BEEP;

delay(1); //延时500US 发出大约1KHZ频率的响声}

BEEP=1; //蜂鸣器不响

delay(500);

light1=1;

break;

}

y++;

if(y==3)

{

while(1)

{

light1=0;

display_wrong();

for(j=3000;j>0;j--) //蜂鸣器响大约500MS

{

BEEP = ~BEEP;

delay(1); //延时500US 发出大约1KHZ频率的响声

}

BEEP=1; //蜂鸣器不响

delay(500);

light1=1;

i++;

if(i==4)

{

break;

}

}

lockflag=1;

}

}

void enter_code(uchar t) //输入密码并在屏幕上显示星号

{

if(t>=0&&t<10)

{

if(j==0)

{

wright_com(0x80+0x40);

wright_data('*');

}

else

{

wright_data('*');

}

save[j++]=t;

}

}

void confirm() //校对密码以确定是否正确函数

{

uchar k;

for(k=0;k<6;k++)

{

if(Password[k]!=save[k])

{

break;

}

}

if(k==6)

{

conflag=1;

}

}

void confirm1() //校对密码以确定是否正确函数

{

uchar k;

for(k=0;k<6;k++)

{

if(save[k]!=mima[k])

{

break;

}

}

if(k==6)

{

conflag=1;

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

if(lockflag)

{

y=0;

aa++;

light1=0;

if(aa>=200)

{

aa=0;

light1=1;

lockflag=0;

}

}

}

void init() //初始化

{

uchar num;

open=1;

TMOD=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

TR0=1;

lcdrw=0;

lcden=0;

wright_com(0x38);

wright_com(0x0c);

wright_com(0x01);

wright_com(0x80);

for(num=0;num<15;num++)

{

wright_data(table[num]);

delay(1);

}

}

void wright_com(uchar com) //1602写入指令{

lcdrs=0;

lcddata=com;

delay(1);

lcden=1;

delay(1);

lcden=0;

}

void wright_data(uchar date) //1602写入数据{

电子密码锁报告

基于单片机控制的电子密码锁 设计者:张雪贵 指导老师:李峥 淮北煤炭师范学院物理与电子信息学院 06电子信息工程 2009年6月

基于单片机的电子密码锁 一设计任务 设计一个利用AT89S52单片机控制的电子密码锁,该电子密码功能包括16个密码输入,密码输入过程中清除输入,密码正确和错误分别用蜂鸣器提示,输入错误密码超次锁定,密码修改,12864LCD 显示菜单实现多功能等等。 二总体方案设计与实现 电子密码锁系统核心用AT89S52单片机控制,密码输入按键为4*4矩阵键盘16个按键实现密码输入,外加独立按键实现清除,确定和液晶反白控制。密码存储电路利用AT24C02芯片,该芯片可以实现掉电存储,而且数据可保留时间长,与单片机连接简单。报警电路利用三极管驱动小型蜂鸣器实现,通过给蜂鸣器送不同频率的电平信号实现不同声音报警。LCD用12864字符型液晶实现,通过单行反白实现菜单,加强液晶显示内容及添加系统功能。 另外,电磁锁电路暂时利用发光二极管代替,用发光二极管的亮灭和蜂鸣器的响声来指示电磁锁的开关。 图1 系统原理框图 图2系统总体原理电路图 三硬件电路的功能单元设计 (一)单片机最小系统

其原理图如图1所示 图3 单片机最小系统模块 单片机采用AT89S52单片机, AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,与工业80C51产品指令各引脚完全兼容。单片机最小系统主要有两块组成,其一为晶振起振电路,其二为复位电路。在此,我们采用按键手动复位,相对来讲,这种复位方式更加方便人性化,不必要切断电源即可对系统进行复位。 (二)开锁电路 通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理如图2 所示。 图4 开锁电路原理 当用户输入的密码正确单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。在此为节省成本考虑,我们用二极管代替电磁锁,将一切在LCD上面显示,并且利用蜂鸣器和二极

单片机课程设计(温度控制器)

基于单片机的温度控制器设计 内容摘要:该温度报警系统以AT89C51单片机为核心控制芯片,实现温度检测报警功能的方案。该系统能实时采集周围的温度信息,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测和自动调温功能。 关键词:AT89C51ADC0808 温度检测报警自动调温 Abstract:The temperature alarm system AT89C51 control chip, realize temperature detection alarm function scheme. The system can collect real-time temperature information around that internal procedures set alarm equipped, according to different application environment can be set different alarm upper. The system realizes the automatic monitoring of temperature. The instrument can achieve the automatic thermostat function. Keywords:AT89C51 ADC0808Temperature detectingalarmautomatic thermostat 引言:本课题是基于单片机的温度控制器设计,经过对对相关书籍资料的查阅确定应用单片机为主控模块通过外围设备来实现对温度的控制。实现高低温报警、指示和低温自加热功能(加热功能未在仿真中体现)。 1.设计方案及原理 1.1设计任务 基于单片机设计温度检测报警,可以实时采集周围的温度信息进行显示,并且可以根据应用环境不同设定不同的报警上下限。 1.2设计要求 (1)实时温度检测。 (2)具有温度报警功能。 (3)可以设报警置温度上下限。 (4)低于下限时启动加热装置。 1.3总体设计方案及论证

电子密码锁设计报告概要

课程设 计说明 学生姓名: 学 号: 指导教师: 2013年05月17日 课程名称: 《单片机技术》 设计题目: 基于51单片机的电子密码锁 院(部): 电子信息与电气工程学院 专业班级: 12通信工程(专升本) 马亚林 丁莹亮

课程设计任务书 设计要求: 设计以单片机AT89C51为核心的电子密码锁,包括电子密码锁完整的设计过程以及外围的开锁电路和报警电路的设计。 电子密码锁要完成以下部分的设计:按键接口电路、电子密码锁的控制电路、输出八段显示电路。 电子密码锁控制电路能完成以下功能设计:数字按键的数字输入、存储和清除、功能按键的功能设计、密码的清除和复位、报警信号产生电路密码核对、解除电锁电路、输出八段显示电路完成以下电路设计:数据选择电路、八段显示器扫描电路。 学生应完成的工作: 1.运用Proteus软件设计电路原理图; 2.用Proteus软件进行仿真; 3.焊接电路板并调试实现其功能; 4.完成实习报告; 5.我的任务是设计电路原理图并仿真。 参考文献阅读: [1]杜尚丰.CAN总线测控技术及其应用.北京:电子工业出版社,2007.1 [2]杜树春.单片机C语言和汇编语言混合编程实例详解.北京:北京航空航天大学出版社,2006.6 工作计划: 2013.5.6熟悉课题并查阅相关资料,同时消化吸收资料内容; 2013.5.7―― 2013.5.8 根据设计题目确定硬件设计方案,并交与指导老师修改; 2013.5.9 ―― 2013.5.10 开始着手课题的软件设计,与指导老师进行沟通; 2013.5.13申请领用元器件; 2013.5.14―― 2013.5.17 进行实物制作,并撰写课程设计报告。 任务下达日期:2013年5月6 日 任务完成日期:2013年5月17 日

电子电路课程设计密码锁(满分实验报告)

密码锁设计报告 摘要: 本系统是由键盘和报警系统所组成的密码锁。系统完成键盘输入、开锁、超时报警、输入位数显示、错误密码报警、复位等数字密码锁的基本功能。 关键字:数字密码锁GAL16V8 28C64 解锁与报警 1

目录: 一、系统结构与技术指标 1、系统功能要求 (4) 2、性能和电气指标 (5) 3、设计条件 (5) 二、整体方案设计 1、密码设定 (6) 2、密码判断 (6) 3、密码录入和判断结果显示 (6) 4、系统工作原理框面 (7) 三、单元电路设计 1、键盘录入和编码电路图 (8) 2、地址计数和存储电路 (12) 3、密码锁存与比较电路 (12) 2

4、判决与结果显示电路 (14) 5、延时电路 (15) 6、复位 (17) 7、整机电路图 (19) 8、元件清单……………………………………………19四、程序清单 1、第一片GAL (21) 2、第二片GAL (23) 五、测试与调整 1、单元电路测试 (25) 2、整体指标测试 (26) 3、测试结果 (26) 六、设计总结 1、设计任务完成情况 (27) 2、问题及改进 (27) 3、心得体会 (28) 3

一、系统结构与技术指标 1.系统功能要求 密码锁:用数字键方式输入开锁密码,输入密码时开锁;如 果输入密码有误或者输入时间过长,则发出警报。 密码锁的系统结构框图如下图所示,其中数字键盘用于输入 密码,密码锁用于判断密码的正误,也可用于修改密码。开锁LED1亮表示输入密码正确并开锁,报警LED2亮表示密码有误或者输入时间超时。 开锁green 键盘密码锁 错误red 4

51单片机交通灯课程设计

第一章单片机概述 单片机是20世纪70年代中期发展起来的一种大规模集成电路器件。它在一块芯片内芯片内集成了计算机的各种功能部件,构成一种单片式的微型计算机。20世纪80年代以来,国际上单片机的发展迅速,其产品之多令人目不暇接,单片机应用不断深入,新技术层出不穷。 单片机的应用技术是一项新型的工程技术,其内涵随着单片机的发展而发展。由于MCS-51系列的单片机的模块化结构比较典型、应用灵活,为许多大公司所采纳,使8051系列的单片产品日新月异。在Intel公司20世纪80年代初推出MCS-51系列单片机以后,世界上许多著名的半导体厂商相继生产和这个系列兼容的单片机,使产品型号不断地增加、品种不断丰富、功能不断加强,在国内外单片机应用中占有重要地位。由于单片机具有功能强、体积小、价格低等一系列优点,在各个领域都有广泛的应用,有力地推动了各行各业的技术改造和产品更新换代。 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,

产品更新换代的节奏也越来越快。 第二章MSC-51芯片简介 8051是MCS-51系列单片机的典型产品。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: ·中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 ·数据存储器(RAM) 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM 只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

单片机电子密码锁课程设计

单片机技术及应用综合训练 (设计报告)

前言 随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出。在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。 本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。用C语言编写的主控芯片控制程序与EEPROM AT24C02读写程序相结合,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。 本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。 关键词:电子密码锁、报警、液晶显示

目录 一、选题要求 (1) 二、硬件电路设计 (1) 2.1 51单片机 (2) 2.2 键盘电路 (2) 2.3 液晶显示电路 (2) 2.4 警报电路 (3) 2.5 密码储存电路 (3) 2.6 晶振、复位及关锁 (3) 三、软件设计 (4) 四、软硬件调试结果 (9) 4.1 电路总原理图 (9) 4.2 调试结果 (10) 五、总结 (11)

一、选题要求 本文从经济实用的角度出发,设计采用单片机为主控芯片,结合外围电路,组成电子密码控制系统,密码锁共6位密码,每位的取值范围为0~9,用户可以自行设定和修改密码。用户想要打开锁,必先通过提供的键盘输入正确的密码才可以,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警,期间输入密码无效,以防窃贼多次试探密码。6位密码同时输入正确,锁才能打开。锁内有备用电池,只有内部上电复位时才能设置或修改密码,因此,仅在门外按键是不能修改或设置密码的,因此保密性强、灵活性高。其特点如下: 1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的 更替而使锁的密级下降。 3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。 4) 无活动零件,不会磨损,寿命长。 5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。 6) 电子密码锁操作简单易行,一学即会。 二、硬件电路设计 下面是整个设计的流程图:

电子密码锁详细报告

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

电子密码锁实验报告

电子密码锁实验报告 一,实验目的 1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。 2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。 3.学会自己独立分析问题、解决问题。 4学习定时器时间计时处理、按键扫描及LED数码管显示的设计方法。 5.根据设计任务及要求利用实验平台上单片机及其外围元器件,设计符合 功能的电子密码锁。 二,实验要求 设计要求: 1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。 2:可以自行设定或删除8位密码,能够掉电保存。 3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示; 若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。 三,实验基本原理 1.键盘接口必须具有去抖动、按键识别基本功能。 (1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。 (2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方

法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。 2.利用键盘扫描原理分别设4×4矩阵键盘组成0-9数字键及确认键和删除键,通过0—9数字键设定8位密码和删除键删除密码,利用存储器的永久存储特性将设定的密码存于存储器中,再次重启程序时,能从存储器中读取出来,从而实现掉电保存。 为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。 Led发光二级管低电平发亮,高电平熄灭的特性实现led提示功能。 利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,从而实现led亮1秒或3秒。 四,实验设计分析 针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为按键程序、数码管显示程序、发光二级管程序,存储器程序,密码设定程序、密码删除程序、定时器程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。 首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解C语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最

单片机课程设计报告

《单片机原理及接口技术》课程设计题目:简易计算器设计 级:电子1547 名:苏丹丹、李静、齐倩 号:05号、17号、11号

导教师:张老师 间:2013年12月 西安航空学院电气学院

目录 一、选题的背景和意义-------------------1 1.1选题的背景-------------------------------------1 1.2选题的意义-------------------------------------1 二、总体设计-------------------------------1 2.1设计任务---------------------------------------1 2.2方案选择---------------------------------------1 三、硬件设计-------------------------------2 3.1 元器件名称--------------------------------------------------------2 3.2 计算器按键介绍--------------------------------------------------2 3.3硬件系统框图、单元电路--------------------------3 四、软件设计-------------------------------3 4.1 软件调试步骤-----------------------------------------------------3 4.2软件设计流程图---------------------------------------------------4 五、结束语------------------------------------5 六、参考文献--------------------------------5 七、附录---------------------------------------6

电子密码锁单片机课程设计

电子密码锁单片机课程设计

单片机原理与应用技术课程设计报告 电子密码锁设计 专业班级:电气 124 姓名: 时间:2015年1月2日 指导教师:秦国庆 2015年1月2日

电子密码锁课程设计任务书 1.设计目的与要求 设计出一个电子密码锁。准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能: (1)状态显示功能:锁定状态时系统用3位数码管显示OFF, 用3位码管显示成功开锁次 数;成功开锁时用3位数码管 显示888,用3位数码管显示 成功开锁次数。 (2)密码设定功能:通过一个4×4的矩阵式键盘可以任意设 置用户密码(1-26位长度), 同时系统掉电后能自动记忆 和存储密码在系统中。(3)报警和加锁功能:密码的输入

时间超过12秒或者连续3次 输入失败,声音报警同时锁定 系统,不让再次输入密码。此 时只有使用管理员密码方能 对系统解锁。 2.设计内容 (1)画出电路原理图,正确使用逻辑关系; (2)确定元器件及元件参数; (3)进行电路模拟仿真; (4)SCH文件生成与打印输出; 3.编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。 4.答辩 在规定时间内,完成叙述并回答问题。 1

电子密码锁 电气124 赵政权 摘要:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。本设计利用51单片机编程控制原理,采用矩阵键盘、数码管显示、数据存储器和报警系统构成电子密码锁的设计成品。其中数码管使用两组三位一体共阳数码管,数据存储器使用AT24C04芯片通过IIC协议实现数据的传输,矩阵键盘用执行效率极高的代码扫描控制。使用Keil4.6编写程序代码,用Proteus进行仿真,无误后使用Altium制图,最终做成能使用的成品。 关键词: 51单片机 IIC协议矩阵键盘动态显示 Keil Proteus Altium 2

单片机电子密码锁报告

目录 第1章概述 (1) 第2章系统总体方案设计 (2) 第3章硬件电路设计 (4) 3.1 键盘电路设计 (4) 3.2LED显示电路 (6) 3.3 开锁电路 (8) 3.4报警电路 (9) 第4章软件设计 (9) 4.1软件设计思路 (10) 4.2 各子程序设计 (10) 第5章系统调试 (16) 第6章心得体会 (17) 第7章参考文献 (18) 第8章附录 (19) 8.1源程序清单 (19) 8.2硬件原理图 (26)

第1章概述 随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。 本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。 本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。

第2章系统总体方案设计 系统总体设计方案框图2.1: 图2.1系统总体设计方案框 本方案采用一种是用以89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。 初步设计思路如下: 1.输入密码用矩形键盘,包括数字键和功能键。 2.LED数码管显示输入密码,用74JS247驱动数码管发光显示数 码,用74LS138控制各位显示器分时进行显示。 3.用发光二极管代替开锁的电路,发光表示开锁。 4.输入密码错误次数超过3次,系统报警。 5.打开电源后,显示器显示“000000”,设原始密码为“123456”, 只要输入此密码便了开门。这样可预防停电后再来电时无密码可用。 6.按“C”键,清除显示器为“000000”。

51单片机课程设计秒表

微控制器技术课程 设计报告 设计题目:秒表 专业:供用电技术 班级:供电141 学号:140315143 姓名:王晨铭 指导教师:李昊 设计时间:2016.6.21

微控制器技术课程设计任务书 设计题目:秒表 设计时间:2016.6.20 设计任务: 在单片机开发板或软件仿真,编制程序,实现以下功能 1、利用定时器实现秒表功能,精确到0.1S; 2、数码管显示当前计时时间; 3、设定三个键,计时开始,停止计时和复位清零。 背景资料:1、单片机原理与应用 2、检测技术 3、计算机原理与接口技术 进度安排: 1、第1天,领取题目,熟悉设计内容,分解设计步骤和任务; 2、第3天,规划设计软硬件,编制程序流程、绘制硬件电路。 3、第5天,动手制作硬件电路,或编写软件,并调试。 4、第7天,中期检查。 5、第9天,完善设计内容,书写设计报告。 6、第13天,提交设计报告,整理设计实物,等待答辩。 7、第14天,设计答辩。

目录 一、设计任务和要求 (3) (1)设计任务 (3) (2)设计要求 (3) 二、设计方案与论证 (3) 三、单元电路设计与参数计算 (4) (1)时钟电路 (4) (2)按钮电路 (4) (3)显示电路 (5) (4)单片机 (5) 四、原理图及器件清单 (6) ( 1 )总原理图 (6) (2)PCB图 (7) (3)Proteus仿真图 (7) (4)元器件清单 (8) 五、安装与调试 (8) (1)安装 (8) (2)调试 (8) 六、性能测试和分析 (9) 七、结论和心得 (9) 八、参考文献 (9)

题目:秒表 二、方案设计与论证 本设计分为时钟电路、按钮电路、显示电路和单片机四大部分,这些模块中单片机占主控地位。其模块电路如图2-1所示。时钟电路常用的有内部时钟方式和外部时钟方式,但因为本设计中只需要一片单片机,所以采用内部时钟方式比较简单。按钮电路中的“复位”按钮是按键手动复位,它有电平和脉冲两种方式,比较电路的复杂程度,本设计选择了按钮电平复位电路,其他几个按钮则是通过单片机判断高低电平的不同来控制按钮。显示电路所用的数码管有共阴和共阳之分,不管使用何种数码管,P0口作为I/O使用时都是需要上拉电阻才能驱动数码管。另外,因为单片机的4个并行I/O口的输出电流一般是1mA,短路电流为4mA左右,而数码管的最少驱动电流也需要10mA,因而不管在使用共阴数码管时,单片机输出口也必须使用上拉电阻提高输出电流,才能驱动数码管。为了使电路简单化,本设计选用共阳数码管。但根据显示方式的不同选择,我们可以有几种方案: 方案一:使用静态显示方式。静态显示方式下的数码管的显示字符一经确定,相应锁存器锁存的断码输出將维持不变,直到送入另一个字符的断码为止。因而此设计中使用的显示位数使用了三个8位并行I/0口。如果另外想扩展单片机功能,则能使用的输出管脚很是有限。 方案二:使用动态显示方式。这个显示方式是将所有显示位的段码线的相应段并联在一起,由一个8位I/O口控制,而各位的共阴或共阴极分别由相应的I/O线控制,形成各位的分时选通。这种显示方式,简化了硬件电路,特别在多位数码管显示时尤为突出。 本小组尝试了各种方案,在此报告中以静态显示方式为例说明。(动态显示方式省略) 显示电路 单片机 AT89C51 时钟电路 按钮电路

单片机课程设计报告电子密码锁完整版

单片机课程设计报告电 子密码锁 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!”,并且蜂鸣器同时提示一下。如果密码连续三次错误则蜂鸣器连续响5下,并且持续5秒不能进行任何操作 5.在开锁状态下按下“12”键,进入修改密码状态,LCD同时提示“Enter new code!”。为删除按键,出入之后可以进行删除。按键为关闭按键,只有在打开状态下才可以关闭,按下之后LCD显示“Close the door!”。 2.功能概述 此设计分为四个功能模块。 第一模块:按键输入模块,用于密码的输入以及其他的密码操作按键。 第二模块:LCD模块,是与使用者交流的界面,用于显示各种状态下的内容。 第三模块:步进电机模块,用于控制密码锁的打开与关闭。 第四模块:24C08模块,用于储存输入的密码并读出来。 3.总体设计 本次设计作品的主要构成部分包括80C51单片机、LCD1602、24C08、矩阵按键、LED 等、蜂鸣器。如图1总体仿真图,图2实物图。 图1 总体电路图 图2 密码锁实物图 4.硬件设计 矩阵按键设计 如图3所示矩阵按键由P1口控制,了加强密码的保密性,采用一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),从而提高了密码的保密性,同时也能减少与单片机接口时所占用的I/O口线的数目,节省了单片机的宝贵资源,在按键比较多的时候,通常采用这种方法。 每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N根行线与M根列线,即可组成具有N × M 个按键的矩阵键盘。 在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确

电子密码锁设计【开题报告】

开题报告 电气工程及其自动化 电子密码锁设计 一、综述本课题国内外研究动态,说明选题的依据和意义 目前,最常用的锁是20世纪50年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜。但在使用中暴露了很多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。二是钥匙一旦丢失,无论谁捡到都可以打开,三是机械锁的材料大多为黄铜,质地较软,容易损坏。四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。由于人们对锁的安全性,方便性等性能有更高的要求,许多智能锁(如指纹辨别、IC卡识别)也相继问世,但这类产品的特点是针对特定指纹或有效卡,但能适用于保密要求高仅供别人使用的箱、柜、房间,其成本一般较高,在一定程度上限制了这类产品的普及和推广。 在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决,而钥匙丢失安全性即大打折扣。而且,由于传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,因此也存在着很多安全隐患。随着科学技术的不断发展,人们对日常生活中的安全性的要求不断提高,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能电子密码锁,它除了具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识别器若在公共场所使用存在容易机械损坏,IC

单片机密码锁实验报告

二○一六~二○一七学年第一学期 电子信息工程系 电子综合设计II 报告书 班级:电信(产业)1401班 设计时间:2016/12/29 学生姓名:曹子龙 学号:201404135024 指导教师:赵敏

二○一六年十二月

一、设计要求. 题目内容: 设计一个基于51单片机的电子密码锁: 1.可以使用4*4的矩阵键盘与红外遥控器输入密码。 2.可以通过按特殊组合键重设开锁密码。 3.显示通过1602液晶屏显示电子密码锁界面,输入密码时显示输入个数显 示为‘*’,如果密码正确,进入欢迎界面。 4.密码连续输入3次错误报警,LCD显示报警,倒计时十秒后重新进入密码 输入界面。 5.可以通过特殊的按键组合跳过输入界面直接进入欢迎界面。 实现方法: 1.通过红外接收头,连接单片机的P3.2外部中断INT0口,可以实现单片 机接收遥控器的信号输入。 2.通过矩阵键盘扫描函数,可以实现对键盘输入的响应。 3.通过引脚的高低电平变化频率,控制蜂鸣器的输入占空比和频率(低电 平时间固定,通过输入给函数值的不同改变高电平时间,固定响300个周期),对不同按键实现不同声音响应。 4.1602显示屏有16*2个单元格,每个单元格由5*8个像素点组成,可以很 好的显示数字,符号,英文字符。 功能需求分析: 液晶屏显示: 根据题意,需要设计并显示输入密码界面、修改密码界面、欢迎界面、错误警告界面 密码输入: 根据题意,每次输入一个数字,则显示一个‘*’符号代替,只能看出输入的位数,若输入密码位数达到六位,则与正确密码比较,若正确,进入系统。根据日常的手机使用习惯,默认长度为6位,且第六位输入之后立即判断,正确则进入,错误则清空重输。

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

密码锁-单片机课程设计

1 绪论 随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性和方便性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点随着人们对安全的重视和科技的发展,对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。具有报警功能的电子密码锁保密性高,使用灵活性好,安全系数高,密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有推广价值。电子密码锁采取电子电路控制,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务。 本次设计使用AT89S52单片机构成最小系统,接以键盘,报警系统,液晶显示构成人性化的方便易用的电子密码锁。

2 设计任务、功能要求说明及总体方案介绍 2.1 设计目的与任务 本设计采用AT89S52单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD 1602A等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,组成的电子密码锁系统。 2.2 设计内容及要求 (1)课程设计中,锁体用LED代替(如“绿灯亮”表示开锁,“红灯亮”表示闭锁)。 (2)其密码为方8位十进制代码(代码自设定)。 (3)开锁指令为串行输入码,当开锁密码与存储密码一致时,锁被打开。当开锁密码与存储密码不一致时,电路则报警并实现自锁。(报警动作为响1分钟,停10秒) (4)选择电路方案,完成对确定方案电路的设计。计算电路元件参数与元件选择、并画出总体电路原理图,阐述基本原理。安装调试设计电路,查阅至少5篇参考文献。按《湖南工学院课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 2.3 设计总体方案及工作原理说明 采用以单片机AT89S52为核心的控制方案,总体框图见图1。 单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用。一般来说在选择单片机时下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。基于以上因素本设计选用单片机AT89S52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O 端口,以及控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接加

相关文档
最新文档