基于STC89C52的电子密码锁

上传人:靓*** 文档编号:53837987 上传时间:2022-02-11 格式:DOCX 页数:15 大小:136.62KB
收藏 版权申诉 举报 下载
基于STC89C52的电子密码锁_第1页
第1页 / 共15页
基于STC89C52的电子密码锁_第2页
第2页 / 共15页
基于STC89C52的电子密码锁_第3页
第3页 / 共15页
资源描述:

《基于STC89C52的电子密码锁》由会员分享,可在线阅读,更多相关《基于STC89C52的电子密码锁(15页珍藏版)》请在装配图网上搜索。

1、如文档对你有用,请下载支持!基于STC89C5册电子密码锁目录一、简介2二、设计任务与要求.3三、所用芯片.3四、对应的管脚.4五、键盘矩阵扫描7六、电路原理图.8七、流程图9八、下载图10九、程序代码11十、心得体会.19一、简介电子密码锁是现代生活中常用的加密工具。它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是的智能电子密码锁;不仅具有电子密码锁的功能”还可引人智能化管理功能,从而使密码锁具有更离的安全性和可靠性。电子密码锁通常使用ARMF口单片机控制,单片机相对AR棋现较为简单,功能较为完善,因此使用单片机控制较多。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据

2、处理能力的中央处理器CPLM机存储器RAM只读存储器ROM多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。二、设计任务与要求根据设定好的密码(456),采用矩阵键盘输入功能。每输入一位密码,对应的LED灯亮。当输入的密码完全正确时,第八位LED灯亮;当输入的密码错误时,第七位LED灯亮,且当密码连续三次输入错误时,第六位LED灯亮,键盘锁闭。三、所用芯片STC89C52RC在本实验中用到的是 STC89C52R单片机。STC89C52如文档对你有用,请下载支持!是一种低功耗、

3、高性能CMOS8:微控制器,具有系统可编程8K字节闪烁可编程可榛除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C5为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,512字节RAM32位I/O口线,看门狗定时器,MAX81CM位电路,内置4KBEEPROM3个16位定时器/计数器,1个6向量2级中断结构,全双工串行口。另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式

4、下,CPU停止工作,允许RAM定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz6T/12T可选。四、对应的管脚LED灯端口对应在 STC89C52S片上上是P1 口;如文档对你有用,请下载支持!矩阵键盘与STC89C52芯片的P3_P3_3直接相连;如下图所示:芯片STC89C52LED电路4*4键盘矩阵五、键盘矩阵扫描确定矩阵式键盘上何键被按下的方法有高低电平翻转法和线反转法(或者称为行列翻转法)。高低电平翻转法:首先让P1口高四位为1,低四位为0,。若有按键按下,则高四位中会有一个1

5、翻转为0,低四位不会变,此时即可确定被按下的键的行位置。然后让P1口高四位为0,低四位为1,。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。线反转法(或者称为行列翻转法):首先,让单片机的行全部输出0,列全部输出1,读取列的值(假设行接P3口的高四位,列接低四位)。即P3=0x0f;此时读列的值,如果有键按下,则相应的列读回来的值应该为低。譬如此时读回来的值为0x0e;即按键列的位置已经确定。这时反过来,把行作为输入,列作为输出,即P0=0xf0;知道了一个按键被按下的行和列的位置,那么就可以肯定确定它的位置了。我们把读回来的行值和列值进行或运算。即

6、0xe0|0x0e即0xee。那么0xee就是我们按下的按键的键值了。本试验中应用的是行列反转法。六、电路原理图密码锁开锁电路原理图七、流程图八、下载图九、程序代码如文档对你有用,请下载支持!#include#defineSCANPORTP3UnsignedcharKey44=0x00,0x01,0x02,0x03,0x10,0x11,0x12,0x13,0x20,0x21,0x22,0x23,0x30,0x31,0x32,0x33;/所用键盘位置unsignedintlock_num=456;/初始密码unsignedintinput_num=0;/输入数字unsignedcharsig_n

