ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:347.50KB ,
资源ID:9870252      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9870252.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于单片机的电子密码锁论文大学论文.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于单片机的电子密码锁论文大学论文.doc

1、大学本科生毕业设计(论文) 基于单片机的电子密码锁设计 班级: 姓名: 指导老师: 摘要 目前国内普遍使用的锁都是机械式的,这种锁结构简单、使用方便,但利用工具可轻易将其打开,这给用户带来极大的困扰和损失。本文介绍了一种基于STC89C52 单片机的电子密码锁的设计方法。该设计以STC89C52单片机为硬件核心,结合4×4 矩阵键盘电路、 LCD 显示电路、密码存储电路、开锁电路和声音报警电路等外围电路。利用单片机灵活的编程方法和丰富的I/O 端口,该系统能实现密码的输入、清除、比较

2、密码正确开锁,密码错误次数超次报警,用户修改密码等功能。 关键词:单片机;电子密码锁;矩阵键盘;声音报警 ABSTRACT At present, the widespread use of all mechanical locks, this lock structure is simple and easy to use, but easy to use tools to open it, which gives users a lot of confusion and loss.This paper introduces a design of electronic pa

3、ssword lock which is based on the SCM of STC89C52. This design uses the SCM of STC89C52 as hardware core , combining with other peripheralcircuits such as 4×4 matrix keyboard interface circuit, password storage circuit,LCD displaycircuit,unlock circuit and voice alarm circuit. Using the flexible pro

4、gramming and the rich I/O port ofthe SCM ,the system can accomplish the following functions:input ,clear or compare the password,unlock when the password is correct, alarm when the wrong enter password times is over and the user can change the password. keywords:Single-Chip Microcomputer; electron

5、ic password lock; matrix keyboard; voice alarm 目录 1 绪论 4 1.1设计的背景和意义 4 1.2 电子密码锁的国内外现状 4 1.3 电子密码锁的发展趋势 5 2 系统设计 5 2.1系统方案设计 5 2.2系统工作原理 6 3 系统硬件设计 7 3.1 STC89C52最小系统设计 7 3.1.1时钟电路设计 7 3.1.2复位电路设计 7 3.2 键盘、显示电路硬件设计 8 3.2.1键盘电路硬件设计 8 3.2.2显示电路硬件设计 9 3.3 AT24C02掉电存储单

6、元的设计 11 3.4 声光提示报警电路 12 3.4.1 报警提示电路 12 3.4.2 LED提示电路 12 4 系统软件设计 13 4.1 主程序模块 13 4.2 密码比较判断模块 15 4.3 密码修改模块 15 4.4 键盘扫描模块 16 4.5 1602A液晶显示模块 17 5 总结 18 致谢 18 参考文献 18 附录 19 1 器件清单 19 2 源程序 20 1 绪论 1.1设计的背景和意义 随着科学技术的发展和社会物质财富的日益增长,安全问题已成为人们关注的焦点 之一。而锁自古以来就是用于安全防盗的重要器件,如何制作既

7、安全可靠又使用方便的 锁是制锁工程师们长期以来研制的主题。众所周知机械锁由于结构上的局限其钥匙很容 易被仿制,很多钥匙可以互开,安全性差,且钥匙丢失后其安全性随即大打折扣。为满 足人们对锁的使用要求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。本文 从经济实用的角度出发,以STC89C52 单片机为核心,设计了一款具有自动报警功能的 电子密码锁。该密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方 便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有比较强的实 用性。 1.2 电子密码锁的国内外现状 据有关资料介绍,电子密码锁的研究从20世纪3

8、0年代就开始了,在一些特殊场所 早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就 是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用, 并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属 钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多, 例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。 20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性 提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用 还

9、局限在一定范围,难以普及,所以对它的研究一直没有明显进展。 目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广 泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我 国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以 按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生 产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国 内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力, 使电子密码锁在我国也能得到广泛应用。 1.3 电子密码锁的发

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

11、性能上都获得了大大的提高。随着大规模集成电路技术的发展,特别是单片机的问世, 出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、 专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已 在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密 要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还 存在容易丢失、损坏等缺点,再加上其成本较高,一定程度上限制了这类产品的普及和 推广。鉴于目前的技术水平与市场的接受程度,

12、电子密码锁是这类电子防盗产品的主流。 2 系统设计 2.1系统方案设计 以STC89C52单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开锁的步骤,利用AT24C02芯片实现掉电存储。图1为单片机控制密码锁的系统原理框图。 STC89C52 单片机 AT24C02存储芯片 矩阵 键盘 控制 LCD 1602A 蜂鸣器提示电路 电源模块 LED 密码校验提示 图1 单片机控制密码锁的系统原理框图 2.2系统工作原理 本系统以ST C89C52 单片机为核心,

