单片机课设报告 模板.docx

上传人:b****7 文档编号:10906671 上传时间:2023-02-23 格式:DOCX 页数:25 大小:230.99KB
下载 相关 举报
单片机课设报告 模板.docx_第1页
第1页 / 共25页
单片机课设报告 模板.docx_第2页
第2页 / 共25页
单片机课设报告 模板.docx_第3页
第3页 / 共25页
单片机课设报告 模板.docx_第4页
第4页 / 共25页
单片机课设报告 模板.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机课设报告 模板.docx

《单片机课设报告 模板.docx》由会员分享,可在线阅读,更多相关《单片机课设报告 模板.docx(25页珍藏版)》请在冰豆网上搜索。

单片机课设报告 模板.docx

单片机课设报告模板

 

辽宁工业大学

单片机与接口技术课程设计(论文)

 

题目:

电子密码锁设计

 

学院:

电子与信息工程学院

专业班级:

电子121班

学号:

120404025

学生姓名:

指导教师:

曹洪奎

教师职称:

讲师

起止时间:

2015.7.4——2015.7.15

课程设计(论文)任务及评语

院(系):

电子与信息工程学院教研室:

电子信息工程

学号

120404025

学生姓名

XXX

专业班级

电子121

课程设计(论文)题目

电子密码锁设计

课程设计(论文)任务

任务要求:

设计一个电子密码锁控制系统,基于单片机或数字逻辑电路,设计密码存储电路、密码校验电路和控制输出与显示电路,实现用户按键输入密码开锁功能。

技术要求:

1、采用数字按键输入6位密码,具有密码存储功能;

2、用户密码输入正确之后,开锁;

3、连续三次输入错误的密码,就锁定按键5秒钟,同时发出报警声,直到没有按键按下5秒钟后,才解除按键锁定。

 

指导教师评语及成绩

 

平时成绩:

答辩成绩:

论文成绩:

总成绩:

指导教师签字:

年月日

注:

平时成绩占20%,答辩成绩占30%,论文成绩占50%。

摘要

自古以来锁都是人们财产安全乃至生命安全的一种重要保障。

伴随着人类历史的发展和人们对自身财产安全和人生安全的重视,各种各样的多功能的锁具也相继出现,人们使用的锁具也由传统的机械式锁逐渐发展为安全性能更好,功能更多的电子密码锁。

本系统由单片机系统、矩阵键盘、LCD显示和报警系统组成。

系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能,采用数字按键输入6位密码,具有密码存储功能;一次密码输入最长时间为30秒,超过30秒自动重新开始输入;具有声、光提示功能,连续3次输入密码错误将产生报警,直到没有按键按下5秒钟后,才解除按键锁定。

本题目实现的电子密码锁具有按键密码开锁、掉电存储和声光提示等功能。

本系统成本低廉,功能实用。

关键词:

电子密码锁,AT89C51,掉电存储,矩阵键盘

目录

第1章绪论1

1.1系统的开发背景1

1.2本文研究对象1

第2章方案设计与论证1

2.1核心电路设计与论证1

2.2显示模块论证1

2.3开锁电路模块1

2.4系统设计要求2

2.5总体设计2

第3章单元电路设计3

3.1键盘输入模块3

3.2显示模块3

3.3声、光提示模块4

3.4断电存储单元4

3.5单片机最小系统5

第4章系统软件设计6

4.1主程序的设计流程6

4.224C04程序设计7

4.3按键程序设计11

第5章系统仿真与调试14

第6章总结16

参考文献17

附录I:

整体电路原理图18

附录II:

元器件清单列表19

第1章绪论

1.1系统的开发背景

当前虽然许多智能锁(如指纹辨别、IC卡识别)已相继问世,但这类产品是针对特定指纹或有效卡,只能适用于保密要求高且仅供个别人使用的箱、柜、房间等。

另外,卡片式的IC卡易丢失和损坏,加上其成本较高,在一定程度上限制了这类产品的普及和推广。

电子密码锁具有安全性能高、成本低、功耗低、操作简单等优点使其作为防盗卫士的角色越来越重要。

