基于-单片机电子密码锁设计_第1页
基于-单片机电子密码锁设计_第2页
基于-单片机电子密码锁设计_第3页
基于-单片机电子密码锁设计_第4页
基于-单片机电子密码锁设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-PAGE . z嵌入式系统工程实践课程报告题 目基于单片机的电子密码锁设计团队成员专 业 网络工程 指导教师2021年10月9日目录 TOC o 1-3 h z u HYPERLINK l _Toc8614 摘要: PAGEREF _Toc8614 3 HYPERLINK l _Toc26982 1 绪论 PAGEREF _Toc26982 4 HYPERLINK l _Toc17021 1.1选题背景 PAGEREF _Toc17021 4 HYPERLINK l _Toc9629 1.2研究意义 PAGEREF _Toc9629 4 HYPERLINK l _Toc29377 1.3容与

2、构造 PAGEREF _Toc29377 4 HYPERLINK l _Toc8895 2 系统整体设计方案 PAGEREF _Toc8895 4 HYPERLINK l _Toc7094 2.1相关知识介绍 PAGEREF _Toc7094 4 HYPERLINK l _Toc26733 2.1.1 AT89C51引脚功能描述 PAGEREF _Toc26733 4 HYPERLINK l _Toc5943 2.1.2 LCD1602性能描述 PAGEREF _Toc5943 5 HYPERLINK l _Toc4859 2.1.3 24C04性能描述 PAGEREF _Toc4859 6

3、HYPERLINK l _Toc22153 2.2系统总体设计 PAGEREF _Toc22153 6 HYPERLINK l _Toc10302 3硬件电路 PAGEREF _Toc10302 6 HYPERLINK l _Toc23350 3.1单元电路设计 PAGEREF _Toc23350 7 HYPERLINK l _Toc4727 3.1.1单片机最小系统 PAGEREF _Toc4727 7 HYPERLINK l _Toc25318 3.1.2 1602LCD数码管显示电路 PAGEREF _Toc25318 7 HYPERLINK l _Toc6898 3.1.3矩阵键盘电路

4、 PAGEREF _Toc6898 8 HYPERLINK l _Toc4850 3.2系统总硬件电路图 PAGEREF _Toc4850 9 HYPERLINK l _Toc13815 4 软件模块设计 PAGEREF _Toc13815 9 HYPERLINK l _Toc10638 4.1系统开发工具使用 PAGEREF _Toc10638 9 HYPERLINK l _Toc32713 4.2系统开发流程图 PAGEREF _Toc32713 12 HYPERLINK l _Toc21829 4.3系统软件设计模块 PAGEREF _Toc21829 12 HYPERLINK l _T

5、oc19131 4.3.1键盘扫描软件设计 PAGEREF _Toc19131 12 HYPERLINK l _Toc19788 4.3.2 24C04读写操作的软件设计 PAGEREF _Toc19788 13 HYPERLINK l _Toc3758 4.3.2 24C04读写操作的软件设计 PAGEREF _Toc3758 13 HYPERLINK l _Toc22904 4.3.4修改密码软件设计 PAGEREF _Toc22904 14 HYPERLINK l _Toc19893 5 结果分析 PAGEREF _Toc19893 14 HYPERLINK l _Toc11998 5.

6、1电子密码锁开锁和上锁 PAGEREF _Toc11998 15 HYPERLINK l _Toc24248 5.2修改电子密码锁密码 PAGEREF _Toc24248 15 HYPERLINK l _Toc28252 结论 PAGEREF _Toc28252 16 HYPERLINK l _Toc22088 参考文献 PAGEREF _Toc22088 17 HYPERLINK l _Toc15528 附录: PAGEREF _Toc15528 18基于单片机的电子密码锁设计摘要:随着信息技术的不断开展,信息化时代也逐步进入普通家庭,人们对个人的信息平安以及隐私等私密信息的平安要求不断提高