13、 使用4 * 4 矩阵键盘作为数据输入方式, 驱动1602 显示器提示程序运行过程和开锁的步骤。本系统的密码判断过程如下:当使用者输入6 位密码后按下确认键, 单片机通过密码逐个比较, 如果输入的6 位密码和设定的密码完全相同, 那么能成功驱动开锁模拟灯(LED绿灯)将锁打开。若输入6 位密码与设定的密码不相同, 按下确认键后, 模拟灯(LED绿灯)不亮, 自动返回主界面可以重新输入。由于输入密码过程中难免输入失误, 如果密码输错, 蜂鸣器会短时报警一次, 但是系统不允许无限次地出错, 以免密码被套用, 当3 次密码输入都错误, 单片机将驱动蜂鸣器长时间报警 。 修改密码功能如下:当

14、密码输入正确后, 按下修改密码键可新设置密码。每设定一位新密码, 单片机将其送给E2PROM, 当6 位新密码都输入完毕,按确认键系统将自动回到程序开始, 重新读取密码并保存, 使用者需输入新的密码才能将锁打开。 3 系统硬件设计 3.1 STC89C52最小系统设计 3.1.1时钟电路设计 时钟电路用于产生单片机工作时所必需的时钟控制信号,常用的时钟电路有内部时钟方式和外部时钟方式。内部时钟方式电路外接两个电容和一个晶振,根据振荡频率要求的不同选用不同阻值的电容和晶振。时钟电路中的晶振震荡频率范围通常是1.2MHz~12MHz,STC89C52常选择6MHz或12MHz的石英晶体

15、为消除误差,得到准确的波特率,本设计选择震荡频率为11.0592MHz的石英晶,时钟电路如图2所示。 图2时钟电路 3.1.2复位电路设计 复位是单片机的初始化操作,只需在单片机的复位引脚加上大于2个机器周期的高电平就可使单片机复位,当程序运行出错或操作进入死循环状态可通过复位重新启动程序。MCS-51的复位是由外部的复位电路来实现的,STC89C52也不例外,复位电路通常采用上电自动复位和按钮复位两种方式,为方便复位操作,本文采用按键电平复位,电路如图5所示。其中C取10uF,R2取10KΩ,复位电路如图3所示。 图3复位电路 3.2 键盘、显示电路硬件设计 3

16、2.1键盘电路硬件设计 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×N个按键的键盘。由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。本设计中,矩阵键盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。矩阵键盘设计电路图,如图4所示。 键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。 1 2 3 4 5 6 7 8 9 0 输入密码

17、确认 更改密码 C B A 图4 矩阵键盘设计电路图 3.2.2显示电路硬件设计 本设计中,显示电路采用1602A液晶显示器显示[7]。如下所示,图5为1602A液晶显示器的接口示意图,表1为接口说明。 图5 1602A液晶显示器的接口示意图 表1 接口说明 管脚序 名称 电平 功能描述 1 VSS 0V 接地 2 VCC 5.0V 电源输入 3 V0 — LCD驱动电压输入 4 RS H/L 寄存器选择:RS=H,选择数据寄存器; RS=L,选择指令寄存器 5 R/W H/L 读写信号线:R/W=H,读操作

18、R/W=L,写操作 6 E H,H→L 使能信号 7 DB0 H/L 数据线 8 DB1 H/L 数据线 9 DB2 H/L 数据线 10 DB3 H/L 数据线 11 DB4 H/L 数据线 12 DB5 H/L 数据线 13 DB6 H/L 数据线 14 DB7 H/L 数据线 15 BLA 5.0V 背光电源正极 16 BLK 0V 背光电源负极 本设计中液晶串口一共用到11根导线与单片机相连, 具体连接情况如表2显示模块与MCU连接说明所示。 表2 显示模块与MCU连接说明 序号 160

19、2A液晶显示器引脚 STC89C52单片机引脚 1 RS引脚 P2.5(A13) 2 R/W引脚 P2.6(A14) 3 E引脚 P2.7(A15) 4 D0引脚 P0.0(AD0) 5 D1引脚 P0.1(AD1) 6 D2引脚 P0.2(AD2) 7 D3引脚 P0.3(AD3) 8 D4引脚 P0.4(AD4) 9 D5引脚 P0.5(AD5) 10 D6引脚 P0.6(AD6) 11 D7引脚 P0.7(AD7) 3.3 AT24C02掉电存储单元的设计 本设计中掉电存储单元采用AT24C02外部存储器,其作用

