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

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上单片机原理与应用技术课程设计报告题目:基于单片机控制的电子密码锁专业班级:_应教112 _姓名:_ _时 间:_ _指导教师:_ _2014年 6 月 20日电子密码锁设计任务书1设计目的与要求(1)状态显示功能:锁定状态时系统用3位数码管显示OFF,用3位数码管显示成功开锁次数;成功开锁时用3位数码显示888,用3位数码管显示成功开锁次数。 (2)密码设定功能:通过一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),同时系统掉电后能自动记忆和存储密码在系统中。 (3)报警和加锁功能:密码的输入时间超过12秒或连续3次输入失败,声音报警同时锁定系统

2、,不让再次输入密码。此时只有使用管理员密码方能对系统解锁。(4)扩展功能:增加遥控控制功能。2设计内容 (1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。4答辩 在规定时间内,完成叙述并回答问题。基于单片机控制的电子密码锁班级:应教112 姓名:袁文浩摘要: 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性

3、即大打折扣。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。 本文从经济实用的角度出发,采用台湾宏晶公司的单片机STC89C52作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、数码管显示、报警、开锁等,用C语言编写的主控芯片控制程序,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。 这种密码锁的电路设计具有防试探按键输入、智能控制上锁、开锁、报警、修改密码等多种功能。密码长度可变、保密性强、灵活性高、应用日益广泛。关键词:密码锁、STC89C52、Keil、报警、长度

4、可变1 引言电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。4) 无活动零件,不会磨损,寿命长。5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。2

5、总体设计方案2.1 设计思路本设计采用单片机为主控芯片,结合外围矩阵键盘及显示电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次或者输入时间超过12秒将报警并锁定键盘禁止再次输入。密码可以有用户自己修改设定,密码长度为1至16位,锁打开后才能修改密码。修改密码之前必须按重置键,修改密码之后必须按确定键,以防止误操作。由于密码长度的不确定性增加的安全系数。为了增强实用性,密码锁还应加入管理员功能,当密码锁键盘被锁定后可由管理员输入密码解锁,然后重新设置密码。2.1.1 具体实施方案本设计可分为单片机主控部分、

6、电源部分、4×4键盘、显示部分、声音报警部分(1) 电源部分采用常见的7.4V锂电池经过降压后接入电路(2) 单片机主控部分采用市场上比较低廉的STC89C52,含有32个I/O口用以支持键盘扫描、数码显示及声音报警电路的工作。(3) 4×4键盘采用常见12×12×9轻触按键组成。(4) 声音报警部分采用5V直流蜂鸣器及PNP三极管S8550构成。2.2 设计方框图数码管显示4×4键盘5V直流电源声音报警STC89C52单片机最小系统图2.1设计方框图3 设计原理分析3.1 电源电路的设计电源部分使用7.4V锂电池通过7805稳压滤波后得到电路

7、图如下:图3.1直流电源的设计3.2 单片机控制电路的设计单片机控制电路主要有外部12MHz无源晶振及复位电路组成的最小系统构成,原理图如下:图3.2单片机最小系统3.3 4×4键盘电路的设计键盘电路由16个12×12×9轻触按键按4行4列组成,原理图如下:图3.3键盘电路的设计3.4数码管显示电路的设计数码管显示电路由1个3位一体数码管,7个470限流电阻和3个510上拉电阻构成,原理图如下:图3.4数码管显示电路的设计3.5 声音报警电路的设计声音报警电路由1个PNP三极管、1个1K限流电阻和1个5V直流蜂鸣器组成,原理图如下:图3.5声音报警电路的设计4 结

8、束语通过这次课程设计,无论从选题到定稿,从理论到实践都使我学到了很多东西,它不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力参考文献1 潘永雄.单片机原理及应用(第二版).电子工业出版社,20092 高玉芹.单片机原理与应用及C51编程技术.机械工业出版社,20113 杨亭 祁伟.单片机C51程序设计教程与实验.北京航空航天大学出版社,20064 何立民.MSC-51系列单片机应用系统设计

9、.北京航空航天大学出版社,1993附录1:系统仿真图附录2:系统实物图附录3:系统程序#include"reg51.h"/#include"STC89C51RC_EEPROM.h"sbit buzzer=P37;static unsigned char password_bit,key,confirm,cancel,close_wireless,open_wireless, Administrator,reinstall;static unsigned char succesful_count,fault_count,i;static unsigned

