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

    单片机课程设计数字密码锁.docx

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

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

    单片机课程设计数字密码锁.docx

    1、单片机课程设计数字密码锁课 程 设 计课 程 名 称: 单 片 机 原 理 与 应 用 课 题 名 称: 数 字 密 码 锁 设 计 所在 学院 名称: 湖南大学电气与信息工程学院 目录一、 前言 - 2 -二、 总体方案设计 - 3 -2.1方案论证与比较 - 3 -2.2方案选择 - 4 -三、 单元模块设计 - 4 -3.1硬件支持 - 4 -3.2功能单元模块设计 - 4 -3.2.1 开锁机构 - 4 -3.2.2 矩阵键盘设计电路 - 5 -3.2.3 声音提示电路设计 - 5 -3.2.4 显示模块设计 - 6 -四、程序设计与系统仿真 - 7 -4.1 模块介绍 - 7 -4.

    2、1.1 主程序模块 - 9 -4.1.2 密码比较判断模块 - 9 -4.1.3 键盘扫描模块 - 9 -4.1.4 修改密码模块 - 10 -五、系统功能 - 12 -六设计总结 - 12 -七、附录:源程序 - 12 -一、 前言随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。随着单片机的问世,出现了数字密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。数字密码锁通常使用ARM和单片机控制,单片机相对A

    3、RM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器 。但本设计使用移植性及可读性强的C语言编写;同时采用显示清楚、功率消耗小而且寿命长的1602A液晶显示器。从经济实用的角度出发,采用ADUC848单片机设计出一种具有密码设置、报警等功能的数字密码锁,并通过Proteus软件成功地进行了仿真。二、 总体方案设计2.1方案论证与比较方案一:以ADUC848单片机为数字密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开锁的步骤,利用AT24C02芯片实现掉电存储。图1为单片机控制密码锁的系统原

    4、理框图。LED密码校验提示图1 单片机控制密码锁的系统原理框图方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。 图2 数字逻辑控制方案数字密码锁原理框图2.2方案选择由于利用单片机灵活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。三、 单元模块设计3.1硬件支持使用的元器件有:核心芯片ADUC848、存储芯片AT24C02、液晶显示1602A、44矩阵键盘、报警蜂鸣器、发光二极管和三极管。3.2功能单元模块设计3.2.1 开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的

    5、目的。如图3所示,为密码锁开锁电路原理图。当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。否图3 密码锁开锁电路原理图3.2.2 矩阵键盘设计电路每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有MN个按键的键盘。由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数

    6、目,故使用矩阵键盘。本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。矩阵键盘设计电路图,如图4所示。键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。图4 矩阵键盘设计电路图3.2.3 声音提示电路设计声音提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。蜂鸣器电路,如图5所示。图5 蜂鸣器电路3.2.4 显示模块设计本设计中,显示电路采用1602A液晶显示器显示。如下所

    7、示,图6为1602A液晶显示器的接口示意图,表1为接口说明。图6 1602A液晶显示器的接口示意图表1 接口说明管脚序名称电平功能描述1VSS0V接地2VCC5.0V电源输入3V0LCD驱动电压输入4RSH/L寄存器选择:RS=H,选择数据寄存器;RS=L,选择指令寄存器5R/WH/L读写信号线:R/W=H,读操作;R/W=L,写操作6EH,HL使能信号7DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15BLA5.0V背光电源正极16BLK0V背光电源负极本设计中液晶串口一

    8、共用到11根导线与单片机相连, 具体连接情况如表2显示模块与MCU连接说明所示。表2 显示模块与MCU连接说明序号1602A液晶显示器引脚ADUC848单片机引脚1RS引脚P2.5(A13)2R/W引脚P2.6(A14)3E引脚P2.7(A15)4D0引脚P0.0(AD0)5D1引脚P0.1(AD1)6D2引脚P0.2(AD2)7D3引脚P0.3(AD3)8D4引脚P0.4(AD4)9D5引脚P0.5(AD5)10D6引脚P0.6(AD6)11D7引脚P0.7(AD7)四、程序设计与系统仿真4.1 模块介绍与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块

    9、、1602A液晶显示模块等。系统程序流程如图9所示。N=0x11图9 系统程序流程图4.1.1 主程序模块主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测按键;调用显示等功能。4.1.2 密码比较判断模块该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。其密码输入和比较判决流程图如图10所示。复位图10 密码输入和比较判决流程图4.1.3 键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描

    10、键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。如图11所示,为键盘扫描流程图。Y图11 键盘扫描流程图4.1.4 修改密码模块在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。图12为修改密码流程图。N图12 修改密码流程图4.1.5 1602A液晶显示模块此模块包括液晶初始化、命令的输入等。五、系统功能本设计中系统可实现功能如下:(1)通过切换,对输入的18位密码进行显示或隐藏;(2)通过发光二极管和蜂鸣器,对解密正确或者错误进行

    11、声光报警;(3)18位密码修改;(4)在密码遗失情况下,通过初始密码进行密码再设置;(5)具有1-3次的解锁次数任意设定功能;六设计总结从基本方案的制定,到硬件电路的选择,最后进行程序调试在此期间我们遇到很多困难,但经过两个人的不懈努力,终于击破了各个难点,达到的所需要的效果。在这次设计中,我们深刻认识到自身的不足缺少实战经验。与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。由于本次设计时间有限,一些设想没有完全实现,比如说:数字密码锁的网络通信扩展,人机界面智能化等。期待以后有机会对以上设想进行进一步研究实践。七、附录:源程序#include #include

    12、/*类型定义*#define uint unsigned int#define uchar unsigned char /*状态定义*#define opened 0#define new1 15#define new2 16#define succed 5#define fanin 10#define null 11#define error 12#define different 13#define tover 14/*按键定义*#define enter 10#define back 11#define trevise 12#define revise 13#define cancel

    13、14#define vain 15#define off 16#define end 17#define finish 18/*函数声明*void p_base();void p_revise();void p_new1();void p_new2();void p_trevise(); void p_show(); uchar p_scan();void p_record();void p_delay(uint f_n);void p_state(uchar f_s);uchar p_compare(uchar *f_k1,uchar *f_k2);void p_copy(uchar *f_

    14、s,uchar *f_k);/*I/O口定义*sbit p00=P00;sbit p10=P10;sbit p11=P11;sbit p12=P12;sbit p13=P13;sbit p14=P14;sbit p15=P15;sbit p16=P16;sbit p17=P17;sbit p20=P20;sbit p21=P21;sbit p22=P22;sbit p23=P23;sbit p24=P24;sbit p25=P25;sbit p26=P26;sbit p27=P27;sbit p30=P30;sbit p31=P31;sbit p32=P32;sbit p33=P33;sbit

    15、 p34=P34;sbit p35=P35;sbit p36=P36;sbit p37=P37;/*全局变量定义*uchar bot,key19,key29,save9,t4,s,min,h,mino,mint,ho,ht,n1=1,n2=1,lock,minu,sign,tov,state,n,sound,point=1, showlist=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x71,0xff,0x21,0x85,0xe1,0x7f,0x7d;uint ms;/*主函数*/void main() EA=1; /开总中断 ET0

    16、=1; /开内部中断0 ET1=0; /关内部中断1 TMOD=0x11; TH0=0xf9; /计数器0高八位 TL0=0xdb; /计数器0低八位 TR0=1; /计数器0开始计数 I2CCON=0xe8; sound=0; tov=1; /超时计数置为1 P1=0x00; /P1全置为0作为输入 if(sign!=1) p_new1(); /调用首次使用判断函数 p_base(); /调用基础解锁函数void p_base() n=0; /密码数组置首位 state=fanin; /指示管置为输入状态fanin while(1) /无限循环 if(n=0) state=fanin; el

    17、se state=n; bot=p_scan(); if(n!=0&tov=0) /判断密码数组是不是在首位,超时计数是否为0 p_state(tover); /调用指示管状态闪烁函数,置为用超时状态tover main(); /调用主函数 switch(bot) case vain: break; case enter: key1n=end; /把密码后一位置为end if(p_compare(key1,save) /判断输入的密码是否与原密码相同 p_state(succed); /调用指示管状态闪烁函数,置为成功状态succed lock=0; /锁定键盘计数置为0 point=1; /

    18、多次密码输入错误计数 state=opened; /指示管置为输入状态opened while(1) bot=p_scan(); switch(bot) case off: main(); break; case back: while(1) bot=p_scan(); switch(bot) case off: main(); break; case enter: main(); break; else p_state(error); /调用指示管状态闪烁函数,置为用错误状态error p_record(); /调用错误计数函数 main(); /调用主函数 break; case canc

    19、el: main(); break; case back: if(n!=0) /判断当前密码是否为首位 key1n-=end; /当前密码位置end,密码退位 break; case revise: p_revise(); break; case trevise: p_trevise(); break; default: if(n+1=9) p_state(error); main(); key1n+=bot; void p_revise() ET0=1; ET1=0; n=0; p_state(fanin); state=fanin; while(1) if(n=0) state=fanin

    20、; else state=n; bot=p_scan(); if(tov=0) p_state(tover); main(); switch(bot) case vain: break; case enter: key1n=end; if(p_compare(key1,save) lock=0; point=1; p_state(succed); p_new1(); else p_state(error); p_record(); main(); break; case cancel: main(); break; case back: if(n!=0) key1n-=end; break;

    21、case revise: p_revise(); case off: break; case trevise: p_trevise(); break; default: if(n+1=9) p_state(error); main(); key1n+=bot; void p_new1() n=0; state=new1; while(1) if(n=0) state=new1; else state=n; if(tov=0&sign=1)|(n!=0&tov=0) p_state(tover); main(); bot=p_scan(); switch(bot) case vain: brea

    22、k; case enter: key1n=end; p_new2(); break; case cancel: main(); break; case back: if(n!=0) key1n-=end; break; case revise: if(sign=1) p_revise(); break; case trevise: p_trevise(); break; default: if(n+1=9) p_state(error); main(); key1n+=bot; void p_new2() n=0; state=new2; while(1) if(n=0) state=new2

    23、; else state=n; bot=p_scan(); if(tov=0) p_state(tover); main(); switch(bot) case vain: break; case enter: key2n=end; if(p_compare(key1,key2) sign=1; p_copy(save,key2); lock=0; p_state(succed); main(); else p_state(different); main(); break; case cancel: main(); break; case back: if(n!=0) key2n-=end; break; case revise: if(sign=1) p_revise(


    注意事项

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

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




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

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开