20、是在系统电源断开的时候,存储当前设定的密码数据。 AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节, 含一个16字节页写缓冲器,具有写保护功能。其采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。如下所示,图6为AT24C02管脚示意图,表3为AT24C02管脚说明。 A0 A1 A2 GND SDA SCL WP VCC 1 2 3 4 8 7 6 5 C02 图6 AT24C02管

21、脚示意图 表3 AT24C02管脚说明 管脚名称 功能 管脚名称 功能 A0 A1 A2 器件地址选择 SDA 串行数据/地址 SCL 串行时钟信号 WP 写保护 VCC 1.8V-6.0V工作电压 VSS 接地 本设计中,AT24C02的SCL和SDA引脚接上拉电阻后与单片机的P3.4(T0)和P3.5(T1)脚相连,其电路图如图7所示。 图7 AT24C02掉电存储单元设计图 3.4 声光提示报警电路 3.4.1 报警提示电路 报警提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以

22、根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。蜂鸣器电路,如图8所示。 图8 报警电路 3.4.2 LED提示电路 当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。本次设计中,基于节省成本考虑,用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路,如图9所示。 图9 LED开锁电路 4 系统软件设计 在系统设计中,除了硬件设计之外,软件设计也是很重要的,它是系统工作的指挥者,因此系统软件设

23、计时要遵循结构合理、操作性能好、具有一定的保护措施、兼容性好的设计原则来开发设计。密码锁系统软件设计主要包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、数码管显示模块等及按键检测模块。 4.1 主程序模块 主程序主要用于定义全局变量,给全局变量赋初值,启动定时器,为整个程序提供数据;检测按键;调用显示等功能。系统程序流程如图10所示。 开始 系统初始化 显示主界面 按键检测 读入键值 A键是否按下 开锁,绿灯亮 判断密码对否 B键是否按下 设置新密码 A键是否按下 新密码设置完成

24、 否 是 否 是 否 是 报警,红灯亮 否 是 否 是 图10 系统程序流程图 4.2 密码比较判断模块 该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。其密码输入和比较判决流程图如图11所示。 输入密码 核对 键盘锁定,开启报警电路 开锁,灯亮,可密码修改 N Y 复位 图11 密码输入和比较判决流程图 4.3 密码修改模块 在密码输

25、入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。图12为修改密码流程图。 开始 输入原密码 密码比较 比较正确? 输入新密码 再输入新密码 调用AT24C02密码 比较正确 修改成功 返回菜单 键盘锁定,启动报警电路 复位 Y N 图12 修改密码流程图 4.4 键盘扫描模块 键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。

26、如图13所示,为键盘扫描流程图。 开始 延时去抖动 计算输入键值 键值送入单片机 有按键输入? 有按键输入? 有按键输入? 返回 N N Y Y 图13 键盘扫描流程图 4.5 1602A液晶显示模块 此模块包括液晶初始化、命令的输入、显示数据的输入。其中命令是用于控制液晶状态是否显示光标, 光标是否闪烁, 是否清除原来数据以及显示的具体位置。数据显示主要是将要显示的信息按需要准时显示出来。 5 总结 从基本方案的制定,到硬件电路的选择,再到电路的焊接,最后进行程序调试——在此期间我遇到很多困难,但经过不懈努力,和再学习,终于击破了

27、各个难点,达到的所需要的效果。在这次设计中,我深刻认识到自身的不足——专业知识不足,缺少实战经验。与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。 由于本次设计时间有限,一些设想没有完全实现,比如说:电子密码锁的网络通信扩展,人机界面智能化等。期待以后有机会对以上设想进行进一步研究实践。但是,基本成功实现了1602 液晶显示, 密码开锁, 密码设置, 防止多次试探, 报警等功能。 致谢 非常感谢在这次毕业设计中给我很大帮助的朱金荣老师,感谢朱老师一如既往的严格要求,感谢朱老师给我们的压力,让我强迫自己从开始的迷茫困惑中渐渐熟悉掌握了毕业设计的思路和方向