现有国内市场上的电子密码锁有的是通过购买一些产品模块再开发,不具备自主知识产权;有的是自主研发的,但其功耗与成本都比较高,不具备广泛的应用价值。

为了克服这些缺点,从经济实用角度出发,采用单片机AT89C51与低功耗CMOS型E2PROMAT24C04作为主控器件与数据存储器单元,设计一款可更改密码,具有报警、实时监控和远程管理功能的电子密码锁。

该电子密码锁体积小,易于开发、成本较低,安全性高,能将其存储的现场历史数据及时上报给上位机系统,现网络实时监控,方便管理人员及时分析和处理数据。

1.2本文研究对象

电子密码锁的研究开始于20世纪30年代,在一些特殊场所应用。

这种锁是通过键盘输入一组密码完成开锁过程。

研究这种锁的初衷,就是为提高锁的安全性。

由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。

电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。

用户通过连接单片机的矩阵键盘输入密码,单片机将用户输入的密码与预先保存的密码进行对比,从而判断密码是否正确。

单片机相关引脚产生高低电平传到开锁电路或者报警电路控制开锁或者报警。

第2章方案设计与论证

2.1核心电路设计与论证

方案一:

卡片式电子密码锁。

卡片式电子密码锁,利用光电耦合的方式,将密码信息从打孔的形式做在卡片上,只要将卡片插入锁内,就能将锁打开。

如果卡片上密码信息不对,密码锁发出警报声。

这种方法是需要卡片作为钥匙,容易被盗和仿制,安全性不高。

方案二:

磁卡式电子密码锁,具有功能强、故障率低、可靠性高和工作寿命长等优点,但这种方法的缺点是磁卡容易消磁,对用户造成不必要的麻烦。

方案三:

用AT89C51设计的多功能密码锁。

以单片机作为微控制器,可以实现基于以上优点。

本系统选用方案三作为设计方案。

按键有效指示、输入错误、控制开锁、错误报警、密码修改等功能,工作稳定可靠,保密性高,实用性强。

2.2显示模块论证

方案一:

用四位数码管显示,需要数码管驱动电路,需要占用8条数据线和4条地址线,共12个引脚。

显示内容较少,而且需要选择动态扫描方式。

方案二:

选用LCD1602显示密码。

显示内容丰富,可以显示字符,程序配套,易于编程,8条数据线和rw读写、en片选、rs数据/命令选择线,共需11个引脚,无驱动电路。

综上所述,选择方案二显示。

2.3开锁电路模块

输入密码正确时,单片机输出信号作为开关信号,控制电磁铁动作,来完成开锁功能。

输入密码错误时,则不响应。

综上,本文采用AT89C51单片机位主控元件,LCD1602液晶屏显示方式,以矩阵式键盘作为人机交互的界面,加上开锁和报警电路及相应的软件,构成一个安全可靠的电子密码锁。

2.4系统设计要求

设计一个电子密码锁控制系统,基于单片机或数字逻辑电路,设计密码存储电路、密码校验电路和控制输出与显示电路,实现用户按键输入密码开锁功能。

1.采用数字按键输入6位密码,具有密码存储功能;

2.用户密码输入正确之后,开锁;

3.具有声、光提示功能,连续3次输入密码错误将产生报警,直到没有按键按下5秒钟后,才解除按键锁定。

2.5总体设计

本设计采用以AT89C51单片机控制方案。

利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能根据实际需要添加调电存储、声光提示功能。

系统结构框图如图2.1所示。

驱动开锁

AT89C51

LCD1602显示屏

 

报警系统

AT2402

矩阵键盘

图2.1系统结构框图框图

 

第3章单元电路设计

3.1键盘输入模块

本设计中共设置了16个按键,包括数字键0~9,以及功能键确认、清除等。

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。

本设计中采用了4*4的矩阵键盘,将列线送入全扫描字,读入行线的状态来判断,即所有的列线置成低电平,然后将行线电平的状态读入累加器A中,如有按键按下,总会有按键按下,,总会有一根行线电平被拉至低电平,从而使行输入状态不全为“1”。

