ImageVerifierCode 换一换
格式:DOC , 页数:44 ,大小:464KB ,
资源ID:4516092      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4516092.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(081712_基于C语言STC89C52单片机电子密码锁的设计.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

081712_基于C语言STC89C52单片机电子密码锁的设计.doc

1、基于C语言STC89C52单片机电子密码锁的设计 摘要:本设计阐述通过Proteus软件成功仿真的电子密码锁的实现过程,选用STC89C52单片机为核心的系统来实现按键输入、开锁和密码识别。采用具备I2C总线接口的E2PROM芯片来完成密码的存储,通过1602A液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统用C语言编写程序,与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能。 关键词:Proteus;密码锁;单片机;C语言 Design of Electronic Code Lock Using STC89C52

2、MCU Based on C Language Abstract: The paper introduces the implementation of the electronic code lock which was successfully simulated by Proteus. It uses STC89C52 single-chip microcomputer to achieve key input, the unlocking and identification of the code. It adopts I2C bus based E2PROM chip

3、 to complete the code's storage, using LCD 1602A to prompt the program's running state and working procedures, adopting buzzer to imitate the alarm and LED to imitate the switch. It is convenient to modify and add function by using C language program, which is more transplantable and reliable compar

4、ed to assembly language. Keywords: Proteus; code lock; single-chip microcomputer; C language 一、 前言 随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便。传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。随着单片机的问世,出现了电子密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户的青睐。 电子密码锁通常使用ARM和单片机控制

5、[1],单片机相对ARM实现较为简单,功能较为完善,因此使用单片机控制较多。用单片机控制的密码锁常使用汇编语言编写程序,数码管做显示器 [2]。但本设计使用移植性及可读性强的C语言[3-5]编写;同时采用显示清楚、功率消耗小而且寿命长的1602A液晶显示器。从经济实用的角度出发,采用STC89C52单片机设计出一种具有密码设置、报警等功能的电子密码锁,并通过Proteus[6]软件成功地进行了仿真。 二、 总体方案设计 2.1方案论证与比较 方案一:以STC89C52单片机为电子密码锁系统核心,使用4*4矩阵键盘作为数据输入方式,驱动1602A显示器提示程序运行过程和开锁的步骤,利用

6、AT24C02芯片实现掉电存储。图1为单片机控制密码锁的系统原理框图。 STC89C52 单片机 AT24C02存储芯片 矩阵 键盘 控制 LCD 1602A 蜂鸣器提示电路 电源模块 LED 密码校验提示 图1 单片机控制密码锁的系统原理框图 方案二:以74LS112双JK触发器构成的数字逻辑电路控制方案,如图2。 输入按扭开关组 输入锁存电路 密码存储电路 开锁控制电路 机械动作构件 5秒定时电路 20秒定时电路 声光指示电路 图2 数字逻辑控制方案电子密码锁原理框图 2.2方案选择 由于利用单片机灵

7、活的编程设计和强大的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一。 三、 单元模块设计 3.1硬件支持 使用的元器件有:核心芯片STC89C52、存储芯片AT24C02、液晶显示1602A、4×4矩阵键盘、报警蜂鸣器、发光二极管和三极管。 3.2功能单元模块设计 3.2.1 开锁机构 通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。如图3所示,为密码锁开锁电路原理图。 当用户输入的密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门的目的。本次设计中,基于节省成本考虑

8、用发光二极管代替电磁锁,信息通过LCD显示,并利用蜂鸣器和二极管声光指示。其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路。 开锁驱动电路 STC89C52 单片机 密码 正确 超次锁定 电磁锁 是 否 图3 密码锁开锁电路原理图 3.2.2 矩阵键盘设计电路 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M条行线和N条列线,即可组成具有M×N个按键的键盘。由于本设计中要求使用16个按键输入,为减少键盘与单片机接口时所占用的I/O线的数目,故使用矩阵键盘。本设计中,矩阵键

9、盘行线和单片机P1.0-P1.3相连,列线与单片机P1.4-P1.7相连。矩阵键盘设计电路图,如图4所示。 键盘扫描采用行扫描法,即依次置行线中的每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下。 1 2 3 4 5 6 7 8 9 0 输入密码 确认 更改密码 * * * 图4 矩阵键盘设计电路图 3.2.3 声音提示电路设计 声音提示电路采用小蜂鸣器提示。蜂鸣器能够根据脉冲信号,以及信号的频率发出各种不同的声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同的声音提示,已达到报警的要求。蜂鸣器电路,如图5所示

10、 图5 蜂鸣器电路 3.2.4 显示模块设计 本设计中,显示电路采用1602A液晶显示器显示[7]。如下所示,图6为1602A液晶显示器的接口示意图,表1为接口说明。 图6 1602A液晶显示器的接口示意图 表1 接口说明 管脚序 名称 电平 功能描述 1 VSS 0V 接地 2 VCC 5.0V 电源输入 3 V0 — LCD驱动电压输入 4 RS H/L 寄存器选择:RS=H,选择数据寄存器; RS=L,选择指令寄存器 5 R/W H/L 读写信号线:R/W=H,读操作;R/W=L,写操作 6 E H

11、H→L 使能信号 7 DB0 H/L 数据线 8 DB1 H/L 数据线 9 DB2 H/L 数据线 10 DB3 H/L 数据线 11 DB4 H/L 数据线 12 DB5 H/L 数据线 13 DB6 H/L 数据线 14 DB7 H/L 数据线 15 BLA 5.0V 背光电源正极 16 BLK 0V 背光电源负极 本设计中液晶串口一共用到11根导线与单片机相连, 具体连接情况如表2显示模块与MCU连接说明所示。 表2 显示模块与MCU连接说明 序号 1602A液晶显示器引脚 STC89C52

12、单片机引脚 1 RS引脚 P2.5(A13) 2 R/W引脚 P2.6(A14) 3 E引脚 P2.7(A15) 4 D0引脚 P0.0(AD0) 5 D1引脚 P0.1(AD1) 6 D2引脚 P0.2(AD2) 7 D3引脚 P0.3(AD3) 8 D4引脚 P0.4(AD4) 9 D5引脚 P0.5(AD5) 10 D6引脚 P0.6(AD6) 11 D7引脚 P0.7(AD7) 3.2.5 AT24C02掉电存储单元的设计 本设计中掉电存储单元采用AT24C02外部存储器[8-9],其作用是在系统电源断开的时候,

13、存储当前设定的密码数据。 AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节, 含一个16字节页写缓冲器,具有写保护功能。其采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。如下所示,图7为AT24C02管脚示意图,表3为AT24C02管脚说明。 A0 A1 A2 GND SDA SCL WP VCC 1 2 3 4 8 7 6 5 C02 图7 AT24C02管脚示意图 表3 AT2

14、4C02管脚说明 管脚名称 功能 管脚名称 功能 A0 A1 A2 器件地址选择 SDA 串行数据/地址 SCL 串行时钟信号 WP 写保护 VCC 1.8V-6.0V工作电压 VSS 接地 本设计中,AT24C02的SCL和SDA引脚接上拉电阻后与单片机的P3.4(T0)和P3.5(T1)脚相连,其电路图如图8所示。 图8 AT24C02掉电存储单元设计图 四、 程序设计与系统仿真 4.1 模块介绍 与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块、修改密码模块、1602A液晶显示模块等[10]。系统程序流

15、程如图9所示。开始 系统初始化 调用E2PROM密码 显示主界面 输入密码 判断密码 确定密码 开锁模拟声光 锁定键盘 Y N 返回 Y 判断次数N 超过N次 未超过N次 再次输入密码 密码设置完毕 N 设置新密码 Y 按键 N 判断按键值 返回主界面 N Y 设置解码次数 产生随机密码 输入密码 N=0x84 N=0x82 N=0x11 图9 系统程序流程图 4.1.1 主程序模块 主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,启动定时器以及从AT24C02中读取密码,为整个程序提供数据;检测

16、按键;调用显示等功能。 4.1.2 密码比较判断模块 该模块的功能是将键盘输入的密码利用if语句与设定的密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码。其密码输入和比较判决流程图如图10所示。 输入密码 核对 键盘锁定,开启报警电路 开锁,灯亮,可密码修改 N Y 复位 图10 密码输入和比较判决流程图 4.1.3 键盘扫描模块 键盘使用矩阵式键盘,由行和列组成,CPU对所有键盘进行监视,从而实现逐列扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的键是否释放等功能。如图11所示,为键盘扫描流程

17、图。 开始 延时去抖动 计算输入键值 键值送入单片机 有按键输入? 有按键输入? 有按键输入? 返回 N N Y Y 图11 键盘扫描流程图 4.1.4 修改密码模块 在密码输入正确情况下,可以按下“重置密码”对密码进行重新设置,每设定一位就将密码送给AT24C02存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置的密码。图12为修改密码流程图。 开始 输入原密码 密码比较 比较正确? 输入新密码 再次输入新密码 调用AT24C02中密码 比较正确 修改成功 返回菜单 键盘锁定,启动报警电路 复位 Y N 图

18、12 修改密码流程图 4.1.5 1602A液晶显示模块 此模块包括液晶初始化、命令的输入等。 4.2 Proteus仿真电路 图13 电子密码锁仿真图 五、系统功能 本设计中系统可实现功能如下: (1)通过切换,对输入的4位密码进行显示或隐藏; (2)通过发光二极管和蜂鸣器,对解密正确或者错误进行声光报警; (3)4位密码修改; (4)在密码遗失情况下,通过初始密码进行密码再设置; (5)采用AT24C02外部存储器,完成断电密码保护功能; (6)具有1-9次的解锁次数任意设定功能; (7)模拟密码箱随机产生密码,并进行解码。 六.设计总结 从基

19、本方案的制定,到硬件电路的选择,再到电路的焊接,最后进行程序调试——在此期间我们遇到很多困难,但经过团队的不懈努力,终于击破了各个难点,达到的所需要的效果。在这次设计中,我们深刻认识到自身的不足——缺少实战经验。与此同时,也因为这次设计,我们得到一定的锻炼,体会到理论与实践相结合的重要意义。 由于本次设计时间有限,一些设想没有完全实现,比如说:电子密码锁的网络通信扩展,人机界面智能化等。期待以后有机会对以上设想进行进一步研究实践。 参考文献 [1]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,28(13):95-97. [2]张毅刚.单片机原理及应用[M]

20、北京:高等教育出版社,2003. [3]谭浩强.C程序设计[M].北京:清华大学出版社,2005 [4]杨章伟,韩雪,张浩然.跟我学C程序设计[M].北京:清华大学出版社,2010 [5]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,2002 [6]周润景,张丽娜,丁莉.基于PROTEUS的电路及单片机设计与仿真[M].北京:北京航天航空大学出版社,2010 [7]20070711.亚斌YB1602A液晶模块使用说明书[DB/OL]. [8]AT24C02[DB/OL]. [9]at24c02中文资料[DB/OL]. [10]金桂,

21、向国梁.基于C语言STC89C52单片机电子密码锁的设计与仿真[J].现代电子技术,2010,19:176-182. 附录: a、器件清单 器件名称 规格型号 编号 数量 单价(元) 总价(元) 备注 MCU STC89C52 U1 1 7 7 外部存储器 AT24C02 U2 1 0.43 0.43 LCD 1602A LCD1 1 20 20 发光二极管 3mm D1 1 0.05 0.05 绿光 普亮 3mm D2 1 0.05 0.05 红光 普亮 三极

22、管 8550 Q1 1 0.2 0.2 晶振 12MHz X1 1 0.5 0.5 电阻 4.7kΩ 4 0.02 0.08 10kΩ 2 0.02 0.04 10K排阻 RP1 1 0.5 0.5 电容 22P C1C2 2 0.05 0.1 10μF C3 1 0.05 0.5 IC座 8脚IC座 1 0.35 0.35 40脚IC座 1 0.3 0.3 单排插座 1 0.5 0.5 蜂鸣器 LS1 1 0.65 0

23、65 电池盒 5V电池盒 1 4 4 焊锡 2 1 2 导线 1 1 1 电路板 9×15cm万用板 1 1.5 1.5 合计:39.75元 b、源程序 #include #include #include #include #define LCM_Data P0 #define uchar unsigned char #define uint unsigned int #define w 4 s

24、bit key = P2^0; sbit alam = P2^1; sbit open_led=P2^2; sbit lcd1602_rs=P2^5; sbit lcd1602_rw=P2^6; sbit lcd1602_en=P2^7; sbit Scl=P3^4; sbit Sda=P3^5; sbit xianshi = P3^7; bit operation=0; bit pass=0; bit mmsd=0; void Delay5Ms(void) { unsigned int TempCyc = 5552; whil

25、e(TempCyc--); } void Delay400Ms(void) { unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA--) { TempCycB=7269; while(TempCycB--); } } bit ReInputEn=0; bit s3_keydown=0; bit key_disable=0; unsigned char countt0,second; void Delay5Ms(void); static un

