欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    根据AT24C02电子密码锁的设计.docx

    • 资源ID:7833729       资源大小:848.53KB        全文页数:31页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    根据AT24C02电子密码锁的设计.docx

    1、根据AT24C02电子密码锁的设计单片机应用课程设计设计题目:基于AT24C02电子密码锁的设计1. 设计任务基本要求:采用AT24C02与单片机STC89C52相结合设计电子密码锁,然后通过矩阵键盘按键进行密码的输入、清除、更改、开锁等功能。2. 系统总体方案设计2.1 各个模块方案讨论2.1.1 芯片选择由于设计的是电子密码锁,而单片机AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号

    2、IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手

    3、信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。所以我们以此单片机为核心,采用AT24C02作为储存密码芯片,利用单片机进行控制,外加显示电路和键盘电路,即构成一个基本的电子密码锁系统。2.1.2 显示器的选择LCD1602具有微功耗、体积小、显示内容丰富、超薄轻巧,对比度可调、内含复位电路、提供各种控制命令等特点,完全满足本次设计的需要,因此,选择LCD1602作为显示器进行使用。2.2 总体方案设计密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:1、密码输入功能:插上电源后,第一次使用或忘记密码时可以用111111对其密码初始化,L

    4、CD提示输入密码,输入密码时在1602LCD上显示“*”每输入一个数字,LCD上向右移一格,同时“*”加一个。值到输入6个“*”为此,若一次性输入大于6个密码,则只保留前6位密码,按“确定”生效。若按取消键,锁关闭,所有输入清除错误。输入计数达三次时,报警并锁定键盘 。2、密码更改功能:密码锁在打开的状态再次输入原密码,会有提示输入新密码,输入新密码后按修改键再次输入新密码后就能成功修改密码(初始密码是6个1 )。3、当密码输入成功后,或者密码修改成功后,LCD上有提示成功字符LED灯亮,同时蜂鸣器响两声作为提示。AT24C02电子密码锁总体设计方案如图1所示。图1 总体设计方案3. 系统硬件

    5、电路设计3.1 单片机最小系统单片机是电子时钟系统的主控制器。其最小系统主要由STC89C52单片机、晶振电路及单片机复位电路组成。晶振系统由两个30pf的陶瓷电容和一个12MHz的晶振组成,分别接在XTAL1、XTAL2上,在单片机内部,这两个端口是一个反相放大器的输入端,这个放大器构成了片内振荡器,它决定了单片机的时钟周期。单片机有一个复位引脚RST,高电平有效,只要RST保持高电平,单片机将循环复位,复位期间,ALE、PSEN输出高电平。RST从高电平变为低电平之后,PC指针变为0000H,使单片机从程序存储器地址为0000H的单元开始执行。当单片机执行程序出错或进入死循环时,也可按复位

    6、按钮重新启动。单片机最小系统如图2所示。图23.2 AT24C02储存密码电路.为了保存用户设置的密码,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的T0、T1端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;E0、 E1、E2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。该电路要注意的是SCL、SDA必须加上一上接电阻,阻值为4.7K。用户设置的密码存放在ST24C02中,当需要更改或读取用户密码时,只需对ST24C02里的数据更改或读取。ST24C02储存密码电路如图3所示。图33.3 矩阵

    7、键盘电路矩阵键盘电路主要作用就是输入密码,它由行线和列线组成,按键位于行、列的交叉点上,行列分别连接到按键开关的两端。无按键按动作时列线处于高电平状态;有按键按下时,交点的行线和列线相通,列线电平状态将由与此列线相连的行线电平决定。行线电平如果低,则列线电平为低;行线电平如果为高,则列线电平也为高。这是识别矩阵式键盘按键是否被按下的关键所在。由于矩阵键盘中行、列线为多键公用,各按键均影响该键所在的行和列的电平,所以必须将行、列线信号配合起来作适当的处理,才能确定闭合键所在的位置。矩阵式键盘节省了好多的I/O口,适用于按键数量比较多的场合。本设计的4*4键盘即采用矩阵式键盘。矩阵键盘电路图如图4

    8、所示图43.4 液晶显示电路1602的引脚功能:第1脚:为地电源。第2脚:VCC接5V正电源。第3脚:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:

    9、D0D7为8位双向数据线。第1516脚:15脚接VCC,16脚接地。1602电路图如图5所示。图54 系统软件设计由于单片机是可编程控制器,故采用C语言对单片机进行程序的编写。主程序主要由矩阵键盘程序、1602液晶屏程序及AT24C02程序组成。4.1 主程序流程图图6上图6为主程序流程图。开始先初始化,然后屏幕显示password先扫描按键,确认是否可以按键按出密码,如果没有按键按下,则重新扫描按键,若有键按下则按下修改键并保存密码就会出现新的密码,若不按下修改键则还是原来刚设置的初始密码,按下输入键并输入密码,不按下输入键则重新回到扫描按键步骤,若密码正确则开锁。密码错误则报警显示错误。4

    10、.2 子程序流程图4.2.1 AT24C02 子程序流程图图7图7展示了AT24C02的一个工作流程:首先是对AT24C02进行初始化,方便密码的输入,当输入的密码正确,就会解锁,显示屏显示open,否则显示error并重新输入密码。 4.2.2 1602子程序流程图 图81602显示器的工作流程图展示了1602的工作流程:启动时,首先对1602进行初始化,然后检测有没有数据写入,当有数据写入时,1602便读出数据并显示,没有数据写入时,1602就一直处于等待中,直至有数据写入。1602子程序流程图如图8所示。5 实物调试5.1实物性能分析用KEIL编写程序软件编写程序、经过Proteus仿真

    11、软件仿真调试之后,确认了此系统可正常运行,在这样的前提下,我们利用一个单片机最小系统、一块用电路板焊接的模块和一个1602液晶显示屏完成了第一次实物仿真。图9图9界面显示为输入密码,这时我们按下按键输入密码。当我们输入密码时,下图为密码正确的实物图,如图10所示。图10当密码输入正确时,显示屏就会显示OPEN。若密码输入错误,下图为密码输入错误的实物图,如图11所示。图11当我们输入错误的密码时,显示屏就会显示error。 下图为密码修改成功的实物图,如图12所示。图12当密码修改成功时,显示屏就会显示RestPasswordOK。6 心得体会通过此次课程设计,我重新把单片机及相关知识联系在了

    12、一起虽然掌握的知识不是很多,但通过查找资料我还是对单片机有了很好的了解和掌握。在设计中我才发现单片机虽然体积小但是功能很强大,在生活中很多地方都可以用到它。单片机这门学科博大精深,在以后的学习中只有多看书,理论与实践结合才能把这门课掌握好。掌握了LCD的使用方法与编程。同时我也体会到合作的好处。让我懂得了如何合作,对不同看法发表自己的意见。此次设计中最要的一点是,让我知道了,理论联系实践的好处。不管理论学的再怎么好都必须联系实践,只有在实践中我们才会更加懂得如何运用自己的所学,在实践中将自己的知识实物化。理论联系实践是我们获取知识的最佳途径。参考文献1谭浩强主编. C程序设计题解与上机指导(第

    13、3版)M. 北京,清华大学出版社,2005.16-24 2谢维成 杨家国 董秀成,单片机原理与应用及C51程序设计(第2版)M,北京,清华大学出版社,2009.7.25-36附录1(1) 系统总电路图 系统总电路图,如图12所示。图13(2) 系统仿真图系统仿真图,如图13所示。图14(3) PCB板 设计使用的PCB如图14所示图15附录2程序清单#include #include #define LCM_Data P0 #define uchar unsigned char #define uint unsigned int /#define Busy 0x80 /用于检测LCM状态字中的

    14、Busy标识 #define w 6 /定义密 码位数sbit lcd1602_rs=P25; sbit lcd1602_rw=P26; sbit lcd1602_en=P27; sbit Scl=P34; /24C02串行时钟 sbit Sda=P35; /24C02串行数据 sbit ALAM = P21; /报警 sbit KEY = P20; /开锁 sbit open_led=P22; /开锁指示灯 bit operation=0; /操作标志位 bit pass=0; /密码正确标志 /bit ResetEn=0; /重设密码充(允)许标志 bit ReInputEn=0; /重置

    15、输入充(允)许标志 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 char code start_line=password: ; unsigned char code name=2=Coded Lock=; /显示名称 unsigned char code Correct= corre

    16、ct ;/输入正确 unsigned char code Error= error ; /输入错误 unsigned char code codepass = pass ; unsigned char code LockOpen = open ; /OPEN unsigned char code SetNew= SetNewWordEnable; unsigned char code Input= input: ; /INPUTunsigned char code ResetOK= ResetPasswordOK ; unsigned char code initword = Init pas

    17、sword.; unsigned char code Er_try= error,try again!; unsigned char code again= input again ; unsigned char InputData6; /输入密码暂存区 unsigned char CurrentPassword6=1,1,1,1,1,1; /当前密码值 unsigned char TempPassword6; unsigned char N=0; /密码输入位数记数 unsigned char ErrorCont; /错误次数计数 unsigned char CorrectCont; /正确

    18、输入计数 unsigned char ReInputCont; /重新输入计数 unsigned char code initpassword6=1,1,1,1,1,1; /=5ms延时= void Delay5Ms(void) unsigned int TempCyc = 5552; while(TempCyc-); /=400ms延时= void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=24C

    19、02= void mDelay(uint t) /延时 uchar i; 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) Sda=0; Scl=1; Nop(); Sda=1; Nop(); /*应答位*/ void Ack(void) Sda=0; Nop(); Scl=1; Nop(); Scl=0;

    20、 /*反向应答位*/ void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*发送数据子程序,Data为要求发送的数据*/ void Send(uchar Data) uchar BitCounter=8; char temp; do temp=Data; Scl=0; Nop(); if(temp&0x80)=0x80) Sda=1; else Sda=0; Scl=1; temp=Data1; Data=temp; BitCounter-; while(BitCounter); Scl=0; /*读一字节的数据,并返回该字节值*/ uch

    21、ar Read(void) uchar temp=0; uchar temp1=0; uchar BitCounter=8; Sda=1; do Scl=0; Nop(); Scl=1; Nop(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) temp1=temp1; temp=temp1; BitCounter-; while(BitCounter); return(temp); void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *P

    22、Data; PData=Data; for(i=0;iNum;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i0;x-) for(y=110;y0;y-); /-写指令- void write_1602com(uchar com)/*液晶写入指令函数* lc

    23、d1602_rs=0; /数据/指令选择置为指令 lcd1602_rw=0; /读写选择置为写 P0=com; /送入数据 delay(1); lcd1602_en=1; /拉高使能端,为制造有效的下降沿做准备 delay(1); lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令 return;/-写数据- void write_1602dat(uchar dat) /*液晶写入数据函数* lcd1602_rs=1; /数据/指令选择置为数据 lcd1602_rw=0; /读写选择置为写 P0=dat; /送入数据 delay(1); lcd1602_en=1; /en置高

    24、电平,为制造下降沿做准备 delay(1); lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令 return; /-初始化- void lcd_init(void) write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c);/开显示不显示光标 write_1602com(0x06);/整屏不移动,光标自动右移 write_1602com(0x01);/清显示 /=将按键值编码为数值= unsigned char coding(unsigned char m) unsigned char k

    25、; switch(m) case (0x18): k=1;break; case (0x28): k=2;break; case (0x48): k=3;break; case (0x88): k=A;break; case (0x14): k=4;break; case (0x24): k=5;break; case (0x44): k=6;break; case (0x84): k=B;break; case (0x12): k=7;break; case (0x22): k=8;break; case (0x42): k=9;break; case (0x82): k=C;break;

    26、case (0x11): k=*;break; case (0x21): k=0;break; case (0x41): k=#;break; case (0x81): k=D;break; return(k); /= 按键检测并返回按键值= unsigned char keynum(void) unsigned char row,col,i; P1=0xf0; if(P1&0xf0)!=0xf0) Delay5Ms(); Delay5Ms(); if(P1&0xf0)!=0xf0) row=P10xf0; /确定行线 i=0; P1=ai; /精确定位 while(i4) if(P1&0xf0)!=0xf0) col=(P1&0xff); /确定列线 break; /已定位后提前退出 else i+; P1=ai; else return 0; while(P1&0xf0)!=0xf0); return (row|col); /行线与列线组合后返回 else return 0; /无键按下时返回0 /=一声提示音,表示有效输入= void OneAlam(void


    注意事项

    本文(根据AT24C02电子密码锁的设计.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开