第二步是识别哪一个按键按下,如果列输入状态不全为“1”则按下的键必在此列,而且是该列与“0”电平的交点上的那个键。

如图3.1所示。

 

图3.1键盘输入电路

3.2显示模块

LCD1602显示屏具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,因此,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。

可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。

在本设计中,当运行程序时,显示屏显示的初始状态为“YourPassword”,密码输入正确时,液晶屏第二行显示“UnlockOK”,密码输入错误时,显示“ERROR”,开锁后更改密码时,显示“NewPassword”。

电路原理图如图3.2所示。

 

 

图3.2显示电路

3.3声、光提示模块

连续3次输入密码错误将产生报警,通过蜂鸣器来实现报警功能。

每当有按键按下时,蜂鸣器都会鸣叫一声。

当密码输入正确,顺利开锁时,发光二极管就会被点亮,上锁时,二极管熄灭。

电路图如图3.3所示。

 

图3.3声、光提示电路

3.4断电存储单元

断电存储单元的作用是在电源断开的时候,存储当前设定的信息。

AT24C04采用两线穿行的总线和单片机通讯,电压最低可以到2.5V,芯片内的资料可以在短点的情况下保存,而且采用7脚的DIP封装,使用方便。

电路如图3.4所示。

 

图3.4断电存储电路

3.5单片机最小系统

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。

单片机XIAL1和XIAL2别接22PF的电容,中间再并个12MHZ的晶振,形成单片机的晶振电路。

由AT89C51,晶振电路和复位电路共同组成了单片机最小系统,电路图如图3.5所示。

 

图3.5单片机最小系统

 

第4章系统软件设计

4.1主程序的设计

本设计但第一次进入此系统的时候,开始会进行初始化,第一次进入的时候的密码是123456,当有按键按下,并且确定了密码之后,会根据输入的密码跟存储的密码进行比对,如果两个密码一致就会进入系统,不一致就会显示错误。

具体流程如图4.1所示。

 

N

 

 

图4.1主程序流程图

 

4.224C04程序设计

系统通过检测各数据线的状态就能知道是否有按键闭合以及哪个按键闭合。

键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,并且确定了之后会对应的走到程序中,如图5.2所示。

图4.224c04程序设计图

主要代码是:

#defineI2CDelay(){_nop_();_nop_();_nop_();_nop_();}

sbitI2C_SCL=P3^7;

sbitI2C_SDA=P3^6;

/*产生总线起始信号*/

voidI2CStart()

{

I2C_SDA=1;//首先确保SDA、SCL都是高电平

I2C_SCL=1;

I2CDelay();

I2C_SDA=0;//先拉低SDA

I2CDelay();

I2C_SCL=0;//再拉低SCL

}

/*产生总线停止信号*/

voidI2CStop()

{

I2C_SCL=0;//首先确保SDA、SCL都是低电平

I2C_SDA=0;

I2CDelay();

I2C_SCL=1;//先拉高SCL

I2CDelay();

I2C_SDA=1;//再拉高SDA

I2CDelay();

}

/*I2C总线写操作,dat-待写入字节,返回值-从机应答位的值*/

bitI2CWrite(unsignedchardat)

{

bitack;//用于暂存应答位的值

unsignedcharmask;//用于探测字节内某一位值的掩码变量

for(mask=0x80;mask!

=0;mask>>=1)//从高位到低位依次进行

{

if((mask&dat)==0)//该位的值输出到SDA上

I2C_SDA=0;

else

I2C_SDA=1;

I2CDelay();

I2C_SCL=1;//拉高SCL

I2CDelay();

I2C_SCL=0;//再拉低SCL,完成一个位周期

}

I2C_SDA=1;//8位数据发送完后,主机释放SDA,以检测从机应答

I2CDelay();

I2C_SCL=1;//拉高SCL

ack=I2C_SDA;//读取此时的SDA值,即为从机的应答值

I2CDelay();

I2C_SCL=0;//再拉低SCL完成应答位,并保持住总线

return(~ack);//应答值取反以符合通常的逻辑:

//0=不存在或忙或写入失败,1=存在且空闲或写入成功

}

