单片机的电子密码锁设计课程设计_第1页
单片机的电子密码锁设计课程设计_第2页
单片机的电子密码锁设计课程设计_第3页
单片机的电子密码锁设计课程设计_第4页
单片机的电子密码锁设计课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 基于单片机的电子 题 目 密码锁设计 顾梦晓学生姓名 2班级通信工程专业班级 11 201151046 号学 信息工程学院 (系) 院 周喜指导老师 日月年完成时间 20150116 郑州科技学院 单片机课程设计任务书专业 11级通信工程 班级 2班 学号 201151046 姓名 顾梦晓 基于单片机的电子密码锁设计一、设计题目 二、设计任务与要求 。8(1)本设计为防止密码被窃取在输入密码时屏幕上显示 )设计开锁密码位为六位密码的电子密码锁。2(,输入密码 “2ERROR”)能够在密码正确时显示“1HELLO”,密码错误时显示(3 的个数。8的位数时显示为 的数字键确认键和消除键的功能键。

2、4的矩阵键盘中包括0-94×(4) )本产品具备报警功能,当输入密码错误时蜂鸣器响(5键删除刚才输入的错误的数“C”(6)在密码输入过程中,若输入错误,可以利用 字。在输入密码的过程中可以随时对输入的密码进行修改。 三、主要参考文献 . 2006. 07:国防工业出版社何宏主编.单片机原理与接口技术. M北京1 清华大学出版北京:电子密码锁的系统原理赵益、徐晓林、周振峰. . M2 . 2003. 社. 清华大学出版社.北京:单片机原理与应用3 张培仁.基于C语言编程 MCS- 51 2002. 12 四、设计时间 日 16 2015 年 01月日年2015 01月 16 至 指导教

3、师签名: 日 年 月 录目 . 11 电子密码锁的背景 . 1总体设计方案的确定2 . 1电子密码锁设计要求2.1 . 2总体设计方案选定2.2 . 2系统硬件设计3 . 2设计原理3.1 . 3简介单片机STC89C523.2 . 63.4七段数码管显示器部分 . 73.5 键盘设计 . 73.6 蜂鸣器模块 . 84 系统软件设计 . 8主程序模块4.1 . 9系统制作及调试5 . 9焊接注意事项5.1 . 9硬件调试问题及解决方法5.2 . 106 结论 1 . 1参考文献 . 12:实物图附录1 . 132:元件清单附录 . 14:电路原理图附录3 . 15:程序附录4 1 电子密码锁

4、的背景 随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。目前普遍使用的机械锁结构简单、使用方便、价格便宜。但在使 用过程中暴露了很多缺点。随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。电子密码锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。该电子密码锁利用单片机作为主控核心,单片机(AT89S51)所具有的特殊功能使得电子密码锁的保密性能大大加强,这样就可以有效的防止多次试探密码的可能性。随着单片机和其它智能芯片的进一步开发防盗锁将实

5、现智能化,这将是锁的安全性能大大提高。本系统实现密码一次输入的提示功能,若密码输入不正确将发出“嘀嘀”的报警声,引起他人警觉。同时可添加外围设备实现远程报警(如添加继电器一类设备可以连接到主人的电话上,是主人知道家里有人非法操作,及时报警)。若密码输入正确将发出“叮咚”的门铃声。本系统使用的单片机所具有强大的功能能够实现智能控制用来完成密码的 输入、判断和比较从而执行相应的开锁显示或报警等功能。2 总体设计方案的确定 电子密码锁设计要求2.1 (1)本设计为防止密码被窃取在输入密码时屏幕上显示8。 (2)设计开锁密码位为六位密码的电子密码锁。 (3)能够在密码正确时显示“1HELLO”,密码错

6、误时显示 “2ERROR”,输入密码的位数时显示为8的个数。 (4)4×4的矩阵键盘中包括0-9的数字键确认键和消除键的功能键。 (5)本产品具备报警功能,当输入密码错误时蜂鸣器响 (6)在密码输入过程中,若输入错误,可以利用“C”键删除刚才 输入的错误的数字。在输入密码的过程中可以随时对输入的密码进行修改。 总体设计方案选定2.2 采用一种是用以STC89C52为核心的单片机控制方案。 选用单片机STC89C52 作为本设计的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接

7、四位数码管实现显示功能。 可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。 系统硬件设计3 3.1 设计原理 本系统硬件设计由单片机(AT89S51)部分、4×4行列式键盘部分、四联七段 个部分所组成。4共阴数码管部分、报警器部分主控器件是单片机,通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引 脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、

8、显示部分、报警部分组成,软件部分对应的由主程序、初始化程序、晶体管显示程序、键盘扫描程序、启动程序、关闭程序、键功能程序、密码设置程序、EEPROM读写程序和延 时程序等组成。3.2 单片机STC89C52简介 89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的 产品。HCMOS 功能特性3-1 STC89C52表 标准MCS-51内核和指令系统K1K2K3A系统初始化、密码设置N Y Y 开门、数码管显示、铃音提示 止终3 数码管1 16 LED 发光二极管12 6*6 17 按键 外部存储

9、器)64kB8kROM(可扩充片内 2 位 4 口I/O32个双向4 电阻5 电阻256x8bit内部RAM(可扩充64kB外部存储 器) 清除密码9 4.7K 2 1K 计数器163个位可编程定时/输入密码、按键识别6 电阻7 排阻 3.5-12/24/33MHz时钟频率 1 10K 1 1k 向上或向下定时计数器8 三极管 改进型快速编程脉冲算法9 9012 个中断源69 蜂鸣器 工作电压 5.0V1 全双工串行通信口 密码比较10 单片机 布尔处理器1 STC89C52 帧错误侦测11 电解电容12 瓷片电容 层优先级中断结构 41 10uf 2 30pf 自动地址识别13 瓷片电容分

10、逻辑电平和TTLCMOS兼容 2 104 空闲和掉电节省模式 正确?14 集成电路插座15 晶振 封装形式PLCC(44)和PDIP(40) 数码管显示、报警1 40脚 1 12m 引脚介绍STC89C52 :供电电压。VCC :接地。GND。在访问外P0.0P0.7位漏级开路双向口为一个口:1、P0P08I/O口,名称为位)和数据总线复8部数据存储器或程序存储器时,这组口线分时转换地址(低 用,在访问期间激活内部上拉电阻。端口用导线连接到报警器上,用来提”单片机系统区域中的P0.0“本系统中把 示密码输入的正确或错误并发出相应的声音。I/O位双向口,名称为P1.08P1P12、口:口是一个内

11、部提供上拉电阻的 逻辑门电路。P1.7。个TTL4口的输出缓冲器可驱动(吸收或输出电流)P1用导线连接到数码管显示器的一P1.7P1.0”单片机系统“本系统中把区域中的 端。用来实现数码管的显示。本系P2.0口,名称为I/O8口为一个内部上拉电阻的P2P2口:位双向P2.7 用导线连接到三极管的一端通过三极管放区域中的”单片机系统统中把“P2.7P2.0 大输入到数码管显示器上。 口共同来完成数码管的显示。口和P2”区域中的P1本系统中由“单片机系统 。P3.7I/O口,名称为P3.0P3口:P3口管脚是8个带内部上拉电阻的双向本系统中把单片机系统中P3.0-P3.3和P3.4-P3.7端口分

12、别连接到的4×4行列式键 盘中的四条横线、四条竖线上,用来完成密码的输入。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电 平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 有效。/PSEN机器周期两 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL1 :来自反向振荡器的输出。XTAL2U1 140VCCP10329P00P11383P01P12347P02P13356P03P14356P04P15347P05P16383P06P17392

13、P07RESET3110EA/VPP30/RXD3110/PP31ALE/TXD2129PSENP32/INT02183P27P33/INT12147P260P34/T2165P25/TP3512561P24RP36W2714P23P37/RD2813P22X22129P21X12021 P20GND2C59C8ST 引脚图图3-2 STC89C52 最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片 机始终处于正常的运行状态。 时钟电路(1) STC89C52单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图3-3所示。在STC89C52

14、单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶 ,就构成了自激振荡器并在单片机内部产生时钟脉冲信号。振) 内部时钟电路图3-3 STC89C52 复位电路(2) 当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片 机内部就执行复位操作。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。 接通而实现的。Vcc其中电平复位是通过RST(9)端与电源 复位电路3-4 STC89C52图3.4七段数码管显示器部分 七段LED显示器由7个发光二极管组成,其中7个长条形的发光管排列成“日”字形,如上图所示,由七个

