单片机课程设计密码锁_第1页
单片机课程设计密码锁_第2页
单片机课程设计密码锁_第3页
单片机课程设计密码锁_第4页
单片机课程设计密码锁_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

液晶显示电子密码锁《单片机技术》课程设计任务书1、设计主题:数字电子钟、数字频率计、数字电压表、红绿灯、应答器、密码锁、波形发生器、数字温度计、计算器、数字秒表。2.适用班:自助书1003-4、电子书1001-2、电子书1001-2、通讯书1001-23.导师:王仁四、设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和应用在《单片机技术》中学到的理论知识和实验技能,掌握单片机应用系统的通用设计方法,提高设计能力和实践能力,为未来。为从事电子线路设计、电子产品研发打下良好基础。五、设计内容及要求设计内容1.数字电子钟设计一个具有特定功能的电子钟。电子钟上电或复位按钮后可自动显示系统提示“P.”,进入时钟准备状态;第一次按下电子时钟的启动/调整键,电子时钟从0:00:00开始运行,进入时钟运行状态;再按一下电子钟的启动/调整键,电子钟就会进入时钟调整状态,此时可以用各调整键调整时间,调整后按启动/调整键即可再次进入时钟运行状态。2.数字频率计设计一种频率计,可以测量周期性矩形波信号的频率、周期、脉冲宽度和占空比。频率计上电或按键复位后可自动显示系统提示“P.”,进入测量准备状态。按频率测量键测量频率;按周期测量键测量周期;按脉宽测量键测量脉宽;按占空比测量键测量占空比。3.数字电压表设计一种能够测量直流电压的数字电压表。测量电压范围为0~5V,测量精度为小数点后两位。电压表上电或按键复位后可自动显示系统提示“P.”,进入测量准备状态。按测量开始键开始测量,并在显示屏上显示测量值。按测量结束键自动返回“P.”“P.”状态。4.红绿灯在具有特定功能的交叉路口设计一个红绿灯。红绿灯通电或按键复位后可自动显示系统提示“P.”,进入准备工作状态。按开始键开始工作,按结束键返回“P.”状态。A车道和B车道两条交叉道路上的车辆需要交替行驶。A车道为主车道,每次通行时间为60秒。车道B是辅助车道。每次通行时间为30秒。黄灯需要亮3秒。并且每1秒闪烁一次。有紧急车辆时,红灯全亮,紧急车辆通行10秒,其他车辆禁止通行。5.响应者设计一个具有特定功能的响应器。应答器上电或按键复位后可自动显示系统提示“P.”,进入准备状态。主机按下开始键后,开始快速接听,限时30秒;10秒内无人接听,蜂鸣器响;主机按下开始键前,有人按下快速应答器,应答为非法,显示屏显示非法站号,表示违规,当灯亮时,其他按钮不工作;正常接听时,显示屏显示站号,蜂鸣器响,其他接听按钮无效;正常接听时,长按接听键30秒。,超时处理后,违规指示灯亮,显示屏显示违规站号。蜂鸣器会响起;各数字显示的消除、蜂鸣器声音的关闭和违规指示必须由主机按下复位按钮来完成。6.密码锁设计具有特定功能的密码锁。密码锁上电或钥匙复位后,会自动显示系统提示“P.”,进入准备工作状态。密码锁的原始系统密码为888888,用户可以设置和存储用户密码。输入密码时,应处于显示状态。密码输入正确后,应显示正确的密码输入提示信息。否则会显示密码输入错误提示信息。7.波形发生器设计具有特定功能的波形发生器。上电或按键复位后,波形发生器可自动显示系统提示“P.”,进入准备工作状态。波形发生器可分别产生幅度0~5V、频率100Hz~100KHz的三角波、锯齿波、方波、梯形波和正弦波。8.数字温度计设计具有特定功能的数字温度计。数字温度计上电或按键复位后可自动显示系统提示“P.”,进入准备工作状态。测量温度范围为0℃至99℃,测量精度为小数点后两位。数字温度计的工作状态可以通过开始和结束键来控制。9.计算器设计一个具有特定功能的计算器。计算器上电或按键复位后可自动显示系统提示“P.”,进入准备工作状态。可以实现(1)基本的加法、减法、乘法、除法、平方、平方根;(2)三角函数运算;(3)十进制、十六进制转换操作;(4)其他功能。10.数字秒表设计具有特定功能的数字秒表。数字秒表上电或按键复位后可自动显示系统提示“P.”,进入准备工作状态。数字秒表应具有启动、暂停、连续、复位和停止功能。设计要求1、以上题目可以选择一项或多项,学生也可以自己拟定题目;2、编程语言:汇编或C51;3、《单片机技术》课程设计电脑打印指导手册;4、设计时间:一周;5、实物制作;6、人员分组:一个人,一组,一个实物。6.《单片机技术》课程设计手册正文主要内容参考文档《单片机技术》课程设计手册正文主要内容。七、《单片机技术》课程设计手册编写规范参考文档《单片机技术》课程设计手册编写规范。8.参考文献1.马忠梅,C语言单片机Windows环境编程合集[M],:航空航天大学,2003.6;2.光飞,单片机C编程指南[M],:航空航天大学,2003.01;3.光飞,单片机课程设计实例指导[M],:航空航天大学,2004.9。电气自动化教研室2012年9月10日摘要本文是基于12864液晶系统设计的密码锁课程设计,以AT89S52为核心的单片机控制方案,利用单片机灵活的编程设计和丰富的I/O口,其控制精度,通过AT89S52模拟I2C总线与AT24C02通讯,实现基本密码锁功能。本设计的主要硬件由三部分组成:4×4行列式键盘接口电路、密码锁控制电路、液晶显示电路。初步设计思路如下:(1)有原系统密码88888888,密码通过行列式键盘输入。如果密码正确,锁将被打开。(2)用户可以自定义密码。解锁后,用户可以修改原密码(三)有处理特殊情况的超级密码;(4)输入密码时,应处于显示状态。密码输入正确后,应显示密码输入正确的提示信息。否则会显示密码输入错误的提示信息。密码连续输入错误3次,则不允许输入,并报警。(5)系统崩溃重启后,变为原来的初始状态软件设计主要包括按键扫描子程序、LCD显示程序、密码比较程序、AT24C02读写程序、报警程序和开锁显示程序等。实验证明,该密码控制系统具有设计方法合理、操作简单易行、成本低廉、使用安全等特点,满足车用和办公用锁的要求,具有推广价值。关键词:12864液晶系统;行列式键盘;AT89S52;24C02目录1设计任务、功能需求描述及总体方案介绍…………41.1设计任务………………41.2功能需求描述…………41.3总体方案介绍…………42设计课题硬件系统设计……………………52.1设计主体硬件系统各模块功能简介…………52.2设计主体电路原理图、PCB图、元件布局图……62.3设计主题组件列表………………63设计项目软件系统的设计……………………73.1设计项目中使用单片机资源的情况……73.2设计项目软件系统各模块功能简介…………73.3设计项目软件系统程序流程图……83.4设计项目软件系统程序清单…………114设计结论、仿真结果、误差分析、教学建议………………344.1设计结论和设计题目使用说明…………344.2设计方案仿真结果…………344.3设计项目误差分析……………………344.4设计经验………………354.5教学建议.............................36参考...........................37至……………………38附录……………………391密码锁的设计任务、功能需求描述及总体方案介绍1.1设计主题任务设计具有特定功能的密码锁。密码锁上电或按键复位后可自动显示菜单系统界面,并根据菜单界面上的数字进入相应的工作状态。密码锁有原系统密码88888888,用户可以设置并保存用户密码,输入密码时应显示密码,输入正确密码时应显示正确提示信息,否则报错将显示提示信息。1.2功能需求描述设计一种由AT89S52单片机控制的电子密码锁。电子密码功能包括10个密码输入。密码输入过程中,有清除输入、密码正确与错误、密码修改等提示。12864LCD显示菜单实现多功能等。1.3设计项目总体规划介绍1.3.1总体方案介绍如下:(1)系统原密码88888888,密码通过行列式键盘输入。输入密码后会显示。如果密码正确,锁将被打开。(2)用户可以自定义密码。解锁后,用户可以修改原密码(三)有处理特殊情况的超级密码;(4)输入密码时,应处于显示状态。密码输入正确后,应显示密码输入正确的提示信息。否则会显示密码输入错误的提示信息。密码连续输入错误3次,则不允许输入,并报警。(5)系统崩溃后重启,恢复到原来的初始状态1.3.2单片机系统结构图:图1单片机系统结构图2硬件系统设计2.1硬件电路组成及各模块功能说明单片机系统是整个硬件系统的核心。它不仅协调整机的工作,而且是数据处理器和连接软硬件系统的桥梁。系统主要包括:AT89S52单片机、存储芯片AT24C02、键盘输入电路、电源输入电路、掉电存储电路、复位电路、晶振电路、液晶显示模块、报警电路。2.1.1AT89S52单片机AT89S52是一款低功耗、高性能CMOS8位微控制器,具有4k字节的只读程序存储器。该器件采用ATMEL的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统和AT89S52引脚结构,芯片集成通用8位中央处理器和ISPFlash存储单元,功能强大的微机AT89S52可以为许多嵌入式控制应用系统提供高性价比的解决方案。2.1.2存储芯片AT24C02AT24C02是美国Atmel公司的一款低功耗CMOS型E2PROM,存储空间256×8位,工作电压宽(2.5-5.5V),擦写次数多(10000次以上),速度快写入速度快(小于10ms)),抗干扰能力强,数据不易丢失,体积小等特点。而且它是一个使用I2C总线读写数据的串口设备,占用资源和I/O线极少,支持在线编程,非常方便实时数据访问。引脚说明:(1)SCL为串行时钟:串行时钟输入引脚用于为设备的所有数据发送或接收生成时钟,是一个输入引脚。(2)SDL为串行数据/地址:双向串行数据/地址引脚用于发送或接收器件所有数据的SDL,它是一个开漏输出引脚,可与其他开漏或集电极开路输出进行线或。(3)A0、A1、A2为设备地址输入端子:使用24C02时,最多可级联8台设备。如果总线只寻址一个24C02,则三个地址输入引脚A0、A1和A2可以悬空或连接到Vss。(4)WP被写保护:如果WP引脚连接到Vcc,则所有电容器都具有写保护,并且只能在WP、引脚连接到Vss或悬空时读取,从而允许设备执行正常的读/写操作[12]。2.1.3键盘输入电路由于此设计中使用的按键数量较多,不适合使用独立按键键盘。采用矩阵键键盘,由行线和列线组成,又称行列式键盘。按键位于行列交叉处,密码锁的密码由键盘输入完成。输入/输出端口。2.1.4电源输入电路密码锁主控部分的电源需要使用5V直流电源供电。2.1.5掉电存储电路作为密码锁,掉电保护是必不可少的,这里我们使用AT24C02来存储密码。AT24C02的1、2、3脚为3条地址线,用于确定芯片的硬件地址。在AT89S52测试开发板上都接地,第4脚和第8脚分别为正负电源。第6脚SDA是串行数据输入/输出,数据通过这个双向I²C总线串行传输,连接到AT89S52测试开发板上单片机的P3.2。第5脚SCK为串行时钟输入线,接AT89S52测试开发板上单片机的P3.3。SDA和SCK都需要用一个5.1K的电阻从正电源上拉。引脚7接地。2.1.6复位电路单片机的复位就是使系统中的CPU等功能部件处于一定的初始状态,并从这个状态开始工作。例如复位后PC=0000H,单片机从第一单元取指令。无论是单片机第一次接通电源时,还是停电或发生故障后,都必须复位。为了避免机器死机时复位不可靠,设计电路在最简单的复位电路下增加了手动复位按钮。2.1.7晶振电路AT89S52的XTAL1和XTAL2脚接晶振和电容,如附录1所示。晶振和电容构成电容式三点振荡器。振荡信号的频率与晶振的频率和电容的容量有关,但主要由晶振的频率决定,在0~33MHz之间,电容的值在5和40pF。根据实际情况,本设计采用12MHZ作为系统的外接晶振。电容值为33pF。2.1.8液晶显示电路为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器FYD12864代替普通数码管完成。当需要解锁密码锁时,使用键盘上的数字键0-9输入密码,每按一次数字键,显示屏上会显示一个*,输入多少位,多少位*显示。密码输入完成后,按确认键。如果输入的密码正确,液晶面板会显示“成功打开”,通过液晶显示屏可以清楚地判断密码锁的状态。表1并行接口引脚信号表针号引脚名称等级引脚功能说明1VSS0V电源地2VCC3.0+5V正能量3V0-对比度(亮度)调整4后勤(CS)高/升RS=“H”,表示DB7-DB0为显示数据RS=“L”,表示DB7-DB0为显示指令数据5读/写(SID)高/升R/W="H",E="H",数据被读到DB7-DB0,R/W="L",E="H→L",DB7-DB0数据被写到IR或DR6E(SCLK)高/升使能信号7-14DB0—DB7高/升三态数据线15公安局高/升H:8位或4位并口模式,L:串口模式(见注1)16数控-空脚17/重置高/升复位端,低电平有效(见注2)18输出电压-LCD驱动电压输出19一个VDD背光正极(+5V)(见注3)20ķVSS背光负极(见注3)*注1:实际应用中如果只使用并口通讯方式,可以将PSB接固定高电平,或者将模块上的J8和“VCC”焊锡短接。*注2:上电复位电路与模块相连,所以当不需要频繁复位时,该端子可以悬空。*注3:如果背光灯和模组共用一个电源,可以用焊锡短接模组上的JA和JK。根据以上对FYD12864-0402的介绍,我们就可以设计液晶显示器的原理图了。可变电阻RA用于调节液晶显示器的亮度。2.1.9报警电路报警模块由蜂鸣器实现。选择压电蜂鸣器。密码输入3次错误时,AT89S52的P3.0口输出低电平,蜂鸣器发出蜂鸣声。否则,AT89S52输出高电平,蜂鸣器不响。2.1.10键盘按键功能具体功能设计如表2所示:表2主要功能按键名称功能说明1-9键数字键输入密码一键OK键比较密码C键重置密码键设置新密码E键清除键错误输入清除D键保存键保存密码2.2设计主体电路原理图、PCB图、元件布局图2.2.1液晶系统电路原理图附录22.2.2LCD系统PCB图附录32.2.3液晶系统3D图附录42.2.4底部PCB图附录52.2.5顶部PCB图附录62.2.6丝印层PCB图附录72.3设计课程组件列表(附录1)3软件设计3.1密码锁设计中使用单片机资源的情况原密码存放在程序存储器中,78H-7FH单元作为字体码缓冲区,70H-77H单元作为数据比较缓冲区,61H-66H作为新密码存储区,88H-8DH作为密码缓冲区。3.2密码锁设计软件系统各模块功能介绍及流程图软件设计主要包括按键扫描子程序、LCD显示程序、密码比较程序、AT24C02读写程序、报警程序和开锁显示程序。3.2.1主程序结合本设计的要求,可以画出主程序流程图,如图5-1所示图3.1整体程序流程图3.2.2按键扫描程序根据矩阵键盘的编程规则,我们可以很方便的写出按键扫描子程序的流程图按键扫描子程序流程图如图5-2所示图3.2键盘扫描流程图3.2.3密码比对及报警程序输入密码时,密码锁只有在密码完全相同的情况下才能解锁。如果输入错误超过3次,报警电路将被激活,键盘将被锁定。密码比对报警流程图如图5-3图3.3密码对比及告警流程3.2.4AT24C02读写编程有了前面对24C02和I2C总线工作原理的介绍,我们就可以轻松写出流程图了。图5-4是读操作算法的流程图,图5-5是写操作算法的流程图。图3.4读操作算法流程图图3.5写操作算法流程图4.设计结论、仿真结果、误差分析、教学建议4.1设计结论本设计采用AT89S52和24C02组成电路,同样采用LCD12864显示,C51编写的程序,显示内容非常丰富直观,24C02可以存储数据,断电情况下密码能得到很好的保护,可以保证下次来电时可以继续使用原来的密码,设计更加人性化,可以修改密码,并且有超级密码,可以继续使用密码锁即使用户忘记了密码,也提高了密码锁的可用性。4.2仿真结果4.2.1仿真软件介绍仿真中使用了两个软件,第一个是Keil,第二个是Protues。该模拟是通过结合两个软件来进行的。Proteus软件提供了30多个包含数千个组件的组件库。元器件涉及数模、交直流等。对于一个仿真软件或实验室来说,被测仪器的数量、种类、质量是决定实验室是否合格的关键因素。在Proteus软件包中,同类型仪器的数量没有问题。Proteus还提供了图形显示功能,可以以图形的方式实时显示线路上的变化信号,与示波器类似,但功能更多。ProteusISIS是英国Labcenter公司开发的电路分析和物理仿真软件。它运行在Windows操作系统上,可以模拟和分析(SPICE)各种模拟器件和集成电路。该软件的特点是:1、实现了单片机仿真与SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真等功能;有多种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列及各种外围芯片。③提供软件调试功能。在硬件仿真系统中,它具有全速、单步、设置断点等调试功能,并且可以观察各个变量、寄存器等的当前状态,所以在软件仿真系统中,它也必须具备这些功能;同时支持第三方软件编译调试环境,如KeilC51uVision2等软件。④具有强大的原理图绘制功能。总之,本软件是一款集单片机和SPICE分析于一体的仿真软件,功能极其强大。单片机电路的仿真调试,选择单片机AT89S52,左键点击AT89S52,在出现的对话框中点击ProgramFile按钮,找到刚才编译好的HEX文件,然后点击“OK”按钮即可模拟。点击模拟调试按钮的运行按钮,进入调试状态。我们也可以单步仿真调试,点击按钮进入单步调试状态,在单步仿真调试状态下,点击菜单栏中的“Debug”,点击SimulationLog,会出现仿真调试相关信息出现。简而言之,这两种软件的有效结合使数字电子时钟能够在模拟环境中运行。因此,它允许我在制作实物时先调试和模拟软件,以便在制作实物时更有效地减少错误。4.2.2仿真结果使用Proteus进行模拟,图见附录V。图4.1模拟密码锁显示4.3设计错误及关键分析在设计过程中,虽然使用了keyscan,但还是有keyerror,不是很敏感。这个设计的重点是对用户输入的密码进行逐一比较,直到所有输入的密码都正确才能解锁。4.4设计经验通过一个学期的单片机学习,对单片机有了一定的了解。王老师边教边教,让我们做。我们逐渐了解了单片机。首先,我们学习了单片机的各个部分,以及部分应用。,然后通过实验,单片机各部分打下了良好编制依据,为我们的课程设计打下了坚实编制依据。通过本次课程设计,我觉得理论还是需要与实践相结合的。只有通过实践,有了经验,才会觉得理论还是很容易学的。我觉得在这个设计过程中,一定要知道要应用的硬件的基本结构,各个部分的基本功能,芯片各个引脚的定义以及可以实现的功能。在设计软件时,一定要结合硬件电路。没有硬件,就无法编写软件程序。不同的硬件电路有不同的设计方案。虽然这次应用的电路是王老师给的电路图,但是在学习的过程中,王老师把系统分成了很多模块,对每个模块一一讲解,慢慢明白了设计这个的原因模块。对我们自己设计硬件电路帮助很大。在编写程序的过程中,我遇到了很多困难。它可以在模拟中实现,但不能在实物中实现。这让我很困惑,但它让我再次意识到,理论和实践之间仍然存在差距。还有一个我看了很久的程序。按照理论,完全没问题,就是出不来。这使我能够学习调试。使用keil调试程序对我们来说也很重要。以前觉得写程序是个大问题,一看到写程序就不想写了。但是在设计C51程序的过程中,我了解到,写好程序是不够的,还要多写一些,在编写实践过程中学习C51的用法,对我也很有用未来的学习。很大的帮助,通过这个练习,我不再那么害怕写程序了。另外,我对我不是很熟悉的芯片没有那么抗拒。不管是哪种芯片,我们都可以通过互联网找到它的有用信息。通过自己阅读资料,我们可以彻底了解不熟悉的芯片。比如一开始我对24C02了解不多,但是在编写程序的过程中,我阅读了相关资料,编写了密码锁的程序。提高自信心。4.5教学建议一转眼,一个学期就过去了。一个学期,在王老师的指导下,学习了单片机的知识,让我感觉很充实。通过实验与理论相结合,将理论应用于实践,以实践检验理论,取得了良好的效果。课程设计的顺利完成有其自身不懈的努力,其中很大一部分归功于老师们所传授的学习方法,极大地提高了学习效率。感觉王老师的教学方法很好,理论与实践相结合,先理论后实践,理论与实践相结合。这对我们学习理论也很有帮助,也正是因为这种方法,我们才对单片机产生了浓厚的兴趣。通过在实践中找到自信,也验证了理论的正确性。这种学习理论与实践并举的学习方式应该得到推广,可以弥补我国应试教育的不足。王老师严谨的学术态度、广泛的理论知识、丰富的工作经验、务实的工作态度让我受益匪浅。我不仅从他们身上学到了很多实用的方法,还学到了很多做人的道理,这对我的余生都有好处。在此,感谢王老师这学期的悉心指导,我以后的生活和学习会做得更好。参考[1]光帝,朱月修,冷祖奇.微控制器基础(第3版)。:航空航天大学,2007.6。[2]宋伟.基于单片机MCS-51的智能密码锁设计[M].工程职业技术学院学报,2004,(01);[3]叶启明.\o"单片机制作的新型安全密码锁"一种单片机制作的新型安全密码锁[J].家用电器,2005,(10);[4]董继诚.一种新型安全单片密码锁[J].电子技术,2004,(03);[5]郭海英.基于单片机的电子安全密码锁设计[M].现代电子技术,2005,(13);[6]何立民.单片机应用技术选集[M],航空航天大学,1998;[7]华.MCS-51系列单片机采用接口技术[M],航空航天大学,1993;单片机典型系统设计实例精讲[M],:电子工业,2006;至经过暑假的入门培训和一学期的单片机学习,学期末完成了电子密码锁的设计项目。本次设计得到了王任老师和同学们的大力支持和帮助,感激不尽! 限于我的能力和水平,错误和不妥在所难免,望老师批评指正。附录附件一元器件数量及规格表1元器件数量及规格姓名数量规格单片机1AT89S52串行程序存储器1AT24C02液晶显示器1FYD12864-0402B电解电容器122μF普通电容器233pF排除410K可调电阻10~~100K反抗60.2K一、1K二、10K三、蜂鸣器1三极管18550六脚开关1四针键盘17附录2液晶系统总示意图图1液晶系统一般示意图附录3LCD系统PCB图图2LCD系统PCB图附录4液晶系统3D图图3液晶系统3D图附录5底部PCB图图4底部PCB图附录6顶层PCB图图5顶层PCB图附录7丝印层PCB图图6丝印层PCB图附录8参考程序/************************************************//*名称:密码锁*//*要求:功能要求:设计具有特定功能的密码锁。(1)有系统原密码88888888;(2)用户可以自定义密码;(3)有超级密码,在特殊情况下使用;(4)输入密码时,应处于显示状态。密码输入正确后,应显示密码输入正确的提示信息。否则会显示密码输入错误的提示信息。密码连续输入错误3次,则不允许输入,并报警。(5)系统崩溃重启后,变为原来的初始状态/*时间:2012年10月22日*/ /*邱正光*//************************************************/#include<reg52.h>#include<intrins.h>#defineuchar无符号字符#defineuint无符号整数位rs=P3^1;sbitrw=P3^6;sbiten=P3^7;#define OP_READ 0xa1 //匹配读操作的设备地址#define OP_WRITE0xa0 //匹配写操作的设备地址 #define MAX_ADDR0x7f //AT24C02最地址uchar码dis_code[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//0-9,数据串写入AT24C01uchar代码surper_code[]={0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39};//99999999超级密码ucharmima[]={0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38}; //原始密码是88,最后一个标志位uchar密码1[7]={0};uchar用户密码[7]={0}; //原密码88 位P3_0=P3^0;位SDA=P2^3; //串行数据/地址位SCL=P2^4; //串行时钟位富和=0,aa; //自定义溢出标志位ucharw=0;uchar表[10]; //存储原始密码,可以比较uchar表2[10]; //存储用户自定义密码,可以比较ucharfind_code1[16]=""; //缓冲区数组1 ucharfind_code2[16]="";//缓冲区数组2/************************函数声明*****************************/voidDisplay_String(uchar*p,uchar); //显示要写入的信息ucharkey_return(); //返回键扫描键值uchar键扫描(无效); //按键扫描函数无效清除密码(); //清除密码函数voiddelay(uintm);//延时函数无效写入命令(uchar命令); //LCD写命令函数无效写入数据(uchar日期); //LCD写数据函数无效液晶集(无效);//LCD设置函数无效显示(uchary,ucharx,uchar*p); //LCD显示函数/*****24c02相关函数********/无效延迟(ucharms); //延迟子程序无效开始(); //起始位无效停止(); //停止位ucharshin(); //将数据从AT24Cxx转移到MCU 位喊(ucharwrite_data); //将数据从MCU转移到AT24Cxxvoidwrite_byte(ucharaddr,ucharwrite_data); //在指定地址写入数据addrwrite_data无效填充字节(uchar填充数据); //填充数据fill_data到EEPROM ucharread_current(); //在当前地址读取ucharread_random(ucharrandom_addr);//在指定地址读取/************************************************************************/无效主要(无效){ ucharu,temp2,k,surper=0; uchari,w,j=0,ii=0,n=0; //uchart;F: SDA=1; //2线串行接口 SCL=1; 填充字节(0xff); 液晶集(); 写命令(0x01); w=read_random(8); //从24c02的第十位读取m的值。如果m为0,表示用户没有修改密码,转24c02读取原密码 if(w==2)//w为2,表示一旦用户修改了密码,转24c02读出新密码 {for(i=0;i<8;i++) {mima[i]=read_random(i);} //循环读取24Cxx内容 }s: display(1,1,"欢迎使用密码锁");display(2,1,"密码:");display(4,1,"确认A");display(4,6,"重新输入E"); 而(1) { temp2=key_return(); 开关(温度2) { 案例0x30:案例0x31:案例0x32:案例0x33:案例0x34:案例0x35:案例0x36:案例0x37:案例0x38:案例0x39: 如果(ii<=7) { 用户密码[ii]=temp2; find_code1[ii]='*'; Display_String(find_code1.0x88); ⅱ++; }休息; case10: //一个开锁确认键 {{if((mima[0]==Userpassword[0])&&(mima[1]==Userpassword[1])&&(mima[2]==用户密码[2])&&(mima[3]==用户密码[3])&&(mima[4]==用户密码[4])&&(mima[5]==用户密码[5])&&(mima[6]==用户密码[6])&&(mima[7]==用户密码[7])) 富和=1; 别的 富和=0; } if(fuhe==1) { 富和=0; ii=0; 清除密码(); //清除密码功能 display(3,1,"成功打开"); u=1; //解锁后可以修改密码 j=0; display(4,1,"确认A");display(4,6,"修改C"); } 别的 {j++; 清除密码(); display(3,1,"请重新输入!"); u=0; } ii=0; 休息; } case12: //c设置新密码 { if(!u) //解锁前不能设置新密码 { 我=0; display(3,2,"操作错误!"); 延迟(250); } 否则{i=0; display(2,1,"新密码:"); 显示(3,2,“”); display(4,1,"保存D");display(4,6,"RetypeE"); }休息; } case13: //D保存新密码 {如果你) {我=0; } 别的 {二=0; SDA=1; SCL=1; 填充字节(0xff); 液晶集(); 延迟(50); 写命令(0x01); f

温馨提示

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

评论

0/150

提交评论