红外遥控密码锁毕业论文 - 副本.doc_第1页
红外遥控密码锁毕业论文 - 副本.doc_第2页
红外遥控密码锁毕业论文 - 副本.doc_第3页
红外遥控密码锁毕业论文 - 副本.doc_第4页
红外遥控密码锁毕业论文 - 副本.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

红外遥控电子密码锁设计毕 业 设 计 红外遥控电子密码锁院系: 信息工程 班级: D0743 姓名: 罗岩松 指导教师: 张立新 目 录第一章 课题背景31.1 课景及目的题背31.2 国内外研究现状31.3 课题研究方法41.4 本章小结4第二章 基本原理及方案的论证52.1 红外通讯原理52.2 89C52芯片介绍62.3 方案的比较及确定82.4本章小结8第三章 模块功能介绍及实现93.1 红外遥控技术93.1.1 硬件介绍:93.1.2 实现方法:93.2 4*4矩阵键盘103.3 I2C总线技术113.3.1 I2C总线特点113.3.2 I2C通信原理113.3.3 硬件介绍:123.4 显示模块133.4.1 LCD液晶显示133.4.2 数码管显示163.5 本章小结17第四章 总结18参考文献19附录 源程序20第一章 课题背景1.1 课题背景及目的电子技术的飞速发展,给古老的锁具生产带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批如声控锁、磁控锁、密码锁、遥控锁,指纹锁等先进的锁具。 目前国内外密码锁系统的主要方向的发展是:接触式密码锁系统,非接触式密码锁系统,智能识别密码锁系统,但是他们都相应的存在着不同的缺点。例如:接触式密码锁系统成本较低,体积小,卡片本身无须电源,但使用不太方便,而且有接触磨损。相比之下,红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可以进行近距离遥控,使用十分方便。而且它已经与 PC 机的数据库相结合,可以组成一套酒店房间的门禁管理系统。 由于红外遥控具有许多优点, 例如红外线发射装置采用红外发光二极管遥控发射器易于小型化且价格低廉; 采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度快、传输效率高、工作稳定可靠等。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。所以红外线遥控是目前使用最广泛的一种通信和遥控手段。 在本设计中,红外遥控密码锁和 PC 机、数据库相结合,能够实现适时的、强大的管理,使得整个红外遥控系统得到更好的完善。 1.2 国内外研究现状目前大部分的锁采用的都是机械式的,其最大的缺点是利用简单工具就能很容易地把锁打开。针对这种情况,我们设计了一种红外遥控密码锁,而一般设备都采用专用的遥控编码及解码集成电路,其制作简单、容易,但由于特定功能的限制,只适用于专用的电器产品,其应用范围受到限制。而设计的红外遥控密码锁系统能提高门禁系统的可靠性和安全性,适应市场需要。该系统具有普通电子密码锁功能的同时,还增加了遥控功能。该系统具有较强的实际应用价值,所涉及的技术包括:红外载波数据传输技术、单片机控制技术、红外遥控系统编码及译码技术、电路设计与演示板制作技术等。1.3 课题研究方法本设计基于STC8952单片机系列,运用了两块单片机芯片,一片实现红外解码,一块用来按键控制,数码管显示以及数据存储,通过查找资料确定各个模块的功能及实现方法,先在软件上进行调试,再根据硬件修改调试软件,最后将各个模块合理组合在一起,达到预计的功能与目标。1.4 本章小结本章介绍了红外遥控密码锁技术的课题背景,红外技术在现代生活中的应用以及该课题的国内外研究现状,探讨与确定研究本课题的方法。第二章 基本原理及方案的论证 2.1 红外通讯原理红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原理。红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。红外线是波长在 750nm至1mm之间的电磁波5,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在 0.75um至 25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在 850 至 900nm之内。红外通信的基本原理6是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号) ,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)7,8,9,10是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232 8通信,首先产生一个同步头,然后接着 8 位数据比特。如图 2.1所示。图 2.1 PPM 调制波形图普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为 816 个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数 0) 、8 个数据位和 2 个停止位(二进制数 1)构成,如图 2.2 所示。每帧传送 1 个字节的数据,帧与帧间隔大于 2ms,帧结构不含地址信息,寻址问题由高层协议解决8。图 2.2 数据帧结构示意图由于红外光存在反射,在全双工的方式下发送的信号也可能会被本身接收,因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进行的。2.2 89C52芯片介绍89C52的引脚图如图2.3所示图2.3 89C52芯片引脚图主电源及时钟引脚-此类引脚包括电源引脚Vcc、Vss、时钟引脚XTAL1、XTAL2。(1)Vcc(40脚):接+5V电源,为单片机芯片提供电能。(2)Vss(20脚)接地。(3)XTAL1(19脚)在单片机内部,它是一个反向放大器的输入端,该放大器构了片内的振荡器,可提供单片机的时钟控制信号。(4)XTAL2(18脚)在单片机内部,接至上述振荡器的反向输出端。控制引脚此类引脚包括RESET(即RSR/VPD)、ALE/PROG、PSEN、EA/VPP,可以提供控制信号,有些具有复用功能。(1)RSR/ VPD(9脚):复位信号输入端,高电平有效,当振荡器运行时,在此引加上两个机器周期的高电平将使单片机复位(REST)。复位后应使此引脚电平保持为不高于0.5V的低电平,以保证单片机正常工作。掉电期间,此引脚可接上备用电源(VPD),以保持内部RAM中的数据不丢失。当Vcc下降到低于规定值,而VPD在其规定的电压范围内(50.5V)时,VPD就向内部RAM提供备用电源。(2)ALE/PROG(30脚):ALE为地址锁存允许信号。当单片机访问外部存储器时,(地址锁存允许)输出脉冲的下降沿用于锁存16位地址的低8位。即使不访问外部存储器,ALE端仍有周期性正脉冲输出,其频率为振荡器频率的1/6。但是每当访问外部数据存储器时,在两个机器周期中ALE只出现一次,即丢失一个ALE脉冲。ALE端可以驱动8个LSTTL负载。(3)PSEN(29脚):程序存储器允许输出控制端。此输出为单片内访问外部程序存储器的读选通信号。在从外部程序存储器取指令(或取常数)期间,每个机器周期均PSEN两次有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不会出现。PSEN同样可以驱动8个LSTTL负载。(4)EA/VPP(31脚):EA功能为内外程序存储器选择控制端。当EA端保持高电平时单片机访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时将自动转向执行外部程序存储器内的程序。输入/输出引脚此类引脚包括P0口、P1口、P2口和P3口。(1)P0(P0.0P0.7)是一个8位三态双向I/0口,在不访积压外部存储器,做通用I/0口使用,用于传送CPU的输入/输出数据,当访问外部存储器时,此口为地址总路线低8位及数据总路线分时复用口,可带8个LSTTL负载。(2)P1(P1.0P2.7)是一个8位准双向I/O口(作为输入时,口锁存器置1),带有内部上拉电阻,可带4个LSTTL负载。(3)P2(P2.0P2.7)是一个8位准双向I/O口,与地址总路线高8位复用,可驱动4个LSTTL负载。2.3 方案的比较及确定本设计的重点在于遥控解码,遥控解码的方式有硬件解码与软件解码。方案一:硬件解码。硬件解码:在接受遥控的一边可以连接一个专用解码芯片,只要按键盘上的键值,它就能直接把这个键值解码出来并存储,当你调用这个键值的时候只要从里面去读取就行了,所以它的解码率高,读取显示简单,这是它的优点。可是该芯片价格昂贵,而且只能解码对应的遥控器,兼容性差,成本昂贵,不适合用作市场量产。方案二:软件解码。软件解码:根据遥控器选择的芯片不同,其遥控码格式也有不同。现在市场上主要有日本的NEC标准和飞利浦标准,通过软件的方式解码时解码的正确率就是一个很重要的指标了。在单片机编程的时候是选择用执行效率高的汇编语言还是选用可读性编写容易的C语言呢?不可否认汇编的执行效率是C语言的几倍甚至几十倍,而且误码率低,可是如果选择汇编的话编写难度可想而知,可是如果用C语言编写的话误码率及实时性又会变得比较差。综合以上考虑,如果我们能够在解码这部分用汇编,而显示及控制这部分用C语言编写的话,就能较好的完成我们预期的目标。因此我选用了两块C52单片机芯片,一块负责红外解码,一块负责显示与控制。事实证明,我的选择和预想中的一样,很好的解决了汇编与C语言难以共存的问题。基于上述比较,我们选择了方案二,采用汇编与C语言共同的软件解码方式。2.4本章小结本章介绍了基于单片机红外遥控密码锁设计的两个重点-红外通讯基本原理与单片机芯片89C51的基础知识。通过介绍实现他的关键技术提出了系统设计的方案-硬件解码方案和软件解码方案。而后对两个方案的优缺点进行比较,最终确定了实现设计的方案-软件解码方案。第三章 模块功能介绍及实现 3.1 红外遥控技术 3.1.1 硬件介绍: 遥控器里面是一个键盘编码器,每个按键对应一个编码,在把编码调制到一个高频信号上,其目的是为了降低发射的功率损耗;再把调制好的信号送给红外发光管把信号发送出去。接收过程恰好与此相反,首先由红外接收管收到微弱的信号,经放大后解解调(把高频载波去掉),再进行解码,就可得到遥控器发过来的数据。如图3.1所示。图3.1 红外遥控流程图图3.1中遥控接收器部分的“光/电放大”和“解调”由一体化接收头完成,单片机要做的只是“解码” 。实验板上一体化接收头的数据输出线经过了 INT0 切换开关连接到单片机的 P32 脚(即 INT0) ,INT0 切换开关弹起时连通。3.1.2 实现方法: 经遥控器发送的是串行数据, 通过脉冲的占空比来区别 0 和 1 ; 以脉宽为 0.565ms,间隔 0.56ms,周期为 1.125ms 的组合表示二进制0 ;以脉宽为 0.565ms,间隔为 1.685ms,周期为 2.25ms 的组合表示二进制1 。其波形如下图。 图3.2 遥控码的“0”和“1”遥控器产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备;后 16 位为 8 位操作码及其反码,最多可产生128 个不同的编码。 当遥控器一个键按下超过36ms,震荡器使芯片激活,将发射一组 108ms 的编码脉冲,这 108ms 发射代码由一个起始码 (9ms) , 一个结果码 (4.5ms) , 低8位地址码(9ms18ms) ,高 8位地址码(9ms18ms) ,8 位数据码(9ms18ms)及其反码(9ms18ms)组成。如果键按下超过 108ms 仍未松开,接下来发送的代码(连发码)就只由起始码(9ms)和结束码(4.5ms)组成。解码关键在于如何识别0和1 , 0和1均以 0.56ms 的低电平开始,不同的是高电平的宽度不同, 0为0.56ms, 1为1.68ms,所以必须根据高电平的宽度区别0和1 。如果从 0.56ms 过后开始延时,0.56ms 后若读到低电平,说明该位为0 ,反之为1 ;为了可靠起见,延时必须比 0.56ms 长一些,但又不能超过1.12ms,否则如果该位为0 ,读到的已是下一位的高电平,因此取(1.12+0.56)/2=0.84ms比较可靠。过程如图3.3所示。图3.3 数据码的组成3.2 4*4矩阵键盘因为本设计用到的按键较多,所以本设计采用行列式键盘,同时也能减少所占用的I/O线的数目,节省资源。 图3.4行列式键盘原理电路图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。本设计发射部分采用4*3键盘,接收部分采用4*4键盘。键盘扫描时,首先由I/O口低四位输出高电平,高四位输出低电平,假若有键按下,那么在I/O口低四位即可读出低电平,接着延时消抖,再具体判断是何键按下。判断键盘中有无键按下 将全部行线 X0-X3 置低电平 然后检测列线的状态 只要有一列的电平为低 则表示键盘中有键被按下 而且闭合的键位于低电平线与4根行线相交叉的 4个按键之中 若所有列线均为高电平 则表示键盘中无键按下 判断闭合键所在的位置。 在确认有键按下后 即可进入确定具体闭合键的过程 其方法是 依次将行线置为低电平 即在置某根行线为低电平时 其它线为高电平 当确定某根行线为低电平后 再逐行检测各列线的电平状态 若某列为低 则该列线与置为低电平的行线交叉处的按键就是闭合的按键. 现将接收部分的键盘功能做一下说明。如图,0至9号键为数字键,六位密码从中产生。“确认”键,“更改”键,“取消”键和“MAS”键为功能按键,具有控制开锁,更改密码和取消相关操作等功能。剩余的两个键在本设计中未用,可作为今后的功能扩展键使用。3.3 I2C总线技术3.3.1 I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC串行 EEPROM24C02 读写实验 I2I2空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达 25 英尺,并且能够以10Kbps的最大传输速率支持 40 个组件。I2C总线的另一个优点是,它支持多(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。 I之间、IC与IC之间进行双向传送,最高传送速率 100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器 (或被控器) ,又是发送器(或接收器),这取决于它所要完成的功能。 3.3.2 I2C通信原理 (1)数据传输:SDA线上的数据必须在时钟的高电平时期保持稳定,SDA线上的电平状态I21 数据传输:SDA 线只有在时钟的低电平时期才能改变。图3.5 SDA和SCL相互关系(2)开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 (3)结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 (4)应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的IC 发出低电平脉(5)总线基本操作:I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,则判断为受控单元出现故障。器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。参见图3.6图3.6 SCL与SDA波形关系3.3.3 硬件介绍: 24C04是CMOS 2048位串行EEPROM,内部组织成 2568位。16 字节页面写。与MCS-51单片机接口如图 40所示。由于SDA是漏极开路输出,且可以与任何数目的漏极开路或集电极 开路输出“线或”(wire-Ored)连接。上拉电阻的选择可参考 24C02 的数据手册(一般为 10K)。下面是通过I2C接口对 24C04 进行单字节写操作的例程。图3.7 24C02电路图3.4 显示模块3.4.1 LCD液晶显示 LCD1602 可显示两行英文字符,并且内带 ASCII 字符库。LCD1602 模块内部可以完成显示扫描,单片机只要向 LCD1602 发送命令和显示内容的 ASCII 码。表3-1 引脚功能说明引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极16BLK背光 电源负极图3.8 LCD1602引脚图表3-2寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。图3.9是1602的16进制ASCII码值:读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。图3.9 1602的16进制ASCII码值表3-3 显示地址1234567891011121314151600H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FH指令集1602通过D0D7的8位数据端传输数据和指令。显示模式设置:(初始化)0011 00000x38设置162显示,57点阵,8位数据接口;显示开关及光标设置:(初始化)0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),N=0(读或写一个字符后地址指针减1 &光标减1),S=1 且 N=1 (当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。通常推荐的初始化过程:延时15ms写指令38H延时5ms写指令38H延时5ms写指令38H延时5ms(以上都不检测忙信号)(以下都要检测忙信号)写指令38H写指令08H 关闭显示写指令01H 显示清屏写指令06H 光标移动设置写指令0cH 显示开及光标设置3.4.2 数码管显示数码管显示有动态扫描显示与静态显示。其中动态扫描显示是最常用的显示方法。在本次设计中,通过动态扫描方式显示密码及其状态。由于人类的眼睛有视觉余留的特性,对快速变化的图象分辨不清,利用这点我们制一数码管处于点亮的时间为 10ms,接着关闭它,锁存数据的显示码,选通这位,控制它点亮 10ms,以此下去直到第六个数码管也点亮 10ms,在从第一位开始重复上面的步骤。图3.10 数码管显示流程图3.5 本章小结 本章具体介绍了红外通讯模块,键盘模块,密码存储模块以及显示模块的基本知识与其实现的方法。红外通讯模块解决遥控解码问题,通过弄清楚红外的编码格式,就能通过软件解码方式读取遥控发射的数据。键盘部分介绍了4*4矩阵键盘的原理与实现。密码存储模块运用了I2C总线技术,详细介绍了I2C总线技术的优缺点。显示部分详细说明了LCD1602液晶显示的基本原理与运用操作,而且还提到了数码管的动态扫描显示原理。第四章 总结本设计利用两块89C52单片机芯片完成了基于红外遥控密码锁的设计,实现了红外遥控和键盘双输入控制,密码储存部分采用24C02芯片实现了断电保护问题,显示部分实现了数码管六位动态显示状态功能,并扩展到了LCD1602液晶屏上显示,在报警部分设计了蜂鸣器在密码输入错误三次蜂鸣器报警的功能。它的创新点在于用了一块单独的89C52芯片进行红外解码,而且解码部分软件设计用的是汇编语言,而显示键盘部分用的是C语言,通过两块89C52芯片使得这两种语言很好的组合在一起,使得他们既能够很好的完成各自的任务也能很好的兼容在一起完成整个系统的任务。然而系统还是存在如下一些不足:没有考虑过多外部因素对系统的影响,比如密码丢失,误操作对系统的影响。报警与提示功能做得不够完善,遥控的有效距离没有进行系统的论证。这些因素有待进一步完善。参考文献1 林伸茂.8051单片机彻底研究基础篇M.北京:人民邮电出版社,2003:24-153.2 赵广林.Protel 99SE电路设计与制作M.北京:电子工业出版社,2005:15-342.3 冯耀辉等.PowerPCB 5.0入门与提高M.北京:人民邮电出版社,2004:17-48.4 康华光等.电子技术基础第2版M.北京:高等教育出版社,2004:10-156.5 胡凯,张颖超.生化分析仪的设计及与PC机的通信J.微计算机信息,2006:208-209.6 马鸿文.基于AT89C52单片机的自动存取柜的设计与实现M.微计算机信息,2006:101-103.7 曹巧媛.单片机原理及应用M.北京:电子工业出版社,2002.8 牛翌光.单片机原理及接口技术M.北京:电子工业出版社,2008:32-79.9 杨路明.C语言程序设计M.北京:北京邮电大学出版社,2005:52-268.10 张文峥,李先亮,张其善.IrDA 红外通信在导航仪中的应用J. 2000,10.11 邱玉春,李文俊.单片机系统中的红外通信接口J.2000:56-163. 12 黄耀军,周云,严国萍.计算机红外无线互连的设计几实现J.2000,2. 13 麦山,皮佑国.基于单片机的协议红外遥控系统J.1998,5.14 Jimemez Petal. Improved PPM schemes for infrared wireless LAN J.Electronics Lettrs,1996,10. 15 Serial Infrared Link Access Protocol(IrLAP),Version 1.1. June 16,1996,IBM Corporation , Hewlett-Packard Company, Apple Computer, Inc.,Counterpoint Systems Foundry, Inc.附录 源程序/*程序功能:电子密码锁程序设计调试环境:KEIL C V8.01 SCMC型号:STC89C52RC作 者:罗岩松修改日期:20110305描 述:用遥控器来控制电子密码锁的开启 */*单片机头文件*/#include#include/*宏定义*/#define uint unsigned int#define uchar unsigned char#define ulong unsigned long /*/sbit hong = P20; /控制红灯 sbit lv = P22; /控制绿灯sbit huang = P21; /控制黄灯 sbit alert = P00; /蜂鸣器报警sbit scl =P37; /时钟sbit sda =P36; /数据/*以下是红外解码的程序*/ /*红外遥控发射芯片采用PPM编码方式,当发射器按键按下后,将发射一组108ms的编码脉冲。遥控编码脉冲由前导码、8位用户码、8位用户码的反码、8位操作码以及8位操作码的反码组成。通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个9ms的低电平(起始码)和一个4. 5ms的高电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为0. 56ms、周期为1. 12ms的组合表示二进制的“0”;以脉宽为1. 68ms、周期为2. 24ms的组合表示二进制的“1”。如果按键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2. 5ms)组成。单片机采用外部中断INTI管脚和红外接收头的信号线相连,中断方式为边沿触发方式。并用定时器0计算中断的间隔时间,来区分前导码、二进制的“1”、“0”码。并将8位操作码提取出来在数码管上显示。/ 解码值在Im2中,当IrOK=1时解码有效。*/ #define Imax 14000 /此处为晶振为11.0592时的取值, #define Imin 8000 /如用其它频率的晶振时,#define Inum1 1450 /要改变相应的取值。#define Inum2 700 #define Inum3 3000 unsigned char Im4=0x00,0x00,0x00,0x00;unsigned long Tc;/用来存储定时器0的数据uchar IrOK; /接收正确的标志位uchar aa; /用来存储遥控器发出的数据uchar f; /用来判断起始码uchar m;/用来存储接收到的位的个数uchar flag;/定义接收到正确的数据uchar num;/定义遥控器发射数据的个数 */*-描 述:定时器0和外部0进行初始化编写日期:20110305-*/void time_init()EA=1; /开启总中断 IT1=1; /定时器1为边沿触发 EX1=1; /允许定时器1中断 TMOD=0x21;/定时器0模式设置 TH0=0;/定时器0高8位赋初值TL0=0;/定时器0低8位赋初值 TR0=1;/开启定时器0/*-描 述:利用定时器0和外部中断1进行解码编写日期:20110305-*/外部中断解码程序void intersvr1(void) interrupt 2 using 1 Tc=TH0*256+TL0; /提取中断时间间隔时长 TH0=0; TL0=0; /定时中断重新置零 if(TcImin)&(TcInum1&Tc1|0x80; m+; if(TcInum2&Tc1; m+; /取码 if(m=32) m=0; f=0; if(Im2=Im3) IrOK=1; else IrOK=0; /取码完成后判断读码是否正确 /准备读下一码 if(IrOK=1) aa=Im2; IrOK=0; flag=1; num+; /*以下是串口程序*/*-描 述:串口使用9600的波特率进行数据的传输编写日期:20110305-*/void uart_init() SCON=0X40;TMOD=0X20;TH1=0XF3;TL1=0XF3;PCON=0X80; EA=1;TR1=1;/*-描 述:采用查询法进行数据的发送编写日期:20110305-*/void send_data(uchar cc)SBUF=cc;while(!TI);TI=0; /*以下是延时程序*/void delay1(unsigned int ii)/1ms延时函数unsigned int i,x;for (x=0;xii;x+)for (i=0;i0;i-)alert=1; delay1(200); alert=0;delay1(100);/*以下是红灯程序*/void hong_init(uchar aa)uchar i;for(i=aa;i0;i-)hong=0; delay1(500); hong=1;delay1(200);/*以下是绿灯程序*/void lv_init(uchar aa)uchar i;for(i=aa;i0;i-)lv=0; delay1(500); lv=1;delay1(200);/*以下是红灯程序*/void huang_init(uchar aa)uchar i;for(i=aa;i0;i-) huang=0; delay1(500); huang=1; delay1(200);/*以下是24C02的程序*/void delay()_nop_();_nop_();_nop_();_nop_();_nop_();/*-描 述:24C02的开始程序编写日期:20110305-*/void start()sda=1;delay();scl=1;delay();sda=0;delay();/*-描 述:24C02的结束程序编写日期:20110305-*/void stop()sda=0;delay();scl=1;delay();sda=1;delay();/*-描 述:24C02发送一个字节编写日期:20110305-*/void send_byte(uchar a)uchar i;for(i=0;i8;i+)scl=0; /低电平允许数据发生变化delay();a=a1;/先发送高位sda=CY;delay();scl=1;delay();scl=0;delay();sda=1;/释放总线delay(); /*-描 述:24C02接收一个字节编写日期:20110305-*/uchar resive_byte()uchar i,j;for(i=0;i8;i+) scl=0;/低电平允许数据发生变化delay();j=(j1)|sda;scl=1;delay();scl=0;dela

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论