15、发光二极管组成的七段显示器。如再加一个贺点 形的发:共阴和共阳结构的LED显光管在显示器的右下角作为显示小数点用,则组成八段LED显示器。它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳LED显示器;另 显示器个发光二极管的阴极都连在一起的,称之为共阴LED一种是8 复位电路3-5 STC89C52图 3.5 键盘设计 3443433412111222K4K5K6B3434343412121122K7K8K9C3434434311211222*K0#D3434443311221221 P14P13P12P11P10P15P16P1

16、7 蜂鸣器模块? 4 系统软件设计 4.1 主程序模块 本系统软件设计由主程序、初始化程序、数码管显示程序、键盘扫描程序、 读写程序和延时程序等组成。键功能程序、密码设置程序、EEPROM 开始 主程序的流程图 图4-1 软件调试4.2 编好的程序编译成芯片设计好的电路,Keil在硬件支持的环境下,用proteus程序图芯片内进行仿真测试,并对其出机写进proteusPChex可识别的文件,利用 现的错误进行修改。 5 系统制作及调试 5.1 焊接注意事项 的注意事项:LCD(1) 焊接LCD基板时,将其小心、平衡地插入万用板插孔焊接,以避免 损坏基板也比较美观。(2) 焊接时,基板不宜长时间

17、置于焊锡蒸汽中,焊接时间保持在10秒以 内。 )显示器表面保护膜直到焊接完成再揭掉,以免污染显示器表面。3( 单片机焊接注意事项:STC89C52单片机芯片相比较而言是脆弱的,所以需要使用芯片底座,一切 焊接结束之后下载好程序再把单片机插入底座。 其他的电子器件焊接注意事项:5.2 硬件调试问题及解决方法 本设计在焊接调试时遇到的问题以及解决方法: 数码管显示器焊接时的问题: 显示不亮,调整电路之后,显示亮度合适。Lcd1)接通电源后,(2)接通电源后不能正常运行,推断可能是程序出现问题。重新下载程序, 可以运行。 6 结论 我们刚开始决定做这个课题时,感觉对此摸不透头绪,可以说是一头雾水,毫