/*I2C总线读操作,并发送非应答信号,返回值-读到的字节*/

unsignedcharI2CReadNAK()

{

unsignedcharmask;

unsignedchardat;

I2C_SDA=1;//首先确保主机释放SDA

for(mask=0x80;mask!

=0;mask>>=1)//从高位到低位依次进行

{

I2CDelay();

I2C_SCL=1;//拉高SCL

if(I2C_SDA==0)//读取SDA的值

dat&=~mask;//为0时,dat中对应位清零

else

dat|=mask;//为1时,dat中对应位置1

I2CDelay();

I2C_SCL=0;//再拉低SCL,以使从机发送出下一位

}

I2C_SDA=1;//8位数据发送完后,拉高SDA,发送非应答信号

I2CDelay();

I2C_SCL=1;//拉高SCL

I2CDelay();

I2C_SCL=0;//再拉低SCL完成非应答位,并保持住总线

returndat;

}

/*I2C总线读操作,并发送应答信号,返回值-读到的字节*/

unsignedcharI2CReadACK()

{

unsignedcharmask;

unsignedchardat;

I2C_SDA=1;//首先确保主机释放SDA

for(mask=0x80;mask!

=0;mask>>=1)//从高位到低位依次进行

{

I2CDelay();

I2C_SCL=1;//拉高SCL

if(I2C_SDA==0)//读取SDA的值

dat&=~mask;//为0时,dat中对应位清零

else

dat|=mask;//为1时,dat中对应位置1

I2CDelay();

I2C_SCL=0;//再拉低SCL,以使从机发送出下一位

}

I2C_SDA=0;//8位数据发送完后,拉低SDA,发送应答信号

I2CDelay();

I2C_SCL=1;//拉高SCL

I2CDelay();

I2C_SCL=0;//再拉低SCL完成应答位,并保持住总线

returndat;

}

 

4.3按键程序设计

当有按键按下去的时候,系统会记录下来所按的顺序及位置,并且当密码跟存储的密码一致的时候会通过验证,不一致的情况会报错误。

具体流程如4.3所示。

N

Y

N

Y

 

图4.3按键程序流程图

C语言代码:

sbitKEY_IN_1=P1^4;

sbitKEY_IN_2=P1^5;

sbitKEY_IN_3=P1^6;

sbitKEY_IN_4=P1^7;

sbitKEY_OUT_1=P1^3;

sbitKEY_OUT_2=P1^2;

sbitKEY_OUT_3=P1^1;

sbitKEY_OUT_4=P1^0;

voidKeyDriver()

{

unsignedchari,j;

staticunsignedcharbackup[4][4]={

{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}

};

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

{

for(j=0;j<4;j++)

{

if(backup[i][j]!

=KeySta[i][j])

{

if(backup[i][j]==0)

{

KeyAction(KeyCodeMap[i][j]);

}

backup[i][j]=KeySta[i][j];

}

}

}

}

/*按键扫描函数,需在定时中断中调用,推荐调用间隔1ms*/

voidKeyScan()

{

unsignedchari;

staticunsignedcharkeyout=0;//矩阵按键扫描输出索引

staticunsignedcharkeybuf[4][4]={//矩阵按键扫描缓冲区

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF},{0xFF,0xFF,0xFF,0xFF}

};

//将一行的4个按键值移入缓冲区

keybuf[keyout][0]=(keybuf[keyout][0]<<1)|KEY_IN_1;

keybuf[keyout][1]=(keybuf[keyout][1]<<1)|KEY_IN_2;

keybuf[keyout][2]=(keybuf[keyout][2]<<1)|KEY_IN_3;

keybuf[keyout][3]=(keybuf[keyout][3]<<1)|KEY_IN_4;

//消抖后更新按键状态

for(i=0;i<4;i++)//每行4个按键,所以循环4次

{

if((keybuf[keyout][i]&0x0F)==0x00)

{//连续4次扫描值为0,即4*4ms内都是按下状态时,可认为按键已稳定的按下

KeySta[keyout][i]=0;

}

elseif((keybuf[keyout][i]&0x0F)==0x0F)

{//连续4次扫描值为1,即4*4ms内都是弹起状态时,可认为按键已稳定的弹起

KeySta[keyout][i]=1;

}

}