7、um=0;/支持的输入次数unsignedcharlock=0;/密码输入错误次数sbitP1_0=P1A0;sbitP1_1=P1A1;sbitP1_2=P1A2;sbitP1_5=P1A5;sbitP1_6=P1A6;sbitP1_7=P1A7;/各个灯所对应的管脚voiddelay(unsignedintz)unsignedintx,y;for(x=z;x0;x-)for(y=110;y0;y-);延时子程序voidmain()unsignedcharrow=0;unsignedcharline=0;unsignedcharstate=0;unsignedcharWhichKey=0x4

8、4;/(放在程序中间是错误的)P1=0xff;/灯全灭while(1)SCANPORT=0x0F;state=SCANPORT&0x0F;if(state!=0x0F)如文档对你有用,请下载支持!delay(5);state=SCANPORT&0x0F;if(state!=0x0F)switch(sig_num)case0:sig_num=1;P1_0=0;break;/按下第一个数字,第一个灯亮case1:sig_num=2;P1_1=0;break;/按下第二个数字,第二个灯亮case2:sig_num=0;P1_2=0;break;/按下第三个数字,第三个灯亮switch(state)c

9、ase0x0E:line=0;break;case0x0D:line=1;break;如文档对你有用,请下载支持!case0x0B:line=2;break;case0x07:line=3;break;default:line=5;/行扫描SCANPORT=0xFF;SCANPORT=0xF0;state=SCANPORT&0xF0;switch(state)case0xE0:row=0;break;case0xD0:row=1;break;case0xB0:row=2;break;case0x70:row=3;break;default:row=5;/列扫描WhichKey=Keyliner

10、ow;if(WhichKey=0x33)if(lock_num=input_num)P1_7=0;input_num=0;/输入密码和原始密码匹配时,第八个灯亮elselock+=1;P1=0xff;P1_6=0;input_num=0;/输入密码和原始密码不匹配时,第七个灯亮if(lock=3)如文档对你有用,请下载支持!P1_5=0;/当三次输入密码错误时,第六个灯亮if(WhichKey=0x23)input_num=0;switch(WhichKey)case0x31:input_num=input_num*10+0;break;/键盘的Ocase0xO0:input_num=inpu

11、t_num*10+1;break;如文档对你有用,请下载支持!case 0x12:input_num =/键盘的1/键盘的2case0x01:input_num=input_num*10+2;break;/键盘的3case0x02:input_num=input_num*10+3;break;/键盘的4case0x10:input_num=input_num*10+4;break;case0x11:input_num=input_num*10+5;break;/键盘的5如文档对你有用,请下载支持!input_num*10+6;break;/键盘的6case0x20:input_num=inpu

12、t_num*10+7;break;/键盘的7case0x21:input_num=input_num*10+8;break;/键盘的8case0x22:input_num=input_num*10+9;break;/键盘的9delay(200);/延时while(lock=3);/连续三次输入错误时键盘锁闭十、心得体会通过本次单片机的课程设计我对所学知识有了更加深刻的认识,对单片机及C语言有了更加深入的理解,在课程设计过程中,我遇到了很多困难,无论是程序设计方面的,还是调试下载方面的问题,但通过不断的尝试和老师的指导,这些问题终于一一得到解决。同时也了解了在程序编写的时候容易出现的问题。在程序

13、编写开始时分不清那个管脚与那个管脚相连,但通过学习单片机原理图,渐渐明白了各个管脚并不是独立存在的,而是各个模块与单片机管脚相连。通过一些简单程序的试验,使我明白了各个模块的使用方法及程序的编写。虽然困难重重,但结果是喜人的,当我看到自己的设计结果时,内心的喜悦和成就感是无以名状的。通过课程设计全方位的培养和考察我们解决问题和处理是基于理论关系的能力,在设计编程到最后实现功能的过程中,我们必须经过思考。我们必须在短期内锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。这次课程设计让我学到的不只是更多相关的知识,还让我了解到了努力、坚持的重要性。也许在坚持一点点成功就是属于你的。同时也让我了解到同学间团结协作,互帮互助的作用,或许是一个不经意的提点就会让你收益匪浅。由此可见,课程设计的意义是十分重大和深远的。不仅丰富了我们的知识锻炼了我们的动手能力,还给以我们生活的提点,展示自己的平台。今后,我会更加努力学习更多专业知识,不断提高自己的专业素质,把自己的综合水平提升一个高度,争取不断做出新而实用的设计。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!