18、无经验可言。题目确定以后开始做这个设计。我们小组先是进行了收集资料,选择方案,确定要用到的器件然后手工绘制简单的原理图以及编写程序。之后我们分工合作,一人主攻对各个器件的原理、功能以及器件各引脚的分布、作用。一人主攻熟悉仿真软件和程序编译、下载。一人主攻实物焊接。虽然各有主攻方向但遇到问题时依然是相互探讨商议。在做课程设计的过程中原理图绘制颇费了 点劲但最终还是做到了,理论上可以实现。接下来是焊接部分,这块完成的很 快,只是在显示焊接上有点问题,经调整之后,可正常运行。通过这次的课程设计,发现自己对于编程这块欠缺太多,对C理解和运用不够深。而在原理图和焊接方面比较熟练,遇到的问题可以解决。也明

19、白做一件事需要耐心和知识,再者就是查资料和合作。细心的坚持下去就可以做到想做的 事。在以后的学习工作中依然需要努力,加油向上。 参考文献 1 何宏.单片机原理与接口技术.M北京:国防工业出版社. 2006.07. 1050 2 谢宜仁.单片机实用技术问答.M北京:人民邮电出版社 .2003.02. 80121 3 梁丽.电子密码锁的计算机仿真设计.M 北京:国防工业出版社. 2005. 4580 4 赵益、徐晓林、周振峰.电子密码锁的系统原理.M北京:清华大学出版社. 2003.15.1014 5 房小翠、王金凤.单片机实用系统设计技术.M北京:国防工业出版社 . 1999.06 .60128

20、 6 张培仁.基于C语言编程 MCS-51单片机原理与应用.M北京: 清华大学出版社. 2002.12.90160 7 龚运新.单片机C语言开发技术.M清华大学出版社. 2006. 10. 5297 附录1:实物图 附录2:元件清单 序号 名称 规格 数量 1 1 pcb 板单面线路板1 2 12*12 按键 附录3:电路原理图 附录4:程序 #include <at89x52.H> bit wl8flag。 unsigned char bit alarmflag。 wl=1,2,3,4,5,6。bit hibitflag。 unsigned char code unsigned

