【电子信息工程毕业设计+文献综述+开题报告】红外遥控电子密码锁设计—软件设计

【电子信息工程毕业设计+文献综述+开题报告】红外遥控电子密码锁设计—软件设计

ID:481548

大小:3.07 MB

页数:67页

时间:2017-08-09

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

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

(20__届)本科毕业设计红外遥控电子密码锁设计—软件设计61 摘要目前,具有报警功能的电子密码锁,正逐步取代传统的机械密码锁。电子密码锁在性能和技术方面都有了很大的进展,例如:克服了传统的机械密码锁密码少,可靠性不足和操作不方便等缺点。本文设计了一种基于单片机STC89C52的红外遥控电子密码锁。在该设计中,采用了红外线作为传输介质,因为它具有信息传输可靠,抗干扰能力强等特点。这种密码锁有两种类型的输入设备,一个是安装在电子密码锁上的4*4矩阵键盘,另一个是红外遥控器。具有开锁和更改所设定的密码等功能。操作时,LCD1602可以显示有关信息。在介绍了红外遥控编码和解码的原理,4*4矩阵键盘的工作原理,STC89C52内部EEPROM的应用以及LCD1602显示屏的初始化和工作原理等的基础上,本文详细叙述了软件的设计要点以及方法,同时给出了主程序和几个主要子程序的流程图和代码。子程序主要包括红外遥控子程序和4*4矩阵键盘子程序。关键词:单片机电子密码锁红外遥控61 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-control61 目录摘要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程序下载1861 4结论20参考文献21致谢22附录23附录图1电路原理图23附录图2PCB板24附录图3实物图25附录4程序2661 红外遥控电子密码锁设计——软件设计1绪论1.1课题的来源随着人们生活的提高和安全意识的加强,在日常生活中出现了各式各样的密码锁。社会科技在不断地地进步,密码锁也经历了一代又一代。密码锁已经从传统的机械锁发展到了磁性锁,电子锁,声控锁等等,这些锁是在传统机械锁的基础上,加上了不同的密码,不同的磁场,不同的声音等来控制锁的开启。这些密码锁保密性高,使用灵活性强,安全系数高,在很大程度上克服了传统机械锁的缺点,使得人们对自身的财产安全有了更多的保障。但是这些密码锁不能很好的实现远距离遥控控制,比如声控锁在进行远距离遥控时稳定性不高,不能进行很正确的远距离控制,一定程度上限制了这些密码锁在日常生活中普及和推广。为了解决远距离控制的问题,红外遥控电子密码锁的研究普遍受到人们的重视和关注。红外遥控电子密码锁在一定程度上可以解决传统机械锁和一般电子密码锁存在的问题,具有很大的研究价值。1.2课题的意义红外遥控是目前使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。在许多单片机应用系统中,常常利用非电信号传送信息以实现遥控的功能。而红外通信具有传输可靠性高、实施方便、控制简单等特点,是一种较为常用的通信方式。该系统以单片机为核心,结合红外遥控技术,配以相应的硬件电路,由各模块共同作用实现各种功能。红外遥控电子密码锁解决了传统密码锁和一般的电子密码锁的不足,操作方便,提高密码锁的可靠性和安全性,实现了远距离控制技术,并且能够很稳定的实现远距离控制技术,还具有密码预置、误码报警、耗电省等功能,基本可以满足用户的需要,起到防盗的作用,非常适合办公室、住宅等用锁的要求,具有很好的开发和研究价值。1.3国内外发展现状密码锁的发展大致可以分为四个阶段:1、木质锁;2、机械锁;3、普通的电子密码锁、磁片密码锁、EP卡锁;4、未来的家用电子密码锁、遥控电子密码锁、以及用于特定场合的安全密码锁。61 红外遥控电子密码锁设计——软件设计目前,在日常安全范围领域,具有防盗报警功能的电子密码锁逐渐替代了传统机械锁,在性能上和技术上都大大提高了。随着大规模集成电路技术的发展,特别是单片机的出现以后,它在保留了电子密码锁原有的一些功能的同时,对这些电子锁进行了智能化管理,这样的产品体积大大减小了,成本也大大降低了,也进一步提高了密码锁的安全性、可靠性。红外遥控技术在遥控方式上大体经历了从有线到无线的超声波、从振动子到红外线、再到使用总线的微机红外遥控这样几个阶段,红外遥控技术慢慢变得成熟,运用在各方面。目前,红外线遥控是使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。红外遥控电子密码锁系统大致以单片机为核心,结合红外遥控技术,配以相应的硬件电路,实现了电子密码锁密码的显示、存储、修改以及驱动报警等功能,同时实现了远程遥控,具有更好的密码保护以及更完善的功能系统。1.4课题研究的主要内容课题主要关于红外遥控电子密码锁的设计研究。该系统以单片机为核心,结合红外遥控技术,配以相应的硬件电路(矩阵键盘、报警模块、显示模块等),预期实现电子密码的密码显示、修改、存储以及驱动报警等功能,同时,采用的红外遥控技术可以实现远程遥控。结合硬件电路,通过软件设计,主要完成以下几点内容:1、红外遥控信号的接收(遥控距离达到8-10米);2、键盘输入、本机设置的键盘信息管理功能;3、单人电控锁开锁、关锁的控制功能;4、报警功能。主要完成主程序结构设计及其程序编写和子程序结构设计及其程序编写。软件是整个系统的核心内容,在硬件电路已经确定的情况下,不同程序可以实现不同的功能。该课题的设计基于C语言,使用KeiluVision编辑、调试、编译通过。采用模块化设计,自顶而下的设计思路,这样的设计有利于程序代码的优化,而且便于设计、调试和维护。以主程序为核心设置了多个功能模块子程序。程序大致可以分为系统初始化程序、红外遥控模块子程序、密码判断子程序、显示子程序、键盘扫描中断服务程序等。其中主程序主要起到一个决策和导向作用,系统的各个功能模块主要通过调用具体的子程序来实现。系统初始化主要包括:定时器、中断、1602芯片以及系统参数等的初始化;往EEPROM写入初始化密码主要是完成对原先密码进行更改或者进行相关设置的任务,然后将更新后的密码保存到EEPROM中。61 红外遥控电子密码锁设计——软件设计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矩阵键盘模块:该模块可以实现输入密码,设置新密码等功能。61 红外遥控电子密码锁设计——软件设计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主程序流程图61 红外遥控电子密码锁设计——软件设计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-5HS0038B61 红外遥控电子密码锁设计——软件设计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液晶显示模块电路引脚图61 红外遥控电子密码锁设计——软件设计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语言是一种源于编写UNIX61 红外遥控电子密码锁设计——软件设计操作系统的语言,它是一种结构化语言,可产生压缩代码,对单片机的指令系统不要求了解,仅要求对51系列单片机的存储器结构有初步了解。BASIC通常附在PC机上,是初学编程的第一种语言,主要用于要求编程简单而对运行速度和编程效率要求都不高的场合,现在已经很少用到BASIC语言了。C语言有以下几个优点:1、C语言是编译型语言,不仅有高级语言的特点,还具备汇编语言简洁、可控制硬件的特点;2、可移植性好;3、有丰富的库函数;4、表达能力好,易于编程,可读性强;5、寄存器的分配由编译器完成;6、可以模块化设计,只要将各模块之间的接口确定好就可以了;7、开发周期短;8、有实时多任务操作系统,可以合理地分配CPU的时间和单片机的资源。经过比较之后,采用C语言来完成该系统的设计。61 红外遥控电子密码锁设计——软件设计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。IRDA61 红外遥控电子密码锁设计——软件设计标准包括三个基本的协议和规范:物理层规范(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。61 红外遥控电子密码锁设计——软件设计图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个用户码,数据码和数据反码)61 红外遥控电子密码锁设计——软件设计{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:61 红外遥控电子密码锁设计——软件设计图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当写一个字符,整屏显示不移动61 红外遥控电子密码锁设计——软件设计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存储器61 红外遥控电子密码锁设计——软件设计在STC单片机中有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位61 红外遥控电子密码锁设计——软件设计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键盘功能按键分布图61 红外遥控电子密码锁设计——软件设计图3-6矩阵键盘流程图3.5.24*4矩阵键盘的工作原理一个按键是否被按下有行线和列线共同决定。判断键盘中有无键按下:将全部行线置低电平(0000),然后检测列线的状态,只要有一个列线的电平为低,就表示键盘中有按键被按下,而且被按下的键是低电平列线和4根行线交叉的4个按键之中的其中一个,若所有列线均为高电平(1111),则表示键盘中没有键被按下;接着判断被按下的按键所在的位置:在知道有按键被按下后,就要确定到底是哪个按键被按下。方法是:依次将行线置为低电平,就是在置某根行线为低电平时,剩余行线为高电平,当确定某一根行线为低电平后,再依次检测各列线的电平状态,若某一根列线为低电平,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。3.6报警器模块软件设计该功能为当输入密码错误时,实现报警功能,从而提高其安全性。该模块比较简单,就是在用4*4矩阵键盘或者红外遥控器输入密码时,若果连续3次输入的密码都是错误,此时蜂鸣器就会进入长时间报警,必须按复位键,蜂鸣器才会停止报警。61 红外遥控电子密码锁设计——软件设计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。61 红外遥控电子密码锁设计——软件设计图3-9串口连接图STC系列的单片机相比AT系列的单片机的优点是可以在线编程,而且速度快,STC提供了ISP下载工具STC-ISP.exe软件。在连接好单片机和电脑之后就可以运行STC-ISP.exe软件进行程序下载了。打开软件进行参数设置。下载时都要先点下载再上电。下载界面图如图3-10。图3-10下载界面图61 红外遥控电子密码锁设计——软件设计4结论通过上面软件的分析和设计,本系统完全是可行的。在设计和实验的基础上,和设计硬件部分的同学一起做出了实物。本设计利用STC89C52单片机芯片控制基于单片机的红外遥控密码锁,选择C语言来完成整个软件的设计。实现了红外遥控和键盘双输入控制,密码储存部分采用STC89C52单片机芯片内部的EEPROM实现,可以实现输入密码开锁,对密码锁进行上锁,还有设置新密码等多种功能。显示部分采用1602LCD液晶显示屏,在报警模块部分设计了蜂鸣器在密码输入错误三次后蜂鸣器报警的功能。任何个项目都不是十全十美的,该系统也有一些不足的地方。没有考虑到外部因素对系统的影响,比如密码丢失,误操作对系统的影响。报警功能做得不够完善,只有一个蜂鸣器,在嘈杂的地方就不一定能感觉到蜂鸣器的报警声音。红外遥控有时也不太稳定,在调试的时候发现用遥控器输入密码时,感应不是太灵敏,要多输几次才可以,它实际的有效距离也没有进行系统的理论论证。参考文献[1]石晶晶61 红外遥控电子密码锁设计——软件设计李亚梅.新型红外遥控密码锁的研究与设计[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].微计算机信息,200961 红外遥控电子密码锁设计——软件设计附录附录图1电路原理图61 红外遥控电子密码锁设计——软件设计附录图2PCB板61 红外遥控电子密码锁设计——软件设计附录图3实物图61 红外遥控电子密码锁设计——软件设计附录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的标志61 红外遥控电子密码锁设计——软件设计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]);}61 红外遥控电子密码锁设计——软件设计}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善后处理//输入输出:空61 红外遥控电子密码锁设计——软件设计//====================================================================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;61 红外遥控电子密码锁设计——软件设计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初始化******************************/61 红外遥控电子密码锁设计——软件设计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;}}61 红外遥控电子密码锁设计——软件设计/************************************************************************************函数功能:处理数据入口参数:出口参数:*************************************************************************************/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){61 红外遥控电子密码锁设计——软件设计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){61 红外遥控电子密码锁设计——软件设计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){61 红外遥控电子密码锁设计——软件设计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;}61 红外遥控电子密码锁设计——软件设计}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)//功能键61 红外遥控电子密码锁设计——软件设计{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)61 红外遥控电子密码锁设计——软件设计{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)61 红外遥控电子密码锁设计——软件设计{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){61 红外遥控电子密码锁设计——软件设计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);}else61 红外遥控电子密码锁设计——软件设计{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;61 红外遥控电子密码锁设计——软件设计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}//mainEND文献综述61 红外遥控电子密码锁设计——软件设计红外遥控电子密码锁设计—软件设计一、前言1.1研究背景随着人们生活的提高和安全意识的加强,各种系列的防盗门广泛进入人们的生活和工作,因而防盗门锁系统的安全性方便性就变得至关重要。当前市场上的大部分都是钥匙的,它最大的缺点是其钥匙很容易被复制或盗用,而传统的密码锁不管是机械的还是电子的其共同的不足就是将操作键盘固定在门上,这就使得用户在操作时缺少隐蔽性,而且可能被小偷随机捕捉密码开门。锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻,因此,很多小偷不用钥匙就能打开锁具,而且所借用的工具也是层出不穷。面对这样的现状,对锁具进行革命是必然的趋势[1]。随着社会科技的进步,锁已经从传统的机械锁发展到了磁性锁,电子锁,声控锁等等,在很大程度上克服了传统机械锁的缺点。在传统机械锁的基础上,加上了不同的密码,不同的磁场,不同的声音等来控制锁的开启,这些密码锁保密性高,使用灵活性强,安全系数高,使得人们对自身财产安全有了更多的保障。但是这些密码锁也有一些不足,不能实现远距离遥控控制,一定程度上限制了这些密码锁在日常生活中普及和推广。1.2国内外发展现状、研究方向及意义目前,在日常安全范围领域,具有防盗报警功能的电子密码锁逐渐替代了传统机械锁,在性能上和技术上都大大提高了。随着大规模集成电路技术的发展,特别是单片机的出现以后,它在保留了电子密码锁原有的一些功能的同时,对这些电子锁进行了智能化管理,这样的产品体积大大减小了,成本也大大降低了,也进一步提高了密码锁的安全性、可靠性。目前国内外密码锁系统的主要方向的发展是:接触式密码锁系统,非接触式密码锁系统,智能识别密码锁系统,但是他们都相应的存在着不同的缺点。例如:接触式密码锁系统成本较低,体积小,卡片本身无须电源,但使用不太方便,而且有接触磨损。相比之下,红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可以进行近距离遥控,使用十分方便[2-3]。红外线遥控是目前使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。红外通讯一般采用光波波长范围为850~900nm的红外线[4]。61 红外遥控电子密码锁设计——软件设计基于这种现状,我们设计了一种基于单片机的红外遥控电子密码锁。这种密码锁提高了密码锁的可靠性和安全性,具有一般电子密码锁的防盗报警功能的同时还增加了红外遥控功能,实现了远程控制技术,具有较强的实际应用价值。一、主题部分2.1红外遥控技术的现状红外遥控技术在遥控方式上大体经历了从有线到无线的超声波、从振动子到红外线、再到使用总线的微机红外遥控这样几个阶段。无论采用何种方式,准确无误传输信号,最终达到满意的控制效果是非常重要的。最初的无线遥控装置采用的是电磁波传输信号,由于电磁波容易产生干扰,也易受干扰,因此逐渐采用超声波和红外线媒介来传输信号。与红外线相比,超声波传感器频带窄,所能携带的信息量少,易受干扰而引起误动作。较为理想的是光控方式,逐渐采用红外线的遥控方式取代了超声波遥控方式,出现了红外线多功能遥控器,成为当今时代的主流。随着单片机等技术的广泛应用,促使红外遥控技术也得到空前的发展,越来越多的功能强大,操作简便的实用性红外遥控接收器出现在市场上。由于红外遥控具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空调机以及玩具等其他小型电器装置上也纷纷采用红外遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。在这些因素影响下,红外遥控技术得到了迅猛发展,随着越来越多功能强大、结构复杂的电器设备的出现,需要更多各种功能强大的红外遥控器[5]。2.2红外线通信原理在许多单片机应用系统中,常常利用非电信号传送信息以实现遥控的功能。而红外通信具有传输可靠性高、实施方便、控制简单等特点,是一种较为常用的通信方式。红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特。如图1所示。61 红外遥控电子密码锁设计——软件设计图1、PPM调制波形图普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为8~16个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数0)、8个数据位和2个停止位(二进制数1)构成,如图2所示。每帧传送1个字节的数据,帧与帧间隔大于2ms,帧结构不含地址信息,寻址问题由高层协议解决。图2、数据帧结构示意图简言之,红外通信的实质是对二进制数字信号进行调制与解调,以便利用红外信道进行传输[6-10]。红外通信的硬件组成即通用红外遥控系统由发射和接受两大部分组成。应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。如图3所示:图3、红外遥控系统框图61 红外遥控电子密码锁设计——软件设计2.3C语言的介绍C语言是CombinedLanguage(组合语言)的中英混合简称,是一种计算机程序设计语言。它兼有高级语言和汇编语言的特点,既可以作为工作系统设计语言编写系统应用程序,也可以作为应用程序设计语言编写不以来于计算机硬件的应用程序。C语言是一种通用的程序设计语言,同时又是一种成功的系统描述语言。它具有以下的重大的特点:1.C语言是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作。2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大。4.C语言适用范围大。适合于多种操作系统。,如Windows、DOS、UNIX等等;也适用于多种机型。5.C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算。的高级语言[11]。2.4红外遥控电子密码锁的设计思路红外遥控电子密码锁为了打破传统电子锁的解锁方式,采用一种全新的方式对基于单片机的密码锁,利用红外线进行远程遥控,提高了门禁系统的可靠性和安全性。更重要的是降低了成本,方便用户使用,从而大大提高电子密码锁的普及范围,因此,主要遵循的主要设计思路有以下几点:1.保证系统稳定性。由于适用场合的多样性,不稳定的电子密码锁系统的能会给使用者带来很大的麻烦与损失,所以要从根本上保证该系统的稳定性;2.借鉴以往相关系统的特点及优点,在设计该系统时参考了以往相关系统的设计;3.满足使用者的需求,主要体现在使用者的操作体验和操作便捷性上。在设计该电子密码锁系统时应该满足一下几个要求:1.易用性:操作控制简单,使用方便,适用于各类人群;2.通用性:系统设计可以适用于各类场合;3.保密性:利用软件来加密和解密,加强密码的安全性,操作时具有足够的保密性;4.61 红外遥控电子密码锁设计——软件设计扩充性:根据事物的发展及不同时期的要求,系统应该具有可扩充性,以便系统能够不断更新。2.5红外遥控电子密码锁硬件部分功能模块红外遥控电子密码锁系统大致可以分成6个模块:红外遥控模块、单片机模块、蜂鸣器报警功能模块、LED数码管显示模块、按键功能模块,开锁功能模块等。如图4所示:图4:系统硬件功能模块框图各个功能模块的功能大致如下:红外遥控模块:遥控器按键被按下时,输出一定数量被调制的脉冲信号。当接收器收到发射器的红外指令信号时,它将红外信号变成TTL电平信号,再经放大、解调、整形、解码处理后送入CPU,由CPU进行识别处理,以控制电子密码锁的工作。单片机模块:主控电路模块主要采用以单片机AT89S52为核心的主控电路。红外线接收器把接收到的信号传送给单片机,单片机对信号进行识别,把信号识别成指令,利用这些指令控制电子密码锁的运行。蜂鸣器报警功能模块:每按一次键时,单片机发出驱动信号,使蜂鸣器“嘀”的一声响。LED数码管显示模块:此模块采用单片机向液晶显示屏的串口发送数据,当串口接收到一串数据后,液晶显示屏能实现文字的显示、清屏操作和光标的设置等操作。按键功能模块:使用者可以通过该模块输入密码;开锁功能模块:当密码输入正确时,单片机发出驱动信号,使电子密码锁开启。2.6红外遥控电子密码锁的软件部分软件部分的设计基于C语言,采用模块化设计思路,,以主程序为核心设置了多个功能模块子程序。主程序主要起到一个导向和决策的作用,系统的各种功能模块主要通过调用具体的子程序来实现[12]。程序分为主程序、红外遥控模块子程序、61 红外遥控电子密码锁设计——软件设计密码判断子程序、数码管显示子程序、键盘扫描中断服务程序及待机中断服务程序等。主程序完成内部RAM单元和特殊功能寄存器的初始化后,进入一个循环结构。在循环中,首先调用数码管显示子程序,接着判断是否有键按下,然后判断是数字键还是功能键,若是数字键则进行密码判断,若是功能键则判断是确认键还是取消键,然后根据确认键和取消键执行相应的操作。密码的判断:有数字键按下后,则进行计数,若有6个数字键按下,表示已输入6个密码,则将已输入的6个密码与初始密码核对,如果密码输入正确,则输出密码正确标志,若密码输入错误,则输出密码错误标志。键盘扫描中断服务程序实现判断是否有键闭合以及闭合键的键号,每50ms扫描键盘一次。每次按键输入时,启动蜂鸣器按键提示音,待机中断服务程序实现待机计时(10秒),若10秒内没有输入内容则清除已输入的内容[13]。1.主程序流程图如图5:图5:主程序流程图2.红外遥控模块子程序流程图红外遥控包括红外发射和接收两个部分,则红外遥控发射流程图和红外接收流程图分别如图6和图7:61 红外遥控电子密码锁设计——软件设计图6:红外遥控发射流程图图7:红外接收流程图3.数码管显示子程序如图8和键盘扫描中断服务程序如图9:图8数码管显示子程序图9键盘扫描中断服务程序系统所需要实现的每个功能都设计成单独一个模块,而每个模块内部的实现对外部是不可见的。这就能提高子系统的灵活性,可复用性。三、总结:61 红外遥控电子密码锁设计——软件设计随着时代进步,人们的工作生活通信与信息的连接越来越紧密,信息社会在改变人们日常学习工作时的生活习惯的同时,也对传统技术或设备提出了新的挑战,密码锁就是其中之一。当代社会对锁的要求已不再是单纯的对财务及重要物件的保护,而是更注重锁具性能,比如方便,高效,便宜等等。本文所阐述的红外遥控电子密码锁克服了传统锁具的一些缺点,同时也借鉴了传统锁具的优点,能够很好的满足用户的需求。该系统以51系列单片机(AT89S52)为核心,结合红外遥控技术,配以相应的硬件电路,实现了电子密码锁密码的显示、存储、修改以及驱动报警等功能,同时实现了远程遥控,具有更好的密码保护以及更完善的功能系统。红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可以进行近距离遥控,遥控距离远大于射频卡密码锁的遥控距离,低耗很低,可以使用普通碱性电池供电,使用十分方便。红外遥控密码锁系统成本低廉,如经优化设计,成本可以进一步降低。因此,红外线遥控密码锁拥有以下优势使得其推广前景巨大,拥有有广阔的市场空间。(1)遥控防盗锁人机交互界面友好,易于操作。(2)稳定性强:红外线波长长,频谱稳定,不用担心采用电磁波发射和接受的系统容易受干扰的问题,同时采用单片机作为控制器控制各功能模块,更好的提高了系统的稳定性。(3)可靠性高:红外密码锁有多重加密方法,难以复制。同时采用非机械化的钥匙,不易被复制。红外遥控电子密码锁具有密码预置、误码报警、耗电省、保密性强、远距离控制等特点,克服了传统电子密码锁可靠性差、价格高等缺点,非常适合办公室、住宅、等用锁的要求,具有很好的开发和研究价值[14-17]。四、参考文献[1]石晶晶李亚梅.新型红外遥控密码锁的研究与设计[J].中国科技信息2008(19):134-136.[2]王晓东,刘春红,于鑫.单片机和计算机的串口通信[J].应用科技,2003(30)61 红外遥控电子密码锁设计——软件设计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).[13]程院莲,卢飞跃,基于AT89S51单片机的电子密码锁的设计[J].福建电脑,2010(6).[14]王金国.采用单片机的电子密码锁控制电路[J].山东煤炭科技,2000,(3):30-33.[15]董继成.一种新型安全的单片机密码锁[J].电子技术应用,2004,(3):58-60.[16]JimemezPetal.ImprovedPPMschemesforinfraredwirelessLAN[J].ElectronicsLettrs.1996.10.[17]SerialInfraredLinkAccessProtocol(IrLAP),Version1.1.June16,1996,IBMCorporation,Hewlett-PackardCompany,AppleComputer,Inc.,CounterpointSystemsFoundry,Inc.61 红外遥控电子密码锁设计——软件设计开题报告红外遥控电子密码锁设计—软件设计1选题的背景、意义随着人们生活的提高和安全意识的加强,在日常生活中出现了各式各样的密码锁。但当前市场上的大部分密码锁都是钥匙的,这些锁最大的缺点是其钥匙很容易被复制或者是盗用,安全系数比较低,还有一点就是,传统的密码锁不管是机械锁还是电子锁的共同不足就是将操作键盘固定在需要防盗的物品上,这使得用户在操作时缺少隐蔽性。社会科技在不断地地进步,密码锁也经历了一代又一代。密码锁已经从传统的机械锁发展到了磁性锁,电子锁,声控锁等等,这些锁是在传统机械锁的基础上,加上了不同的密码,不同的磁场,不同的声音等来控制锁的开启。这些密码锁保密性高,使用灵活性强,安全系数高,在很大程度上克服了传统机械锁的缺点,使得人们对自身的财产安全有了更多的保障。但是这些密码锁不能很好的实现远距离遥控控制,比如声控锁在进行远距离遥控时稳定性不高,不能进行很正确的远距离控制,一定程度上限制了这些密码锁在日常生活中普及和推广。目前市场上密码锁的主要的发展方向是:非接触式密码锁系统,接触式密码锁系统,智能识别密码锁系统,但是他们都存在着不同的缺点。相比之下,红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可以进行近距离遥控,使用十分方便。红外遥控是目前使用最广泛的一种通信和遥控手段,采用红外线作为传输媒介进行数据通信是一种既方便又经济实用的选择,在小型移动设备中得到了广泛的应用。红外遥控电子密码锁解决了传统密码锁和一般的电子密码锁的不足,操作方便,提高密码锁的可靠性和安全性,实现了远距离控制技术,并且能够很稳定的实现远距离控制技术,真正达到了密码锁的功能,基本可以满足用户的需要,起到防盗的作用。该课题的研究目的在于设计一个具有实用价值的“红外遥控电子密码锁系统”。本设计以51系列单片为核心,结合红外遥控技术,配以相应的硬件电路,实现了电子密码锁密码的显示、存储、修改以及驱动报警等功能,同时实现了远程遥控,具有更好的密码保护以及更完善的功能系统。设计主要基于C和汇编来完成该系统的软件设计。2红外遥控电子密码锁的最新成果及动态2.1红外线通信原理61 红外遥控电子密码锁设计——软件设计在许多单片机应用系统中,常常利用非电信号传送信息以实现遥控的功能。而红外通信具有传输可靠性高、实施方便、控制简单等特点,是一种较为常用的通信方式。红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特。如图1所示:图1PPM调制波形图普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为8~16个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数0)、8个数据位和2个停止位(二进制数1)构成,如图2所示。每帧传送1个字节的数据,帧与帧间隔大于2ms,帧结构不含地址信息,寻址问题由高层协议解决。图2数据帧结构示意图简言之,红外通信的实质是对二进制数字信号进行调制与解调,以便利用红外信道进行传输。61 红外遥控电子密码锁设计——软件设计红外通信的硬件组成即通用红外遥控系统由发射和接受两大部分组成。应用编/解码专用集成电路芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。如图3所示:图3红外遥控系统框图2.2红外遥控技术红外遥控技术在遥控方式上大体经历了从有线到无线的超声波、从振动子到红外线、再到使用总线的微机红外遥控这样几个阶段。无论采用何种方式,准确无误传输信号,最终达到满意的控制效果是非常重要的。最初的无线遥控装置采用的是电磁波传输信号,由于电磁波容易产生干扰,也易受干扰,因此逐渐采用超声波和红外线媒介来传输信号。与红外线相比,超声波传感器频带窄,所能携带的信息量少,易受干扰而引起误动作。较为理想的是光控方式,逐渐采用红外线的遥控方式取代了超声波遥控方式,出现了红外线多功能遥控器,成为当今时代的主流。随着单片机等技术的广泛应用,促使红外遥控技术也得到空前的发展,越来越多的功能强大,操作简便的实用性红外遥控接收器出现在市场上。由于红外遥控具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空调机以及玩具等其他小型电器装置上也纷纷采用红外遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。在这些因素影响下,红外遥控技术得到了迅猛发展,随着越来越多功能强大、结构复杂的电器设备的出现,需要更多各种功能强大的红外遥控器。2.3红外遥控电子密码锁硬件部分功能模块目前,红外遥控电子密码锁的系统各式各样,但他们的组成模块大都相同,大致可以分成6个模块:红外遥控模块、单片机模块、蜂鸣器报警功能模块、LED数码管显示模块、按键功能模块,开锁功能模块等。如图4所示;图4系统硬件功能模块框图各个功能模块的功能大致如下:61 红外遥控电子密码锁设计——软件设计红外遥控模块:遥控器按键被按下时,输出一定数量被调制的脉冲信号。当接收器收到发射器的红外指令信号时,它将红外信号变成TTL电平信号,再经放大、解调、整形、解码处理后送入CPU,由CPU进行识别处理,以控制电子密码锁的工作。单片机模块:主控电路模块主要采用以单片机AT89S52为核心的主控电路。红外线接收器把接收到的信号传送给单片机,单片机对信号进行识别,把信号识别成指令,利用这些指令控制电子密码锁的运行。蜂鸣器报警功能模块:每按一次键时,单片机发出驱动信号,使蜂鸣器“嘀”的一声响。LED数码管显示模块:此模块采用单片机向液晶显示屏的串口发送数据,当串口接收到一串数据后,液晶显示屏能实现文字的显示、清屏操作和光标的设置等操作。按键功能模块:使用者可以通过该模块输入密码;开锁功能模块:当密码输入正确时,单片机发出驱动信号,使电子密码锁开启。2.4红外遥控电子密码锁的软件部分由于C语言的编辑,编译,调试等久较汇编简单,目前红外遥控电子密码锁系统软件部分的设计通常基于C语言,采用模块化设计思路,以主程序为核心设置了多个功能模块子程序。主程序主要起到一个导向和决策的作用,系统的各种功能模块主要通过调用具体的子程序来实现。程序分为主程序、红外遥控模块子程序、密码判断子程序、数码管显示子程序、键盘扫描中断服务程序及待机中断服务程序等。主程序完成内部RAM单元和特殊功能寄存器的初始化后,进入一个循环结构。在循环中,首先调用数码管显示子程序,接着判断是否有键按下,然后判断是数字键还是功能键,若是数字键则进行密码判断,若是功能键则判断是确认键还是取消键,然后根据确认键和取消键执行相应的操作。目前,红外遥控电子密码锁系统各式各样,但是其组成有很大的相似之处,这些系统大都可以满足易用性,通用性,保密性及扩充性等方面的性能,真正解决了传统密码锁和一般的电子密码锁的不足,操作方便,提高密码锁的可靠性和安全性,实现了远距离控制技术,并且能够很稳定的实现远距离控制技术,真正达到了密码锁的功能,基本可以满足用户的需要,起到防盗的作用。3课题的研究内容及拟采取的研究方法(技术路线)、研究难点及预期达到的目标3.1该课题的研究方法61 红外遥控电子密码锁设计——软件设计(1)整体设计思路本系统的硬件以单片机控制为中心,分为红外遥控,单片机控制,蜂鸣器报警,LED数码管显示,键盘输入,开锁模块以及电源。方框图如下:单片机蜂鸣器报警LED数码管显示键盘输入开锁模块红外遥控接收红外遥控发射电源软件是整个控制系统的核心,在硬件结构一定的情况下,只要改变软件就能实现一些不同的功能。C语言是一种源于编写unix操作系统的语言,是一种结构化语言。与汇编相比有许多优点,仅要求对51的存储器结构有一定地了解,可以分为不同的函数。这种方式可以使程序结构化,有将可变的选择与特殊操作组合在一起的能力,大大提高了效率,而且C语言程序本身并不依赖于机器硬件系统,比较灵活。通过以上的比较,该课题的设计基于C语言,使用KeiluVision编辑、调试、编译通过。采用模块化设计,自顶而下的设计思路,这样的设计有利于程序代码的优化,而且便于设计、调试和维护。以主程序为核心设置了多个功能模块子程序。程序大致可以分为系统初始化程序、红外遥控模块子程序、密码判断子程序、显示子程序、键盘扫描中断服务程序等。其中主程序主要起到一个决策和导向作用,系统的各个功能模块主要通过调用具体的子程序来实现。系统初始化主要包括:定时器、中断、1602芯片以及系统参数等的初始化;往EEPROM写入初始化密码主要是完成对原先密码进行更改或者进行相关设置的任务,然后将更新后的密码保存到EEPROM中。校对是将输入的密码和保存在EEPROM中的密码进行比较相同则开锁,不同就要进入报警模块;报警模块主要任务是,输入的密码和保存在EEPROM中密码不同是进行报警,本文设计的是如果3次输入密码错误,报警模块就会报警;译码部分主要完成在遥控处理状态下对遥控器所发出的信号进行解码,以得到相应到完成相应功能的码值。61 红外遥控电子密码锁设计——软件设计开始定时器初始化中断初始化1602初始化EEPROM初始化矩阵键盘是否按下按键处理程序往EEPROM写入初始化密码红外按键是否按下返回按键处理程序NNYY图5主程序流程图(2)主程序流程图如图5所示:(3)矩阵键盘的流程图如图6所示:(4)红外遥控模块的流程图如图7所示:61 红外遥控电子密码锁设计——软件设计1到9数字键是否按下开锁键是否按下上锁键是否按下设置新密码键是否按下键值存入数组密码是否正确Flag1置0errorFlag1置0开锁J++IS_valid_user1置0IS_valid_user1置1返回上锁IS_valid_user1是否为1显示newpassword显示noright保存新密码键是否按下IS_valid_user1是否为1保存新密码显示noright清除键是否按下显示norightNNNNYYYYYYYYYNNNNN开始图6矩阵键盘的流程图开始61 红外遥控电子密码锁设计——软件设计开始遥控发射程序框图遥控接收程序框图图7红外遥控模块流程图开始发射键是否按下送数据到单片机串行口数据是否发送完返回开始接收数据进入开锁程序不处理返回主程序串行口初始化串行口初始化YYN接收数据是否正确YNYNN数据是否接受完3.2该课题的研究难点该系统是一个数模结合的系统,其中红外遥控部分的发射和接收是模拟电路部分,单片机以及它的外围电路均是数字电路部分。那么防止模拟电路和模拟电路之间的相互干扰是一项极为重要的任务。(1)红外遥控模块在红外遥控模块,由于有红外线信号的发射和接收,必须减少元件之间的干扰并且采取措施以提高该模块的抗干扰能力。形成干扰的基本因素有一下三个:1.干扰源:指产生干扰的元件、设备或者信号;2.传播路径:指干扰从干扰源传播到敏感器件的通路或者媒介;3.敏感器件:指容易被干扰的器件。针对形成干扰的三个因素,可以采取下列抗干扰技术:1.抑制干扰源:例如系统中晶振就是一个干扰源,可以在其两端并联电容来减小其对系统产生的干扰;61 红外遥控电子密码锁设计——软件设计2.切断干扰传播路径:例如单片机对电源噪声很敏感,为了减小电源噪声对单片机干扰,可以采取给电源加滤波电路的方法;3.提高敏感器件的抗干扰性能:提高敏感器件的抗干扰性能是指从敏感器件方面考虑尽量减少对干扰噪声的拾取,以及从不正常状态尽快恢复的放法。例如选用合适的晶振,单片机闲置的I/O口都要接地或者接电源。该模块的基本任务就是红外遥控用户的按键信息。理想系统是红外遥控接收信息和红外遥控发送信息是完全一致的,但这种理想系统是很难实现的,因为信息在传递过程中总会伴随着一定的信号失真。而产生信号失真的原因大致分为两类:1.由于通信设备自身性能不完善,例如红外遥控发射器和接收器中的部分器件性能不好造成信号失真。这就需要通过反复的硬件调试和软件调试,找出问题,解决问题,这个过程还是有一定的难度的。2.干扰和噪声引起的信号失真,这种信号失真通常是不能被完全解决的,一般只能够尽可能的减小。另外,红外遥控接收模块调试也是一个难点,出现的问题是红外遥控发射器已经发射了数据,但是红外遥控接收器却无法接收数据,这需要修改程序以及进行不断地调试,直到红外遥控接收器能接收数据,并且与发射的数据相一致。(2)密码存储模块在密码存储模块中,密码的保存也是一个难点。矩阵键盘处理程序的操作包括:密码的设定和密码的比对。遥控器的操作包括:密码的比对。在各种操作过程中,原始密码的保存和用户更新密码的保存均采用E2PROM来解决。E2PROM电可擦可编程只读存储器,它是一种掉电后数据不丢失的存储芯片,可以在电脑上或专用设备上擦除已有信息,重新编程。3.3预期达到的目标红外遥控电子密码锁系统的软件部分是根据系统功能要求设计的。在该系统中,软件设计要力求做到以下几点:1)软件结构清晰,简捷,流程合理。2)各功能程序实现模块化,子程序化。3)运行状态实现标志化管理。各个功能程序运行状态,运行结果以及运行要求都要设置状态标志以便查询,程序的转移,运行,控制都可通过状态标志条件来控制。4)实现软件抗干扰设计。软件抗干扰是单片机应用系统提高可靠性的有利措施。该系统的主要内容和预期达到的目标如下:1、外遥控信号的接收(遥控距离达到8-10米);2、键盘输入、本机设置的键盘信息管理功能;61 红外遥控电子密码锁设计——软件设计3、单人、多人的电控锁开锁、关锁的控制功能;4、报警功能。4研究工作详细进度和安排12010-11-23—2011-01-10课题调研,文献检索,完成外文翻译、文献综述、开题报告的初稿工作22011-02-21—2011-03-11完成软件设计(设计程序结构,编写软件),完成毕业设计初稿32011-03-14—2011-05-03毕业实习并提交实习报告42011-05-04—2011-05-22论文修改与提交52011-05-23后准备毕业论文答辩5参考文献[1]石晶晶李亚梅.新型红外遥控密码锁的研究与设计[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].山东煤炭科技,200061 红外遥控电子密码锁设计——软件设计(3):30-33.[15]董继成.一种新型安全的单片机密码锁[J].电子技术应用,2004,(3):58-60.[16]JimemezPetal.ImprovedPPMschemesforinfraredwirelessLAN[J].ElectronicsLettrs.1996.10.[17]SerialInfraredLinkAccessProtocol(IrLAP),Version1.1.June16,1996,IBMCorporation,Hewlett-PackardCompany,AppleComputer,Inc.,CounterpointSystemsFoundry,Inc.61

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

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

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