收藏 分销(赏)

密码锁-《单片机技术》课程设计说明书大学论文.doc

上传人:快乐****生活 文档编号:2187569 上传时间:2024-05-22 格式:DOC 页数:39 大小:1.23MB 下载积分:12 金币
下载 相关 举报
密码锁-《单片机技术》课程设计说明书大学论文.doc_第1页
第1页 / 共39页
密码锁-《单片机技术》课程设计说明书大学论文.doc_第2页
第2页 / 共39页


点击查看更多>>
资源描述
《单片机技术》课程设计说明书 密码锁 学 院: 电气与信息工程学院 学生姓名: 顾海涛 指导教师: 王韧 职称/学位 副教授 专 业: 自动化 班 级: 1201 学 号: 1230740118 完成时间: 2015年7月 湖南工学院《单片机技术》课程设计课题任务书 学院:电气与信息工程学院 专业:自动化 指导教师 王韧 学生姓名 顾海涛 课题名称 密码锁 内容及任务 一、设计任务 设计一个具有特定功能的密码锁。 二、设计内容 1、密码锁的硬件系统 (1)、单片机最小系统模块 (2)、供电模块 (3)、显示模块 (4)、键盘模块 (5)、掉电存储保护模块 (6)、报警模块 2、密码锁的软件系统 (1)、系统监控程序模块 (2)、显示程序模块 (3)、键盘程序模块 (4)、掉电存储程序模块 (5)、报警程序模块 三、设计要求 密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息并报警提示。 主要参考资料 [1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6. [2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12. [3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:北京航空航天大学出版社,2003.6.     [4]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01. [5]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9. 教研室 意见 教研室主任:(签字) 年 月 日 摘 要 在日常的生活和工作中,档案的保存多采用加锁的方式。使用机械锁,钥匙丢失后安全性降低。在许多领域,电子密码锁代替了机械锁,电子密码锁具有安全性高、成本低、功耗低等优点。 电子密码锁以AT89S52作为主控芯片与数据存储器单元,结合行列式键盘输入、LCD液晶显示、报警等。C语言编写的主控制程序与EEPROM、AT24C02读写程序相结合,设计了可以多次更改密码,具有报警功能的电子密码锁系统。 密码锁设计具有防试探按键输入、开锁、报警、修改密码等功能,具有一定推广应用价值。 关键词:密码锁;AT89S52;报警;LCD显示 目 录 1 绪论 1 1.1 课题的背景及意义 1 1.2 设计的主要任务 1 2 设计思想与方案 3 2.1 设计思想 3 2.2 设计方案及工作原理 3 3 硬件系统的设计 5 3.1 AT89S52控制模块 5 3.2 电源模块 5 3.3 时钟模块 6 3.4 复位模块 6 3.5 下载模块 7 3.6 键盘模块 7 3.7 LCD12864显示模块 7 3.8 报警模块 8 3.9 AT24C02模块 9 4 软件系统设计 10 4.1 单片机资源使用情况 10 4.2 软件系统主要软件模块介绍 10 4.2.1 主程序设计 10 4.2.2 键扫描程序设计 11 4.2.3 键功能程序设计 12 4.2.4 液晶显示程序设计 13 4.2.5 密码设置程序设计 14 4.2.6 开锁程序设计 14 4.3 设计课题软件系统程序清单 14 5 系统设计结果分析及结论 15 5.1 系统使用说明 15 5.2 软件调试 15 5.3 系统实物调试结果 15 5.4 误差分析 16 5.5 设计体会 16 结束语 17 参考文献 18 致谢 19 附录 20 附录A 电路原理图 20 附录B 实物图 21 附录C 程序清单 22 附录D 元器件清单 34 II 1 绪论 1.1 课题的背景及意义 安全问题是现代社会各界普遍关注的焦点之一。在现实生活中,很多场合都用到了电子密码锁,比如说门禁系统,银行账户管理系统,保险箱等地方都要用到电子密码锁,而且对其要求也很高。所以高安全性密码锁的研究就成了一个必需的话题。近几年各种安全产品如指纹识别、卡辨识、红外防盗等已相继问世,但这类产品的特点是针对特定指纹或有效卡。只能适用于保密要求高或供个人使用的保险箱保险柜等,虽然这些产品安全性高,但其生产成本高,携带、安装及使用不方便,这在一定程度上限制了这类产品的普及和推广。 随着单片机的迅速发展,其应用领域越来越广,如消费电子、家用电器、办公设备、商业营销设备、工业控制和机电一体化控制系统、智能测量仪表以及汽车与航空航天电子系统中都广泛采用了单片机。 51系列单片机由于具有可靠性好,以及扩展控制功能强等优点,成为国内目前应用最广泛的一种单片机之一。随着单片机的应用领域越来越广泛,可以看出它的优越性和可靠性,所以将其应用到保密和安全方面是必然的,也是相当可靠的,相当有意义的,基于单片机的电子密码锁的研究在保护财产和人身安全方面可以给人们带来更多更好的服务。 电子锁由于其保密性高,使用灵活,安全性高,受到了广大用户的欢迎。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。 课程设计的意义在于培养学生学习、思考、动手的能力,让学生在整个过程中通过查询相关资料学习电子密码锁的有关理论知识,熟悉理论的同时要明白电子密码锁的工作原理,从而展开主要功能的实现。通过老师的指导,查询相关资料确定密码锁系统各个硬件模块的制作,以及完善软件系统和硬件系统。学生通过查询资料、设计方案、制作调试的过程,真正做到了理论实践相结合,这不仅对学生的学习能力、动手能力得到了相应的提高、更激发了学生自主学习、实践的兴趣。 1.2 设计的主要任务 密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。 密码锁设计是基于AT89S52为核心,由独立电源模块供电、液晶显示模块(采用12864液晶显示器),键盘模块(采用4*4行列式键盘),声光报警,掉电保护电路等模块组成。把所需模块通过排线连接在一起,设计其原理图,各部分的程序流程图,并连接实物电路板,利用Keil软件进行主程序和各模块子程序的编写,编译,调试。并把所需程序下载到单片机中,并记录设计的结果。 2 设计思想与方案 2.1 设计思想 为实现电子密码锁的大众化,让个人的资料得到更好的保护,根据所学的知识和能力对电子密码锁进行设计,具有以下几点要求: (1)密码锁具有掉电保护的能力,防止因失电而导致密码数据的丢失。 (2)密码锁具有超级密码,防止因用户忘记密码而导致密码锁不能正常使用。 (3)密码锁可以根据用户的个人喜好和需求更改密码,让用户更方便的使用密码锁。 (4)密码锁具有保密输入密码和密码输入错误到达一定次数是进行声光报警的功能,更好的为用户保护个人数据。 2.2 设计方案及工作原理 随着社会的进步和科技的发展,密码锁也得到了飞速的发展,出现了各种各样的密码锁,也有很多的方法可以制作密码锁。根据所学知识和能力,设计采用基于AT89S52单片机的方案制作密码锁。 密码锁设计以AT89S52单片机作为设计核心,利用单片机灵活的编程设计和丰富的I/O端口及其准确的控制,实现基本的密码控制功能。在单片机的外围电路外接输入行列式键盘用于密码的输入和一些功能的控制;外接12864LCD液晶显示器用于输出显示;外接LED及蜂鸣器用于声光报警。 密码锁设计主要由单片机、行列式键盘、液晶显示器和密码存储等部分组成。其中行列式键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的行列式键盘输入密码,然后经过单片机对用户输入的密码与单片机内部保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平转到液晶显示密码正确还是密码错误以及控制蜂鸣器及发光二极管是否进行声光报警。 密码锁设计一共由两部分组成,硬件电路和软件部分。其中硬件部分由键盘输入模块、复位模块、晶振模块、报警模块、时钟模块、AT24C02模块等组成。软件部分对应的主要由主程序、键扫描程序、键功能程序、液晶显示程序、密码设置程序以及开锁程序等组成。密码锁设计原理框图如图1所示。 图1 电路原理框图 3 硬件系统的设计 3.1 AT89S52控制模块 AT89S52主要性能与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器,1000次擦写周期,全静态操作。32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。 AT89S52具有 8K 在系统可编程Flash存储器。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89S52引脚图如图2所示。 图2 AT89S52引脚图 3.2 电源模块 单片机工作电压+5V,可通过设计一个输出为+5V的直流稳压电源电路获得,+5V直流稳压电源电路原理图见附录A。+5V直流稳压电源实物图见附录B. 参数计算分析:220V的交流电,通过变压器降压(电压比18:1)得到12V的交流电,然后通过整流桥整流、大电容滤波(2200μF)后,最后经过7805稳压芯片以及最后的小电容(0.1μF)滤波可得稳定输出+5V直流电压。其中R2=470Ω的作用主要是限流。电源电路如图3所示。 图3 电源模块原理图 3.3 时钟模块 AT89S52单片机内部的振荡电路是一个高增益反向放大器,引线X1和X2分别是放大器的输入端和输出端,单片机内部虽然有震荡电路,但要形成时钟电路,外部还要附加电路。AT89S52的时钟产生方式有两种,内部时钟方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以密码锁选用内部时钟方式。利用单片机内部的震荡电路在X1和X2引线上外接定时元件,内部振荡电路产生自激振荡,最常用的是在X1和X2之间接晶振与电路构成稳定的自激振荡器。其中晶振选用12MHz的石英晶体,1μs为一个机器周期。选用33PF电容。以得到需要的时钟信号。时钟模块电路图如图4所示。 图4 时钟模块电路图 3.4 复位模块 AT89S52基本复位电路共有上电复位,按键电平复位和按键脉冲复位3种。其中上电自动复位是通过电容充电来实现,按键脉冲复位则是利用RC微分电路产生的脉冲来实现的,密码锁设计是由这两种复位实现。因电容的充电时间和R、C的值成正比,因此,经过计算,密码锁设计选用一个200Ω和1K的电阻还有22μF电容来控制复位时间。复位模块原理图如图5所示。 图5 复位模块电路图 3.5 下载模块 密码锁设计是由USB接口与电脑进行串行通信,下载所需程序到单片机中。下载口所接引脚有电源、地、复位、P1.5~P1.7。P1.5作为指令输入端,P1.6作为数据输出端,P1.7作为时钟输入端。下载模块电路图如图6所示。 图6 下载模块电路图 3.6 键盘模块 根据系统的基本要求,采用由16个按键构成的行列式键盘分别接在AT89S52单片机的P2.0-P2.7,相对于独立式键盘节省了大量口线和空间,给电路设计带来极大的方便,不过也相应的增加了程序的设计难度和设计挑战。采用矩阵式连接方法,组成4×4式16个按键,分别代表数字“0~9”、“确定键”、“返回”键等。键盘模块电路原理图如图7所示。 3.7 LCD12864显示模块 液晶显示是通过在主程序中调用相关的液晶功能函数来执行相应功能,经过液晶接在单片机上的P0及P1部分管脚,通过液晶功能函数LCD12864()的调用对液晶进行操作,用来驱动液晶以实现不同的显示功能,达到界面显示的要求。LCD的17口外接一50K电位器和2K电阻用来限流。液晶模块原理图如图8所示。 图7 键盘模块原理图 图8 液晶模块电路原理图 3.8 报警模块 报警模块由蜂鸣器和单片机组成。蜂鸣器按形式可以分为电磁式蜂鸣器和压电式蜂鸣器,通常在蜂鸣器的两端加入一定的电流通过电磁感应产生震动就可以使蜂鸣器发出声音。蜂鸣器一般由振膜、电磁感应线圈组成,其结构简单,使用方便,适用于各种声音报警场合。但要注意蜂鸣器的正负极不能接反。 密码锁设计选择的是一只压电式蜂鸣器,压电式蜂鸣器工作时需要100mA驱动电流。当单片机的P3.1口输出低电平时,三极管饱和导通,蜂鸣器发声,AT89S52输出高电平时,三极管截止,蜂鸣器不发声。蜂鸣器外接一1K电阻和一个型号为9012的三极管来进行限流和振荡作用。报警模块原理图如图9所示。 图9 报警模块原理图 3.9 AT24C02模块 AT24C02是低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件.AT24C02正是运用了I2C规程,使用主/从机双向通信,主机)和从机均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。AT24C02模块原理图如图10所示。 图10 AT24C02模块原理图 4 软件系统设计 4.1 单片机资源使用情况 密码锁设计使用了单片机的P0口到P3口。P0口是单片机与12864液晶显示器通讯的数据口线;P2口主要是用于矩阵式键盘电路的扩展;P1.0接LCD12864的RS端;P1.1接LCD12864的RW端;P1.2为LCD12864提供使能信号;P2.0、P3.0口主要控制声光报警器的工作;P3.6控制24C02的SDA信号;P3.7控制24C02的SCL信号。 4.2 软件系统主要软件模块介绍 其中主程序是用于系统初始化,显示主界面,进入密码锁基本功能;键盘扫描程序通过扫描行列式键盘,判断是否有键按下,若有键按下则进行消抖处理后保存键值,并且调用相应的程序;键功能程序主要是判断哪一个按键按下,并执行相应的键功能程序;液晶显示程序的基本功能有液晶初始化和对其读写的功能;密码设置程序的基本功能是对密码锁的密码进行修改;开锁程序主要是通过调用键扫程序,转换并保存按键对应的ASCII码值,并判断输入的密码是否正确。 4.2.1 主程序设计 主程序流程图如图11所示。 图11 主程序流程图 4.2.2 键扫描程序设计 键扫描程序流程图如图12所示。 图12 键扫描流程图 4.2.3 键功能程序设计 键功能程序流程图如图13所示。 图13 键功能流程图 4.2.4 液晶显示程序设计 液晶显示程序流程图如图14所示。 图14 液晶显示流程图 4.2.5 密码设置程序设计 密码设置程序流程图如图15所示。 4.2.6 开锁程序设计 开锁程序流程图如图16所示。 图15 密码设置流程图 图16 开锁程序流程图 4.3 设计课题软件系统程序清单 见附录C。 5 系统设计结果分析及结论 5.1 系统使用说明 密码锁上电或按键复位后能自动显示系统提示界面,进入准备工作状态。密码锁具有系统原始密码888888以及超级密码(仅设置者知道,不可更改),用户可以通过行列式键盘设定并存储用户密码,密码输入时处于保密显示状态,密码输入错误显示“密码错误!请重新输入密码!”,输入密码错三次,蜂鸣器及LED亮叫10S(报警),锁屏10S,自动回到开锁状态(S13确定键,S16返回键,S1-S16都是密码数字键)。 5.2 软件调试 基本上排除了应用系统的硬件故障后,就可以进入软件的综合调试阶段,这个阶段的主要任务是排除软件错误以及解决硬件遗留的问题。密码锁系统程序是用C语言编写的,软件调试可以一个模块一个模块地进行。在进行软件调试时要充分利用调试软件中单步、断点、设置观察项等调试手段,主要针对程序跳转错误、程序错误、动态错误和输入输出错误等方面着重调试。 5.3 系统实物调试结果 基本排除了应用系统的硬件故障后,进入软件的综合调试阶段。通过不断地修改程序与调试,基于AT89S52单片机的密码锁实物显示的效果如图17所示。 图17 密码锁实物效果图 5.4 误差分析 经过软件调试和硬件调试发现按键的时间与电子密码锁响应的时间存在着比较明显的差异。后经过上网查阅资料,翻阅书籍,询问同学后发现因为电子密码锁采用的是C语言编写的纯软件延时,所以实际时间上与理论时间存在一定的误差,时间误差只能无限接近而不能完全消除。另外可能因为晶振出现松动,液晶屏幕可能出现乱码。 5.5 设计体会 通过课程设计的积极参与,经历了课题制作过程中的组装、改进、解决问题等几个过程之后,获得了许多实践经验,还总结了一些解决问题的办法。 在课程设计中,遇到了硬件及软件的多方面问题。如在进行硬件调试时LCD液晶显示器不亮,经过上网搜索以及咨询班级同学后,得到了解决。并且通过撰写课程设计文档,使我更加熟练的使用WORD软件进行操作。了解了很多以前并不知道的操作方法。通过单片机课程设计,认识到理论结合实践的重要性。课程设计可以锻炼动手能力和文档的书写能力。总之,在课程设计中,收获了很多技能。也理解了许多书本上没有的道理! 结束语 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节。是对学生学习的理论、实际工作能力的具体训练和考察过程。 随着科学技术迅速发展,单片机已经成为当今计算机应用中空前活跃的一门学科,在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。 回顾起单片机课程设计,在其中学到很多很多的的东西,不仅可以巩固了学过的知识,而且学到了很多在书本上所没有学到过的知识。通过单片机课程设计懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高实际动手能力和独立思考的能力。 在设计的过程中,困难重重,遇到过各种各样的问题,同时在设计的过程中发现对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机掌握得不好,通过课程设计之后,一定把以前所学过的知识重新温故。 课程设计终于顺利完成了,在设计中遇到了很多问题,在同学的帮助下,指导老师的监督督促下,终于得到解决。非常感谢! 参考文献 [1] 李广第,朱月秀,冷祖祁.单片机基础[M].北京:北京航空航天大学出版社,2007.6:19~180 [2] 唐俊瞿.单片机原理及应用[M].北京:冶金工业出版社,2003:102~121 [3] 阎石.数字电子技术基础[M].北京:高等教育出版社,2006:50~84 [4] 陆中宏,高松.单片机应用技术[M].北京:机械工业出版社,2010:32~61 [5] 邱光源.电路(第五版) [M].北京:高等教育出版社,2006:150~162 [6] 康华光.电子技术模拟部分(第五版)[M].北京:高等教育出2006:20~61 [7] 单片机原理与应用及C51程序设计[M].北京:清华大学出版社2006:85~96 [8] 李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003:8~35 [9] 李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004:23~65 [10] 马忠梅.单片机的C语言应用程序设计(第4版)[M].北京:北京航空航天大学出版社,2003.6:23~36   致 谢 首先,我要感谢我的父母从小对我的关爱和教育,照顾。让我一直可以健康快乐的成长。同时我们要感谢我们的指导老师王韧老师对我们的指导和关怀。他渊博的知识、严谨的治学态度和敏锐的分析能力,使我们受益匪浅。最后,我们要感谢同学,他们对我们的支持和付出是我们此次课程设计得以顺利进行的保障。 附 录 附录A 电路原理图 附录B 实物图 附录C 程序清单 /******************************************************************** 程序名: 密码锁 指导老师:王韧 作者: 顾海涛 时间: 2015年6月 使用说明: 输入原始密码或超级密码,如输入错误可按s16键返回取消,从新输入,按s13确定键, 进入是否修改密码,密码输入3次错误则报警。 ********************************************************************/ #include<reg52.h> #include"delay.h" #include"LCD_init.h" #include"jzanjian.h" #include"E24c02.h" #define uchar unsigned char #define uint unsigned int sbit led=P3^0; sbit fe=P3^1; uint mima[6]; uint supermima[6]; uint shuruma1[6]; uint shuruma2[6]; uint i,j,m,k,anjian; uchar v=0; /****************************保存超级密码***************************/ void chaoji() { uint x; for(x=0;x<6;x++) { e24c02_write(0x40+x,6); supermima[x]=e24c02_read(0x40+x); } } /****************************原始密码****************************/ void yuanshi() { uint s; for(s=0;s<6;s++) { e24c02_write(s,8); } } /****************************键值函数****************************/ void key_display() { v=keyscan(); if(v==0x11||v==0x21||v==0x41||v==0x81|| v==0x12||v==0x22||v==0x42||v==0x82|| v==0x14||v==0x24||v==0x44||v==0x84|| v==0x18||v==0x28||v==0x48||v==0x88) { switch(v) { case 0x11: anjian=0;break; //0 case 0x21: anjian=1;break; //1 case 0x41: anjian=2;break; //2 case 0x81: anjian=3;break; //3 case 0x12: anjian=4;break; //4 case 0x22: anjian=5;break; //5 case 0x42: anjian=6;break; //6 case 0x82: anjian=7;break; //7 case 0x14: anjian=8;break; //8 case 0x24: anjian=9;break; //9 case 0x44: anjian=10;break; //a case 0x84: anjian=11;break; //b case 0x18: anjian=12;break; //c case 0x28: anjian=13;break; //d case 0x48: anjian=14;break; //e case 0x88: anjian=15;break; //f default: break; } } } /****************************写密码函数***************************/ void write_mima() { for(i=0;i<6;i++) { mima[i]=shuruma1[i]; e24c02_write(i,mima[i]); } } /****************************读密码********************************/ void read_mima() { for(i=0;i<6;i++) { mima[i]=e24c02_read(i); } } /****************************开锁显示函数**************************/ void yes_repleace() //正确密码 { write_com(0x01); LCD12864_display(1,3,"密码对了"); LCD12864_display(2,3,"祝贺您!"); led=0; delay_ms(2000); //延时 led=1; //灯亮 } /**************************错误显示********************************/ void no_repleace() //错误密码 { write_com(0x01); LCD12864_display(1,3,"密码错误!"); LCD12864_display(2,1,"请重新输入密码!"); delay_ms(1000); jiaoyan(); } /**************************报警函数*******************************/ void no3_repleace() //3次错误 { write_com(0x01); LCD12864_display(1,3,"对不起!"); LCD12864_display(2,3,"机会已过"); LCD12864_display(3,3,"锁屏十秒钟"); LCD12864_display(4,3,"开启警报"); m=200;fe=1;led=1; //fe警报 while(m--) { fe=~fe; led=~led; delay_ms(50); } } /***************************首界面函数*****************************/ void shoujiemian() { init(); LCD12864_display(1,1,"请输入密码:"); LCD12864_display(4,1,"确定"); LCD12864_display(4,7,"返回"); } /***************************修改函数********************************/ void xiugaimm() //修改密码 { shoujiemian(); write_com(0x90+3); for(i=0;i<6;i++) //输入新密码 { anjian=16; while(anjian==16){key_display();} write_date(0x2a); shuruma1[i]=anjian; } while(anjian!=12&&anjian!=15) { key_display(); } write_com(0x01); LCD12864_display(1,1,"请确认密码:"); LCD12864_display(4,1,"确定"); LCD12864_display(4,7,"返回"); write_com(0x90+3); for(i=0;i<6;i++) //再次输入新密码 { anjian=16; while(anjian==16) {key_display();} write_date(0x2a); shuruma2[i]=anjian; } while(anjian!=12&&anjian!=15) { key_display(); } for(j=0;j<6;j++) //比较 { if(shuruma2[j]!=shuruma1[j])break; } anjian=16; if(j==6) //判断新密码是否相同 { write_mima(); write_com(0x01); LCD12864_display(1,3,"密码修改成功 "); LCD12864_display(3,2,"祝贺您 "); //正确反应 } else { write_com(0x01); LCD12864_display(1,3,"因两次密码"); LCD12864_display(2,3,"不相同 "); LCD12864_display(3,2,"密码修改失败!"); } while(anjian!=12&&anjian!=15) { key_display(); } } /******************************输入函数*****************************/ void shuru() { shoujiemian(); write_com(0x90+3); for(i=0;i<6;i++) //取值 { anjian=16; while(anjian==16) {key_display();} write_date(0x2a); shuruma1[i]=anjian; } while(anjian!=12&&anjian!=15) { key_display(); } if(anjian==15){shuru();} //重新输入 } /*****************************比较函数*****************************/ void jiaoyan() { uchar flag; flag++; if(flag<4) { shuru(); read_mima(); for(j=0;j<6;j++) //比较 { if(mima[j]!=shuruma1[j])break; } for(k=0;k<6;k++) //比较 { if(supermima[k]!=shuruma1[k])break; if(k==5) { write_com(0x01); LCD12864_display(1,2,"启用超级密码!"); delay_ms(500); for(i=0;i<6;i++) { shuruma1[i]=supermima[i]; //密码改为超级密码 } write_mima(); } } if(j==6||k==6) //判断密码是否正确 { j=0;k=0;flag=0; yes_repleace(); //正确反应 write_com(0x01); LCD12864_display(1,1,"是否修改密码?");
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服