21、char wl8a,wl8b。 wl1=0xfe,0xfd,0xfb,0xf7, void main(void) /扫描0xef,0xdf,0xbf,0x7f。 unsigned char i,j。 unsigned char code wl2=0x3f,0x06,0x5b,0x4f,0x66, TMOD=0x01。 0x6d,0x7d,0x07,0x7f,0x6f, TH0=(65536-300)/256。 TL0=(65536-300)%6。 0x77,0x7c,0x39,0x5e,0x79,0x71, TR0=1。 ET0=1。 EA=1。 数码管 /0x00,0x40,0x73,0xf

22、f。 while(1) /键盘输入部分 显示数字部分 。 P3_4=0。 P3=0xffunsigned char code wl6=wl6 & 0x0f。 wl6=P3。wl8=0x00,0x00,0x77,0x3f,0x77, if (wl6!=0x0f) 数码管显示0x77,0x79,0x5b。/ 2error 。i-) for(i=10。i>0unsigned char code wl9=0x00,0x00,0x3f,0x38,0x38, 。 。j>0。j-) for(j=248数码管显示。/0x79,0x76,0x06 wl6=P3。 1hello wl6=wl6

23、 & 0x0f。unsigned char if (wl6!=0x0f) wl38=18,16,16,16,16,16,16,16 wl6=wl6 & 。 wl6=P3 。 0x0f。 unsigned char wl4。 switch(wl6) unsigned char wl5。 。 unsigned char wl6 case 0x0e: 。unsigned char wl7 wl7=12。 。unsigned char zw 。 break case 0x0d: 。 unsigned char zq wl7=13。 unsigned char wl7count。 bre

24、ak。 unsigned char wllen=6。 case 0x0b: 。 unsigned char getwl6 wl7=14。 bit wl7overflag。 。 break 。bit errorflag case 0x07: bit rightflag。 wl7=15。 。unsigned int second3 。 break unsigned int aa,bb。 unsigned int cc。 wl6=P3。 for(i=0。i<wl7count。 i+) /P1_1=P1_1。 if(wl7>=0) && (wl7<10) if(wl7

25、count<6) if(getwli!=wli) 。 getwlwl7count=wl7 wl3wl7count+2=19。 i=wl7count。 。 wl7count+ if(wl7count=6) errorflag=1。 。 wl7count=6 else if(wl7count>6) rightflag=0。 wl7count=6。 /wl7 。wl7overflag=1second3=0。 overflow goto a。 else if(wl7=12)/delete wl7 errorflag=0。 if(wl7count>0) rightflag=1。 a:

26、i=wl7count。 。 wl7count- getwlwl7count=0。 wl6=wl6 & 0x0f。 while(wl6!=0x0f) 。 wl3wl7count+2=16 。 wl6=P3 else wl6=wl6 & 0x0f。 wl7overflag=1 。 wl7overflag=0 /? else if(wl7=15)/enter wl7 P3=0xff。 if(wl7count!=wllen) 。 P3_5=0 wl6=P3。 。 errorflag=1 wl6=wl6 & 0x0f。 。 rightflag=0 if (wl6!=0x0f) 。

27、 second3=0 。i>0 for(i=10。i-) else 。j-)。j>0。 for(j=248 wl6=P3。 wl7overflag=1。/wl7 overflow 。 wl6=wl6 & 0x0f if (wl6!=0x0f) else wl6=P3。 if(wl7=12)/delete wl7 wl6=wl6 & 0x0f。 switch(wl6) if(wl7count>0) case 0x0e: wl7count-。 wl7=11。 break。getwlwl7count=0。 case 0x0d: wl7=3。wl3wl7count+2

28、=16。 break。 case 0x0b: else wl7=6。 break。 wl7overflag=1。 case 0x07: wl7=9。 break。 else if(wl7=15)/enter wl7 wl6=P3。 if(wl7count!=wllen) /P1_1=P1_1。 if(wl7>=0) && (wl7<10) errorflag=1。 if(wl7count<6) rightflag=0。 second3=0。 getwlwl7count=wl7。 else 。wl3wl7count+2=19 。 for(i=0 i+) i<wl7count。 。 wl7count+ if(wl7count=6) if(getwli!=wli) wl7count=6。 else if(wl7count>6) i=wl7count。 。 wl7count=6 。errorflag=1 break。 rightflag=0。 case 0x0d: wl7=

温馨提示

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

最新文档

评论

0/150

提交评论