ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:1.09MB ,
资源ID:17937652      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17937652.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的密码锁设计Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的密码锁设计Word格式.docx

1、随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的

2、人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。在我国电子锁整体水平尚处于国际七十年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可

3、观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。2 设计要求1、总共可以设置8位密码,每位密码值范围为18. 2、用户可以自行设定和修改密码。3、按每个密码键时都有声音提示。4、若键入的8位开锁密码不完全正确,则报警5s,以提醒他人注意。5、开锁密码连续错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。6、键入的8位开锁密码完全正确才能开锁,开锁时要有1s的提示音。7、电磁锁的电磁线圈每次通电5s,然后恢复初态。8、密码设定完毕后要有提示音。3 设计内容本设计的系统总方案设计方框图如图1所示。图1 系统总设计方框图3.1、具体硬件电路设计3.11、键盘输入模块设计:键

4、盘选用4*4矩阵,具有数字键0-9、开锁键、删除键、修改密码键和消除报警键等。4*4键盘输入模块如图2所示。图2 4*4键盘输入模块电路图3.12、单片机最小系统设计:本设计选用STC89C51单片机作为控制核心。STC89C51是具有高性能和低功耗优点的8位可编程控制器,内核具有丰富的指令集和32个通用工作寄存器,可以通过软件编程来实现电子密码锁设计中的各项要求和功能,而且单片机的 I/O 口也足够使用,硬件电路连接比较简单。单片机最小系统如图3所示3。图3 单片机最小系统电路图3.1.3、LCD显示模块设计:LCD显示模块选用LCD1602 作为主液晶显示器。此液晶显示屏能输入两行的字母或

5、数字,功能比较简单,通用性强。本次设计中要显示输入密码的数据值和各功能的提示,使用 LCD1602 液晶来作为显示模块比较直观形象。LCD显示模块如图4所示。图4 LCD显示模块电路图3.1.4、声光报警模块设计:采用声和光两种方式的双重效果进行报警,如果错误密码输入次数超过三次则报警灯闪烁而且蜂鸣器会报警,这样就能多角度进行密码错误报警。声光报警模块如图5所示。图5 声光报警模块电路图3.2、软件设计321、主程序流程图:主程序主要完成LCD初始化、检查有无按键按下、以及调用显示、密码修改程序等等。主程序流程图如图6所示。图6 主程序流程图3.2.2、LCD显示模块流程图:本系统使用LCD1

6、602实现显示,参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。在时钟界面时显示时间的运行,在密码锁界面时主要显示提示信息和输入的密码,当然,当输入密码数字时,输出不是显示数字,而是用“*”显示代替。LCD1602的部分读写控制时序程序如图7所示。图7 LCD显示模块流程图总结与致谢这一次做的电子密码锁及LCD显示。原理看似简单,但过程让我深深感受到再简单的电路图,理论与实际也会有一定的差入。在参考书原理图的基础上经过了个人的改进,让功能更完善,特别是程序的调试,

7、花的时间最多,也是最难的一个地方。通过本次设计,培养了创新意识和综合素质,更好地掌握了电子产品设计与制作的工艺和流程,提高个人基本能力、实验及设计能力和独立工作能力,基本知识更加牢固,会看图、会测量、会查资料在设计的过程和设计说明书的撰写过程中,老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。在此我向老师致以崇高的敬意和衷心的感谢!参考文献 1 李朝青,单片机原理及接口技术(简明修订版)M.北京:北京航空航天大学出版社,1998 2 李全利.单片机原理及接口技术M.高等教育出版社,2003 3 PROTEL99 SE电路设计与制板M.械工业出版社,2007 4 St

8、even F.Barrett.Daneil J.Pack.Embedded SystemM.北京:电子工业出版社,20065 周立功.LPC900系列Flash单片机应用技术J.北京航空航天大学出版社, 2004 6 黄智伟.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社, 2005 附录一:系统设计总原理图附录二:系统设计程序/*头文件*/#include intrins.h#define ulong unsigned long#define uint unsigned int#define uchar unsigned char#define scan_key_port P1 /*