26、signed char tmp2=80; unsigned char m,d,sjmbz=0; unsigned char code a[]={0xFE,0xFD,0xFB,0xF7}; unsigned char code name[] = {" Tong Xin 08 "}; unsigned char code Correct[] = {" right "}; unsigned char code Error[] = {" wrong "}; unsigned char code suijishu[] = {

27、"Rand Number: "}; unsigned char code set[] = {"setting: "}; unsigned char code sjp[] = {" keypad locked "}; unsigned char code start_line[] = {"password: "}; unsigned char code codepass[] = {" success "}; unsigned char code LockOpen[] = {" open "};

28、 unsigned char code SetNew[] = {" Set New Word "}; unsigned char code Input[] = {"input: "}; unsigned char code ResetOK[] = {" Reset OK "}; unsigned char code Er_try[] = {" try again! "}; unsigned char code again[] = {" input again "}; unsigned char code initw

29、ord[] = {" chushihua "}; unsigned char InputData[4]; unsigned char CurrentPassword[4]={1,3,1,4}; unsigned char TempPassword[4]; unsigned char N=0; unsigned char cun[1]; unsigned char C=3; unsigned char ErrorCont; unsigned char CorrectCont; unsigned char ReInput

30、Cont; unsigned char code initpassword[4]={0,0,0,0}; void mDelay(uint t) { uchar i; while(t--) { for(i=0;i<125;i++) {;} } } void Nop(void) { _nop_(); _nop_(); _nop_(); _nop_(); } void Start(void) { Sda=1; Scl=1; Nop(); S

31、da=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; } void Send(uchar Data) { uchar BitCounter=8; u

32、char temp; do { temp=Data; Scl=0; Nop(); if((temp&0x80)==0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter--; } while(BitCounter); Scl=0; } uchar Read(void) { uchar temp=0; uchar

33、 temp1=0; uchar BitCounter=8; Sda=1; do{ Scl=0; Nop(); Scl=1; Nop(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } while(BitCounter); return(temp); } void WrToROM(uchar Data[],uchar Address,ucha

34、r Num) { uchar i; uchar *PData; PData=Data; for(i=0;i

35、 PData=Data; for(i=0;i

36、s;x>0;x--) for(y=110;y>0;y--); } write_1602com(uchar com) { lcd1602_rs=0; lcd1602_rw=0; P0=com; delay(1); lcd1602_en=1; delay(1); lcd1602_en=0; } write_1602dat(uchar dat) { lcd1602_rs=1; lcd1602_rw=0; P0=dat; delay(1); lcd1602_en=1; delay(1); lcd1602

37、en=0; } void lcd_init(void) { write_1602com(0x38); 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;

38、 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;br

39、eak; 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=P1^0xf0; i=0; P

40、1=a[i]; while(i<4) { if((P1&0xf0)!=0xf0) { col=~(P1&0xff); break; } else { i++; P1=a[i]; } } } else { return 0; } while((P1&0xf0)!=0xf0); return (row|col);

41、 } else return 0; } void ResetPassword(void) { unsigned char i; unsigned char j; if(pass==0) { pass=0; DisplayChar(); Alam(4); } else { if(ReInputEn==1) { if(N==4) { ReInputCont++; if(ReInputCont==2)

42、 { for(i=0;i<4;) { if(TempPassword[i]==InputData[i]) i++; else { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } Alam(4); pass=0; ReInputEn=0;

43、 ReInputCont=0; DisplayChar(); break; } } if(i==4) { write_1602com(er); for(j=0;j<16;j++) { write_1602dat(ResetOK[j]); } Alam(2); WrToROM(TempPassword,0,4);

44、 ReInputEn=0; } ReInputCont=0; CorrectCont=0; } else { Alam(1); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(again[j]); } for(i=0;i<4;i++) { TempPassword[i]=InputData[i];

45、 } } N=0; } } } } void Cancel(void) { unsigned char i; unsigned char j; write_1602com(yi); for(j=0;j<16;j++) { write_1602dat(name[j]); } write_1602com(er); for(j=0;j<16;j++) { write_1602dat(start_line[j]);

46、 } Alam(2); for(i=0;i<4;i++) { InputData[i]=0; } KEY=1; ALAM=1; operation=0; pass=0; ReInputEn=0; ErrorCont=0; CorrectCont=0; ReInputCont=0; open_led=1; sjmbz=0; s3_keydown=0; key_disable=0; mmsd=0; N=0; } unsigne

47、d char szzh(unsigned char d) { unsigned char j,k; j=d; switch(j) { case (0): k=0x30;break; case (1): k=0x31;break; case (2): k=0x32;break; case (3): k=0x33;break; case (4): k=0x34;break; case (5): k=0x35;break; case (6): k=0x36;break; case (7): k=0x37;break;

48、case (8): k=0x38;break; case (9): k=0x39;break; } return(k); } void Ensure(void) { unsigned char i,j; RdFromROM(CurrentPassword,0,4); RdFromROM(cun,16,1); if(N==4) { if(ReInputEn==0&&mmsd==0) { for(i=0;i<4;) { if(CurrentPasswor

49、d[i]==InputData[i]) { i++; } else { ErrorCont++; if(ErrorCont==C) { key_disable=1; pass=0; break; } else write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } Alam(2); pass=0; break; } } if(i==4) { CorrectCont++; if(CorrectCont==1) {

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

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

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

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服