




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机实训仿真设计 说 明 书 专业名称:电子信息工程 班 级:11 班 学 号:2010 姓 名: 指导教师: 日期: 2013 年 05 月 05 日 - 2 - 目 录 一、设计的目的和意义一、设计的目的和意义.- 3 - 1、设计背景 - 3 - 2、设计的目的及意义 - 3 - 二、设计原理及规模二、设计原理及规模.- 5 - 1、器件的简介 - 5 - (1)AT89C51 的简介- 5 - (2)LCD 显示屏简介- 7 - 2、软件程序设计 - 9 - 三、正文三、正文.- 10 - 1、方案的论证 - 10 - 2、主要参数的计算 - 10 - 3、功能的实现 - 11 - (1)硬件部分- 11 - 矩阵键盘.- 11 - LCD 显示电路- 12 - 键盘的消抖.- 13 - 仿真电路.- 13 - (2)软件部分- 13 - LCD 显示模块- 14 - 密码判断模块.- 14 - 密码重置模块.- 17 - 密码锁复位模块.- 18 - 密码安全提示模块.- 19 - 四、结论四、结论.- 20 - 五、参考书目五、参考书目.- 21 - 六、附录六、附录.- 22 - - 3 - 一、设计的目的和意义一、设计的目的和意义 1、设计背景、设计背景 在现今社会中,安全防盗已经成为严重的社会问题,锁具自古以来就是防 盗的重要工具。目前国内很多人都还在使用传统的机械锁,机械锁存在很大的 弊端。所以新型的电子密码锁有了更大的发展空间。从现在的技术水平和市场 认可度上来分析,目前使用最为广泛的按键式电子密码锁。电子密码锁一般用 于保险柜,取款机等重要地方。由于电子密码锁的实用,涌现出了更多的电子 智能密码锁,如:指纹识别的电子密码锁等高科技含量的锁具。但是此类密码 锁在公共场所容易损坏,成本也比较高,所以键盘式的电子密码锁依然是防盗 的主流产品。键盘式电子密码锁突出的优点是密码在授权人的脑袋里记着,即 准确有可靠。很难丢失。此外电子密码锁还有很多特点。如:密码可变。用户 可以随时的更改密码。防止密码泄露。误码输入保护,当密码输入错误时,系 统会自动报警。电子密码锁不同于机械锁。电子密码锁没有活动零件,不会磨 损,寿命长,电子密码锁的操作也非常简单。现在锁具在原有锁的基础上充分 运用了现代科技,出现了磁控锁,声控锁,遥控锁,红外锁,电子卡片锁,超 声波锁,电磁波锁,指纹锁等高科技含量的锁具。大大提高了锁的安全性,可 靠性。 2、设计的目的及意义、设计的目的及意义 (1)设计目的 掌握单片机控制知识,学习扩展外部设备的基本技能。 通过设计学以致用,加强单片机的实践操作能力。 (2)设计意义 - 4 - 在现代文明社会,随着人们生活水平和自身防范意识的提高,个人财产安 全和人身安全的问题也越来越受到人们的重视,拥有一把能够有效保证居民财 产安全和人身安全的锁具也越发的重要起来。 锁具的起源可以追朔到人类社会财产私有化的出现,锁具从其出现到发展 至今天的高科技化、信息化,已经有若干年的历史了。经过若干年的使用和研 究,人们对锁具的结构、机理也了解得相当透彻了,因此,不使用钥匙就能将 锁打开的方法也层出不穷。特别是传统的机械锁,由于其构造简单,在惯偷面 前,甚至能够只用一根铁丝就直接将其打开,使其失去了保障用户个人财产安 全的意义。 在信息现代化的今天,锁具也应该向高精度、高安全性的智能化、信息化 发展。自 20 世纪 70 年代第一块单片机芯片 TMS-1000 于美国德克萨斯仪器公司 面世以来,基于其体积小、价格低廉、个性突出等特点,越来越多的电子产品 开始采用单片机芯片作为核心控制部件。在这样的大环境下,基于单片机的电 子密码锁也应运而生。这种电子密码锁是以单片机为核心,配以相应的硬件电 路和软件程序,实现密码的设置、存贮、识别和显示,以及报警信号的接收和 发送等功能,具有操作快、修改密码简单、安全性高、功耗低等优点。基于单 片机的电子密码锁的面世使人们的自身财产安全有了更多的保障,同时也促进 了安全信息系统的发展,是安全信息系统的一大进步。 基于单片机的电子密码锁的出现,在一定程度上解决了用户私人财产安全 的问题。但是,时代在发展,社会在进步,任何事物只有不断地进步才能适应 时代发展的需求。电子密码锁虽然有安全性高、操作简单等优点,因此,研究 基于单片机的电子密码锁的设计是很有必要且具有现实意义的。 - 5 - 二、设计原理及规模二、设计原理及规模 在本次实验中,使用了单片机和数字电路两种仿真方式设计出了较为合理 的密码锁方案,我们也对传统密码锁进行了适当改进,使其更适应当今复杂多 变社会的防盗环境。 通过 AT89C51 单片机进行模拟控制,LCD 显示屏和发光二极管进行时间和 状态的显示,实现智能密码锁的控制。 1、器件的简介、器件的简介 (1)AT89C51 的简介 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROM Falsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪烁可编程可擦 除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该 器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令 集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中, ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。 AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。与 MCS-51 兼容 ,4K 字节可编程闪烁存储器 ,寿命:1000 写/擦循环,数据保留 时间:10 年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8 位内部 RAM,32 可编程 I/O 线,两个 16 位定时器/计数器,5 个中断源(两个外部中断 源和 3 个内部中断源) ,可编程串行通道,低功耗的闲置和掉电模式,片内振 荡器和时钟电路。 管脚说明: VCC:供电电压。 GND:接地。 - 6 - P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数 据地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验 时,P0 输出原码,此时 P0 外部必须接上拉电阻。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能 接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入, P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为低八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由 于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器 进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉 优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器 的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的 缘故。 P3 口也可作为 AT89C51 的一些特殊功能口: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1) P3.4 T0(计时器 0 外部输入) P3.5 T1(计时器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 - 7 - RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高 电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的低位字节。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/PSEN 有效。 EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H- FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 引脚图如图 1 所示: 图 1 AT89C51 引脚图 (2)LCD 显示屏简介 1602 液晶也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符 号等的点阵型液晶模块。它由若干个 5X7 或者 5X11 等点阵字符位组成,每个点 阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间 隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形 (用自定义 CGRAM,显示效果也不好) 。1602LCD 是指显示的内容为 16X2,即可 以显示两行,每行 16 个字符液晶模块(显示字符和数字) 。目前市面上字符液 - 8 - 晶大多数是基于 HD44780 液晶芯片的,控制原理是完全相同的,因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 LCD1602 引脚说明 第 1 脚:VSS 为电源地 第 2 脚:VCC 接 5V 电源正极 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电 源时对比度最高(对比度过高时会 产生“鬼影” ,使用时可以通过一个 10K 的 电位器调整对比度) 。 第 4 脚:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择 指令寄存器。 第 5 脚:RW 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写 操作。 第 6 脚:E(或 EN)端为使能(enable)端,高电平(1)时读取信息,负跳变 时执行指令。 第 714 脚:D0D7 为 8 位双向数据端。 第 1516 脚:空脚或背灯电源。15 脚背光正极,16 脚背光负极。 显示屏引脚图如图 2 所示: 图 2 LCD 显示屏引脚图 2、软件程序设计、软件程序设计 硬件设计完毕后,根据电路图以及程序设计流程进行程序编写,编写时大 至可分为四个模块,第一个模块为密码输入及 LCD 返现,第二个模块为密码判 - 9 - 断识别,第三个模块为密码修改,第四个模块为密码锁复位设置。设计第一个 模块时,通过 Key_Input(),Key_Num_Recognize()两个函数密码输入及返现, 通过 Clear_Func()函数进行密码清除设置;设计第二个模块时,首先通过编写 一个函数 PassWord_Safe()对密码进行检验,如果密码太简单则提示更改,然 后编写 Cipher_Judge()将输入的密码与开始设置的密码进行对比,从而完成对 密码的判断,最后编写 Lock_Func()函数对三次密码输入错误采取措施;设计 第三个模块时,通过编写 Cipher_Reset()函数进行密码更改;设计第四个模块, 通过编写 Restoration()函数完成。最后建立主函数将以上函数串联起来完成 设计。 - 10 - 三、正文三、正文 1、方案的论证、方案的论证 根据设计的基本要求,经过多方面的查证与对比,以充分发挥资源和提高 系统性价比为原则,本系统采用 AT89C51 单片机为控制电路,使用 LCD 液晶显 示屏及蜂鸣器电路来实现功能。具体设计方案的论证如下: 方案一:采用数字电路控制 用以 74LS112 双 JK 触发器构成的数字逻辑电路作为密码锁的核心控制,将 密码保存在 JK 触发器中,与输入密码通过比较器比较,判断结果是否相符合。 采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故 不采用。 方案二:采用以单片机为核心的控制方案 选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资 源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只 读存储器(ROM)及其引脚资源,外接液晶显示(LCD) ,键盘输入等实现数据的 处理传输和显示功能,具有较好的灵活性,基本上能实现设计指标。 因此综合考虑,本系统采用方案二。 2、主要参数的计算、主要参数的计算 本设计涉及的主要计算为键盘输入后系统解析为数字的计算。首先扫描按 下按键在矩阵的位置然后通过程序计算将其转换为相应数字。 键盘扫描应用了反转法,通过两次更改 AT89C51 的 I/O 口电平,然后与按 下按键后的电平相异或得到按键在矩阵的地址。通过 switch 语句将其变为相应 数字。计算程序如下: tem=P10x0f; - 11 - switch(tem) case 1:Key_Num=0;break; case 2:Key_Num=3;break; case 4:Key_Num=6;break; case 8:Key_Num=9;break; P1=0xf0; Delay(2); tem=(P14)0x0f; switch(tem) case 1:Key_Num+=1;break; case 2:Key_Num+=2;break; case 4:Key_Num+=3;break; 3、功能的实现、功能的实现 (1)(1)硬件部分硬件部分 矩阵键盘 由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵 式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点 上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多 I/O 口。本设计中使用的这个键盘不但能完成密码的输入还能作特别功能键使用。 键盘的每个按键功能在程序设计中设置 。其大体功能(看键盘按键上的标记) 及与单片机引脚接法如图 3 所示: - 12 - 图 3 矩阵键盘 LCD 显示电路 本设计的显示部分由液晶显示器 LCD1602 取代普通的数码管来完成。当需 要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键 09 输 入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个 *。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD 子显示 “Right” ,亮绿色 LED,如果密码不正确,LCD 显示屏会显示“ERROR” ,亮红色 LED.显示电路如图 4 所示: 图 4 显示电路 - 13 - 键盘的消抖 键盘实质上是一组按键开关的集合。通常,键盘开关利用了机械触点的合、 断作用。键的闭合与否,反映在行线输出电压上就是呈高电平或低电平,如果 高电平表示键断开,低电平则表示键闭合,反之也可。通过对行线电平高低状 态的检测,便可确认按键按下与否。为了确保 CPU 对一次按键动作只确认一次 按键有效,还必须消除抖动 键盘的消抖常用的方法有两种,一是用软件延时来消除按键抖动,基本思 想是:在检测到有按键按下时,该键所对应的行线为低电平,执行一段延时 10ms 的子程序后,确认该行线是否仍为低电平,如果仍为低电平,则确认该行 确实有按键按下。当松开按键时,行线的低电平变为高电平,执行一次延时 10ms 的子程序后,检测该行线为高电平,说明按键确实已经松开。二是采用专 用键盘/显示器接口芯片,这类芯片都有自动去抖动的硬件电路。 仿真电路 图 5 仿真电路 - 14 - (2)(2)软件部分软件部分 程序编写应用的软件为 Keil uVision4。 Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软 件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有 明显的优势,因而易学易用。Keil 提供了包括 C 编译器、宏汇编、连接器、库 管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发 环境将这些部分组合在一起。运行 Keil 软件需要 WIN98、NT、WIN2000、WINXP 等操作系统。 本设计在程序编写时主要依靠以下几个模块: LCD 显示模块 设计时为了方便编写,将该模块编写为头文件函数 LCD1602.H,在编写其余 主要程序时只需用 include 语句便可使用。该模块的重点是指定地址显示,通 过 LcdOutput 函数完成,x 设定为地址,y 设定为行数。 void LcdOutput(unsigned char x,unsigned char y,unsigned char *str) if(y) x|=0x40; x|=0x80; LcdWrite(LCD_COMMAND,x); while(*str!=0) LcdWrite(LCD_DATA,*str); str+; - 15 - 密码判断模块 本模块为设计的重点,通过 Cipher_Judge 函数完成。定义 count 为密码输 入错误次数,通过 strcmp 语句进行密码对比,然后判读密码是否正确,密码错 误次数超过 3 次会触发密码 3 次不正确处理函数。 void Cipher_Judge(void) uchar a=500,k,x=3; uint ms=25; count+; k=strcmp(PassWord,PassWord_First); if(k!=0) LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Error); LED_RED=LED_RED; Speaker_Func(5); while(ms-) Delay(900); if(count=1) LED_RED=LED_RED; LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Input_Again); else if(count=2) LED_RED=LED_RED; - 16 - LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Input_Last); else if(count=3) count=0; LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); Lock_Func(); else if(k=0) if(Reset_Lock=0) Lock=0; LED_GREEN=0; LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Right); while(a-) Delay(40000); LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Xianshi2); LED_GREEN=1; count=0; else - 17 - PassWord_First5=0; First_Set=1; LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,New_PassWord); Reset_Lock=0; Reset=0; LED_YELLOW=LED_YELLOW; 密码重置模块 重置时首先判断密码锁是否因三次密码错误被锁定,如果没有则判断改密 码锁是否设置初始密码,如果没有则提示设置初始密码;如果已设置,则在更 改密码时需输入正确密码,然后才可以更改新的密码。 void Cipher_Reset(void) if(Lock=0) LED_YELLOW=LED_YELLOW; if(PassWord_First5=0) LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,New_PassWord); Reset=0; LED_YELLOW=LED_YELLOW; else - 18 - Reset_Lock=1; LcdWrite(LCD_COMMAND,LCD_CLEAR_SCREEN); LcdOutput(0,0,Xianshi2); 密码锁复位模块 密码锁复位定义发生在密码错误三次的情况下,首先需要输入系统密码, 然后函数判断密码是否正确,如果正确则密码锁复位,即重新设置初始密码; 系统密码输入次数不限。 void Restoration(void) uchar a,c,b=0; uint ms=25; if(Lock=1) for(a=0;a #define BusyBit 0x80 #define Lcd_Data P0 #define LCD_COMMAND 0 #define LCD_DATA 1 #define LCD_CLEAR_SCREEN 0X01 #define LCD_SHOW 0x04 #define LCD_NO_CURSOR 0x00 #define LCD_AC_UP 0x02 #define LCD_NO_MOVE 0x00 sbit Lcd_RS=P20; sbit Lcd_RW=P21; sbit Lcd_E=P22; unsigned char LcdRead() Lcd_RS=0; Lcd_RW=1; _nop_(); Lcd_E=1; _nop_(); /while(Lcd_Data Lcd_E=0; return Lcd_Data; void LcdWrite(bit mode,unsigned char cmd) Lcd_E=0; Lcd_RS=mode; Lcd_RW=0; _nop_(); Lcd_Data=cmd; _nop_(); Lcd_E=1; _nop_(); Lcd_E=0; _nop_(); LcdRead(); void LcdInit() Lcd_E=0; LcdWrite(LCD_COMMAND,0x38); LcdWrite(LCD_COMMAND,0x38); LcdWrite(LCD_COMMAND,0x08|LCD _SHOW|LCD_NO_CURSOR); LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdWrite(LCD_COMMAND,0x04|LCD _AC_UP|LCD_NO_MOVE); 24 void LcdOutput(unsigned char x,unsigned char y,unsigned char *str) if(y) x|=0x40; x|=0x80; LcdWrite(LCD_COMMAND,x); while(*str!=0) LcdWrite(LCD_DATA,*str); str+; #endif 密码锁程序: #include #include #include #define uchar unsigned char #define uint unsigned int sbit LED_RED=P30; sbit LED_GREEN=P31; sbit LED_YELLOW=P32; sbit SPK=P35; uint Key_Num, count=0,Code_count=0,Lock=0,KeyP ad_Lock=0,Res_Key=0,Res_Lock=0,R eset_Lock=0,First_Set=1,Reset; uchar Time=1,add=0; uchar code Xianshi1=“ Set Password“; uchar code Xianshi2=“ Input Password“; uchar code Xianshi3=“ INPUT SYSTEM “; uchar code Xianshi4=“ PASSWORD “; uchar code Error=“ ERROR!“; uchar code Input_Again=“ THE SECOND TIME“; uchar code Input_Last=“ THE LAST TIME“; uchar code Right=“ RIGHT!“; uchar code New_PassWord=“ New Password“; uchar code Youqingtishi1=“ It is not SAFE“; uchar code Youqingtishi2=“ PLEASE CHANGE“; uchar PassWord_First7=0; 25 uchar PassWord7=0; uchar God_Num12=2,0,1,0,0, 3,0,2,0,0,8; uchar God_Num_Input12=0; void Clear_Func(void); void Restoration(void); void Cipher_Reset(void); void Key_Num_Recognize(void); void Delay(uchar x) uchar y; for(;x0;x-) for(y=500;y0;y-) ; void DelayMs(uint c) while(-c); void Speaker_Func(uint m) uint i; while(m-) for(i=0;i4)0x0f; switch(tem) case 1:Key_Num+=1;break; case 2:Key_Num+=2;break; case 4:Key_Num+=3;break; if(Key_Num=10) Reset=100; while(Reset-) Delay(60000); if(P1!=0xf0) Cipher_Reset(); while(P1!=0xf0); if(Key_Num0) if(Key_Num=11) Key_Num=0; Key_Num_Recognize(); if(Key_Num=12) Delay(10); if(P1!=0X0B) Clear_Func(); void Clear_Func(void)/清除一位 / if(Code_count!=0) add-; Code_count-; LcdOutput(add,1,“ “); else 27 add=0; Code_count=0; void Restoration(void)/复位/ uchar a,c,b=0; uint ms=25; if(Lock=1) for(a=0;a11;a+) c=(God_NumaGod_Num_Inputa) 4; b=b|c; if(b=0) Lock=0; KeyPad_Lock=0; Res_Lock=0; TR0=0; Time=1; LED_RED=LED_RED; PassWord_First5=0; First_Set=1; Cipher_Reset(); else LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Error); while(ms-) Delay(900); LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,“ Input AGAIN“); void Cipher_Reset(void)/密码重 置/ if(Lock=0) LED_YELLOW=LED_YELLOW; if(PassWord_First5=0) LcdWrite(LCD_COMMAND,LCD_CLEA 28 R_SCREEN); LcdOutput(0,0,New_PassWord); Reset=0; LED_YELLOW=LED_YELLOW; else Reset_Lock=1; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Xianshi2); void Lock_Func(void)/密码三次不 正确处理函数/ TR0=1; Lock=1; KeyPad_Lock=1; Res_Lock=1; LED_RED=0; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,“ You Fail!“); LcdOutput(0,1,“ Wait one hour“); Delay(200); Speaker_Func(4); if(Time%72000=0) Lock=0; KeyPad_Lock=0; Res_Lock=0; LED_RED=1; TR0=0; Time=1; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Xianshi2); void Cipher_Judge(void)/密码判 断/ uchar a=500,k,x=3; uint ms=25; count+; k=strcmp(PassWord,PassWord_Fi rst); if(k!=0) LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); 29 Delay(200); LcdOutput(0,0,Error); LED_RED=LED_RED; Speaker_Func(5); while(ms-) Delay(900); if(count=1) LED_RED=LED_RED; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Input_Again); else if(count=2) LED_RED=LED_RED; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Input_Last); else if(count=3) count=0; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); Lock_Func();/密码三次 不正确处理函数/ else if(k=0) if(Reset_Lock=0) Lock=0; LED_GREEN=0; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Right); while(a-) Delay(40000); LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,Xianshi2); LED_GREEN=1; count=0; 30 else PassWord_First5=0; First_Set=1; LcdWrite(LCD_COMMAND,LCD_CLEA R_SCREEN); LcdOutput(0,0,New_PassWord); Reset_Loc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入院新生安全培训课件
- 2024年陕西警察学院军训动员大会校长发言稿9000字
- 健康知识培训证明课件
- 辽宁省营口市大石桥市五校联考2024-2025学年八年级上学期10月阶段练习语文试卷(含答案)
- 伤害事故安全培训记录课件
- 贵州省黔西县2025年高三物理第一学期期末教学质量检测试题
- 风险监测点管理办法
- “七彩•黄金村”住宅小区项目环评报告
- 医学寄生虫学绦虫2讲课文档
- 资料归类存档管理办法
- 村委雇佣合同范本
- 《阀门的类型及原理》课件
- 《雷达新进展》课件
- 2025年公文写作基础知识竞赛试题库及答案(共120题)
- 《湖州文化之湖州话》课件
- 《数据中心机房封闭通道设计规范》
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套)
- 建筑施工安全分项检查评分表
- 室外栏杆底座施工方案
- 《人力资源管理》全套教学课件
- 人教版六年级数学上册教案全册
评论
0/150
提交评论