7、,传统的机械锁已经不能满足要求。针对此现状设计一款平安可靠廉价的电子密码锁。该设计以AT89C51为主控芯片,带有一个密码输入键盘、外围时钟复位电路、存储单元24C04、显示单元1602LCD,通过LED灯的亮与灭表示电子锁的锁闭与翻开。利用单片机灵活的编程设计和丰富的IO端口,能实现密码锁的根本功能。为了提高可读性采用了1602作为显示单元,使用户对密码锁的运行情况一目了然。该系统经软硬件测试,到达要求,系统运行良好。 关键词:单片机;AT89C51;1602LCD;24C04;电子密码锁1 绪论1.1选题背景在人们的生活中,财产与人身平安是被一直关注的问题,于是锁也就与人们的生活密不可分了

8、,无论在何地,我们都能看到锁的身影,但随着社会的开展,传统的机械锁越来越不能满足人们的生活需求了,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜。锁具开展到现在已有假设干年的历史了,人们对它的构造、机理也研究得很透彻,因此,不用钥匙就能翻开的方法和工具也层出不穷。为了应对这种情况,电子密码锁也就被创造出来了,相比传统的机械锁,电子密码锁具有更高的平安性。1.2研究意义电子锁可以在日常生活和现代办公中、住宅与办公室的平安防、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用,大大提高了主人物资的平安性。此次工程实践选择基于单片机的电子密码锁设计题目,采用存储单元24C04和显示单元1

9、602LCD来进展设计。单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技术。论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。系统采用美国Atmel公司的AT89C51单片机作为系统核心,用串行的24C04作为存储器,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵薄膜键盘作为输入设备,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用汇编语言编写。设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值.而且使用AT89C51单片机价格相对低廉,本钱较低,便于推广。1.3容与构造本系统设计实现一

10、个基于单片机控制的电子密码锁。该系统能够实现上锁、开锁、修改开锁密码和报警功能,用串行的24C04作为存储器,液晶显示器LCD1602作为输出设备显示系统提示信息。该文档主要包括五个局部,第一局部绪论,主要包括选题背景、研究意义和容与构造;第二局部系统整体设计方案,主要包括相关知识介绍和系统总体构造设计;第三局部硬件电路,主要包括单元电路设计和系统总硬件电路图,其中单元电路设计包括单片机最小系统模块,24C04存储电路模块,1602LCD数码管显示电路和矩阵键盘电路设计模块;第四局部软件模块设计,主要包括系统开发工具使用和系统主要开发流程和各软件设计模块;第五局部结果分析,主要包括测试过程和测

11、试结果分析。2 系统整体设计方案2.1相关知识介绍2.1.1AT89C51引脚功能描述AT89C51是这几年我国非常流行的单片机,由美国ATMEL公司生产,是低电压,高性能CMOS8位单片机,片含4kbytes的可反复擦写的只读程序存储器PEROM和128bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器CPU和Flash存储单元。其中的40个引脚大致可以分为4类:电源、时钟、控制和I/O引脚。(1)电源:VCC为芯片电源端,一般为+5V,GND为接地端;(2)时钟:*TAL1为晶体振荡电路的反相输入

12、端,*TAL2为晶体振荡电路的输出端;(3)控制线:MCS-51单片机的控制线有4根,其中3根是复用线,具有两种功能。ALE/PROG为地址锁存允许/编程脉冲信号端,PSEN为外部ROM读选通信号,RST为复位引脚;EA/VPP为外ROM选择/EPROM编程电源;(4)I/O引脚:MCS-51单片机共有4个8位并行I/O端口,共32个可编程I/O引脚。其外形引脚如图2-1所示:图2.1 AT89C51实物图左及其引脚图右2.1.2 LCD1602性能描述LCD1602是工业字符型液晶,能够同时显示16*02即32个字符,是一种专门用来显示字母、数字、符号等的点阵型液晶模块,字符型LCD通常有1

13、4条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样6。LCD引脚图如下列图2.6所示: 图2.2 LCD1602功能引脚图2.1.3 24C04性能描述24C04是采用铁电技术生产的EEPROM,掉电后数据不丧失。相比传统的EEPROM具有寿命长,读写速度快的优点,采用I2C总线与外界通讯,容量应该是512字节。主要用于存储掉电后需要保存的数据。24C04存储电路如图2.3所示:图2.3 24C04存储电路2.2系统总体设计此设计的主要容与任务如下:1设计一单片机控制的智能报警系统,通过按键输入密码,并用LCD