10、int time_count;unsigned char out_data=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;data unsigned char password_string=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;data unsigned char password=1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0;data unsigned char Administrate_password=8,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0;/*/void

11、 Delay(int n) char t; while(n-)for(t=0;t<120;t+);/*/void data_init(void)password_bit=0;key=0;confirm=0;cancel=0;close_wireless=0;open_wireless=0; Administrator=0;reinstall=0;/*/void key_decide(void) /按键识别 if(i>15)i=0; P1=0x7f; if(P1=0x77)password_bit=3;Delay(500);password_stringi=password_bit;

12、i+;TR0 = 1;/“3”键 if(P1=0x7b)password_bit=7;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/"7"键 if(P1=0x7d)cancel=1;Delay(500);/“取消”键 if(P1=0x7e)close_wireless=1;Delay(500);/“关闭无线”键 P1=0xbf; if(P1=0xb7)password_bit=2;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“2”键 if(P1=0xbb

13、)password_bit=6;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“6”键 if(P1=0xbd)password_bit=9;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“9”键 if(P1=0xbe)open_wireless=1;Delay(500);/“开启无线”键 P1=0xdf; if(P1=0xd7)password_bit=1;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“1”键 if

14、(P1=0xdb)password_bit=5;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“5”键 if(P1=0xdd)password_bit=8;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“8”键 if(P1=0xde)Administrator=1;Delay(500);/“管理员”键 P1=0xef; if(P1=0xe7)password_bit=0;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/

15、“0”键 if(P1=0xeb)password_bit=4;Delay(500);password_stringi=password_bit;i+;TR0 = 1;/“4”键 if(P1=0xed)confirm=1;Delay(500);TR0 = 0;/“确认”键 if(P1=0xee)reinstall=1;Delay(500);/“重设”键/*/void printf_data(char *printf_dat)/数码显示 P0=printf_dat0; P2=0x01; Delay(2); P2=0x00; P0=printf_dat1; P2=0x02; Delay(2); P2

16、=0x00; P0=printf_dat2; P2=0x04; Delay(2); P2=0x00;/*/void printf_off(void) /显示OFFchar printf_dat3=0xa3,0x8e,0x8e;printf_data(printf_dat);/*/void printf_888(void)/显示888char printf_dat3=0x80,0x80,0x80;printf_data(printf_dat);/*/void printf_0_0(void)/显示0_0char printf_dat3=0x9c,0xf7,0x9c;printf_data(pri

17、ntf_dat);/*/void printf_count(unsigned int d) / 显示计数值unsigned char k;char printf_dat3=0x00,0x00,0x00;k=d/100;if(d<100)k=10;printf_dat0=out_datak;k=d/10%10;if(d<10)k=10;printf_dat1=out_datak;k=d%10;printf_dat2=out_datak;printf_data(printf_dat);/*/void password_string_reset() /输入密码复位 unsigned ch

18、ar k; for(k=0;k<15;k+)password_stringk=0;/*/void password_reset() /原始密码复位 unsigned char k; for(k=0;k<=15;k+)passwordk=0;/*/int password_decide() /密码判断unsigned char k;for(k=0;k<=15;k+)if(password_stringk!=passwordk)return 0;break; return 1;/*/int Administrator_password_decide() /管理员密码判断unsig

19、ned char k;for(k=0;k<=15;k+)if( password_stringk!=Administrate_passwordk)return 0;break; return 1;/*/void password_update(void)/密码更新unsigned char k;for(k=0;k<=15;k+)passwordk=password_stringk; /*/void cancel_decide(void) if(cancel=1) /”取消“键按下 password_string_reset();i=0;time_count=0;cancel=0;r

20、einstall=0;/*/void password_write(void)/char addrH=0x20,addrL=0x00;/char n;/STC89CXX_EEPROM_Erase(0x20);/for(n=0;n<=15;n+)/STC89CXX_EEPROM_Char_Write(addrH,addrL ,passwordn);/addrL=addrL+;/*/void password_read(void)/char addrH=0x20,addrL=0x00;/char n;/for(n=0;n<=15;n+)/passwordn=STC89CXX_EEPRO

21、M_Char_Read(addrH,addrL);/addrL=addrL+;/*/void confirm_decide(void)unsigned int n;if(fault_count<3) /错误次数小于3次if(confirm&&reinstall=0) /"确认"键按下TR0 = 0;/停止计数if(time_count<1200)/时间小于12Sif(password_decide() /密码正确key=1;succesful_count+;password_string_reset();for(n=0;n<100;n+)p

22、rintf_888();else /密码错误key=0;fault_count+;password_string_reset();for(n=0;n<100;n+)printf_off();i=0;time_count=0;confirm=0;/*时间大于12S*/else i=0;key=0;fault_count+;password_string_reset();for(n=0;n<100;n+)printf_off();time_count=0;confirm=0;else buzzer=0; /开启蜂鸣器/*/void reinstall_decide(void)unsig

23、ned int n;if(reinstall&&key)/“重置”键按下TR0 = 0;password_string_reset();i=0;while(key)key_decide();if(confirm=1)password_reset();password_update();key=0;reinstall=0;confirm=0;time_count=0;password_string_reset();i=0;/password_write();for(n=0;n<100;n+)printf_0_0();cancel_decide();/*/void Admin

24、istrator_decide(void)unsigned int n;if(Administrator)/“管理员”键按下TR0 = 0;i=0;password_string_reset();while(1)key_decide();if(confirm=1)if(Administrator_password_decide()password_reset();password_string_reset();for(n=0;n<100;n+)printf_888();buzzer=1;i=0;Administrator=0;confirm=0;fault_count=0;/succesful_count=0;cancel_decide();break;elsei=0;Administrator=0;confirm=0;break;/*/void InitTimer0(void) TMOD = 0x01; TH0 = 0xD

温馨提示

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

评论

0/150

提交评论