




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实 习 报 告 实习名称: 单片机应用实习 院(系)名称: 电气与信息工程学院 专业班级: xxxxxxxxx 学生姓名: xxxxxx 学 号: xxxxxx 指导教师: xxxxxxxxxx 黑龙江工程学院教务处制2014年7月目 录第1章 总体设计方案.41.1总体设计方案.4第2章 硬件电路设计.52.1单片机最小系统电路设计.52.2液晶显示模块.62.3键盘输入模块.72.4 AT24C02密码存储模块.82.5 系统供电电路设计.92.6 蜂鸣器和继电器模块.10第3章 系统软件设计.113.1软件总体设计思路.113.2主程序流程设计.12总结.13参考文献.14附录.15附录一.15附录二.15实习任务书学生姓名 xxxx系部电气与信息工程学院专业班级测控12-1指导教师姓名xxx职称副教授讲师是否外聘是 否题目名称键盘式电子密码锁一、设计的内容、目的和意义 本次实习是有关于键盘式电子密码锁的设计。在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。本次实习的目的是实现电子密码锁的功能,并运用单片机技术设计一个结构简单,并且相对低成本的密码锁。二、设计的技术指标要求1、研究方法(1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现道路;(2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计; (3)在查阅文献基础上展开设计,力求创新。2、技术要求(1)采用6位密码(2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘摘 要本次设计使用ATMEL公司的STC89C52实现一基于单片机的智能电子密码锁的设计,其主要具有如下功能:1、设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。 2、密码可以由用户自己修改设定(只支持6位密码),初始密码输入成功后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误1602LCD会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。方案比较及选择方案1用数字逻辑器件搭建电子密码锁,电路复杂庞大,且稳定性差,密码位数有限,保密性差方案2:用FPGA可编程逻辑器件设计电子密码锁,程序通用性差,可读性低,不易移植。成本昂贵方案3:单片机AT89c51为核心,设计一个电子密码锁系统。系统分为硬件和软件两个部分。硬件部分主要包括键盘输入模块、显示电路模块、密码存储模块、单片机电路模块等;软件部分主要包括如下模块:系统的主流程、键盘的扫描、LCD的读写、密码存储器的读写比较等。确定方案及理由:方案1需要大量逻辑器件。方案2需要FPGA可编程逻辑器件,价格昂贵所以本次实习选择价格简单操作相对简单的第三个方案。第1章 总体设计方案1.1 总体设计方案 密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:1、 密码输入功能:插上电源后,LCD提示输入密码,输入密码时在1602LCD上显示“*”每输入一个数字,LCD上向右移一格,同时“*”加一个。值到输入6个“*”为此,若一次性输入大于6个密码,则只保留前6位密码,按“确定”生效。若按取消键,锁关闭,所有输入清除。2、密码更改功能:将输入的值作为新的密码(初始密码是6个0 )。3、当密码输入成功后,或者密码修改成功后,LCD上有提示成功字符,同时蜂鸣器响两声作为提示。其具体系统原理框图如图1.1所示。键盘输入模块复位电路密码存储模块STC89C52显示模块报警电路开锁电路1.2 软硬件功能分析键盘输入模块、液晶显示模块、AT24C02存储模块、电源模块以及蜂鸣器与继电器模块。系统的总体工作过程是这样的:首先,从键盘输入密码,单片机采集到密码后通过液晶显示,同时与AT24C02存储模块中的密码比对,密码正确后继电器开关打向另一端以模拟开锁过程,三次密码输入错误后报警模块报警。通过对器件性价比及其他方面的考虑,键盘采用矩阵式键盘,显示采用LCD1602字符型液晶显示器为了,用外扩一个AT24C02E2PROM存储密码。第2章 硬件电路设计2.1 单片机最小系统电路设计 单片机最小系统设计是单片机应用系统设计的基础。AT89S52单片机最小系统电路如图2.1所示。图2.1 单片机最小系统电路2.2液晶显示模块本次实际的显示模块是采用的1602,电路图如图所示图2.2 液晶显示电路1602的引脚功能:第1脚:为地。第2脚:VCC接5V正电源。第3脚:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第1516脚:空脚。2.3 键盘输入模块使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。图2.3 矩阵键盘电路通过行列键盘扫描的方法可获取键盘输入的键值,从而得知按下的哪个键,具体过程如下:(1) 查询是否有键按下。单片机向行扫描口输出全为“0”的扫描码,然后从列检测口检测信号,只要有一列信号不为“1”,则表示有键按下,且不为“1”的列即对应为按下的按键所在的列。(2) 查询按下按键所在的行、列位置。前面已经取得了按下键的列,接下来要确定按键所在的行,这需要进行逐行扫描,单片机首先使第1行为“0”,其余各行为“1”,接着进行行列检测,若为全 “1”,表示不在第1行,否则即在第1行;然后使第2行为全 “0”,其余各行为“1”,再进行列检测,若为全“1”,表示不在第2行;这样逐行检测,直到找到按键所在的行。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的错误动作。在扫描键盘过程中,应该注意以下问题:(1) 当按下或松开按键时,按键会产生机械抖动。这种抖动经常发生在按下或松开瞬间,一般持续几到十几秒,抖动时间随按键的结构不同而不同,。在扫描键盘过程中,必须想办法消除按键,否则会引起错误。较为简单的方法就是用软件延时方法来消除按键的抖动,一旦发现有键按下,就延时20ms以后再测按键的状态。这样就避开按键发生抖动的那一段时间,使CPU能可靠地读按键状态。在编制键盘扫描程序时,只要发现按键状态有变化,即无论是按下还是松开,程序都延时20ms以后再进行其他操作。(2) 在键盘扫描中,应防止按一次键而有多个对应键值输入的情况。这种情况的发生是由于键扫描速度和键处理速度较快,当某一个键按下还未松开时键扫描程序和键处理程序已执行了多遍。这样,由于程序执行和按键动作不同步而造成按一个键有多个键值输入的错误状态。为避免发生这种情况,必须保证按一次键,CPU只对该键做一次处理。为此,在键扫描程序中不仅要检测是否有键按下,在有键按下的情况,做一次处理,而且在键处理完毕后,还应检测按下的键否松开,只有当按下的键松开以后,程序才往下执行。这样每按一个键,只做一个键处理,使二者达到同步,消除按一次键有多个键值输入的错误情况。根据需要,本设计的4*4键盘设定10个数字键(0-9)和3个功能键。图3.2中第4列前三个暂时不用,可以作以后扩充所用。因此根据上面提到的4*4键盘的键值编码方法,各按键及其编码对应关系如表3.1。按键行号列号键值编码11111H()21221H()31341H()42112H()52222H()62342H()73114H()83224H()93344H()*(取消)4118H()04228H()#(确认)43 48H ()D(修改)44 88H()表2.1 按键与编码对应关系表2.4 AT24C02密码存储部分图2.4 AT24C02模块为了保存用户设置的密码,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的T0、T1端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;A0、 A1、A2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。该电路要注意的是SCL、SDA必须加上一上接电阻,阻值为4.7K。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。 AT24C02支持I2C 总线数据传送协议,I2C 总线协议规定,任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式,通过器件地址输入端A0 A1 和A2 可以实现将最多8 个24WC01 和24WC02 器件4 个242C04 器件,2 个24WC08 器件和1 个24WC16 器件连接到总线上。2.5 系统供电电源电路设计本系统需要采用5V电源,所采用的电源电路是由整流电路和三端稳压器组成的。电路输出电压和最大输出电流决定于所选三端稳压器。其电源电路如图所示。图2.5 5V电源电路2.5 蜂鸣器和继电器部分密码正确时驱动继电器开锁,LED灯提示,蜂鸣器响, 电路图所示图2.6 继电器,蜂鸣器电路1、继电器:(1) 概述:继电器是一种电子控制器件,它具有控制系统和被控制系统,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。2、蜂鸣器:蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。这里对单片机在蜂鸣器驱动上的应用作一下描述。本设计使用的是自激蜂鸣器,自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音。第3章 系统软件设计3.1 软件总体设计思路经过前几章的设计工作,系统的硬件电路设计已经完成了。然而,对于一个完整的设计系统来说,只有硬件电路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。单片机系统的软件设计主要使用汇编语言或高级语言。汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以及模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。而C语言既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计。用C语言编写的程序较容易移植,可生成简洁、可靠的目标代码,用C语言进行单片机计算机开发已经是必然的发展趋势。本设计整体软件思路为:大量程测量后切换模拟开关决策量程范围,周而复始的测量,并显示。本设计以单片机作为系统的核心控制单元,运用C语言进行编程工作,按照工作流程来实现设计要求的对交流真有效值的测试功能,并且通过软硬件的不断调整,来完善优化设计系统,从而实现结构化程序设计。3.2 主程序流程设计 通过之前的硬件系统设计,综合各方面的考虑,系统主控流程图如图所示是初始化屏幕显示Welecom扫描按键是否有键按下开始否修改键按下输入键按下接受6位密码密码是否正确修改并保存密码开锁是是否是否出错报警图3.1 程序流程图实习总结以上为本次单片机实习设计的电子密码锁电路,通过这次实习发现自己的看法有点太片面,实习不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次实习使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次实习,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。在这次实习中,同学之间互相帮助,有什么不懂的大家在一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。在整个设计过程中学到了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力, 使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次实习的最大收获和财富,使我终身受益。此次所设计的密码锁由于自己的能力有限未能将其拓展为红外遥控密码锁。但在以后的生活和工作中,我会继续努力学习,争取将其完成。通过这次实习,我感觉有很大的收获:首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对AD9、和Keil 51等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。参考文献1 白延敏.51单片机典型系统开发实例精讲M. 电子工业出版社, 2009,1.2 李建忠.单片机原理及应用M.西安电子科技大学出版社,2002,1.3 胡汉才.单片机原理及其接口技术M. 清华大学出版社,1996,2.4 阎石. 数字电子技术基础M.高等教育出版社,1998,4.5 美Howard Johnoon , Martin Graham.高速数字设计(英文版)M.电子工业出版社1991,1.6 李钟实. 实用电子报警器精选百例M.科学技术文献出版社,2002,2.7 赵广林. Protel 99SE 电路设计与制作M. 电子工业出版社. 2005,8.8 江思敏, 姚鹏翼, 胡荣. Protel电路设计教程M.清华大学出版社,2002,1.9 Brian W.Kernighan and Dennis M.Ritchie. The C Programming LanguageM. 1988,1.10 戴佳, 戴卫恒.C语言应用程序设计M.电子工业出版社,2006,1.11 龚运新. 单片机C语言开发技术M.清华大学出版社2006,1.附 录附录1 总原理图附录2 源程序源程序#include #include#define LCM_Data P0#define uchar unsigned char #define uint unsigned int/#define Busy 0x80 /用于检测LCM状态字中的Busy标识#define w 6 /定义密码位数sbit lcd1602_rs=P25;sbit lcd1602_rw=P26;sbit lcd1602_en=P27;sbit Scl=P34;/24C02串行时钟sbit Sda=P35;/24C02串行数据sbit ALAM = P21;/报警sbit KEY = P20; /开锁sbit open_led=P22;/开锁指示灯bit operation=0;/操作标志位bit pass=0; /密码正确标志/bit ResetEn=0;/重设密码充许标志bit ReInputEn=0; /重置输入充许标志bit s3_keydown=0; /3秒按键标志位bit key_disable=0; /锁定键盘标志unsigned char countt0,second;/t0中断计数器,秒计数器void Delay5Ms(void);unsigned char code a=0xFE,0xFD,0xFB,0xF7; /控盘扫描控制表unsigned char code start_line=password: ;unsigned char code name=Coded Lock=;/显示名称unsigned char code Correct= correct ;/输入正确unsigned char code Error= error ; /输入错误unsigned char code codepass= pass ; unsigned char code LockOpen= open ;/OPENunsigned char code SetNew= SetNewWordEnable;unsigned char code Input= input: ;/INPUTunsigned char code ResetOK= ResetPasswordOK ;unsigned char code initword= Init password.;unsigned char code Er_try= error,try again!;unsigned char code again= input again ;unsigned char InputData6;/输入密码暂存区unsigned char CurrentPassword6=1,3,1,4,2,0; /当前密码值unsigned char TempPassword6;unsigned char N=0;/密码输入位数记数unsigned char ErrorCont;/错误次数计数unsigned char CorrectCont;/正确输入计数unsigned char ReInputCont; /重新输入计数unsigned char code initpassword6=0,0,0,0,0,0;/=5ms延时=void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/=400ms延时=void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=24C02=void mDelay(uint t) /延时 uchar i; while(t-) for(i=0;i125;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_(); _nop_();/*起始条件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止条件*/void Stop(void) Sda=0; Scl=1; Nop(); Sda=1; Nop();/*应答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向应答位*/void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*发送数据子程序,Data为要求发送的数据*/void Send(uchar Data) uchar BitCounter=8; uchar temp; do temp=Data; Scl=0; Nop(); if(temp&0x80)=0x80) Sda=1; else Sda=0; Scl=1; temp=Data1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*读一字节的数据,并返回该字节值*/uchar Read(void) uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1)temp1=temp1;temp=temp1;BitCounter-;while(BitCounter);return(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;iNum;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i0;x-) for(y=110;y0;y-);/-写指令-write_1602com(uchar com)/*液晶写入指令函数*lcd1602_rs=0; /数据/指令选择置为指令lcd1602_rw=0; /读写选择置为写P0=com; /送入数据delay(1);lcd1602_en=1; /拉高使能端,为制造有效的下降沿做准备delay(1);lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令/-写数据-write_1602dat(uchar dat) /*液晶写入数据函数*lcd1602_rs=1; /数据/指令选择置为数据lcd1602_rw=0; /读写选择置为写P0=dat; /送入数据delay(1);lcd1602_en=1; /en置高电平,为制造下降沿做准备delay(1);lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令/-初始化-void lcd_init(void)write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示/=将按键值编码为数值=unsigned char coding(unsigned char m) unsigned char k;switch(m)case (0x18): k=1;break;case (0x28): k=2;break;case (0x48): k=3;break;case (0x88): k=A;break;case (0x14): k=4;break;case (0x24): k=5;break;case (0x44): k=6;break;case (0x84): k=B;break;case (0x12): k=7;break;case (0x22): k=8;break;case (0x42): k=9;break;case (0x82): k=C;break;case (0x11): k=*;break;case (0x21): k=0;break;case (0x41): k=#;break;case (0x81): k=D;break;return(k);/= 按键检测并返回按键值=unsigned char keynum(void) unsigned char row,col,i; P1=0xf0; if(P1&0xf0)!=0xf0) Delay5Ms(); Delay5Ms(); if(P1&0xf0)!=0xf0) row=P10xf0; /确定行线i=0;P1=ai; /精确定位while(i4) if(P1&0xf0)!=0xf0) col=(P1&0xff); /确定列线 break; /已定位后提前退出 else i+; P1=ai; else return 0;while(P1&0xf0)!=0xf0);return (row|col); /行线与列线组合后返回 else return 0; /无键按下时返回0/=一声提示音,表示有效输入=void OneAlam(void)ALAM=0;Delay5Ms(); ALAM=1;/=二声提示音,表示操作成功=void TwoAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1; /=三声提示音,表示错误=void ThreeAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1; /=显示输入的N个数字,用*代替以便隐藏=void DisplayOne(void)/DisplayOneChar(9+N,1,*);write_1602com(yi+5+N);write_1602dat(*);/=显示提示输入=void DisplayChar(void)unsigned char i;if(pass=1)/DisplayListChar(0,1,LockOpen);write_1602com(er);for(i=0;i16;i+)write_1602dat(LockOpeni); elseif(N=0)/DisplayListChar(0,1,Error);write_1602com(er);for(i=0;i16;i+)write_1602dat(Errori); else/DisplayListChar(0,1,start_line);write_1602com(er);for(i=0;i16;i+)write_1602dat(start_linei); void DisplayInput(void)unsigned char i;if(CorrectCont=1)/DisplayListChar(0,0,Input);write_1602com(er);for(i=0;i16;i+)write_1602dat(Inputi); /= 重置密码=void ResetPassword(void)unsigned char i;unsigned char j;/ResetEn=1; /开启重置功能if(pass=0)pass=0;DisplayChar();ThreeAlam();else if(ReInputEn=1)if(N=6)ReInputCont+;if(ReInputCont=2)for(i=0;i6;)if(TempPasswordi=InputDatai) /将两次输入的新密码作对比i+;else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j16;j+)write_1602dat(Errorj);ThreeAlam();/错误提示pass=0;ReInputEn=0;/关闭重置功能,ReInputCont=0;DisplayChar();break; if(i=6)/DisplayListChar(0,1,ResetOK);write_1602com(er);for(j=0;j16;j+)write_1602dat(ResetOKj);TwoAlam();/操作成功提示WrToROM(TempPassword,0,6);/将新密码写入24C02存储ReInputEn=0;ReInputCont=0;/ResetEn=0;CorrectCont=0;elseOneAlam();/DisplayListChar(0, 1, again); /显示再次输入一次write_1602com(er);for(j=0;j16;j+)write_1602dat(againj);for(i=0;i6;i+)TempPasswordi=InputDatai;/将第一次输入的数据暂存起来N=0;/输入数据位数计数器清零 /=输入密码错误超过三过,报警并锁死键盘=void Alam_KeyUnable(void)P1=0x00;ALAM=ALAM;Delay5Ms();/=取消所有操作=void Cancel(void)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年特种作业类危险化学品安全作业胺基化工艺作业-加氢工艺作业参考题库含答案解析
- 公关服务合同
- 断桥铝门窗承包合同
- 2025年特种作业类危险化学品安全作业危险化学品安全作业-烷基化工艺作业参考题库含答案解析
- 2025年特种作业类危险化学品安全作业-光气及光气化工艺作业参考题库含答案解析
- 2025年建筑工程类环境影响评价工程师案例分析-相关法律法规参考题库含答案解析
- 灵山五年级期中数学试卷
- 龙江小学五年级数学试卷
- 2025年多路水温测量仪项目申请报告
- 七鸣巅峰对决数学试卷
- 2025年有限空间作业安全考试题库:有限空间作业安全教育与培训试题
- 胰岛素皮下注射团体标准解读
- 巷道掘进与顶板管理培训课件
- 宁德时代shl测评题库
- 微信小程序申请模板-电商平台对用户交易纠纷处理的机制或方案
- 方案1-绿化养护费用计算清单
- (正确)新入场人员一级安全教育考试试卷(含答案)
- 2024年10月成都市金牛区人民政府西华街道办事处公开招考1名编外人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年牙医资格证技能试题及答案
- 初中道德与法治跨学科项目化学习的设计与实施讲座提纲
- DG-TG08-12-2024 普通中小学建设标准
评论
0/150
提交评论