14、显示相关信息;2密码可由键盘设置,键盘有数字键、还有确认按键;3密码可通过按键修改;4输入字符时,LCD上显示*号,假设密码正确,则可以修改密码;5系统设置默认初始密码,且可以修改,修改后系统按新密码进展操作。依据设计的要求,可以得到系统软件模块图,如图2.4所示: 基于单片机的电子密码器时钟震荡电路模块矩阵键盘输入模块LCD显示模块密码存储模块蜂鸣器报警电路模块 图2.4 系统的软件模块图3硬件电路 用单片机做主机运算器,能进展密码修改和管理员密码设置,可复位,设置有退出键、管理员模式键、设定键、删除键和确定键。LCD在开锁前显示you password,然后根据密码正确与否显示出相应的提示

15、。本设计初始密码为123456,密码输入正确后,可以修改密码,密码个数可以是0-9的数字。采用24C04存储密码,有掉电保护功能,本设计采用4*4的矩阵键盘作为输入,AT89C51单片机作为主机,二极管指示灯和喇叭组成发声系统。根据系统拟到达的总体功能得到系统整体框图如图3.1所示:LCD显示键盘输入AT89C51蜂鸣器报警与开锁电路掉电存储电路图3.1系统整体框图3.1单元电路设计要实现基于单片机电子密码锁的功能。硬件设计包括单片机最小系统的设计,1602LCD数码管显示电路设计,矩阵键盘电路设计和系统总电路的设计。3.1.1单片机最小系统 单片机最小系统都是由组成单片机应用系统所必需的一些

16、部件和电路构成的。无论应用系统要完成什么功能,这些部件和电路都是必须的。一个单片机应用系统至少有:单片机芯片、保证单片机正常工作必须要有电源、产生时钟信号的晶体振荡器,还需要能使单片机复位的电路等。单片机最小系统如图3.2所示:图3.2单片机最小系统3.1.2 1602LCD数码管显示电路1602LCD液晶显示器是一种字符点阵式LCD显示器模块。它不仅能够显示阿拉伯数字,而且还能够显示特殊的符号,以及英文字母即英文语句提示信息,因此其用途比拟灵活,应用比拟广泛,当然价格也较高。单片机AT89C51从接收器得到的数据运算程序后,结果传送给1602LCD数据端并在液晶屏上显示出。显示电路如图3.3

17、所示: 图3.3 1602LCD数码管显示电路3.1.3矩阵键盘电路矩阵式键盘又叫行列式键盘。用I/O接口线组成行、列构造,键位设置在行、列的交点上。例如本设计4*4的行、列构造可组成16个键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O接口线。而且键位越多,情况越明显。因此,在按键比拟多时,往往采用矩阵式键盘。矩阵式键盘的按键识别方法有行扫描法。行扫描法又称为逐行或列扫描查询法,是一种最常用的按键识别方法,介绍过程如下。 (1) 判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相

18、穿插的4个按键之中。假设所有列线均为高电平,则键盘中无键按下。 (2)判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置*根行线为低电平时,其它线为高电平。在确定*根行线位置为低电平后,再逐行检测各列线的电平状态。假设*列为低,则该列线与置为低电平的行线穿插处的按键就是闭合的按键。 矩阵键盘电路如图3.4所示: 图3.4 矩阵键盘电路图3.2系统总硬件电路图各模块组合之后的总体硬件电路图如下列图3.5所示:图3.5总体硬件电路图4 软件模块设计4.1系统开发工具使用本系统使用keil软件,翻开软件后的界面,如下列图4.1所示,图4.1软件

19、运行界面单击Project选择New Project.,弹出Create New Project对话框,图4.2新建系统工程 选择工程文件要存放的路径 ,输入工程文件名, 最后单击保存, 图4.3设置工程路径 在弹出的对话框中选择 CPU 厂商及型号,选择好 Atmel 公司的 89C51 后 , 单击确定,图4.4选择芯片厂商和型号新建一个 C51 文件 , 点击file菜单下的NEW,或单击左上角的 New File快捷键如图4.5,图4.5新建文件 保存新建的文件,单击SAVE,在出现的对话框中输入保存文件名LCD_18b20.c注意后缀名必须为.C,再单击保存, 保存好后把此文件参加到

