基于AT89C51单片机的电子密码锁设计与仿真
点击链接获取Keil源码与Project Backups仿真图https://download.csdn.net/download/qq_64505944/92510428?spm1001.2014.3001.55031、功能(1)/4位密码1234(2)/有上锁清空删除确定功能(3)/正确密码亮灯显示open每错一次响铃报警(4)/键盘输入哪一个数码管显示该数字。2、压缩包构造代码与仿真常见问题、Keil源码程序、Proteus仿真图、参考文档、功能介绍、仿真代码运行、焊接事项、免费PPT模版、使用前必读。3、仿真构造AT89C51LCD液晶显示器数码管指示灯蜂鸣器按键矩阵。4、代码文件代码180行左右有注释文档3600字左右。C53主要内容设计一个单片机电子密码锁根据输入的数值判断是否正确正确显示密码正确错误时报警器发出蜂鸣。由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外还具有调电存储、声光提示等功能依据实际的情况还可以添加遥控功能。基本要求1、认真完成系统需求分析明确数据要求和处理要求2、设计出系统的概念模型画出系统流程图3、设计的硬件电路图与程序流程图4、源程序代码5、系统运行结果符合课程设计要求主要参考资料[1]李广弟等编著《单片机基础》北京航空航天大学出版社2001.[2]周爱武,汪海威,肖云.数据库课程设计[M].北京:机械工业出版社,2016[3]李光才,楼然笛《单片机课程设计实例指导》北京航空航天大学出版社,2017.完 成 期 限指 导 教师签名课程负责人签名摘要随着人们生活水平的提高如何实现家庭防盗这一问题也变的尤其的突出传统的机械锁由于其构造的简单被撬的事件屡见不鲜电子锁由于其保密性高使用灵活性好安全系数高受到了广大用户的亲呢。设计本课题时构思了两种方案一种是用以AT89c51为核心的单片机控制方案另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单而且不能满足现在的安全需求所以本文采用前一种方案。本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外还具有调电存储、声光提示等功能依据实际的情况还可以添加遥控功能。本系统成本低廉功能实用。关 键 词:单片机电子密码LED目录摘要 III1 概述 21.1 课程设计选题 21.2 项目背景 21.3课程设计环境 22 具体设计 32.1 设计分析 32.2 总体设计图与流程图设计 32.3 单片机设计图 42.4 开锁机构 52.5 按键电路设计 53 详细设计 74 仿真现象记录 134.1 密码输入错误 134.2 密码正确输入 13总结 14参考文献 151 概述1.1 课程设计选题本次课程设计我选的题目是电子密码锁。1.2项目背景随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一它所给人带来的方便也是不可否定的其中温度传感器就是一个典型的例子但人们对它的要求越来越高要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手一切向着数字化控制智能化控制方向发展。仿真测试时按下正确密码1234enter后密码正确若输入错误密码enter后蜂鸣器响起。Delete键可删除误输的数字。1.3课程设计环境Proteus是英国著名的EDA工具(仿真软件)从原理图布图、代码调试到单片机与外围电路协同仿真一键切换到PCB设计真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等2010年又增加了CORTEX和DSP系列处理器并持续增加其他系列处理器模型。它也支持IAR、keil和matil等多种编译器。2 具体设计2.1 设计分析仿真测试时按下正确密码1234enter后密码正确若输入错误密码enter后蜂鸣器响起。Delete键可删除误输的数字。采用一种是以用AT89c51为核心的单片机控制方案。利用单片机灵活编程设计和丰富的IO端口及其控制的准确性不但能实现基本的密码锁功能还能添加调电储存声光提示甚至遥控控制。AT89c51是一种带4K字节闪烁可编程可擦除只读存存器俗称单片机。AT89C51单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造 AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本设计以at89c51为核心发光二极管LED灯矩阵键盘、蜂鸣器相连。以下主要介绍以AT89c51为核心的单片机和按键电路。2.2 总体设计图与流程图设计图2-1流程图图2-2总体设计图2.3 单片机设计图图2-3 单片机设计图图2-4 单片机设计实现2.4 开锁机构通过单片机送给开锁执行机构电路驱动电磁锁吸合从而达到开锁的目的。当用户输入的密码正确时开锁成功。电路驱动和开锁两级组成。由D5、R1、T10组成驱动电路其中T10可以选择普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示由D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及可能产生的电磁干扰。T11可选用中功率的三极管如8050电磁锁的选用要视情况而定但是吸合力要足够且由一定的余量。在本次设计中基于节省材料的原则暂时用发光二极管代替电磁锁发光管亮表示开锁灭表示没有开锁。2.5 按键电路设计由于设计要求使用矩阵键盘所以本设计就采用行列式键盘同时也能减少键盘与单片机接口时所占用的I/O线的数目在按键比较多的时候通常采用这样方法。图2-4 按键图设计3 详细设计具体代码#include reg51.htypedef unsigned char u8;typedef unsigned int u16;//sbit 特殊功能位声明声明某特殊功能寄存器的一位#define key P1 //按键io口sbit fenP3^0; //蜂鸣器io口sbit rsP3^1; //LCD控制口sbit rwP3^2;sbit eP3^3;sbit ledP3^4; //LED灯io口//bit 位变量声明定义一个位变量的值u8 keyz17,j0,biao10,a10,b10,c10,d10;bit biao0;u16 zh;u8 shu[]{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};u8 zi[]{“lnput password:”};u8 num[]{“0123456789ABCDEF”};void delay(u16 i){while(i–);}/蜂鸣器/void Fen(u8 a,b) //蜂鸣器发生函数{u8 i,j;for(i0;ia;i){for(j0;j100;j){fen~fen;delay(b);}}}/LCD/void writecom(u8 com){ //LCD写指令rs0;rw0;e0;P0com;delay(5);e1;e0;}void writedat(u8 dat){ //LCD写数据rs1;rw0;e0;P0dat;delay(5);e1;e0;}void initlcd(){ //LCD初始化函数writecom(0x38); //显示模式设置writecom(0x0c);writecom(0x06);}void xian(){ //LCD显示数字函数writedat(num[keyz]);if(a10){akeyz; } //对abcd 四位数的单独赋值else if(b10){bkeyz;}else if(c10){ckeyz;}else{dkeyz;}if(j!3){j;}biao0;}/键盘/void Key(){u8 a0; //矩形键盘函数if(key!0x0f){delay(1000);if(key!0x0f){key0x0f;switch(key){case 0x07: keyz0;biao1;break;case 0x0b: keyz1;biao1;break;case 0x0d: keyz2;biao1;break;case 0x0e: keyz3;biao1;break;}key0xf0;switch(key){case 0x70: keyzkeyz;biao1;break;case 0xb0: keyzkeyz4;biao1;break;case 0xd0: keyzkeyz8;biao1;break;case 0xe0: keyzkeyz12;biao1;break;}}while((a50)(key!0xf0)){a;delay(10000);}}}void shi(){u8 i; // 按键判断函数值if(biaokeyz!15){ //判断标志位biao是否为1为1则有按键操作并且按键的值不等于1writecom(0x800x40j); //数字显示位置进行累加操作if(j0){j0;} //数字显示位置边界switch(keyz){ //switch判断按键并执行对应操作case 0:xian(); break;case 1:xian(); break;case 2:xian(); break;case 3:xian(); break;case 4:xian(); break;case 5:xian(); break;case 6:xian(); break;case 7:xian(); break;case 8:xian(); break;case 9:xian(); break;case 10:writedat(num[keyz]);j;biao0;break;case 11:writedat(num[keyz]);j;biao0;break;case 12:biao10; //重置标志位biao1上锁biao0;break;case 13:writecom(0x01); delay(1000); //全屏清除for(i0;isizeof(zi);i){writecom(0x80i);writedat(zi[i]); }j0;biao0;break;case 14: //对当前数字位删除的操作writedat(’ ‘);j–;writecom(0x800x40j);writedat(’ );biao0;break;case 15: //确认按键j;biao0;break;}}if(keyz15){ //判断按键值如果等于15便视为按下确认键writecom(0x01);delay(1000);zha1000b100c*10d; //将ABCD四位数合并并进行判断是否为正确密码if(zh1234){ //设密码为1234j0;biao11; //将biao1标志位置1便为密码正确keyz17; //使按键值跳出最大值15便不会循环显示}else{j0;biao10; // 反之密码错位keyz17;Fen(20,200); //蜂鸣器错误}zh0;a10,b10,c10,d10; //重置ABCD变量for(i0;isizeof(zi);i){writecom(0x80i);writedat(zi[i]); }}}void main(){u8 i; led1;initlcd(); //LCD初始化函数for(i0;isizeof(zi);i){writecom(0x80i);writedat(zi[i]); }while(1){Key(); //定义键盘函数shi(); //按键判断函数灯亮或报警P2shu[keyz]; //数码管显示当前输入值if(biao11){ led0; //判断标志位biao1为1则密码正确显示okwritecom(0x800x4010);writedat(‘O’);writecom(0x800x4110);writedat(‘K’); }else if(biao10){led1; //biao1为0则显示密码错误显示nowritecom(0x800x4010);writedat(‘N’);writecom(0x800x4110);writedat(‘O’);}}}4 仿真现象记录4.1 密码输入错误当密码输入错误时蜂鸣器发出报警图4-1 密码错误输入4.2 密码正确输入图4-2密码正确输入总结这次实训分三个阶段第一做电路仿真原理图第二对单片机实验板进行焊接第三电路硬件调试。每一步都很认真做了仿真还是第一次用到实际中感觉有很大的收获。一般一次成功的板子是很少的都要进过调试查错才可以得到一块完整的电路板。这一次做的电子密码锁及LCD显示。原理看似简单但过程让我深深感受到再简单的电路图理论与实际有一定的差入。在参考书的原理图经过了个人的改进让功能更完善特别是程序的调试花的时间做多也是最难的一个地方。我们最终的目的是应用而不是理论结果。我们学的理论知识都是比较先进的但是由于平常于把知识付诸于实践。通过本次设计培养了创新意识和综合素质更好地掌握了电子产品设计与制作的工艺和流程提高个人基本能力、实验及设计能力和独立工作能力基本知识更加牢固会看图、会焊接安装、会测量、会查资。回顾起此课程设计至今我仍感慨颇多从理论到实践在这段日子里能够说得是苦多于甜但是能够学到很多很多的东西同时不但能够巩固了以前所学过的知识而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的只有理论知识是远远不够的只有把所学的理论知识与实践相结合起来从理论中得出结论才能真正为社会服务从而提升自己的实际动手水平和独立思考的水平。在设计的过程中遇到问题能够说得是困难重重但可喜的是最终都得到了解决。参考文献[1]肖骁,戈文祺. 电气传动系统中单片机技术的应用解析[J]. 中国标准化,2017.[2]茅阳. 单片机技术在电气传动控制系统中的应用与研究[J]. 中国高新区,2018.[3]贾飞. 单片机技术课程中项目教学法的应用案例[J]. 张家口职业技术学院学报,2017.[4]罗东华. 互联网背景下单片机技术课程改革与建设研究[J]. 教育现代化,2017. [5]李建. 矿区智能勘测设备中单片机技术的应用[J]. 电子制作,2017.[6]闫璞,王贵锋. 基于单片机技术的室内照明光伏优化供电控制系统设计[J]. 中国新技术新产品,2018.[7]宋述林. 物联网电子产品中单片机技术的应用方式研究[J]. 现代工业经济和信息化,2017.课程设计成绩评定表评定项目 内 容 满分 评分 总分学习态度 学习认真态度端正遵守纪律。 10设计情况 认真查阅资料勤学好问提出的问题有一定的深度分析解决问题的能力较强。 40说明书质量 设计方案正确、表达清楚设计思路、实验论证方法科学合理达到课程设计任务书规定的要求图、表、文字表达准确规范上交及时。 40回答问题情况 回答问题准确基本概念清楚有理有据有一定深度。 10总成绩 采用五级分制优、良、中、及格、不及格指导教师评语签名年 月 日