单片机原理及应用实训报告格式).doc_第1页
单片机原理及应用实训报告格式).doc_第2页
单片机原理及应用实训报告格式).doc_第3页
单片机原理及应用实训报告格式).doc_第4页
单片机原理及应用实训报告格式).doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

西安航空职业技术学院课程设计/实训报告课程名称: 小系统设计 所属学院:电子工程学院指导教师:杨思俊学生姓名: 学号: 专业:11级应用电子技术五年制西安航空职业技术学院制西安航空职业技术学院课程设计/实训任务书课程名称: 单片机原理及应用任务与要求: 1、完成布置的所有原理图设计; 2、完成程序编制及调试;3、完成实训报告书写;时间: 2014 年12 月 8日 至 2014年 12 月 12 日 共 1周所属学院: 电子工程学院学生姓名: 学 号: 专业: 11级应用电子技术五年制指导教师: 杨思俊西安航空职业技术学院制目录1 引言32 硬件设计42.1单片机部分42.1.1 AT89S51功能介绍42.1.2 AT89S51管脚功能说明42.1.3振荡器特性62.1.4 AT 89S51相对于AT89C51增加的新功能72.2四乘四行列式键盘部分72.3七段数码管显示器部分82.4密码存储电路设计92.5系统硬件设计原理结构框图如图2-7所示92.6系统板上硬件连线102.7电路原理图 (附录A)103 软件设计113.1键盘输入部分113.1.1键盘程序设计内容113.1.2键盘程序框图(附录B)113.1.3键盘C语言源程序(附录C)113.2数码管显示部分113.2.1数码管程序设计内容113.2.2数码管C语言源程序(附录C)113.3蜂鸣器声音提示部分113.3.1蜂鸣器程序设计内容123.3.2蜂鸣器C语言源程序(附录C)123.4密码修改与存储部分123.4.1密码修改与存储程序设计内容123.4.2密码修改与存储C语言源程序(附录C)123.5系统程序流程总框图如图3-1所示123.6整个系统的C语言源程序(附录C)124仿真设计1341 Proteus仿真软件1342 ProteusV71SP2的使用1343 进行仿真设计14431设计仿真电路14432 软件仿真设计15结束语16参考文献17附录A 电路图原理18附录B 键盘输入程序框图19附录C 整个系统的C语言源程序(主程序)201 引言随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。目前普遍使用的机械锁结构简单、使用方便、价格便宜。但在使用过程中暴露了很多缺点:1.机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。所以很多钥匙可以互开,保密性差,安全性低。2.钥匙一旦丢失,无论谁捡到都可以将锁打开。3.机械锁的材料大多为黄铜,质地较软容易损坏。4.机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。所以机械锁已难以满足当前社锁会和人们的要求。出于安全、方便的需要。随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。电子密码锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。如果采用6位密码,则密码组合可达到,每增加1位,密码组合就增加10倍。从而提高了密码锁的安全系数。 密码锁被广泛应用保险柜、保险箱、文件柜、防磁防火柜、防盗门、银库门、仓库门、车门、民用门等。目前市场上普遍所见的电子密码锁的密码很容易被窥探和多次试探,而丢失密码,使密码锁失去其安全性。该电子密码锁利用单片机作为主控核心,单片机(AT89S51)所具有的特殊功能使得电子密码锁的保密性能大大加强,这样就可以有效的防止多次试探密码的可能性。随着单片机和其它智能芯片的进一步开发防盗锁将实现智能化,这将是锁的安全性能大大提高。本系统实现密码一次输入的提示功能,若密码输入不正确将发出“嘀嘀”的报警声,引起他人警觉。同时可添加外围设备实现远程报警(如添加继电器一类设备可以连接到主人的电话上,是主人知道家里有人非法操作,及时报警)。若密码输入正确将发出“叮咚”的门铃声。本系统使用的单片机所具有强大的功能能够实现智能控制用来完成密码的输入、判断和比较从而执行相应的开锁显示或报警等功能。2 硬件设计本系统硬件设计由单片机(AT89S51)部分、44行列式键盘、四联七段共阴数码管、报警器、密码存储5个基本部分所组成。2.1单片机部分主控器件是单片机,AT89S51是一个低功耗、高性能CMOS 8位单片机,片内含4k字节的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。2.1.1 AT89S51功能介绍AT89S51主要性能参数:与MCS51产品指令系统完全兼容,4k字节在系统编程(ISP)Flash闪速存储器,1000次檫写周期,4.0-5.5V的工作电压范围,全静态工作模式:0Hz33MHz,三级程序加密锁,128k字节的随机存取数据存储器(RAM),32个可编程I/O口线,6个中断源,全双工串行UART通信,低功耗空闲和掉电模式,中断可从空闲模式唤醒系统,掉电标志和快速编程特性,灵活的在系统编程,2个16位可编程定时计数器,看门狗(WDT)电路及双数据指针。AT89S51芯片引脚排列如图2-1所示: 图2-5 仿真介面2.1.2 AT89S51管脚功能说明(1)VCC:供电电压,GND:接地。(2)P0口:P0口为一组8位漏级开路型双向I/O口,也即地址/数据总线复用口。作为输入口用时,每位能驱动8个TTL逻辑门电路,当P1口的管脚第一次写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。本系统中把 “单片机系统”区域中的P0.0端口用导线连接到报警器上,用来提示密码输入的正确或错误并发出相应的声音。(3)P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲器可驱动(吸收或输出电流)4个TTL逻辑门电路。P1口管脚写入“1”后,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,P1口被外部下拉为低电平时,将输出电流。在FLASH编程和校验时,P1口作为低8位地址接收。本系统中把“单片机系统”区域中的P1.0P1.7用导线连接到数码管显示器的一端。用来实现数码管的显示。(4)P2口:P2口为一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲器可驱动(吸收或输出电流)4个TTL逻辑门电路,当P2口被写“1”时,其管脚被内部上拉电阻拉到高电平,且作为输入。并因此作为输入口使用时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。本系统中把“单片机系统”区域中的P2.0P2.7用导线连接到三极管的一端通过三极管放大输入到数码管显示器上。本系统中由“单片机系统”区域中的P1口和P2口共同来完成数码管的显示。(5)P3口:P3口管脚是一组带有内部上拉电阻的8位双向I/O口,P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。当P3口写入“1”后,它们被内部上拉电阻拉高可作为输入端口。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-1所示:本系统中把单片机系统中P3.0-P3.3和P3.4-P3.7端口分别连接到的44行列式键盘中的四条横线、四条竖线上,用来完成密码的输入。(6)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位可打开或关闭该功能,DISRTO位缺省为RESET输出高电平打开状态。表2-1 XXX表端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通表2.2 P1口部分端口的第二功能(7)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低8位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。(8)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。(9)/EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址0000HFFFFH),EA端必须保持低电平(接地),注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,CPU则执行内部程序存储器中的指令。在FLASH编程期间,此引脚也用于施加+12V编程电压(VPP)。(10)XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.3振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.1.4 AT 89S51相对于AT89C51增加的新功能ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离,是一个强大易用的功能。最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度,具有双工UART串行通道,内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路,双数据指示器,电源关闭标识,全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。兼容性方面:向下完全兼容51全部子系列产品。比如8051、89C51等等早期MCS-51兼容产品。在89S51上一样可以照常运行,这就是所谓的向下兼容。2.2四乘四行列式键盘部分由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图2-2所示:图2-2 44行列式键盘每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要4条行线和4条列线,即可组成具有44个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。按键的操作如下图2-3所示:图2-3 按键值共计数字键10个,功能键6个,用44组成09数字键、确认键F及修改键C,10个数字键用来输入密码,另外6个功能键分别是:A、B、C、D、E、F。其中C键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。F键的功能是确认输入的密码。2.3七段数码管显示器部分第0段第1段第2段第3段第4段第6段第5段七段LED数码显示器如下图2-4所示:图2-4 七段数码管七段LED显示器由7个发光二极管组成,其中7个长条形的发光管排列成“日”字形,如上图所示,由七个发光二极管组成的七段显示器。如再加一个贺点形的发光管在显示器的右下角作为显示小数点用,则组成八段LED显示器。它能显示各种数字及部份英文字母。LED显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳LED显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴LED显示器。如下图2-5所示:图2-5 七段数码管内部结构共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制码就可以表示欲显示字符的字形代码。在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。2.4密码存储电路设计密码储在EEPROM芯片AT24C04中。AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图2-6所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。图2-6 EEPROM存储电路2.5系统硬件设计原理结构框图如图2-7所示图2.7 系统流程图框图2.6系统板上硬件连线(1)、把“单片机系统”区域中的P2.0P2.7用导线连接到三极管的一端通过三极管放大输入到数码管显示器上。(2)、把“单片机系统”区域中的P1.0P1.7用导线连接到数码管显示器的另一端。(3)、把“单片机系统”区域中的P0.0用导线连接到报警器上。(4)、把“单片机系统”区域中的P0.4和P0.5用导线连接到EEPROM芯片AT24C04.(5)、把44行列式键盘中的四条横线、四条竖线分别连接到P3.0-P3.3和P3.4-P3.7上。2.7电路原理图 (附录A)3 软件设计本系统是以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加声光提示甚至添加远程遥控控制功能。本系统程序设计的内容为: 密码的设定,在此程序中密码是固定在程序存储器ROM中,密码为6位。密码的输入问题:根据事先设计好的密码输入,输完后按确认键将执行相应的功能。根据设定好的密码,采用44行列式键盘实现密码的输入功能,密码输入时显示管只显示“8.”,当输入密码正确时数码管显示“1HELLO”同时发出“叮咚”声,若密码输入不正确则显示“2ERROR”作为提示信息,同时发出“嘀、嘀”报警声。密码输入的过程中可随时对输入的密码进行修改。本系统程序设计由键盘输入部分、数码管显示部分和蜂明器声音提示部分3个部分组成。3.1键盘输入部分3.1.1键盘程序设计内容本系统中键盘采用44行列式键盘,按键电路如上图4所示。每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU 通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。3.1.2键盘程序框图(附录B)3.1.3键盘C语言源程序(附录C)3.2数码管显示部分3.2.1数码管程序设计内容本系统采用的是8位数码管组成的显示电路作为提示信息,初始化时,显示“P”,接着输入最大的6位数的密码,当密码输入完后,按下确认键“F”,进行密码比较,当输入密码正确时在数码管上显示“1HELLO”的提示信息,当输入密码错误时在数码管上显示“2ERROR”的提示信息。在输入密码过程中,每输入一位密码显示器上只显示一个“8.”从右到左依次显示。当输入密码位数超过6位时,给出报警信息。在密码输入过程中,若输入错误,可以利用“C”键删除刚才输入的错误的数字。在输入密码的过程中可以随时对输入的密码进行修改。3.2.2数码管C语言源程序(附录C)3.3蜂鸣器声音提示部分3.3.1蜂鸣器程序设计内容本系统把P0.0用作蜂鸣器报警的接口,对输入的密码与设定的密码进行比较,若密码正确,蜂鸣器发出“叮咚”声;若密码不正确,蜂鸣器发出“嘀、嘀”报警声。3.3.2蜂鸣器C语言源程序(附录C)3.4密码修改与存储部分3.4.1密码修改与存储程序设计内容本系统把P0.4和P0.5用EEPROM的IIC接口,用于把要修改的密码存起来,输入密码时从EEPROM里读出来再做对比。3.4.2密码修改与存储C语言源程序(附录C)3.5系统程序流程总框图如图3-1所示图3-1 系统程序流程总框图3.6整个系统的C语言源程序(附录C)4仿真设计41 Proteus仿真软件Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。42 ProteusV71SP2的使用要想学会某个软件,首先要对其操作界面的各种工具进行熟悉,其操作界面如图4-1所示。图4-1 ProteusV7.1SP2操作界面(1)打开软件,选择电子元件。点击“元件选择按钮”,出现如下图(图3-2)对话框,将电路中需要用到的各种电子元件的代号输入“keywords”中,双击对应的模拟元件,该元件就添加到列表中。(注意型号和大小的选择)。例如:要得到单片机AT89C52的模拟器件,就要在“keywords”输入“at89”,右边就会出现和按钮相关的元件,再根据预览窗口的显示选择所需要的按钮。添加完所需要的原件就可以关闭“元件选择对话框”, 如图4-2所示。图4-2 元件添加演示图(2)再列表中的各元件放在电路板上,并将元件的引脚按正确的电路连接方法用线连接起来。单击鼠标左键为安放,单击右键为选择,双击右键为删除,先右击在左击为修改或者查看元件参数。左击元件的端口,再左击另一端口则可以将两个端口用线连接起来。(3)在需要用到电源的地方加上电源。(注意电压的大小可根据不同需要进行修改)。(4)电路图画好后可以用简单的程序测试看电路图是否正确。43 进行仿真设计431设计仿真电路仿真电路如下图4-3所示:图4-3 仿真电路电路设计好之后,下一步就是要进行软件仿真调试。432 软件仿真设计利用KEIL软件编写好程序,然后加载到Proteus进行逐步仿真调试,直到达到预期的效果。仿真效果如图4-4所示:图4-4 仿真效果图结束语本系统充分利用了AT89S51系统单片机软、硬件资源,引入了智能化分析功能,提高了系统的可靠性和安全性。该系统主要有以下几点优点:利用单片机去控制硬件电路,打破传统的专用硬件的形式,使电路更加灵活,更加快捷.其重复概率仅为十万分之一,有着很高的安全性 电子密码锁采用单片机作为核心的控制元件具有功能强、性能可靠、电路简单、成本低等特点。智能密码锁它成功的实现了密码的输入识别和修改、报警、信息显示等功能。另外,智能密码锁在软、硬件方面稍加改动,便可构成智能化的分布式监控网络,实现某一范围内的集中式监控管理,在金融、保险、军事重地及其它安全防范领域具有广泛的应用前景。因此电子密码锁凭借自身的优势,它将会越来越广泛的受到社会的欢迎、接受。但是电子密码锁还具有自身的缺点:电子锁必须完成机械动作(操作)电子识别转换和电子控制机械执行这一系列过程,显然是复杂一些。二是故障概率相对较高,电子器件一多,一复杂化。必然增加故障机率,加上电子器件怕潮湿,怕强磁电,怕强震动,使它对使用环境有一定要求。绝大部分电子密码锁都增加了备用开锁手段或称应急接口,无疑又降低了安全性。由于采用键盘式密码输入很可能被他人窥探、盗用。所以在设计键盘时必须防他人窥探和试探等外围设本。尽管电子锁有以上还待解决问题,但它的大密码量和不用钥匙的优点以及众多的识别方式却有极大的诱惑力。它将在以后的发展中被广泛应用。 今后研究方向主要是以单片机设计为主,不断学习更高级的单片机,往操作系统方面发展。参考文献1:杨欣.电路设计与仿真.北京:清华大学出版社,20062:楼然苗.51系列单片机设计实例.北京:航空航天大学出版社,20043:王田苗.嵌入式系统设计与实例开发.北京:清华大学出版社,20054:张友德.单片微型机原理应用与实验.上海:复旦大学出版社,1996附录A 电路图原理附录B 键盘输入程序框图延时10msP3=FFH,P3.1=0P3=FFH,P3.0=0根据当前状态识别按键根据当前状态识别按键延时10ms真得有键按下吗?有键按下吗真得有键按下吗?有键按下吗?根据当前状态识别按键延时10msP3=FFH,P3.3=0P3=FFH,P3.2=0延时10ms有键按下吗?有键按下吗?真得有键按下吗?真得有键按下吗?根据当前状态识别按键附录C 整个系统的C语言源程序(主程序)#include #include 2402.h unsigned char wl6;/=1,2,3,4,5,6; /用于保存输入密码 unsigned char code wl1=0xfe,0xfd,0xfb,0xf7, /位选 0xef,0xdf,0xbf,0x7f; unsigned char code wl220=0x3f,0x06,0x5b,0x4f,0x66, /段码 09,AF,全灭,-,P,全亮 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00,0x40,0x73,0xff; unsigned char code wl8=0x00,0x00,0x77,0x3f,0x77, /全灭,全灭,A,0,A,A,E,1 0x77,0x79,0x06;unsigned char code wl9=0x00,0x00,0x3f,0x38,0x38, /全灭,全灭,0,L,L,E,H,2 0x79,0x76,0x5b;unsigned char wl38=18,16,16,16,16,16,16,16; unsigned char wl4; unsigned char wl5; unsigned char wl6; unsigned char wl7;unsigned char zw;unsigned char zq; unsigned char wl7count; /输入的密码个数unsigned char wllen=6; unsigned char getwl6; /保存输入密码缓冲unsigned char gettemp16; /第一次输入密码缓冲unsigned char gettemp26; /第二次输入密码缓冲bit wl7overflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa,bb; unsigned int cc,dd; bit wl8flag; bit alarmflag; bit hibitflag; unsigned char wl8a,wl8b; unsigned int var1;/unsigned char var2=0;unsigned char key_error_times=0;unsigned int count_3s=20000; unsigned int change_key_flag=0;unsigned int change_key_flag1=0;void key_init(void)unsigned char i;EA=0;for(i=0;i6;i+)/DELAY(200);wrteeprom(i,1);/初始密码6个1 /keyiniti);DELAY(300);EA=1;void read_key(void)unsigned char i;EA=0;for(i=0;i6;i+)wli=rdeeprom(i);DELAY(300);EA=1;void write_key(void)unsigned char i;EA=0;for(i=0;i0;i-) /去抖for(j=248;j0;j-); wl6=P3; wl6=wl6 & 0x0f; if (wl6!=0x0f) /确实是有键按下 wl6=P3; wl6=wl6 & 0x0f; switch(wl6) case 0x0e: /第一列第一行按下wl7=12; break; case 0x0d: /第一列第二行按下wl7=13; break; case 0x0b: /第一列第三行按下wl7=14; break; case 0x07: /第一列第四行按下wl7=15; break; wl6=P3; if(wl7=0) & (wl710) if(wl7count6) wl7count=6; wl7overflag=1;/wl7 overflow else if(wl7=12)/delete wl7 if(wl7count0) wl7count-; getwlwl7count=0; /清密码wl3wl7count+2=16; /不显示 else wl7overflag=1; else if(wl7=15)/enter wl7 if(wl7count!=wllen) /密码个数不为6 errorflag=1; rightflag=0; second3=0; else /密码个数为6if(getwl0=4)&(getwl1=1)&(getwl2=3)&(getwl3=1)&(getwl4=0)&(getwl5=2)key_init();read_key();if(change_key_flag=0) for(i=0;iwl7count;i+) if(getwli!=wli) /输入的密码与保存在ROM中的密码进行比较 i=wl7count; /密码不正确errorflag=1; rightflag=0; second3=0; key_error_times+;goto a; key_error_times=0;errorflag=0; /密码正确rightflag=1; a:i=wl7count; else if(change_key_flag=1)for(i=0;iwl7count;i+) if(getwli!=wli) /输入的密码与保存在ROM中的密码进行比较change_key_flag=1;wl30=1;break;elsechange_key_flag=2;wl30=2;for(var2=0;var28;var2+)if(var2=0);/wl3var2=18;elsewl3var2=16;for(var2=0;var26;var2+)getwlvar2=0;wl7count=0; else if(change_key_flag=2)change_key_flag=3;for(i=0;iwl7count;i+) gettemp1i=getwli;/保存第一次输入的密码wl30=3;for(var2=0;var28;var2+)if(var2=0);/wl3var2=18;elsewl3var2=16;for(var2=0;var26;var2+)getwlvar2=0;wl7count=0; else if(change_key_flag=3)for(i=0;iwl7count;i+) if(gettemp1i!=getwli)/第二次输入的密码与第一次输入的作对比change_key_flag=1;wl30=1;break;elsechange_key_flag=0;wl30=18;if(i=5)/两次输入的密码匹配,刚把密码写到eeprom里面write_key();read_key(); for(var2=0;var28;var2+)if(var2=0);/wl3var2=18;elsewl3var2=16;for(var2=0;var20;i-) for(j=248;j0;j-); wl6=P3; wl6=wl6 & 0x0f; if (wl6!=0x0f) wl6=P3; wl6=wl6 & 0x0f; switch(wl6) case 0x0e: /第二列第一行按下wl7=11; break; case 0x0d: wl7=3; break; case 0x0b: wl7=6; break; case 0x07: wl7=9; break; wl6=P3; if(wl7=0) & (wl710) if(wl7count6) wl7count=6; wl7overflag=1;/wl7 overflow else if(wl7=12)/delete wl7 if(wl7count0) wl7count-; getwlwl7count=0; wl3wl7

温馨提示

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

评论

0/150

提交评论