9、定义矩阵按键端口*/#define lcd_data_port P0 /*定义LCD控制端口*/uchar code mun_to_char = 0123456789ABCDEF; /*定义数字跟ASCII码的关系*/uchar temp,num,flag,sum=0,r;uchar code table1= Welcome!(_);uchar code table2=/*定义数字跟ASCII码的关系*/uchar code table3=*uchar code table4=Code is wrong!uchar code table5=You are right!uchar code ta

10、ble6=The second time!uchar code table7=The last time!uchar code table8=Input new code:uchar code table9=Modify right!uchar code table10=Password:uchar code table11= Wu zi rong uchar code table12= Calling.uchar code table13= uchar code table14=Input again:uchar code table15=Modify error!uchar init_ps

11、wd8=1,2,3,4,5,6,7,8;/初始化密码uchar pswd8=0;sbit lcdrs=P17;/*定义LCD控制端口*/sbit lcdrw=P16;sbit lcden=P24;sbit Speaker_port = P27; /*喇叭控制端口*/*子函数声明*/void delay(uint z);void init();/初始化子函数void write_com(uchar com);/写指令子函数void write_data(uchar dat1);/写数据子函数void keyscan();void mima();void mima1();void delete()

12、;void delay_1ms(uchar x);/*液晶驱动*/*/*喇叭发声简单程序*/void Speaker_output() uchar i; for(i=0;i100;i+) Speaker_port = 0; delay_1ms(0.5); Speaker_port = 1; delay_1ms(1); void Speaker_output2()50;void Speaker_output3() delay_1ms(2);/*1MS为单位的延时程序*/void delay_1ms(uchar x) uchar j; while(x-) for(j=0;j0;x-) for(y=

13、110;yy-);void keyscan() uchar sccode,recode,out; scan_key_port=0xf0; /* 发全 0 的行扫描码,列线输入 */ if(scan_key_port&0xf0)!=0xf0) /* 若有键按下 */ delay_1ms(2); /*延时去抖动*/ sccode=0xfe; /*逐行扫描初值*/ while(sccode&0x10)!=0) scan_key_port=sccode; /* 输出行扫描码 */=0xf0) /* 本行有键按下 */ recode=(scan_key_port&0xf0)|0x0f; scan_key

14、_port = 0xff; /*释放按键扫描端口*/ out=(sccode)+(recode) ; switch(out) case 0xe7:num=0;flag=1;Speaker_output(); /*喇叭发出声音*/break; case 0xd7:num=1; case 0xb7:num=2; case 0x77:num=3; case 0xeb:num=4; case 0xdb:num=5; case 0xbb:num=6; case 0x7b:num=7; case 0xed:num=8; case 0xdd:num=9; case 0xbd:num=10;break; ca

15、se 0x7d:num=11; case 0xee:num=12; case 0xde:num=13; case 0xbe:num=14; case 0x7e:num=15; else sccode=(sccode1)|0x01; /* 行扫描左移一位 */ /*主程序*/void main() uchar m=0,w=0; init(); for(r=0;r15;r+) write_data(table1r);write_com(0x80+0x40);for(r=0; write_data(table11r); write_com(0x0c); do keyscan(); while(num

16、!=15);mima();while(pswdm=init_pswdm)&m=8)/密码正确 delay(200); Speaker_output3(); /*喇叭发出声音*/ keyscan(); while(flag=1&num=13); mima1();else/密码有误 m=0; write_com(0x80+0x40);14; delay_1ms(5); write_data(table4r); delay(1000);16; delay(20); write_data(table6r); mima(); while(pswdm=init_pswdm)&8)/再次比较 m+; if(

17、m=8) mima1(); else m=0; write_com(0x80+0x40); for(r=0; delay_1ms(5); write_data(table4r); Speaker_output2(); /*喇叭发出声音*/ init(); delay(20); write_data(table7r); delay(1000); mima(); while(pswdm=init_pswdm)&8)/第三次比较 m+; if(m mima1(); else init(); write_com(0x80+0x40); for(r=0; delay_1ms(100); write_data(table12r); if(flag=1&num=13) delay(100); break; else 120; delay_1ms(100); Speaker_output3(); keyscan(); else write_com(0x0c); void mima() uchar w=0;/局部变量很重要9; write_data(table10r); flag=0; write_com(0x80+9+w); if(flag=1&num=9) pswdw=num; write_data(table3w); w

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

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