




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南人文科技学院电子密码锁课程设计报告书课程设计报告课程名称:单片机原理及应用课程设计设计题目: 电子密码锁设计 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 学生姓名: 学 号: 起止日期: 指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日摘 要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。随着科技的发展和人们生活水平的提高,如何实现保密防盗这一问题变的尤其的突出,传统的机械锁由于其构造的简单,失效的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,因而广泛使用。本设计围绕电子密码锁系统的设计与开发进行研究和实践,详细介绍了电子密码锁系统的整体结构。基于在系统可编程技术和STC89C52编译器配有集成开发的新型电子密码锁的设计方案,阐述其工作原理和软硬件设计,由单片机系统、矩阵键盘、LED显示和报警系统组成的系统能完成开锁、修改用户密码、报警基本的密码锁的功能。关键字:STC89C52芯片; 8255芯片;keil软件 目 录1 设计要求与内容11.1 设计要求11.2 设计内容11.3 主要设计条件12 方案论证与对比22.1 方案一22.2 方案二22.2.1单片机系统22.2.2矩阵键盘接口电路32.2.3 LED显示32.2.4 比较显示系统32.2.5 系统总框图32.3 方案论证与选择33硬件电路设计43.1 键盘电路设计43.1.1 矩阵式键盘电路图43.1.2 矩阵键盘的识别方法43.2 LED显示电路设计43.3 STC89C52芯片与8255芯片的介绍54 软件设计74.1 软件总体设计74.2 各子程序的设计74.2.1 密码的固定定74.2.2 键盘的扫描识别判断74.2.3密码显示和比较处理85 系统功能的测试与整体指标95.1 软件调试步骤95.2 程序调试步骤95.3 测试结果96 详细仪器清单107 总结及致谢11参考文献12附录一 仿真图13附录二 源程序1422电子密码锁设计电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现。1 设计要求与内容1.1 设计要求利用单片机作为控制核心,完成一个电子密码锁可以修改密码设计具体要求如下: 1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345共6位密码; 2、密码的输入:采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程; 3、密码输入正确按确认键,绿灯亮,输入密码错误、红灯亮蜂鸣器响。1.2 设计内容 1、设计合理、正确的方案; 2、系统硬件设计及焊接制作; 3、系统软件设计及调试; 4、系统联调。1.3 主要设计条件 1、MCS-51单片机实验操作台1台; 2、PC机及单片机调试软件; 3、单片机应用系统板1套;4、系统设计所需的元器件。2 方案论证与对比2.1 方案一采用数字电路控制,其原理方框图如1-1所示。 图1-1 数字电路控制图采用数字密码锁电路的好处就是设计简单。用74LS112双JK触发器构成的数字逻辑电路做为密码锁的核心控制,共设了9用户输入键,其中只有5个是有效的密码按键,其它的都是干扰按键,如果按下干扰按键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入,。电路有两大部分组成:密码锁电路和备用电源,其中备用电源是防止停电造成的密码锁电路失效,是用户免遭麻烦。密码锁电路包含:键盘输入,密码检测,开锁电路,执行电路,报警电路。2.2 方案二2.2.1单片机系统是用以STC98C52为核心的单片机控制方案。利用单片机灵活编程设计和丰富的I/O端口,及其控制的准确性,进行电子密码锁的设计。此次课题用8255课编程芯片的PC口与键盘相连,做输入口,PA,PB口与数码管相连,做显示。2.2.2矩阵键盘接口电路此次课程设计采用4*4矩阵键盘,与PC相连,采用扫描法。设有0十个数字密码,和功能键。输入密码,按确认键后,密码比较。2.2.3 LED显示此次课程设计用数码管动态显示。根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第六位显示器显示第六次按的密码,按键完成后按确认键后,密码对则执行相关动作。2.2.4 比较显示系统此次课程设计,当输入密码正确时,LED灯亮(绿灯亮);当输入密码错误时,LED灯亮(红灯亮)且蜂鸣器响。2.2.5 系统总框图系统包括:单片机系统、矩阵键盘接口电路、LED显示、比较显示器、系统总框图如下:STC89C52单片机LCD显示电路开锁控制电路指示电路矩阵键盘控制图2-5 系统总框图2.3 方案论证与选择通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能,而且能在很大程度上扩张功能,而且还可以方便的对系统进行升级,以及对设计条件的综合考虑,我们选择方案二。3硬件电路设计3.1 键盘电路设计3.1.1 矩阵式键盘电路图 图3-1键盘电路图 图3-2 键盘图在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,在需要的键数比较多时,采用矩阵法来做键盘是合理的。本次因需要使矩阵键盘当独立键盘使用。3.1.2 矩阵键盘的识别方法矩阵键盘的识别方法有很多种,比如行反转法,扫描法等。最常用的方法是扫描法,本次采用扫描法。3.2 LED显示电路设计LED就是light emitting diode ,发光二极管的英文缩写,简称LED。它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。显示器显示接口按驱动方式可分为静态显示和动态显示,静态显示时,除变更显示数据期间外,各显示器均处于通电状态,每个显示器的通电占空比为100%,静态显示的优点是显示稳定,亮度高,缺点是占用硬件电路多;动态显示的优点是节省硬件电路,缺点是占用软件扫描时占用CPU时间多。对于多位LED显示器,通常都是采用动态扫描的方法进行显示,即逐个地循环点亮各位显示器,这样虽然在任一时刻只有一显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。 图3-2 数码管显示电路图为了实现LED显示器的动态扫描,除了要给显示器的输入之外,还有对显示器选择位的控制,这就是通常所说的段控和位控。因此,多位LED显示器接口电路需要有两个输出口,其中一个用于8条段控线,另一个用于输出位控线,位控线的数目等于显示器的位数。为了方便编写程序,通常在内部RAM中设置显示缓冲区,存放显示的数字或字符,显示缓冲区单元个数与LED显示器位数相同。此次基于单片机的电子密码锁,我选用动态显示,通过与软件配合,每输入一个密码,进行显示一次,扫描,密码输入完后,进行比较,密码正确则开锁。3.3 STC89C52芯片与8255芯片的介绍STC89C52是低功耗、高性能的CMOS8位微控制器。8字节的flash,256字节的RAM,32位的I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器。全双工串行口,片内晶振及时钟电路,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,内容被保存,振荡器被冻结。STC89C52芯片如图2-3所示: 图3-3 STC89C52芯片图 图3-4 8255芯片引脚图 8255芯片引脚图如图3-4所示:8255芯片是一种典型的课编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8位的并行口,有三位工作方式,可作为单片与各种外部设备连接的接口电路。CS:片选信号线,当该引脚为低电平时,8255被选中,允许8255与CPU通讯。RESET:复位输入线,当该引脚为高电平时,内部寄存器被清除,所有I/O口均被置成输入方式。A0、A1:地址输入线。当A0A1=00时,PA口被选中;当A0A1=01时,PB口被选中;当A0A1=10时,PC口被选中;当A0A1=11时,控制寄存器被选中。4 软件设计 4.1 软件总体设计软件的设计主要包括:密码的固定、键盘识别判断、密码显示、密码比较、密码对处理。软件设计总流程图如下:主程序开始I/O初始化,LCD初始化,执行主控循环密码是否正确 Y NLCD显示正确消息:绿灯亮LCD显示错误消息:蜂鸣器响,红灯亮图4-1 总流程图4.2 各子程序的设计4.2.1 密码的固定定将密码固定在程序存储器ROM中,设定密码,密码固定在ROM中。4.2.2 键盘的扫描识别判断用矩阵式键盘,扫描法对键盘进行识别判断,具体流程图如下:首先选着一行或者一列,低电平有效,然后进行扫描,如果发现一行(列)出现低电平信号则有键按下,然后在数码管显示相应的数或者现象。在扫描时,会出现电信号抖动,所以一般我们要加上去抖动语句。根据此原理,我们给键盘编码0-9,以及其他的一些功能按键,这就是电子密码锁按键。开始扫描PC=0xf7PC7=0?PC6=0?PC5=0?PC4=0?按键9按下按键8按下按键7按下按键6按下显示9显示8显示7显示6 图4-2 键盘扫描流程图 4.2.3密码显示和比较处理采用LED动态显示,密码输入完成之后,进行密码比较,并显示相应现象。开始输入密码比较密码正确绿灯亮密码错误红灯 蜂鸣器响 图4-3 密码显示图5 系统功能的测试与整体指标5.1 软件调试步骤1、打开keil软件后,在project菜单中选择New Project命令,打开一个新项目,保存项目,输入工程文件名后,并保存工程文件的目录;2、 为项目文件选择一个目标器件,即选择8051的类型,在Data base列表框中选择“ATML89C52”,确定3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”;4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的件;5、开始编辑,对项目文件进行编辑,若没有错误后进行硬件调试。5.2 程序调试步骤1、 矩阵4*4键盘的调试键盘程序是整个程序的基础,我们必须保证其正确。调试方法:先把程序下载到单片机,让数码管显示,在有键按下时显示的是否为设定的值。2、数码管程序调试正确的显示数值是整个储蓄的关键。调试方法:先把程序下载到单片机,让数码显示数值。5.3 测试结果实例测试:将程序下载到单片机,按下功能键,再输入初始密码“123456”再按确认键,绿灯亮,解锁成功,若输入密码错误,则亮红灯,蜂鸣器响;按修改密码键,再输入新密码,按确认键密码修改成功;若不按功能键则无法进行密码输入。6、详细仪器清单详细仪器清单表仪器名称数量STC89C52芯片18255芯片11K电阻22型号为9015的三极管6电容18段共阳极数码管6二极管1石英晶振1矩形按键67总结及致谢本次单片机课程设计历时两个星期,在这了两个星期中我们深深体会到了课程设计的苦与乐。当程序调试出现问题时,我们就一步步调试,一步步查看,修改,这过程确实很枯燥,也很辛苦,但是,当程序调试成功并且能够下载到单片机中运行时,有说不出的高兴,感觉我们所有的付出都是值得的。总的来说,这次课程设计,让我们领悟到理论与实践结合的重要性。懂得拥有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从中得到收获,从而提高自己的实际动手能力和独立思考的能力,做到全面发展,这样才能真正为社会服务。因为这是第一次做单片机课程设计,所以我们遇到过各种各样的问题,面对这些难题,我们没有妥协,以求学的心态去解决,从中发现了自己的不足之处,正是这些难题让我们看到了自己的不足,对以前所学过的知识理解得不够深刻,基础掌握得不够牢固。只学到了表面的知识,并没有深入了解知识的内涵。所以很庆幸有这次课程设计,它教会了我们到底要学些什么知识,给我们以后的学习指明了一个方向,促使我们更加努力的学习,补充自己的不足。这次课程设计终于顺利完成了,其中离不开老师的耐心指导和同学们的热心帮助,在此表示衷心的感谢,另外特别感谢指导老师谭老师的耐心指导,他的讲解让我们有豁然开朗的感觉,让我们得以顺利完成这次课程设计。参考文献1 张鑫.单片机原理及应用M.电子工业出版社,20092 郭天祥.51单片机C语言教程M.电子工业出版社,20093 邹逢兴.计算机硬件技术基础试验教程M. 高等教育出版社 , 20004 周佩玲.16位微型计算机原理接口及其应用M.中国科学技术大学出版社, 2000 5 吴秀清.微型计算机原理与接口技术M.中国科学技术出版社 , 2001附录一:仿真图附录二:源程序#include#include /*调用库函数*/#define uchar unsigned char /*自定义无符号字符型为uchat*/#define PA XBYTE0xD9FF /*8255芯片PA口地址*/ #define PB XBYTE0xDAFF /*PB口地址*/ #define PC XBYTE0xDDFF /*PC口地址*/ #define CON XBYTE0xDFFF /*控制字地址*/sbit D1=P11; /*位声明把P1.1口赋给D1*/sbit D2=P10; /*把P1.0口赋给D2*/sbit beep=P33; /*蜂鸣器端口*/uchar code table=0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xef;uchar num,num1,num2,num3,num4,num5,num6,tt,temp,i,j,k,t,x,y,n1,a,b,c,d,e,f,xsm; void delay(xsm); /*延时函数声明*/ void keys(); /*键盘函数声明*/void keys1(); /*键盘函数声明*/void keys2(); /*键盘函数声明*/void display(num); /*数码显示函数声明*/void main() /*主函数*/ CON=0x80; /*选择8255工作方式1*/ x=6;y=6; /*控制密码位数初值*/ a=1;b=2;c=3;d=4;e=5;f=6; /*定义密码锁的原始密码为123456*/ while(1) /*循环函数*/ display(num); keys(); keys1(); keys2(); void display(num) /*数码显示函数*/ if(tt=0|tt6) /*tt控制按键次数,tt=0,没有数字键按下*/ tt=0; PA=0xc0; /*把6个数码管位选打开*/ PB=table10; /*数码管显示_*/ if(tt=1) /*tt=1,第一次按键*/ num1=num; /*把按键值num赋给num1*/ num2=b;num3=c;num4=d;num5=e;num6=f; /*密码位数控制*/ if(t=1) a=num;y=x-5; /*判断是否修改密码*/ PA=0xfe; /*开第一个数码管*/ PB=tablenum1; /*显示第一个数值*/ if(num=10) /*取消输入健值判断*/ tt-; if(tt=2) /*tt=2,第二次按键*/ num2=num; num3=c;num4=d;num5=e;num6=f; if(t=1) b=num;y=x-4; PA=0xfd; /*用第二个数码管显示第二次按键的值*/ PB=tablenum2; delay(18); /*延时10ms*/ PA=0xfe; /*保持第一次按键的健值亮*/ PB=tablenum1; delay(18); if(num=10) /*取消键判断*/ tt-; if(tt=3) /*tt=3,第三次按键*/ num3=num; num4=d;num5=e;num6=f; if(t=1) c=num;y=x-3; PA=0xfb; /*用第三个数码管显示第三次按键的值*/ PB=tablenum3; delay(18); /*延时10ms*/ PA=0xfd; /*保持第二次键值亮*/ PB=tablenum2; delay(18); PA=0xfe; /*保持第一次键值亮*/ PB=tablenum1; delay(18); if(num=10) /*取消键判断*/ tt-; if(tt=4) /*tt=4,第四次按键*/ num4=num; num5=e;num6=f; if(t=1) d=num;y=x-2; PA=0xf7; /*用第四个数码管显示第四次按键的值*/ PB=tablenum4; delay(18); /*延时10ms*/ PA=0xfb; /*保持第三次键值亮*/ PB=tablenum3; delay(18); PA=0xfd; /*保持第二次键值亮*/ PB=tablenum2; delay(18); PA=0xfe; /*保持第一次键值亮*/ PB=tablenum1; delay(18); if(num=10) /*取消键判断*/ tt-; if(tt=5) /*tt=5,第五次按键*/ num5=num; num6=f; if(t=1) e=num;y=x-1; PA=0xef; /*用第五个数码管显示第五次按键的值*/ PB=tablenum5; delay(18); /*延时10ms*/ PA=0xf7; /*保持第四次键值亮*/ PB=tablenum4; delay(18); PA=0xfb; /*保持第三次键值亮*/ PB=tablenum3; delay(18); PA=0xfd; /*保持第二次键值亮*/ PB=tablenum2; delay(18); PA=0xfe; /*保持第一次键值亮*/ PB=tablenum1; delay(18); if(num=10) /*取消键判断*/ tt-; if(tt=6) /*tt=6,第六次按键*/ num6=num; if(t=1) f=num;y=6; PA=0xdf; /*用第六个数码管显示第六次按键的值*/ PB=tablenum6; delay(18); /*延时10ms*/ PA=0xef; /*保持第五次键值亮*/ PB=tablenum5; delay(18); PA=0xf7; /*保持第四次键值亮*/ PB=tablenum4; delay(18); PA=0xfb; /*保持第三次键值亮*/ PB=tablenum3; delay(18); PA=0xfd; /*保持第二次键值亮*/ PB=tablenum2; delay(18); PA=0xfe; /*保持第一次键值亮*/ PB=tablenum1; delay(18); if(num=10) /*取消键判断*/ tt-; void keys1() /*复位键*/ PC=0xfd; /*第三行第一个按键*/ if(PC=0xed) /*判断是否有健按下*/ delay(10); if(PC=0xed) k=1; /*k为控制数字键条件k=1,可以按键*/ tt=0; /*输入键值和密码比较完,数字控制键清屏*/ D1=1; /*按下数字控制键灯灭*/ D2=1;n1=0; void keys2() /*功能键函数*/ PC=0xfe; /*功能键1,修改密码键*/ if(PC=0xde) /*判断是否有健按下*/ delay(10); if(PC=0xde) if(n3=1) k=1; /*开数字按键*/ t=1; /*记忆密码条件*/ else k=0; PC=0xfe; /*功能键2,修改密码确认键*/ if(PC=0xbe) /*判断是否有健按下*/ delay(10); if(PC=0xbe) k=0; /*关数字按键*/ t=0; /*不再记忆密码*/ n1=1; if(n1!=1) PC=0xfe; /*功能键3,输入密码确认键*/ if(PC=0x7e) /*判断是否有健按下*/ delay(10); if(PC=0x7e) k=0; /*关数字按键*/ if(tt!=0) if(y=tt) /*判断输入值的长度是否等于密码长度*/ if(a=num1&b=num2&c=num3&d=num4&e=num5&f=num6) n3=1; /*密码输入正确,修改密码标志*/ D1=0; /*如果输入按键值与密码值相等,D1灯亮*/ else D2=0; /*数值不相等,D2灯亮,蜂鸣器响*/ n3=0; else D2=0; /*长度不相等,D2灯亮,蜂鸣器响*/ n3=0; void keys() /*数字键函数,编码数字键盘*/ if(k=1) /*判断是否按数字键*/ PC=0xf7; /*扫描键盘*/ temp=PC; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=PC; temp=temp&0xf0; if(temp!=0xf0) temp=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年在线教育市场报告:K2教育发展趋势及策略分析
- 设备维护计划考试题
- 各科的考试题目及答案
- 夜间施工安全培训记录课件
- 平板课件投屏到电视上
- 地质勘探员招聘考试地质基础知识考试题
- 年面点师证面食制作监考试题
- 新能源汽车智能化安全防护技术2025年技术创新应用场景研究报告
- 核科学基础试题及答案
- 中医基础试题及答案中职
- 乡村执业助理试题及答案
- 2025-2026学年一年级上册统编版道德与法治教学计划
- 国开2025年秋季《形势与政策》专题测验1-5答案
- 急性STEMI PCI术冠状动脉内溶栓共识解读
- 陪诊师备考指南试题及答案
- 华为面试题及解答答案
- 2025年小学信息科技课标考试真题及答案
- 2025内蒙古民族大学招聘管理助理、教学助理50人笔试备考试题及答案解析
- 2025年河北机关事业单位工人技能等级考试(畜禽饲养繁殖工·高级)历年参考题库含答案详解(5卷)
- 国防科技课件
- 公证业务知识培训课件
评论
0/150
提交评论