20、工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to Group Source Group 1 如图4.6,图4.6将文件添加到工程中在编辑框里输入如下代码 ,到此我们完成了工程工程的建立以及文件参加工程 , 现在我们开场编译工程,即单击快捷键或单击Project/Rebuild all the files, 如果在错误与警告处看到 0 Error(s) 表示编译通过。生成 .he* 烧写文件,先单击Options for Target,如图4.7, 图4.7生成.he* 在下列图中,我们单击 Output, 选中 Create HE*

21、 Fi。再单击确定,然后我们必须再次编译才能产生HE*文件 图4.8对系统进展配置4.2系统开发流程图程序主要完成的任务,开场时LCD显示Your Password提示输入密码,输入密码后按确认键,系统会将所输入的密码与系统密码进展比照,如果输入正确则显示Unlock OK开锁,然后可以选择上锁或者修改密码,如果密码错误则显示Error,如果连续输入三次错误密码系统会发出报警声音,程序流程图如图4.9所示:图4.9 系统总体流程图4.3系统软件设计模块4.3.1键盘扫描软件设计 在按键当中,有与输入、开锁、去除、设置、确认的程序相对应的按键,并按顺序与输入的数相比拟,当输入正确时,进入密码程序

22、,错误时进展去除,输入两次新密码正确时,可进展重新设置密码,最后确认程序。按键的检测主要是通过查询的方法来实现的,利用按键进展密码的输入及设置。图4.10 键盘扫描流程图4.3.2 24C04读写操作的软件设计图4.11 24C04读写操作流程图4.3.2 24C04读写操作的软件设计图4.12开锁流程图4.3.4修改密码软件设计图4.13 修改密码流程图5 结果分析程序编写完之后,单击Rebuild按钮,进展编辑,单击build按钮,进展编译,将.he*文件下载到ATC89C51开发板中。图5.1 配置电路图参数单击左下角的中的按钮进展仿真。5.1电子密码锁开锁和上锁 在矩阵键盘上输入初始密

23、码123456,并点击开锁按钮,如果输入密码错误,则LCD显示ERROR!,无法开锁;假设输入正确,则显示Unlock OK!,表示开锁成功,如图5.2所示: 图5.2 开锁后LCD显示图 再按下上锁按键后,电子密码锁重新上锁,需要重新输入开锁密码才可开锁,当三次输入错误密码时,蜂鸣器会发出响声报警。5.2修改电子密码锁密码在已经开锁的状态下,按下输入新密码按钮,可重新输入密码,设置成你想要改的密码,再按下保存新密码按钮,新密码就设置成功了,这时开锁需要输入新密码了,如图5.3所示 图5.3电子密码锁修改密码此次工程实践的基于单片机电子密码锁设计比拟成功,能实现开锁上锁、修改密码、报警防盗等功

24、能。结论本次工程实践过程中,对我所学的所有的嵌入式知识进展一个总结性的复习,特别是对AT89C51单片机方面的知识有了更深的了解。同时也稳固了对LCD1602,数据存储等方面的知识,为我以后的学习以及工作奠定了一定的专业根底。在这次设计中,遇到了一些设计上的难题,通过查阅相关图书资料和询问同学帮助解决了难题。参考文献1祁伟, 亭.单片机C51程序设计教程与实验M. 航空航天大学,2006.2文涛.单片机语言C51典型应用设计M. 人民邮电,2005.3谭浩强.C程序设计第三版M. 清华大学,2005.4德金.MCS-51系列单片机接口电路与应用程序实例M.航空航天大学, 1990.5赖麒文.

25、8051单片机C语言彻底应用M.科学, 2002.6余永权.单片机在控制系统中的应用M. 电子工业,2003.7艳丽,仁弟.数字温湿度传感器SHT11及其应用J.工矿自动化,2007.6第3期.8庆阳.8051单片机实践与应用M.清华大学2004 .9高卫东.51单片机原理与实践C语言版M.航空航天大学,2021.10辉平,周国雄.基于Protues的单片机系统设计与仿真实例M. 机械工业,2021.附录:程序代码: *include *include *define uchar unsigned char*define unit unsigned intuchar Pre_KeyNo = 1