28、在论文写作和实物设计过程中,朱老师严格认真的教学作风深深感染了我,我对他提出的各种疑难问题他都一一给我做了解答,并给我纠正了许多错误。这次毕业设计我学到许多新的知识,也巩固了很多原来学过的知识,这对我以后的工作有极大地帮助。同时感谢曾经孙妍,张凯,朱俊,陈卫峰等多位老师的专业课的讲授,才有学生今日的设计成果。感谢王志俊同学对我的无私的帮助。感谢祖国,感谢党,给我们当代大学生营造的和谐环境,才有我们今日顺利完成的学业。 参考文献 [1]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,28(13):95-97. [2]张毅刚.单片机原理及应用[M].北京:高等教育

29、出版社,2003. [3]谭浩强.C程序设计[M].北京:清华大学出版社,2005 [4]杨章伟,韩雪,张浩然.跟我学C程序设计[M].北京:清华大学出版社,2010 [5]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,2002 [6]周润景,张丽娜,丁莉.基于PROTEUS的电路及单片机设计与仿真[M].北京:北京航天航空大学出版社,2010 [7]20070711.亚斌YB1602A液晶模块使用说明书[DB/OL]. [8]AT24C02[DB/OL]. [9]at24c02中文资料[DB/OL]. [10]金桂,向国梁.基

30、于C语言STC89C52单片机电子密码锁的设计与仿真[J].现代电子技术,2010,19:176-182. 附录 1 器件清单 器件名称 规格型号 编号 数量 单价(元) 总价(元) 备注 MCU STC89C52 U1 1 7 7 外部存储器 AT24C02 U2 1 0.43 0.43 LCD 1602A LCD1 1 20 20 发光二极管 3mm D1 1 0.05 0.05 绿光 普亮 3mm D2 1 0.05 0.05 红光 普亮 三极管 8550 Q1 1 0.2 0.2

31、 晶振 12MHz X1 1 0.5 0.5 电阻 4.7kΩ 4 0.02 0.08 10kΩ 2 0.02 0.04 10K排阻 RP1 1 0.5 0.5 电容 22P C1C2 2 0.05 0.1 10μF C3 1 0.05 0.5 IC座 8脚IC座 1 0.35 0.35 40脚IC座 1 0.3 0.3 单排插座 1 0.5 0.5 蜂鸣器 LS1 1 0.65 0.65 电池盒 5V电池盒 1

32、4 4 焊锡 2 1 2 导线 1 1 1 电路板 9×15cm万用板 1 1.5 1.5 2 源程序 #include #define uchar unsigned char void WrToROM(uchar Address,uchar Data[],uchar Num); void RdFromROM(uchar Address,uchar Data[],uchar Num); void LCD_init(); void LCD_DISPLAY(uchar *str); void KeyD

33、isp(); extern uchar passwd[5]; uchar ppp[5]="222"; void main() { LCD_init(); WrToROM(0x00,passwd,5); RdFromROM(0x00,passwd,5); LCD_DISPLAY("Welcome china ! Plz input passwd"); while(1) { KeyDisp(); } } //***************** 80s52对键盘 **********************// #include

34、h> #include #define uchar unsigned char void LCD_DISPLAY(uchar *str); void write_com(uchar com); void write_data(uchar Data); void WrToROM(uchar Address,uchar Data[],uchar Num); void RdFromROM(uchar Address,uchar Data[],uchar Num); uchar code tab1[]={"ERROR!"}; uchar code tab2

35、[]={"RIGHT!"}; uchar code tab3[]={"0123456789*"}; uchar code tab4[]={"Input the codes:"}; uchar code tab5[]={"Input new codes:"}; uchar code tab6[]={"Input old codes:"}; uchar mima[9] ="22224444"; //存放用户密码和正确密码:前四位是用户输入密码,后四位是系统的正确密码 uchar passwd[5]="1111"; uchar te[9]={0} ; sbit rel

36、ay = P2^0; sbit beep = P2^1; /******************************矩阵键盘子程序*********************************/ void delay(uchar v)//延时 { while(v!=0) v--; } void delaynms(uchar n) //延时50*n毫秒 { uchar a,b,c; for(c=n;c>0;c--) for(b=173;b>0;b--) for(a=143;a>0;a--); }

37、 uchar Keycan(void) //按键扫描程序 P1.0--P1.3为行线 P1.4--P1.7为列线 { uchar rcode, ccode; P1 = 0xF0; // 发全0行扫描码,列线输入 if((P1&0xF0)!= 0xF0) // 若有键按下 { delay(200);// 延时去抖动 if((P1&0xF0) != 0xF0) { rcode = 0xFE; // 逐行扫描初值 while((rcode&0x10)!= 0) {