//执行下一次的扫描输出

keyout++;//输出索引递增

keyout=keyout&0x03;//索引值加到4即归零

switch(keyout)//根据索引,释放当前输出引脚,拉低下次的输出引脚

{

case0:

KEY_OUT_4=1;KEY_OUT_1=0;break;

case1:

KEY_OUT_1=1;KEY_OUT_2=0;break;

case2:

KEY_OUT_2=1;KEY_OUT_3=0;break;

case3:

KEY_OUT_3=1;KEY_OUT_4=0;break;

default:

break;}}

第5章系统仿真与调试

使用Proteus绘制原理图,然后将Keil生成的hex程序文件载入到单片机中,点击运行:

1.初始界面:

LCD显示“YourPassword…”,提示输入密码,如图5.1。

 

图5.1初始状态

2.密码输入:

输入密码,按确定键,如果正确,显示“UnlockOK”并灯亮解锁。

 

图5.2开锁

 

图5.3灯亮

输入密码,按确定键,如果错误,则显示“Error”,不解锁。

 

图5.4密码错误

 

图5.5灯灭

3.密码修改及保存:

在密码输入正确,锁打开的情况下,按“修改密码”键,进入密码修改界面:

 

图5.6密码修改

输入新密码后,按“保存密码”键,保存新密码:

 

图5.7保存新密码

 

第6章总结

本系统由单片机系统、矩阵键盘、LCD显示和报警系统组成。

系统能完成开锁、错误报警,超次锁定、修改用户密码,恢复初始密码基本的密码锁的功能。

除上述基本的密码锁功能外,还有声音提示等功能,依据实际的情况还可以添加遥控功能。

本系统利用单片机控制,LCD显示,配合蜂鸣器提示,系统成本低廉,功能强大实用。

本文设计的基于AT89C51的电子密码锁具有简单的软硬件设计电路、低廉的开发成本、简便的操作方法,并通过Proteus仿真实现了预期的功能,还能添加调电存储、声光提示甚至添加遥控控制功能,且可以满足现在的安全需求。

但是设计电子密码锁需要结合实际综合考虑很多因素,因此该电子密码锁设计需要在实际中进一步完善和改进。

另外,在系统应用程序方面,该设计只实现了修改密码、开关锁、自动报警和远程监控等功能,要想在现实生活中推广,还必须针对实际应用场合的需要,进一步完善系统功能的程序具有一定的推广价值。

 

本人签字:

参考文献

[1]石文轩,宋薇编著.基于单片机MCS-51的智能密码锁设计[J].武汉工程职业技术学院学报,2014,47(6):

31-35

[2]童诗白.模拟电子技术基础[M].北京:

高等教育出版社,2012

[3]周立功.单片机实验与实践教程[M].北京:

北京航空航天大学出版社,2014

[4]周润景,袁伟亭.Proteus在MCS-51系统中的应用百例[M].北京:

电子工业出版社,2012

[5]李朝青.单片机原理及接口技术[M].北京:

北京航空航天大学出版社,2012

[6]杨将新,李华军.单片机程序设计及应用[M].北京:

电子工业出版社,2010

[7]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:

电子工业出版社,2012

[8]周立功.LPC900系列Flash单片机应用技术[M].北京:

北京航空航天大学出版社,2012

[9]张天凡.51单片机C语言开发详解[M].北京:

电子工业出版社,2012

[10]伍时和.数字电子技术基础[M].北京:

清华大学出版社.2012

附录I:

整体电路原理图

 

附录II:

元器件清单

序号

标号

元器件名称

元器件参数

1

U2

单片机

AT89C51

2

R1

电阻

10k

3

R2

电阻

220

4

RP1

阻排

4.7K

5

VT1

三极管

8050

6

LS1

有源蜂鸣器

TMB12A05

7

C1、C2

电容

22pF

8

LCD1

液晶

LM016L

9

U1

EPROM

24C04A

10

C3

电容

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1