26、6, KeyNo = 16;uchar code Title_Te*t = Your Password.;uchar DSY_BUFFER10 = ;uchar UserPassword10 = ;void LCD_Init();void Display_String(uchar * str,uchar LineNo);void IIC_24C04_Init();void Beep();uchar RecString(uchar Slave,uchar Subaddr,uchar *Buffer,uchar N);uchar SendString(uchar Slave,uchar Subad

27、dr,uchar *Buffer,uchar N);uchar Keys_Scan();sbit LED_OPEN = P27;sbit BEEP = P37;void DelayMS(int * ) uchar i; while (*-) for (i = 0;i120;i+);void Beep() uchar i; for (i=0;i100;i+) DelayMS(1);BEEP= BEEP; BEEP=0;void Clear_Password() UserPassword0 = 0; DSY_BUFFER0 = 0;void main() uchar i = 0; uchar II

28、C_Password10; uchar IS_Valid_User = 0; P0 = P1 = P2=0*FF; TMOD = 0*02; TH0 = 175; TL0 = 175; TR0 = 1; DelayMS(10); LCD_Init(); IIC_24C04_Init(); Display_String(Title_Te*t,0*00); RecString(0*a0,0,IIC_Password,6); IIC_Password6 = 0; while(1) P1 = 0*F0; if(P1 !=0*F0) KeyNo =Keys_Scan(); if(Pre_KeyNo !=

29、KeyNo) if(i10) switch (KeyNo) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if(i=0) Display_String( ,0*40); UserPasswordi=KeyNo + 0; UserPasswordi+1=0; DSY_BUFFERi = *; DSY_BUFFERi+1=0; Display_String(DSY_BUFFER,0*40); i+; break; case 10: if (strcmp(UserPassword,IIC

30、_Password) = 0) LED_OPEN = 0; Clear_Password(); Display_String(Unlock OK! ,0*40); IS_Valid_User = 1; else LED_OPEN = 1; Clear_Password(); Display_String(ERROR ! ,0*40); IS_Valid_User = 0; i=0; break; case 11: LED_OPEN = 1; Clear_password(); Display_String(Title_Te*t,0*00); Display_String( ,0*40); i=

31、0; IS_Valid_User = 0; break; case 12: if(!IS_Valid_User) Display_String(No rights !,0*40); else i=0; Display_String(New Password: ,0*00); Display_String( ,0*40); break; case 13: if(!IS_Valid_User ) Display_String(No rights !,0*40);else SendString(0*a0,0,UserPassword, 6); RecString(0*a0,0,IIC_Passwor

32、d, 6); IIC_Password6 = 0; i=0; Display_String(Title_Te*t,0*00); Display_String(Password Saved! ,0*40); break; case 14: i=0; Clear_Password(); Display_String( ,0*40); Beep(); Pre_KeyNo = KeyNo; DelayMS(100); *include *include *define uchar unsigned char *define unit unsigned int *define Delay4us(); _

33、nop_();_nop_(); _nop_();_nop_(); sbit SCL = P32; sbit SDA = P33; void Start() SDA = 1;SCL = 1;Delay4us();SDA = 0;Delay4us();SCL = 0; void Stop()SDA =0;SCL =1;Delay4us();SDA = 1;Delay4us();SCL=0; void IIC_24C04_Init() SCL = 0; Stop(); void ACK() SDA =0;SCL =1;Delay4us();SCL = 0;SDA=1; void No_ACK() SDA =1;SCL =1;Delay4us();SCL = 0;SDA=0; uchar RecByte() uchar i,rd; rd = 0*00; SDA = 1; for(i=0;i8;i+) SCL =1 ;rd=1; rd |=SDA;Delay4us();SCL = 0;Delay4us(); SCL=0; Delay4us(); return rd; uchar SendByte(uchar wd) uchar i; bit ack0; for(i=0;i8;i+) SDA=(bit)(wd &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论