38、 P1=rcode; // 输出行扫描码 if((P1&0xF0)!= 0xF0) // 本行有键按下 { ccode=(P1&0xF0)|0x0F; do{;}while((P1&0xF0)!= 0xF0); //等待键释放 return ((~rcode)+(~ccode)); // 返回键编码 } else rcode=(rcode<<1)|0x01; // 行扫描码左移一位 } } }

39、 return 0; // 无键按下,返回值为0 } bit Check_passwd() { uchar comfirm_passwd[5]={0}; //存放用户输入的密码,用于验证 uchar temp,j=0,key,chance=3; while(chance) { LCD_DISPLAY("Input Passwd :"); write_com(0xc0); //显示屏换行 j=0; while(j<4) { do {key=Keycan();}while(key==0); s

40、witch(key) //数字键 { case 0x11: comfirm_passwd[j]='1';j++;write_data('1');break; case 0x21: comfirm_passwd[j]='2';j++;write_data('2');break; case 0x41: comfirm_passwd[j]='3';j++;write_data('3');break; case 0x81: comfirm_passwd[j]='4';j++;write_data('4');break; cas

41、e 0x12: comfirm_passwd[j]='5';j++;write_data('5');break; case 0x22: comfirm_passwd[j]='6';j++;write_data('6');break; case 0x42: comfirm_passwd[j]='7';j++;write_data('7');break; case 0x82: comfirm_passwd[j]='8';j++;write_data('8');break; case 0x14: comfirm_passwd[j]='9';j++;write_

42、data('9');break; case 0x24: comfirm_passwd[j]='0';j++;write_data('0');break; default: break; } beep=0; delaynms(1); beep=1; } while(!(key==0x84))key=Keycan(); //等待确认键 temp=1; //验证输入的密码 if(strcmp(comfirm_passwd,passwd)){temp= 0;chance--;}//不相等 if(!

43、temp) { LCD_DISPLAY("ERROR PASSWD !"); delaynms(15); } else return 1; //密码正确返回1 } return 0; //密码不正确返回0 } void KeyDisp() { uchar j=0,temp; uchar key; uchar comfirm_passwd[5]={0}; //存放用户输入的密码,用于验证 key=Keycan(); if(key==0x44) //按下的为设置键 { if(!Ch

44、eck_passwd()) { //如果密码验证不通过 // LCD_DISPLAY("ERROR PASSWD !"); beep=0; delaynms(15); beep=1; LCD_DISPLAY("Welcome Baby ! Plz input passwd");//重新显示欢迎界面 return; } LCD_DISPLAY("Input new passwd:"); write_com(0xc0); //换行 while(j<4) { do {key=Keyca

45、n();}while(key==0); switch(key) //数字键 { case 0x11: passwd[j]='1';j++;write_data('1');break; case 0x21: passwd[j]='2';j++;write_data('2');break; case 0x41: passwd[j]='3';j++;write_data('3');break; case 0x81: passwd[j]='4';j++;write_data('4');break;

46、 case 0x12: passwd[j]='5';j++;write_data('5');break; case 0x22: passwd[j]='6';j++;write_data('6');break; case 0x42: passwd[j]='7';j++;write_data('7');break; case 0x82: passwd[j]='8';j++;write_data('8');break; case 0x14: passwd[j]='9';j++;write_data('9');break;

47、 case 0x24: passwd[j]='0';j++;write_data('0');break; default: break; } beep=0; delaynms(1); beep=1; } while(!(key==0x84))key=Keycan();//等待确认键 WrToROM(0x00,passwd,5); //按确认键后将密码写入EEPROM write_com(0x01); //clear screan LCD_DISPLAY("OK!"); //设置成功,显示OK

48、 beep=0; delaynms(10); beep=1; LCD_DISPLAY("Welcome china ! Plz input passwd");//重新显示欢迎界面 } else if(key!=0) { LCD_DISPLAY("Input passwd:"); write_com(0xc0); //显示屏换行 while(j<4) { switch(key) { case 0x11: comfirm_passwd[j]='1';j++;write_data('*')

49、break; //存放的是字符1 case 0x21: comfirm_passwd[j]='2';j++;write_data('*'); break; case 0x41: comfirm_passwd[j]='3';j++;write_data('*'); break; case 0x81: comfirm_passwd[j]='4';j++;write_data('*'); break; case 0x12: comfirm_passwd[j]='5';j++;write_data('*'); break; case 0x22: comfirm_passwd[j]='6';j++;write_data('*'); break; case 0x42: comfirm_passwd[j]='7';j++;write_data('*'); break; case 0x82: comfirm_passwd

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服