基于51单片机密码锁课程设计报告资料

上传人:w****i 文档编号:92513222 上传时间:2019-07-10 格式:DOC 页数:29 大小:552.57KB
返回 下载 相关 举报
基于51单片机密码锁课程设计报告资料_第1页
第1页 / 共29页
基于51单片机密码锁课程设计报告资料_第2页
第2页 / 共29页
基于51单片机密码锁课程设计报告资料_第3页
第3页 / 共29页
基于51单片机密码锁课程设计报告资料_第4页
第4页 / 共29页
基于51单片机密码锁课程设计报告资料_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于51单片机密码锁课程设计报告资料》由会员分享,可在线阅读,更多相关《基于51单片机密码锁课程设计报告资料(29页珍藏版)》请在金锄头文库上搜索。

1、一.设计目的在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需要携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为了满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少,安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电

2、路技术的发展,特别是单片机的问世,出现了带微处理器的只能密码锁,它除了具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误就有提示,为了提高安全性,当密码输入错误次将报警。密码可以由用户自己修改设定,锁开后才能修改密码。修改密码前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。二设计要求和方案选择1、 方案:用AT89C52设计的多功能密码锁。以单片机作为微控制器,可以实现基于以上优点,

3、按键有效指示、输入错误、控制开锁、错误报警、密码修改等功能,工作稳定可靠,保密性高,实用性强。AT89C52晶振电路密码存储复位电路键盘输入开锁电路报警电路显示电路电源输入2、 电子密码锁总体设计三硬件部分AT89C52简介:单片机AT89C52简介AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(EPROM)和128bytes的随机存取数据序存器(RAM),器件采用ATMEL公司的高密度/非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,AT89C52单片机

4、为许多嵌入式控制系统提供了一种灵活行高且价廉的方案。主要特性: 与MCS-51 兼容 4K字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0Hz-24KHz 三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线AT89C52 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路1. 总电路图 2. 键盘电路按键与家庭电话式的按键方式3. 复位电路4. 晶振电路5. 显示电路显示容量芯片工作电压工作电流字符尺寸16*2个字符4.55.5V2.0mA(5v)3.95*4.35mm时刻显示输入输出的内容以及操作过程。6

5、. 报警电路当输入密码错误次数大于等于3次时,会发出声响报警。7. 开锁电路四软件设计1.程序设计流程图修改密码输入新密码修改密码键上锁上锁键判断按键结束开锁正确?输入密码开始2.程序代码#include #include#define LCM_Data P0#define uchar unsigned char #define uint unsignedint#define w 6/定义密码位数sbit lcd1602_rs=P25;sbit lcd1602_rw=P26;sbit lcd1602_en=P27;sbitScl=P34;/24C02串行时钟sbitSda=P35;/24C02

6、串行数据sbit ALAM = P21;/报警sbit KEY = P20;/开锁sbitopen_led=P22;/开锁指示灯bit operation=0;/操作标志位bit pass=0;/密码正确标志bit ReInputEn=0;/重置输入充许标志bit s3_keydown=0;/3秒按键标志位bit key_disable=0;/锁定键盘标志unsigned char countt0,second;/t0中断计数器,秒计数器void Delay5Ms(void);unsigned char code a=0xFE,0xFD,0xFB,0xF7; /控盘扫描控制表unsigned

7、char code b=0123456789;unsigned char code start_line= password: ;unsigned char code name = =Coded Lock=; /显示名称unsigned char code Correct = correct ;/输入正确unsigned char code Error = error ; /输入错误unsigned char code codepass= pass ; unsigned char code LockOpen= open ;/OPENunsigned char code SetNew = Set

8、NewWordEnable;unsigned char code Input = input: ;/INPUTunsigned char code ResetOK = ResetPasswordOK ;unsigned char code initword= Init password.;unsigned char code Er_try= error,try again!;unsigned char code again= input again ;unsigned char InputData6;/输入密码暂存区unsigned char CurrentPassword6=1,3,1,4,

9、2,0; /当前密码值unsigned char TempPassword6;unsigned char N=0;/密码输入位数记数unsigned char ErrorCont;/错误次数计数unsigned char CorrectCont;/正确输入计数unsigned char ReInputCont; /重新输入计数unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延时=void Delay5Ms(void)unsignedintTempCyc = 5552;while(TempCyc-);/=400ms延时=void Delay40

10、0Ms(void)unsigned char TempCycA = 5;unsignedintTempCycB;while(TempCycA-) TempCycB=7269;while(TempCycB-); /=24C02=void mDelay(uint t) /延时 uchari;while(t-)for(i=0;i125;i+);void Nop(void) /空操作_nop_();_nop_();_nop_();_nop_();/*起始条件*/void Start(void)Sda=1;Scl=1;Nop();Sda=0;Nop(); /*停止条件*/void Stop(void)S

11、da=0;Scl=1;Nop();Sda=1;Nop();/*应答位*/voidAck(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向应答位*/voidNoAck(void)Sda=1;Nop();Scl=1;Nop();Scl=0; /*发送数据子程序,Data为要求发送的数据*/void Send(uchar Data)ucharBitCounter=8;uchar temp;dotemp=Data;Scl=0;Nop();if(temp&0x80)=0x80)Sda=1;elseSda=0;Scl=1;temp=Data1;Data=temp;BitCou

12、nter-;while(BitCounter);Scl=0;/*读一字节的数据,并返回该字节值*/uchar Read(void)uchar temp=0;uchar temp1=0;ucharBitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1)temp1=temp1;temp=temp1;BitCounter-;while(BitCounter);return(temp);voidWrToROM(uchar Data,ucharAddress,ucharNum)uchari;uchar *PData;PData=Data;for(i=0;iNum;i+) Start();Send(0xa0);Ack();Send(Address+i);Ack();Send(*(PData+i);Ack();Stop();mD

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号