【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计

【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计

ID:481811

大小:2.61 MB

页数:47页

时间:2017-08-09

上传者:U-944
【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计_第1页
【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计_第2页
【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计_第3页
【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计_第4页
【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计_第5页
资源描述:

《【电子信息工程毕业设计】红外遥控电子密码锁设计—软件设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

(20__届)本科毕业设计红外遥控电子密码锁设计—软件设计39 摘要目前,具有报警功能的电子密码锁,正逐步取代传统的机械密码锁。电子密码锁在性能和技术方面都有了很大的进展,例如:克服了传统的机械密码锁密码少,可靠性不足和操作不方便等缺点。本文设计了一种基于单片机STC89C52的红外遥控电子密码锁。在该设计中,采用了红外线作为传输介质,因为它具有信息传输可靠,抗干扰能力强等特点。这种密码锁有两种类型的输入设备,一个是安装在电子密码锁上的4*4矩阵键盘,另一个是红外遥控器。具有开锁和更改所设定的密码等功能。操作时,LCD1602可以显示有关信息。在介绍了红外遥控编码和解码的原理,4*4矩阵键盘的工作原理,STC89C52内部EEPROM的应用以及LCD1602显示屏的初始化和工作原理等的基础上,本文详细叙述了软件的设计要点以及方法,同时给出了主程序和几个主要子程序的流程图和代码。子程序主要包括红外遥控子程序和4*4矩阵键盘子程序。关键词:单片机电子密码锁红外遥控39 TheDesignofElectronicCodeLocksBasedonInfraredRemoteControl——SoftwareDesignAbstractAtpresent,key-padelectroniccodelockwithalarmingfunctionistograduallyreplacethetraditionalmechanicalcodelock.Key-padelectroniccodelockmakesagreatprogressintermsofperformanceandtechnology,forinstance,overcomingtheshortcomingofthetraditionalmechanicalcodelockwhichcontainfewpassword,lackofreliabilityandinconvenientoperation.Thispaperintroducesatypeofremote-controlledelectroniccodelockbasedonthechipof80C52.Thiscodelockhavetwoinputdevices,oneisa4*4matrixkeyboardinstalledonthecodelock.Anotherisaremotecontroller.Inthedesign,weadopttheinfraredrayasthemedium,becauseofthereliabletransmissionofinformation,andthestronganti-interferenceability.Wecanuseeitherofthemtoopenthelockorchangethepasswordwehaveset.whenyouareoperating,LCD1602coulddisplaytheinformation.Thispaperfirstintroducetheencodinganddecodingtheoryofinfraredremotecontrol,theworkingprincipleofthe4*4matrixkeyboard,STC89C52internalEEPROMapplications,andLCD1602initializationandworkingprinciple,andsoon.Thenthedesignofsoftwareisdescribedindetail.Theflowchartandcodeofthemainprogramandmajorsubroutinesuchasinfraredremotecontrolsubroutineand4*4matrixkeyboardsubroutineareshown.Keywords:MCUElectroniccodelockInfraredRemote-control39 目录摘要IIIAbstractIV1绪论11.1课题的来源11.2课题的意义11.3国内外发展现状11.4课题研究的主要内容22方案设计与总体设计32.1总体方案的设计32.1.1总体方案的硬件设计32.1.2总体方案的软件设计42.2硬件设计简述52.2.1单片机主控模块52.2.2红外遥控模块52.2.34*4矩阵键盘模块62.2.4LCD1602液晶显示模块62.2.5报警模块72.2.6电源模块72.3方案评价73系统软件设计93.1主程序设计93.2红外遥控模块软件设计93.2.1红外通信基本原理及标准93.2.2红外遥控系统及原理103.3LCD1602液晶显示模块软件设计133.4STC单片机内部EEPROM及ISP的应用143.4.1EEPROM存储器143.4.2ISP特殊功能寄存器153.54*4矩阵键盘模块软件设计163.5.14*4矩阵键盘的流程图及功能163.5.24*4矩阵键盘的工作原理173.6报警器模块软件设计173.7系统调试183.7.1程序编译183.7.2程序下载1839 4结论20参考文献21致谢22附录23附录图1电路原理图23附录图2PCB板24附录图3实物图25附录4程序2639 红外遥控电子密码锁设计——软件设计1绪论1.1课题的来源随着人们生活的提高和安全意识的加强,在日常生活中出现了各式各样的密码锁。社会科技在不断地地进步,密码锁也经历了一代又一代。密码锁已经从传统的机械锁发展到了磁性锁,电子锁,声控锁等等,这些锁是在传统机械锁的基础上,加上了不同的密码,不同的磁场,不同的声音等来控制锁的开启。这些密码锁保密性高,使用灵活性强,安全系数高,在很大程度上克服了传统机械锁的缺点,使得人们对自身的财产安全有了更多的保障。但是这些密码锁不能很好的实现远距离遥控控制,比如声控锁在进行远距离遥控时稳定性不高,不能进行很正确的远距离控制,一定程度上限制了这些密码锁在日常生活中普及和推广。为了解决远距离控制的问题,红外遥控电子密码锁的研究普遍受到人们的重视和关注。红外遥控电子密码锁在一定程度上可以解决传统机械锁和一般电子密码锁存在的问题,具有很大的研究价值。1.2课题的意义红外遥控是目前使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。在许多单片机应用系统中,常常利用非电信号传送信息以实现遥控的功能。而红外通信具有传输可靠性高、实施方便、控制简单等特点,是一种较为常用的通信方式。该系统以单片机为核心,结合红外遥控技术,配以相应的硬件电路,由各模块共同作用实现各种功能。红外遥控电子密码锁解决了传统密码锁和一般的电子密码锁的不足,操作方便,提高密码锁的可靠性和安全性,实现了远距离控制技术,并且能够很稳定的实现远距离控制技术,还具有密码预置、误码报警、耗电省等功能,基本可以满足用户的需要,起到防盗的作用,非常适合办公室、住宅等用锁的要求,具有很好的开发和研究价值。1.3国内外发展现状密码锁的发展大致可以分为四个阶段:1、木质锁;2、机械锁;3、普通的电子密码锁、磁片密码锁、EP卡锁;4、未来的家用电子密码锁、遥控电子密码锁、以及用于特定场合的安全密码锁。39 红外遥控电子密码锁设计——软件设计目前,在日常安全范围领域,具有防盗报警功能的电子密码锁逐渐替代了传统机械锁,在性能上和技术上都大大提高了。随着大规模集成电路技术的发展,特别是单片机的出现以后,它在保留了电子密码锁原有的一些功能的同时,对这些电子锁进行了智能化管理,这样的产品体积大大减小了,成本也大大降低了,也进一步提高了密码锁的安全性、可靠性。红外遥控技术在遥控方式上大体经历了从有线到无线的超声波、从振动子到红外线、再到使用总线的微机红外遥控这样几个阶段,红外遥控技术慢慢变得成熟,运用在各方面。目前,红外线遥控是使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。红外遥控电子密码锁系统大致以单片机为核心,结合红外遥控技术,配以相应的硬件电路,实现了电子密码锁密码的显示、存储、修改以及驱动报警等功能,同时实现了远程遥控,具有更好的密码保护以及更完善的功能系统。1.4课题研究的主要内容课题主要关于红外遥控电子密码锁的设计研究。该系统以单片机为核心,结合红外遥控技术,配以相应的硬件电路(矩阵键盘、报警模块、显示模块等),预期实现电子密码的密码显示、修改、存储以及驱动报警等功能,同时,采用的红外遥控技术可以实现远程遥控。结合硬件电路,通过软件设计,主要完成以下几点内容:1、红外遥控信号的接收(遥控距离达到8-10米);2、键盘输入、本机设置的键盘信息管理功能;3、单人电控锁开锁、关锁的控制功能;4、报警功能。主要完成主程序结构设计及其程序编写和子程序结构设计及其程序编写。软件是整个系统的核心内容,在硬件电路已经确定的情况下,不同程序可以实现不同的功能。该课题的设计基于C语言,使用KeiluVision编辑、调试、编译通过。采用模块化设计,自顶而下的设计思路,这样的设计有利于程序代码的优化,而且便于设计、调试和维护。以主程序为核心设置了多个功能模块子程序。程序大致可以分为系统初始化程序、红外遥控模块子程序、密码判断子程序、显示子程序、键盘扫描中断服务程序等。其中主程序主要起到一个决策和导向作用,系统的各个功能模块主要通过调用具体的子程序来实现。系统初始化主要包括:定时器、中断、1602芯片以及系统参数等的初始化;往EEPROM写入初始化密码主要是完成对原先密码进行更改或者进行相关设置的任务,然后将更新后的密码保存到EEPROM中。39 红外遥控电子密码锁设计——软件设计2方案设计与总体设计2.1总体方案的设计2.1.1总体方案的硬件设计STC89C52根据设计要求,本系统的设计思路如下:以单片机STC89C52控制为中心,分为红外遥控,单片机控制,蜂鸣器报警,LCD1602液晶显示,4*4键盘输入以及电源。总体设计方案如图2-1所示。红外遥控接收红外遥控发射蜂鸣器报警LCD1602液晶显示4*4矩阵键盘复位晶振电源图2-1系统总体设计方案各个功能模块的功能大致如下:红外遥控模块:红外遥控器按有键被按下时,就输出一定数量被调制的脉冲信号。当接收器收到发射器发射的红外指令信号时,它将红外指令信号变成TTL电平信号,再经过放大、解调、整形、解码处理后送入单片机,由单片机进行识别处理,从而控制电子密码锁的工作。单片机模块:主控电路模块主要采用以单片机STC89C52为核心的主控电路。红外线接收器把接收到的信号传送给单片机,单片机对信号进行识别,将信号识别成指令,利用这些指令控制电子密码锁的工作。蜂鸣器报警功能模块:若3次输入密码错误,报警模块报警。LCD1602液晶显示模块:此模块采用单片机向液晶显示屏的串口发送数据指令,当串口接收到一串数据后,LCD1602液晶显示屏能实现数据的显示、清屏操作和光标的设置等操作。4*4矩阵键盘模块:该模块可以实现输入密码,设置新密码等功能。39 红外遥控电子密码锁设计——软件设计2.1.2总体方案的软件设计软件是整个控制系统的核心,在硬件结构一定的情况下,只要改变软件就能实现一些不同的功能。对于51系列单片机,现有四种语言支持,即汇编、PL/M,C和BASIC。汇编语言最接近机器语言,利用汇编语言时,单片机的资源利用效率较高,但是这要求对单片机的指令系统非常了解,对单片机的存储器结构也要有一定的了解。PL/M是Intel从8080微处理器系列开始为其系列产品开发的编程语言,对于51系列的单片机而言,PL/M不支持复杂的算术运算、无丰富的库函数支持。C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生压缩代码,对单片机的指令系统不要求了解,仅要求对51系列单片机的存储器结构有初步了解。BASIC通常附在PC机上,是初学编程的第一种语言,主要用于要求编程简单而对运行速度和编程效率要求都不高的场合,现在已经很少用到BASIC语言了。经过上述的比较后,该课题的设计选择基于C语言,使用KeiluVision编辑、调试、编译通过。采用模块化设计,自顶而下的设计思路,这样的设计有利于程序代码的优化,而且便于设计、调试和维护。以主程序为核心设置了多个功能模块子程序。程序大致可以分为系统初始化程序、红外遥控模块子程序、密码判断子程序、显示子程序、键盘服务程序等。主程序流程图如下:图2-2主程序流程图39 红外遥控电子密码锁设计——软件设计2.2硬件设计简述系统的电路原理图如附录图1所示。现对各电路模块设计作一简单介绍。2.2.1单片机主控模块本设计中我们选用的单片机控制芯片是STC89C52芯片,相较于AT系列的单片机,STC89C52可在线编程,烧制程序简单,工作稳定高,兼容性好且抗干扰性强。模块图如图2-3。图2-3单片机主控模块2.2.2红外遥控模块红外远程遥控模块由发射和接受两部分组成,电路如图2-4。遥控发射器采用型号TC9012芯片,TC9012芯片是一块用于东芝系列红外遥控系统中的专用发射集成电路,采用CMOS工艺制造。而遥控接收器采用HS0038B型号的红外一体化接收头,HS0038B的管脚分布如图2-5所示,2脚、3脚分别为地电源和地,1脚是解调信号输出口,其电平与TTL兼容。图2-4红外遥控模块电路图图2-5HS0038B39 红外遥控电子密码锁设计——软件设计2.2.34*4矩阵键盘模块因为本系统需要用到10个数字按键以及几个系统功能键,需要用到的按键数量比较多,由于单片机的I/O口是有限的,选择使用4*4的矩阵键盘来作为输入,这样一个8位的I/O口就可以驱动16个键盘,大大提升了I/0口的利用率。矩阵键盘硬件电路图如图2-6所示。图2-64*4矩阵键盘电路图2.2.4LCD1602液晶显示模块液晶显示模块采用应用比较广泛的LCD1602,是通用型的双行16字符点阵液晶模块,内含数字、字母、符号192种(无汉字)字符库,可通过8位或4位的单片机进行显示字符的控制,通过编程可实现字行的上下滚页,左右移动,通过硬件连线可控制背景灯的对比度,背景灯的开关。LCD1602与STC89C52单片机的电路引脚连接图如图2-7所示。图2-71602液晶显示模块电路引脚图39 红外遥控电子密码锁设计——软件设计2.2.5报警模块本次研究课题是红外电子密码锁,目的是良好保护财产,因此我们需要在设计中加入报警模块,在密码连续3次错误时就报警。如图2-8。图2-7报警模块电路图2.2.6电源模块该模块是用来控制系统在工作时的电源,上述采用的芯片所需的电压基本都在5V左右,所以系统在工作时采用5V的工作电压。如图2-8。图2-8电源模块图2.3方案评价对于51系列单片机,现有四种语言支持,即汇编、PL/M,C和BASIC。汇编语言最接近机器语言,利用汇编语言时,单片机的资源利用效率较高,但是这要求对单片机的指令系统非常了解,对单片机的存储器结构也要有一定的了解。PL/M是Intel从8080微处理器系列开始为其系列产品开发的编程语言,对于51系列的单片机而言,PL/M不支持复杂的算术运算、无丰富的库函数支持。C语言是一种源于编写UNIX39 红外遥控电子密码锁设计——软件设计操作系统的语言,它是一种结构化语言,可产生压缩代码,对单片机的指令系统不要求了解,仅要求对51系列单片机的存储器结构有初步了解。BASIC通常附在PC机上,是初学编程的第一种语言,主要用于要求编程简单而对运行速度和编程效率要求都不高的场合,现在已经很少用到BASIC语言了。C语言有以下几个优点:1、C语言是编译型语言,不仅有高级语言的特点,还具备汇编语言简洁、可控制硬件的特点;2、可移植性好;3、有丰富的库函数;4、表达能力好,易于编程,可读性强;5、寄存器的分配由编译器完成;6、可以模块化设计,只要将各模块之间的接口确定好就可以了;7、开发周期短;8、有实时多任务操作系统,可以合理地分配CPU的时间和单片机的资源。经过比较之后,采用C语言来完成该系统的设计。39 红外遥控电子密码锁设计——软件设计3系统软件设计3.1主程序设计本设计采用模块化设计,自顶而下的谁思路。主程序的内容主要涵盖了各子程序的内容。主程序的流程图在第二章中已经给出。从流程图中可以看出,主程序主要包括这些内容:初始化定时器和中断,采用定时器0和外部中断0,并且定时器0工作在工作方式2;初始化LCD1602和EEPROM;设置初始密码;判断红外和4*4矩阵键盘是否有键按下,如果红外有键按下,则红外接收头接收数据,外部中断响应,单片机产生中断,进入数据处理阶段,最后根据按键流程图输出响应的结果,如果矩阵键盘有键按下,直接进入按键处理程序。按键处理程序包含了报警和LCD1602显示。3.2红外遥控模块软件设计对红外遥控模块进行系统设计,必须先了解一些相关的原理和标准,如:红外通信基本原理,红外遥控器编码和解码原理,红外数据协会标准,红外遥控器原理等,这样才能有一个比较清楚系统的设计方案。3.2.1红外通信基本原理及标准红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和红外接收两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。1993年,由HP、COMPAQ、INTEL等二十多家公司发起成立了红外数据协会(InfraredDataAssociation,简称IRDA),1993年6月28日,来自50多家企业的120多位代表出席了红外数据协会的首次会议,并在建立统一的红外通讯标准问题上达成了一致。IRDA1.0简称为SIR(SerialInfraRed),是基于HP-SIR开发出来的一种异步的、半双工的红外通讯方式。SIR以系统的异步通讯收发器(UART)为依托,通过对串行数据脉冲的波形压缩和对所接收的光信号电脉冲的波形扩展这一编码和解码过程实现红外数据信号传输。由于受到UART通讯速率的限制,SIR的最高通讯速率只能达到115.2kbps。IRDA39 红外遥控电子密码锁设计——软件设计标准包括三个基本的协议和规范:物理层规范(PhysicalLayerLinkSpecification),链接建立协议(inkAccessProtocol:IRLAP),链接管理协议(LinkManagementProtocol:IRLMP)。3.2.2红外遥控系统及原理通用红外遥控系统由发射和接收两大部分组成,应用编码和解码专用集成电路芯片来进行控制操作,如图3-1所示。发射部分包括键盘、编码调制、LED红外发送器;接收部分包括光/电转换放大器、解调、解码电路。编码调制LED键盘遥控发射器解码电路解调光/电放大器遥控接收器图3-1红外遥控系统1、遥控发射器及编码遥控发射器专用芯片很多,该系统中采用了TC9012芯片。TC9012芯片是一块用于东芝系列红外遥控系统中的专用发射集成电路,采用CMOS工艺制造。它可外接32个按键,提供8种用户编码,另外还具有3种双重按键功能。当发射器按键按下时即有遥控码发出,所按的键不同遥控编码也不一样。TC9012芯片采用脉冲位置调制方式(PPM)。TC9012的一帧数据中含有32位码,包括两个8位用户码,8位数据码和8位数据码的反码及最后位的同步位。引导码由4.5ms的载波和4.5ms的载波关断波形所构成。用户码和数据码的发射都是低位在前,高位在后。发射码格式如图3-2:图3-2发射码格式脉冲位置调制方式(PPM):“1”和“0”的区分取决于脉冲之间的时间。脉宽为0.565ms、间隔0.56ms、周期为1.125ms,占空比大约为1:1的组合表示二进制的“0”,如图2-6;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms,占空比大约为1:3的组合表示二进制的“1”,如图3-3。39 红外遥控电子密码锁设计——软件设计图3-3遥控码的“0”和“1”2、遥控接收器及解码一体化红外线接收头是一种集红外线接收和放大于一体的器件,不需要外接任何其它元件,就能实现红外线接收,输出与TTL电平信号兼容的所有工作,体积和一般的塑料三极管大小一样,它适合于各种红外遥控和红外线数据传输。HS0038B有许多优点:稳定性好,抗干扰能力很强,外围电路非常简洁,成本低,适用于各种红外遥控和红外数据传输,是替代其它红外接器的理想元件。所以在该设计中采用了HS0038B型号的一体化红外接收器。HS0038B的信号电平为:38KHz红外发射接收到时:低电平输出;38KHz红外发射接收不到时:高电平输出。HS0038B接收器可以实现红外信号接收的一系列功能,如解调、滤波等功能,所以采用一体化红外接收器的信号输出引脚直接与单片机的中断引脚(INT0)相连,来实现红外信号的解码。在设计中采用下降沿触发,若检测到低电平则引起中断,进入中断程序。外部中断程序如下:voidINT0init(void){EA=1;IT0=1;//下降沿触发方式EX0=1;}解码的关键是如何识别“0”和“1”,由图2-6可以发现“0”、“1”均以0.56ms的高电平开始,不同的是低电平宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据低电平的宽度区别“0”和“1”,也就是判断时间为1.25ms还是2.25ms,如果时间是1.25ms,收到的就是“0”,如果时间是2.25ms,收到的就是“1”。在该系统中,对红外发射器发射出的数据处理的代码如下:voidirpros(void){uchark=1,i,j;ucharvalue;for(j=0;j<4;j++)//四个码(2个用户码,数据码和数据反码)39 红外遥控电子密码锁设计——软件设计{for(i=0;i<8;i++){value=value>>1;//执行7次,右移一位(低位在前,高位在后)if(irdata[k]>6)//执行8次,判断发射的数据是否为“1”{value=value|0x80;}//高位置1k++;}ircode[j]=value;}irprosok=1;//红外接收OK}3、遥控器功能键该设计定义了遥控器的一些功能键,通过遥控器的输入对已设密码进行写入,修改和清空,实现上锁和开锁的功能。遥控器主要有数字键0-9,开锁键,上锁键,设置密码键,保存密码键和清空密码键。遥控器按键分配如图3-4所示:043218675开锁键9设置新密码键上锁键保存密码键清空密码键图3-4遥控器按键分配图红处接收控制电路采用STC89C52单片机来实现,输出控制方式可选择,实用性强。红外按键部分的流程图和4*4键盘的按键处理流程图是一样的。红外遥控模块的流程图如图3-5:39 红外遥控电子密码锁设计——软件设计图3-5红外遥控模块流程图3.3LCD1602液晶显示模块软件设计LCD1602液晶屏的主要功能有:1、40个通道点阵LCD驱动;2、输入、输出信号;3、可选择当作列驱动或者行驱动;4、通过单片机控制将所测的数据显示出来。LCD1602的初始化设置:1、显示模式设置:指令码功能00111000设置16*2显示,5*7点阵,8位数据接口2、显示开/关和光标设置指令码功能00001DCBD=0关显示;D=1开显示C=0不显示光标;C=1显示光标B=0光标不闪烁;B=1光标闪烁000001NCN=0当读或写一个字符后地址指针减一,且光标减一N=1当读或写一个字符后地址指针加一,且光标加一S=0当写一个字符,整屏显示不移动39 红外遥控电子密码锁设计——软件设计S=1当写一个字符,整屏显示左移或者右移,以得到光标不移动但屏幕移动的效果3、数据指针设置设置数据指针地址:80H+地址码。4、清屏设置:01H。包括数据指针清零和所有显示清零。5、RAM地址映射图:控制器内部带有80*8位的RAM缓冲区,对应的图如图3-6。图3-6RAM地址映射图6、写操作时序图:7、综上所述,LCD1602的初始化程序如下:voidinit_1602()//1602初始化函数{lcden=0;write_com(0x38);//显示模式设置write_com(0x0c);//显示开不显示光标光标不显示write_com(0x06);//显示地址递增,即写一个数据后,显示位置右移一位write_com(0x01);//清屏Display_string(table,0x80);//在第一行显示Display_string("Lockok!",0x80+0X40);//在第二行显示}3.4STC单片机内部EEPROM及ISP的应用3.4.1EEPROM存储器在STC单片机中39 红外遥控电子密码锁设计——软件设计有2KB的EEPROM存储器,分为8个扇区,每个扇区有512B写入的数据可以保存的有效时间长达100年,擦写次数可长达10万次以上。片内EEPROM地址如表3-1所示。与采用片外EEPROM相比,采用单片机内部的EEPROM保存密码的可靠性和安全性都较高,这种方法也广泛用于家居和办公等智能控制系统中。EEPROM存储器有串口和并口两种,串口的部分电路电路还支持下载线。在该系统中采用EEPROM来完成密码的读写和保存。表3-1片内EEPROM地址第一扇区第二扇区第三扇区第四扇区起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址2000H21FFH2200H23FFH2400H25FFH2600H27FFH第五扇区第六扇区第七扇区第八扇区起始地址结束地址起始地址结束地址起始地址结束地址起始地址结束地址2800H29FFH2A00H2BFFH2C00H2DFFH2E00H2FFFH3.4.2ISP特殊功能寄存器ISP是insystemprogramable的缩写,是指在线系统编程,也就是说不用将板子取下,可以简单地对其进行编程。IAP是inapplicationprogramable的缩写,是指在线应用编程,也就是单片机提供了一系列的机制,当单片机在运行时可以提供一种改变flash数据的方法,这种方法的典型应用是用一小段代码来实现程序的下载。事实上,单片机的ISP功能是通过IAP技术来实现的。下面介绍一下ISP特殊功能寄存器的含义:ISP_DATA:ISP操作时的数据寄存器,从FLASH中读出数据和向FLASH中写数据都应该放在此处;ISP_ADDRH:ISP操作时的地址寄存器高八位;ISP_ADDRL:ISP操作时的地址寄存器低八位;ISP_CMD:ISP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。ISP_TRIG:ISP操作时的命令触发寄存器。在ISPEN(ISP_TRIG.7)=1时,对ISP_TRIG先写入46H,再写入B9H,ISP命令才会生效。ISP_CONTR:ISP控制寄存器。定义ISP功能寄存器地址的代码如下://定义ISP功能寄存器地址sfrISP_DATA=0xE2;//定义ISP的数据寄存器地址sfrISP_ADDRH=0xE3;//定义EEPROM地址寄存器的高8位39 红外遥控电子密码锁设计——软件设计sfrISP_ADDRL=0xE4;//定义EEPROM地址寄存器的低8位sfrISP_CMD=0xE5;//定义ISP的命令寄存器地址sfrISP_TRIG=0xE6;//定义ISP命令触发寄存器地址sfrISP_CONTR=0xE7;//定义ISP控制寄存器地址3.54*4矩阵键盘模块软件设计由于单片机的I/O口数量有限,该系统采用4*4矩阵键盘。这样用一个8位的I/O口就可以驱动16个键盘。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通。从附录图1中可以看出键盘的连线方式,由行线和列线共同来决定哪一个按键被按下。4*4矩阵键盘的按键功能和红外遥控模块的按键功能是一样的,包括15个按键:数字键0-9,开锁键,上锁键,设置密码键,保存密码键和清空密码键。3.5.14*4矩阵键盘的流程图及功能矩阵键盘的流程图如图3-6。下面对流程图进行具体的介绍:1.当没有接收到遥控信号时,这时由键盘输入密码,当6位有效密码输入正确时开锁键确认,完成开锁,1602显示openok!。2.开锁完成后,如果需要再把锁锁上,可以按下上锁键,此时锁又重新锁上,1602显示Lockok!。3.在输入6位有效密码时,必须按照先后序输入,如顺序错误或密码不对时,1602显示器会提示错误,若连续3次输入错误,系统会长时间报警,这时必须按复位键恢复到初始化状态。4.在输入密码的过程中,若发现错误了可以按下清空键,清空已输入的密码,然后重新输入密码。5.当锁处于开锁状态时,可以设置新密码,先按下设置密码键,输入新密码,然后按下保存密码键,此时新密码已保存,同时锁被重新锁上。31205467上锁开锁98清空密码保存密码设置密码图3-7键盘功能按键分布图39 红外遥控电子密码锁设计——软件设计图3-6矩阵键盘流程图3.5.24*4矩阵键盘的工作原理一个按键是否被按下有行线和列线共同决定。判断键盘中有无键按下:将全部行线置低电平(0000),然后检测列线的状态,只要有一个列线的电平为低,就表示键盘中有按键被按下,而且被按下的键是低电平列线和4根行线交叉的4个按键之中的其中一个,若所有列线均为高电平(1111),则表示键盘中没有键被按下;接着判断被按下的按键所在的位置:在知道有按键被按下后,就要确定到底是哪个按键被按下。方法是:依次将行线置为低电平,就是在置某根行线为低电平时,剩余行线为高电平,当确定某一根行线为低电平后,再依次检测各列线的电平状态,若某一根列线为低电平,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。3.6报警器模块软件设计该功能为当输入密码错误时,实现报警功能,从而提高其安全性。该模块比较简单,就是在用4*4矩阵键盘或者红外遥控器输入密码时,若果连续3次输入的密码都是错误,此时蜂鸣器就会进入长时间报警,必须按复位键,蜂鸣器才会停止报警。39 红外遥控电子密码锁设计——软件设计3.7系统调试3.7.1程序编译本设计采用C语言来完成,同时也决定了编译器的选择,采用KEIL编译器来完成整个程序的编译。KEIL是德国KEIL公司开发的单片机编译器,是目前最好的51系列单片机开发工具之一,提供了丰富的库函数和集成开发调试工具,全windows界面。KEIL已被完全集成到uVision3的集成开发环境中,本设计的程序就是在uVision3的集成开发环境中编译的,这个开发环境包括以下几个部分:汇编器、编译器、项目管理器、实时操作系统和调试器。在uVision3的集成开发环境中操作的步骤为先新建一个project,填写好保存路径,在file菜单里新建text文本,在text里写入程序,保存,最后把text添加到sourcegroup1里,这样就可以对程序进行编译了,若没有错误就可以生产HEX文件了。由于程序比较长,在软件调试时,本设计采用先模块调试然后再进行系统调试。在调试的过程中红外遥控模块的程序经常出现错误,红外通信只能工作于半双工方式,另外,通信波特率比较低,编程时应注意等待时间。在编译时采用单步编译,逐一找出错误的地方并改正直至编译正确。编译正确后的界面如3-8。图3-8编译正确后的界面3.7.2程序下载程序编译成功,生产了HEX文件后,就可以把程序下载到STC89C52单片机中了。在下载程序时,要用一个转换器将单片机和电脑连接起来。本设计下载程序时采用了RS-232转换器。下载时硬件连接是这样的:单片机RXD(P3.0)引脚——RS-232转换器——电脑TXD;单片机TXD(P3.1)引脚——RS-232转换器——电脑RXD;单片机GND——电脑GND。连接图如图3-9。39 红外遥控电子密码锁设计——软件设计图3-9串口连接图STC系列的单片机相比AT系列的单片机的优点是可以在线编程,而且速度快,STC提供了ISP下载工具STC-ISP.exe软件。在连接好单片机和电脑之后就可以运行STC-ISP.exe软件进行程序下载了。打开软件进行参数设置。下载时都要先点下载再上电。下载界面图如图3-10。图3-10下载界面图39 红外遥控电子密码锁设计——软件设计4结论通过上面软件的分析和设计,本系统完全是可行的。在设计和实验的基础上,和设计硬件部分的同学一起做出了实物。本设计利用STC89C52单片机芯片控制基于单片机的红外遥控密码锁,选择C语言来完成整个软件的设计。实现了红外遥控和键盘双输入控制,密码储存部分采用STC89C52单片机芯片内部的EEPROM实现,可以实现输入密码开锁,对密码锁进行上锁,还有设置新密码等多种功能。显示部分采用1602LCD液晶显示屏,在报警模块部分设计了蜂鸣器在密码输入错误三次后蜂鸣器报警的功能。任何个项目都不是十全十美的,该系统也有一些不足的地方。没有考虑到外部因素对系统的影响,比如密码丢失,误操作对系统的影响。报警功能做得不够完善,只有一个蜂鸣器,在嘈杂的地方就不一定能感觉到蜂鸣器的报警声音。红外遥控有时也不太稳定,在调试的时候发现用遥控器输入密码时,感应不是太灵敏,要多输几次才可以,它实际的有效距离也没有进行系统的理论论证。参考文献[1]石晶晶39 红外遥控电子密码锁设计——软件设计李亚梅.新型红外遥控密码锁的研究与设计[J].中国科技信息2008(19):134-136.[2]王晓东,刘春红,于鑫.单片机和计算机的串口通信[J].应用科技,2003(30)1:14-16.[3]何小艇主编.电子系统设计[M].浙江大学出版社,1998.12.[4]曹开田.基于单片机的红外遥控密码锁的设计与实现[J].中国仪器仪表,2006(3):93-94.[5]于会山,崔学礼.一种新型红外线遥控智能密码锁[M].电子技术,2005.10.[6]曹巧媛.单片机原理及应用[M].北京:电子工业出版社,2002.[7]牛翌光.单片机原理及接口技术[M].北京:电子工业出版社,2008:32-79.[8]杨路明.C语言程序设计[M].北京:北京邮电大学出版社,2005:52-268.[9]张文峥,李先亮,张其善.IrDA红外通信在导航仪中的应用[J].2000(10):54-56.[10]尹学锋.红外线遥控密码锁的研究[M].安防科技研究与探索,2008.3.[11]李明等.C语言程序设计教程[M].上海.上海交通大学出版社,2008.[12]马冬梅,屈 霞.一种简易红外遥控密码锁设计与实现[J].现代电子技术,2010(13):159-162.[13]程院莲,卢飞跃,基于AT89S51单片机的电子密码锁的设计[J].福建电脑,2010(6):58-61.[14]王金国.采用单片机的电子密码锁控制电路[J].山东煤炭科技,2000(3):30-33.[15]朱纯益.单片机用作通用红外遥控接收器的设计[J].单片机与嵌入式系统应用,2002[16]JimemezPetal.ImprovedPPMschemesforinfraredwirelessLAN[J].ElectronicsLettrs.1996.10.[17]SerialInfraredLinkAccessProtocol(IrLAP),Version1.1.June16,1996,IBMCorporation,Hewlett-PackardCompany,AppleComputer,Inc.,CounterpointSystemsFoundry,Inc.[18]黄耀军,周云,严国萍.计算机红外无线互连的设计几实现[J].2000.2.[19]张毅坤,陈善久,裘雪红.单片微型计算机原理及应用[M].西安:西安科技大学出社,1998.8.[20]谢平.USB与红外组合通信系统的研究与实践[J].微计算机信息,200939 红外遥控电子密码锁设计——软件设计附录附录图1电路原理图39 红外遥控电子密码锁设计——软件设计附录图2PCB板39 红外遥控电子密码锁设计——软件设计附录图3实物图39 红外遥控电子密码锁设计——软件设计附录4程序#include#include//字符串#include#defineuintunsignedint#defineucharunsignedchar//====================================================================//定义ISP功能寄存器地址sfrISP_DATA=0xE2;//定义ISP的数据寄存器地址sfrISP_ADDRH=0xE3;//定义EEPROM地址寄存器的高8位sfrISP_ADDRL=0xE4;//定义EEPROM地址寄存器的低8位sfrISP_CMD=0xE5;//定义ISP的命令寄存器地址sfrISP_TRIG=0xE6;//定义ISP命令触发寄存器地址sfrISP_CONTR=0xE7;//定义ISP控制寄存器地址//定义ISP操作模式选择(ISP_CMD)#defineISP_BYTE_READ0x01//读字节指令码#defineISP_BYTE_PROGRAM0x02//写字节指令码,前提是该字节是空的,所以建议先擦除该字节所在扇区#defineISP_BYTE_ERASE0x03//扇区擦除指令码,EEPROM没有字节擦除指令码//定义ISP等待时间指令码(ISP_CONTR,ISP_CONTR.7是ISP功能允许位ISPEN,0禁止,1允许)#defineENABLE_ISP0x81//晶振20MHZ以下//定义EEPROM的起始扇区地址#defineFLASH_START_ADDRESS0x2000//STC89C51/52RC//定义全局变量ucharDataMemery;//IspRead()函数返回字节数据的中转变量//====================================================================sbitlcden=P2^5;sbitrw=P2^6;sbitrs=P2^7;sbitbeep=P2^3;ucharnum,flag;//flag:密码真确的标志位uchartable1[6]={0};//存初始密码uchartable2[16]="";//放*的数组uchartable3[16]="";//清除一个ucharuserpassword[6]={0};//放密码的数组ucharcodetable4[6]="012345";//初始密码ucharcodetable[]="yourpassword...";//红外设置ucharbitnum;//ucharstartflag;//是否开始接受的标志ucharirtime;//红外时间ucharbitime,irreceok;//irreceok红外接收是否OK的标志ucharirprosok;//红外处理数据是否OK的标志39 红外遥控电子密码锁设计——软件设计ucharirdata[33];//引导码1位,用户码16位,数据码8位,数据码反码8位,共33位ucharircode[4];//该数组用于存储解码后的数据,四个字节(除去引导码)voiddelay(uintz)//1ms延时{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidwrite_com(ucharcom)//写命令函数{rs=0;rw=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate)//写数据函数{rs=1;rw=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}voidprints(uchar*string)//显示字符串{while(*string){write_date(*string);string++;}}voidDisplay_string(uchar*string,ucharcom){uchari;write_com(com);//prints(string);for(i=0;i<16;i++){write_date(string[i]);}39 红外遥控电子密码锁设计——软件设计}voidinit_1602()//1602初始化函数{lcden=0;write_com(0x38);//显示模式设置write_com(0x0c);//显示开不显示光标光标不显示write_com(0x06);//显示地址递增,即写一个数据后,显示位置右移一位write_com(0x01);//清屏Display_string(table,0x80);Display_string("Lockok!",0x80+0X40);}/****************************************函数功能:清空密码****************************************/voidclear(){uchari,j;for(i=0;i<6;i++){userpassword[i]='';}for(j=0;j<16;j++){table4[j]='';}}//====================================================================//函数名称:voidTriggerIsp(void)//函数功能:触发ISP命令寄存器//输入输出:空//====================================================================voidTriggerIsp(void){//EA=0;ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();//EA=1;}//====================================================================//函数名称:voidDisableIsp(void)//函数功能:对操作后的EEPROM善后处理//输入输出:空39 红外遥控电子密码锁设计——软件设计//====================================================================voidDisableIsp(void){ISP_CONTR=0x00;ISP_CMD=0x00;ISP_TRIG=0x00;ISP_ADDRH=0x00;ISP_ADDRL=0x00;}//====================================================================//函数名称:voidIspRead(ucharAddress)//函数功能:从EEPROM中读取一字节数据//输入输出:输入:EEPROM的扇区地址//输出:DataMemery,读取到的数据内容//====================================================================voidIspRead(uintAddress){ucharAddrh,Addrl;ISP_CONTR=ENABLE_ISP;//开启ISP功能,并设置好等待时间ISP_CMD=ISP_BYTE_READ;Addrh=Address>>8;Addrl=Address&0x00ff;ISP_ADDRH=Addrh;ISP_ADDRL=Addrl;EA=0;ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();DataMemery=ISP_DATA;EA=1;DisableIsp();}//====================================================================//函数名称:voidIspWrite(ucharDataByte,ucharAddress)//函数功能:向指定扇区写一字节数据//输入输出:输入:EEPROM的扇区地址,要写入的数据//输出:空//====================================================================voidIspWrite(ucharDataByte,uintAddress){ucharAddrh,Addrl;ISP_CONTR=ENABLE_ISP;ISP_CMD=ISP_BYTE_PROGRAM;Addrh=Address>>8;39 红外遥控电子密码锁设计——软件设计Addrl=Address&0x00ff;ISP_ADDRH=Addrh;ISP_ADDRL=Addrl;ISP_DATA=DataByte;TriggerIsp();DisableIsp();}//====================================================================//函数名称:voidIspErase(ucharAddrh,ucharAddrl)//函数功能:对指定扇区进行扇区擦除//输入输出:输入:EEPROM的扇区地址//输出:空//====================================================================voidIspErase(uintAddress){ucharAddrh,Addrl;ISP_CONTR=ENABLE_ISP;ISP_CMD=ISP_BYTE_ERASE;Addrh=Address>>8;Addrl=Address&0x00ff;ISP_ADDRH=Addrh;ISP_ADDRL=Addrl;TriggerIsp();DisableIsp();}/****************************************函数功能EPROM初始化****************************************/voideeprominit(){IspErase(FLASH_START_ADDRESS);IspWrite(0xf0,FLASH_START_ADDRESS);}/***********定时器0初始化******************************/voidtimer0init(void){TMOD=0x02;//定时器0工作方式2TH0=0X00;TL0=0X00;ET0=1;EA=1;TR0=1;}/***********外部中断0初始化******************************/39 红外遥控电子密码锁设计——软件设计voidINT0init(void){EA=1;IT0=1;//下降沿触发方式EX0=1;}/***********定时器0******************************/voidtimer0()interrupt1{irtime++;//加到255加1,字符型最大255}/************************************************************************************函数功能:用来接收数据入口参数:出口参数:*************************************************************************************/voidint0()interrupt0{if(startflag==1){if(irtime>32)//检测引导码,9ms/0.256ms{bitnum=0;}irdata[bitnum]=irtime;irtime=0;bitnum++;if(bitnum==33){bitnum=0;irreceok=1;}}else{startflag=1;irtime=0;}}39 红外遥控电子密码锁设计——软件设计/************************************************************************************函数功能:处理数据入口参数:出口参数:*************************************************************************************/voidirpros(void){uchark=1,i,j;ucharvalue;for(j=0;j<4;j++)//四个码{for(i=0;i<8;i++){value=value>>1;//7,先移低位if(irdata[k]>6)//8{value=value|0x80;}k++;}ircode[j]=value;}irprosok=1;}/************************************************************函数名称:ucharkeyscan()函数功能:矩阵键盘输入输出:输入:无输出:keyscan()*************************************************************/ucharkeyscan(){uchartemp;P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){39 红外遥控电子密码锁设计——软件设计temp=P1;switch(temp){case0xee:num=0;break;case0xde:num=1;break;case0xbe:num=2;break;case0x7e:num=3;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0xed:num=4;break;case0xdd:num=5;break;case0xbd:num=6;break;case0x7d:num=7;break;}while(temp!=0xf0){39 红外遥控电子密码锁设计——软件设计temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0xeb:num=8;break;case0xdb:num=9;break;case0xbb:num=10;break;case0x7b:num=11;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){39 红外遥控电子密码锁设计——软件设计temp=P1;switch(temp){case0xe7:num=12;break;case0xd7:num=13;break;case0xb7:num=14;break;case0x77:num=15;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}returnnum;}//红外ucharkeyscan1(){uchartemp3;if(ircode[2]==0x00)//功能键{delay(100);if(ircode[2]==0x00){temp3=1;}}if(ircode[2]==0x01)//功能键{delay(100);if(ircode[2]==0x01){temp3=2;}}if(ircode[2]==0x02)//功能键{delay(100);if(ircode[2]==0x02){temp3=3;}39 红外遥控电子密码锁设计——软件设计}if(ircode[2]==0x03)//功能键{delay(100);if(ircode[2]==0x03){temp3=4;}}if(ircode[2]==0x04)//功能键{delay(100);if(ircode[2]==0x04){temp3=5;}}if(ircode[2]==0x05)//功能键{delay(100);if(ircode[2]==0x05){temp3=6;}}if(ircode[2]==0x06)//功能键{delay(100);if(ircode[2]==0x06){temp3=7;}}if(ircode[2]==0x07)//功能键{delay(100);if(ircode[2]==0x07){temp3=8;}}if(ircode[2]==0x08)//功能键{delay(100);if(ircode[2]==0x08){temp3=9;}}if(ircode[2]==0x09)//功能键39 红外遥控电子密码锁设计——软件设计{delay(100);if(ircode[2]==0x09){temp3=10;}}if(ircode[2]==0x10)//功能键{delay(100);if(ircode[2]==0x10){temp3=11;}}if(ircode[2]==0x11)//功能键{delay(100);if(ircode[2]==0x11){temp3=12;}}if(ircode[2]==0x12)//功能键{delay(100);if(ircode[2]==0x12){temp3=13;}}if(ircode[2]==0x13)//功能键{delay(100);if(ircode[2]==0x13){temp3=14;}}if(ircode[2]==0x14)//功能键{delay(100);if(ircode[2]==0x14){temp3=15;}}if(ircode[2]==0x16)//功能键{delay(100);if(ircode[2]==0x16)39 红外遥控电子密码锁设计——软件设计{temp3=0;}}returntemp3;}//主程序voidmain(){uchartemp;uchari=0,k=0,j=0,j1,h1;//temp:键盘还回的值i:输入个数j:错误次数ucharIS_valid_user;//开锁的标志timer0init();INT0init();init_1602();eeprominit();delay(100);IspErase(FLASH_START_ADDRESS);//擦数扇区,为写入一字节数据做准备IspWrite(table4[0],0x2001);//写入初始密码IspWrite(table4[1],0x2002);IspWrite(table4[2],0x2003);IspWrite(table4[3],0x2004);IspWrite(table4[4],0x2005);IspWrite(table4[5],0x2006);delay(10);IspRead(0x2001);//读出初始密码num=DataMemery;table1[0]=num;IspRead(0x2002);num=DataMemery;table1[1]=num;IspRead(0x2003);num=DataMemery;table1[2]=num;IspRead(0x2004);num=DataMemery;table1[3]=num;IspRead(0x2005);num=DataMemery;table1[4]=num;IspRead(0x2006);num=DataMemery;table1[5]=num;P3=0x0f;while(1)39 红外遥控电子密码锁设计——软件设计{if(P1!=0x0f){temp=keyscan();j1=1;P1=0x0f;}//ifendif(irreceok==1)//红外接收是否OK{irpros();irreceok=0;}if(irprosok==1){temp=keyscan1();h1=1;irprosok=0;}//IRifendif(j1==1||h1==1){h1=0;j1=0;switch(temp){case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i<=5){userpassword[i]=temp;table4[i]='*';Display_string(table4,0x80+0x40);i++;}break;case10://开锁键for(k=0;k<6;k++){if(table1[k]==(userpassword[k])+48)flag=1;elseflag=0;}if(flag==1){39 红外遥控电子密码锁设计——软件设计flag=0;i=0;delay(10);clear();delay(50);delay(30);Display_string("openok!",0x80+0x40);IS_valid_user=1;j=0;}else{i=0;j++;if(j==3){Display_string("Dolockagain!",0xc0);}else{clear();delay(50);delay(30);Display_string("ERROR!havetry",0x80+0x40);write_com(0xcf);write_date(0x30+j);//错误次数IS_valid_user=0;}}i=0;break;case11://上锁键clear();delay(100);Display_string(table,0x80);Display_string("Lockok!",0x80+0x40);i=0;IS_valid_user=0;break;case12://设置新密码if(!IS_valid_user){i=0;Display_string("noright!",0x80+0x40);delay(1000);Display_string(table,0x80);Display_string("Lockok!",0x80+0x40);}else39 红外遥控电子密码锁设计——软件设计{i=0;Display_string("newpassword",0x80);Display_string("",0x80+0x40);}break;case13://保存新密码if(!IS_valid_user){i=0;delay(100);Display_string("noright!",0x80+0x40);delay(1000);Display_string(table,0x80);Display_string("Lockok!",0x80+0x40);}else{i=0;for(k=0;k<6;k++){userpassword[k]=userpassword[k]+48;}delay(20);IspErase(FLASH_START_ADDRESS);//擦除扇区,为写入一字节数据做准备IspWrite(userpassword[0],0x2001);IspWrite(userpassword[1],0x2002);IspWrite(userpassword[2],0x2003);IspWrite(userpassword[3],0x2004);IspWrite(userpassword[4],0x2005);IspWrite(userpassword[5],0x2006);delay(100);IspRead(0x2001);//读数据num=DataMemery;table1[0]=num;IspRead(0x2002);num=DataMemery;table1[1]=num;IspRead(0x2003);num=DataMemery;table1[2]=num;IspRead(0x2004);num=DataMemery;39 红外遥控电子密码锁设计——软件设计table1[3]=num;IspRead(0x2005);num=DataMemery;table1[4]=num;IspRead(0x2006);num=DataMemery;table1[5]=num;delay(100);write_com(0x01);clear();delay(30);Display_string(table,0x80);Display_string("passwordsaved!",0xc0);delay(1000);write_com(0x01);Display_string("Dolockagain!",0xc0);}break;case14://清除所有输入i=0;clear();delay(30);Display_string(table4,0xc0);break;}//switchend}//ifendif(j==3){Display_string("passworderror",0x80+0x40);Display_string("Lockok!",0x80+0x40);beep=0;delay(1000);beep=1;}}//WHILEEND}//mainEND39

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