毕 业 设 计 红外遥控电子密码锁
院系: 信息工程 班级: D0743 姓名: 罗岩松 指导教师: 张立新
第 1 页 共 33 页
红外遥控电子密码锁设计
目 录
第一章 课题背景 .......................................................................................................................................................... 3 1。1 课景及目的题背 ................................................................................................................... 3 1。2 国内外研究现状 ................................................................................................................... 3 1。3 课题研究方法 ....................................................................................................................... 3 1.4 本章小结 ................................................................................................................................. 4
第二章 基本原理及方案的论证 ....................................................................................................................... 4 2。1 红外通讯原理 ....................................................................................................................... 5 2.2 C52芯片介绍 ...................................................................................................................... 6 2.3 方案的比较及确定 ................................................................................................................. 8 2.4本章小结 .................................................................................................................................. 8
第三章 模块功能介绍及实现 ............................................................................................................................ 8 3.1 红外遥控技术 ......................................................................................................................... 9
3。1.1 硬件介绍: ................................................................................................................. 9 3.1.2 实现方法: ................................................................................................................. 9 3.2 4*4矩阵键盘 ...................................................................................................................... 10 3.3 I2C总线技术 ........................................................................................................................ 11
3.3。1 I2C总线特点 .......................................................................................................... 11 3.3。2 I2C通信原理 .......................................................................................................... 11 3.3。3 硬件介绍: ............................................................................................................. 12 3.4 显示模块 ............................................................................................................................... 13
3.4.1 LCD液晶显示 ............................................................................................................ 13 3。4.2 数码管显示 ............................................................................................................. 16 3.5 本章小结 ............................................................................................................................... 17
第四章 总结 ................................................................................................................................................................. 18 参考文献 ............................................................................................................................................................................... 19 附录 源程序 ................................................................................................................................................................... 20
第 2 页 共 33 页
红外遥控电子密码锁设计
第一章 课题背景
1。1 课题背景及目的
电子技术的飞速发展,给古老的锁具生产带来了巨大的变革,现代的电子技术与机械技术相结合,产生了一大批如声控锁、磁控锁、密码锁、遥控锁,指纹锁等先进的锁具。
目前国内外密码锁系统的主要方向的发展是:接触式密码锁系统,非接触式密码锁系统,智能识别密码锁系统,但是他们都相应的存在着不同的缺点。例如:接触式密码锁系统成本较低,体积小,卡片本身无须电源,但使用不太方便,而且有接触磨损。相比之下,红外遥控密码锁系统的成本与接触式密码锁系统相当,而且可以进行近距离遥控,使用十分方便。而且它已经与 PC 机的数据库相结合,可以组成一套酒店房间的门禁管理系统。
由于红外遥控具有许多优点, 例如红外线发射装置采用红外发光二极管遥控发射器易于小型化且价格低廉; 采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度快、传输效率高、工作稳定可靠等。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。所以红外线遥控是目前使用最广泛的一种通信和遥控手段. 在本设计中,红外遥控密码锁和 PC 机、数据库相结合,能够实现适时的、强大的管理,使得整个红外遥控系统得到更好的完善。
1.2 国内外研究现状
目前大部分的锁采用的都是机械式的,其最大的缺点是利用简单工具就能很容易地把锁打开.针对这种情况,我们设计了一种红外遥控密码锁,而一般设备都采用专用的遥控编码及解码集成电路,其制作简单、容易,但由于特定功能的,只适用于专用的电器产品,其应用范围受到。而设计的红外遥控密码锁系统能提高门禁系统的可靠性和安全性,适应市场需要.该系统具有普通电子密码锁功能的同时,还增加了遥控功能。该系统具有较强的实际应用价值,所涉及的技术包括:红外载波数据传输技术、单片机控制技术、红外遥控系统编码及译码技术、电路设计与演示板制作技术等。
1。3 课题研究方法
第 3 页 共 33 页
红外遥控电子密码锁设计
本设计基于STC52单片机系列,运用了两块单片机芯片,一片实现红外解码,一块用来按键控制,数码管显示以及数据存储,通过查找资料确定各个模块的功能及实现方法,先在软件上进行调试,再根据硬件修改调试软件,最后将各个模块合理组合在一起,达到预计的功能与目标.
1。4 本章小结
本章介绍了红外遥控密码锁技术的课题背景,红外技术在现代生活中的应用以及该课题的国内外研究现状,探讨与确定研究本课题的方法.
第二章 基本原理及方案的论证
第 4 页 共 33 页
红外遥控电子密码锁设计
2。1 红外通讯原理
红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原理。
红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。
红外线是波长在 750nm至1mm之间的电磁波[5],它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在 0.75um至 25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在 850 至 900nm之内。
红外通信的基本原理[6]是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号) ,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种
[7,8,9,10]
方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都
推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232 [8]通信,首先产生一个同步头,然后接着 8 位数据比特.如图 2.1所示。
图 2.1 PPM 调制波形图
普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为 8~16 个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信
第 5 页 共 33 页
红外遥控电子密码锁设计
的帧结构,每帧由一个起始位(二进制数 0) 、8 个数据位和 2 个停止位(二进制数 1)构成,如图 2.2 所示。每帧传送 1 个字节的数据,帧与帧间隔大于 2ms,帧结构不含地址信息,寻址问题由高层协议解决[8]。
图 2.2 数据帧结构示意图
由于红外光存在反射,在全双工的方式下发送的信号也可能会被本身接收,因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进行的。
2.2 C52芯片介绍
C52的引脚图如图2.3所示
图2.3 C52芯片引脚图
主电源及时钟引脚--此类引脚包括电源引脚Vcc、Vss、时钟引脚XTAL1、XTAL2。 (1)Vcc(40脚):接+5V电源,为单片机芯片提供电能。
第 6 页 共 33 页
红外遥控电子密码锁设计
(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在其规定的电压范围内(5±0.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。0~P0。7)是一个8位三态双向I/0口,在不访积压外部存储器,做通用I/0口使用,用于传送CPU的输入/输出数据,当访问外部存储器时,此口为地址总路线 低8位及数据总路线分时复用口,可带8个LSTTL负载。
(2)P1(P1.0~P2。7)是一个8位准双向I/O口(作为输入时,口锁存器置1),带有内部上拉电阻,可带4个LSTTL负载。
第 7 页 共 33 页
红外遥控电子密码锁设计
(3)P2(P2。0~P2。7)是一个8位准双向I/O口,与地址总路线高8位复用,可驱动4个LSTTL负载。
2。3 方案的比较及确定
本设计的重点在于遥控解码,遥控解码的方式有硬件解码与软件解码. 方案一:硬件解码。
硬件解码:在接受遥控的一边可以连接一个专用解码芯片,只要按键盘上的键值,它就能直接把这个键值解码出来并存储,当你调用这个键值的时候只要从里面去读取就行了,所以它的解码率高,读取显示简单,这是它的优点.可是该芯片价格昂贵,而且只能解码对应的遥控器,兼容性差,成本昂贵,不适合用作市场量产。
方案二:软件解码。
软件解码:根据遥控器选择的芯片不同,其遥控码格式也有不同。现在市场上主要有日本的NEC标准和飞利浦标准,通过软件的方式解码时解码的正确率就是一个很重要的指标了。在单片机编程的时候是选择用执行效率高的汇编语言还是选用可读性编写容易的C语言呢?不可否认汇编的执行效率是C语言的几倍甚至几十倍,而且误码率低,可是如果选择汇编的话编写难度可想而知,可是如果用C语言编写的话误码率及实时性又会变得比较差.综合以上考虑,如果我们能够在解码这部分用汇编,而显示及控制这部分用C语言编写的话,就能较好的完成我们预期的目标。因此我选用了两块C52单片机芯片,一块负责红外解码,一块负责显示与控制。事实证明,我的选择和预想中的一样,很好的解决了汇编与C语言难以共存的问题。
基于上述比较,我们选择了方案二,采用汇编与C语言共同的软件解码方式。
2.4本章小结
本章介绍了基于单片机红外遥控密码锁设计的两个重点——红外通讯基本原理与单片机芯片C51的基础知识。通过介绍实现他的关键技术提出了系统设计的方案-—硬件解码方案和软件解码方案。而后对两个方案的优缺点进行比较,最终确定了实现设计的方案-—软件解码方案.
第三章 模块功能介绍及实现
第 8 页 共 33 页
红外遥控电子密码锁设计
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位地址码(9ms~18ms) ,高 8位地址码(9ms~18ms) ,8 位数据码(9ms~18ms)及其反码(9ms~18ms)组成。如果键按下超过 108ms 仍未松开,接下来发送的代码(连发码)就只由起始码(9ms)和结束码(4。5ms)组成。
第 9 页 共 33 页
红外遥控电子密码锁设计
解码关键在于如何识别‘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条列线,即可组成具有N×M个按键的键盘。本设计发射部分采用4*3键盘,接收部分采用4*4键盘。键盘扫描时,首先由I/O口低四位输出高电平,高四位输出低电平,假若有键按下,那么在I/O口低四位即可读出低电平,接着延时消抖,再具体判断是何键按下. 判断键盘中有无键按下
将全部行线 X0-X3 置低电平 然后检测列线的状态 只要有一列的电平为低 则表
页 共 33 页 第 10
红外遥控电子密码锁设计
示键盘中有键被按下 而且闭合的键位于低电平线与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 线只有在时钟的低电平时期才能改变。
页 共 33 页 第 11
红外遥控电子密码锁设计
图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,内部组织成 256×8位.16 字节页面写。与MCS—51单片机接口如图 40所示。由于SDA是漏极开路输出,且可以与任何数目的漏极开路或集电极 开路输出“线或”(wire—Ored)连接。上拉电阻的选择可参考 24C02 的数据手册(一般为 10K)。下面是通过I2C接口对 24C04 进行单字节写操作的例程。
页 共 33 页 第 12
红外遥控电子密码锁设计
图3。7 24C02电路图
3.4 显示模块
3.4。1 LCD液晶显示
LCD1602 可显示两行英文字符,并且内带 ASCII 字符库。LCD1602 模块内部可以
完成显示扫描,单片机只要向 LCD1602 发送命令和显示内容的 ASCII 码。
表3—1 引脚功能说明
引脚 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 符号 VSS VDD V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA BLK 功能说明 一般接地 接电源(+5V) 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,可以通过一个10K的电位器调整对比度)。 RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 E(或EN)端为使能(enable)端,下降沿使能。 底4位三态、 双向数据总线 0位(最低位) 底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位 高4位三态、 双向数据总线 7位(最高位)(也是busy flag) 背光电源正极 背光 电源负极
页 共 33 页 第 13
红外遥控电子密码锁设计
图3.8 LCD1602引脚图
表3-2寄存器选择控制表 RS 0 0 1 1 R/W 0 1 0 1 操作说明 写入指令寄存器(清除屏等) 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 写入数据寄存器(显示各字型等) 从数据寄存器读取数据
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是
01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A\".
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’. 图3.9是1602的16进制ASCII码值:
读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制).
页 共 33 页 第 14
红外遥控电子密码锁设计
图3.9 1602的16进制ASCII码值
表3-3 显示地址
1 00H 40H
2 01H 41H 3 02H 42H 4 03H 43H 5 04H 44H 6 05H 45H 7 06H 46H 8 07H 47H 9 08H 48H 10 09H 49H 11 0AH 4AH 12 0BH 4BH 13 0CH 4CH 14 0DH 4DH 15 0EH 4EH 16 0FH 4FH 指令集
1602通过D0~D7的8位数据端传输数据和指令。 显示模式设置: (初始化)
0011 0000 [0x38] 设置16×2显示,5×7点阵,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 当写一个字符后,整屏显示不移动 数据指针设置:
页 共 33 页 第 15
红外遥控电子密码锁设计
数据首地址为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,在从第一位开始重复上面的步骤.
页 共 33 页 第 16
红外遥控电子密码锁设计
图3.10 数码管显示流程图
3.5 本章小结
本章具体介绍了红外通讯模块,键盘模块,密码存储模块以及显示模块的基本知识与其实现的方法.红外通讯模块解决遥控解码问题,通过弄清楚红外的编码格式,就能通过软件解码方式读取遥控发射的数据。键盘部分介绍了4*4矩阵键盘的原理与实现.密码存储模块运用了I2C总线技术,详细介绍了I2C总线技术的优缺点。显示部分详细说明了LCD1602液晶显示的基本原理与运用操作,而且还提到了数码管的动态扫描显示原理.
页 共 33 页 第 17
红外遥控电子密码锁设计
第四章 总结
本设计利用两块C52单片机芯片完成了基于红外遥控密码锁的设计,实现了红外遥控和键盘双输入控制,密码储存部分采用24C02芯片实现了断电保护问题,显示部分实现了数码管六位动态显示状态功能,并扩展到了LCD1602液晶屏上显示,在报警部分设计了蜂鸣器在密码输入错误三次蜂鸣器报警的功能.它的创新点在于用了一块单独的C52芯片进行红外解码,而且解码部分软件设计用的是汇编语言,而显示键盘部分用的是C语言,通过两块C52芯片使得这两种语言很好的组合在一起,使得他们既能够很好的完成各自的任务也能很好的兼容在一起完成整个系统的任务。
然而系统还是存在如下一些不足:没有考虑过多外部因素对系统的影响,比如密码丢失,误操作对系统的影响。报警与提示功能做得不够完善,遥控的有效距离没有进行系统的论证。这些因素有待进一步完善。
页 共 33 页 第 18
红外遥控电子密码锁设计
参考文献
[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] 马鸿文.基于ATC52单片机的自动存取柜的设计与实现[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.
页 共 33 页 第 19
红外遥控电子密码锁设计
附录 源程序
/***********************************************************
程序功能:电子密码锁程序设计 调试环境:KEIL C V8。01 SCMC型号:STCC52RC 作 者:罗岩松 修改日期:20110305
描 述:用遥控器来控制电子密码锁的开启
************************************************************/ /******************单片机头文件***************************/ #include /******************宏定义***************************/ #define uint unsigned int #define uchar unsigned char #define ulong unsigned long /************************************************************/ sbit hong = P2^0; //控制红灯 sbit lv = P2^2; //控制绿灯 sbit huang = P2^1; //控制黄灯 sbit alert = P0^0; //蜂鸣器报警 sbit scl =P3^7; //时钟 sbit sda =P3^6; //数据 /************************以下是红外解码的程序********************************/ /*红外遥控发射芯片采用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位 操作码提取出来在数码管上显示。 // 解码值在Im[2]中,当IrOK=1时解码有效。*/ #define Imax 14000 //此处为晶振为11。0592时的取值, 页 共 33 页 第 20 红外遥控电子密码锁设计 #define Imin 8000 //如用其它频率的晶振时, #define Inum1 1450 //要改变相应的取值. #define Inum2 700 #define Inum3 3000 unsigned char Im[4]={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((Tc>Imin)&&(Tc 页 共 33 页 第 21 红外遥控电子密码锁设计 return; } //找到启始码 if(f==1) { if(Tc>Inum1&&Tc〈Inum3) { Im[m/8]=Im[m/8]>>1|0x80; m++; } if(Tc>Inum2&&Tc if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) { IrOK=1; } else IrOK=0; //取码完成后判断读码是否正确 } //准备读下一码 } if(IrOK==1) { aa=Im[2]; IrOK=0; flag=1; num++; } } /************************以下是串口程序********************************/ /*——-------——---—---—-————--—-—--———-—-—--—-—- 描 述:串口使用9600的波特率进行数据的传输 编写日期:20110305 —-—-—----——----——————-—-—-—————-----—--———-—--*/ void uart_init() { SCON=0X40; TMOD=0X20; TH1=0XF3; 页 共 33 页 第 22 红外遥控电子密码锁设计 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;x〈ii;x++) { for (i=0;i〈100;i++); } } /************************以下是蜂鸣器程序********************************/ void didi(uchar aa) { uchar i; for(i=aa;i>0;i-—) { alert=1; delay1(200); alert=0; delay1(100); } } /************************以下是红灯程序********************************/ void hong_init(uchar aa) { uchar i; for(i=aa;i>0;i—-) { 页 共 33 页 第 23 红外遥控电子密码锁设计 hong=0; delay1(500); hong=1; delay1(200); } } /************************以下是绿灯程序********************************/ void lv_init(uchar aa) { uchar i; for(i=aa;i>0;i——) { lv=0; delay1(500); lv=1; delay1(200); } } /************************以下是红灯程序********************************/ void huang_init(uchar aa) { uchar i; for(i=aa;i>0;i-—) { huang=0; delay1(500); huang=1; delay1(200); } } /************************以下是24C02的程序********************************/ void delay() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } /*-——------——---———-——-——————-----—----———---— 描 述:24C02的开始程序 页 共 33 页 第 24 红外遥控电子密码锁设计 编写日期: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;i<8;i++) { scl=0; //低电平允许数据发生变化 delay(); a=a<<1; //先发送高位 sda=CY; delay(); scl=1; delay(); } scl=0; 页 共 33 页 第 25 红外遥控电子密码锁设计 delay(); sda=1; //释放总线 delay(); } /*---———----———----—-----—-—-----—-——-———--—-- 描 述:24C02接收一个字节 编写日期:20110305 —-—-——————-——-—---———---—--—-——-—--——-—————--—*/ uchar resive_byte() { uchar i,j; for(i=0;i<8;i++) { scl=0; //低电平允许数据发生变化 delay(); j=(j<<1)|sda; scl=1; delay(); } scl=0; delay(); sda=1; //释放总线 delay(); return j; } /*-——-—----—------——---————--——-——————-————-—- 描 述:24C02响应函数 编写日期:20110305 -—----——--——-—--—--———---—-—-———-————-----—-—-*/ void respond() { uchar i; scl=1; delay(); while((sda==1)&(i〈250))i++; scl=0; delay(); } void display(uchar i) { uchar j; for(j=i;j>0;j--) { P2^=0XFF; 页 共 33 页 第 26 红外遥控电子密码锁设计 delay1(500); } } /*——-—--——----———--—-------—--—-——--—-------—— 描 述:24C02发送地址和数据 编写日期:20110305 ----———----————-—-————-----—----—--—--——--—-——*/ void send(uchar dizhi,uchar shu) { start(); send_byte(0xa0); //器件地址 respond(); send_byte(dizhi); //器件内部寄存器地址 respond(); send_byte(shu); //发送的数据 respond(); stop(); } /*—-—-———--————-—--—------————----—---—---——-- 描 述:24C02从指定地址读取数据 编写日期:20110305 -——----—-—--——--—-———-——-—-—-—-——--——--—---—--*/ uchar resive(uchar dizhi) { uchar k; start(); send_byte(0xa0); respond(); send_byte(dizhi); respond(); start(); send_byte(0xa1); respond(); k=resive_byte(); stop(); return k; } /*-—----———--—————————--—-----------————--—-—— 描 述:24C02初始化函数 编写日期:20110305 —-——————-—-—-—----—-—-----———-—-——--—--——--—-—*/ 页 共 33 页 第 27 红外遥控电子密码锁设计 void csh() { scl=1; delay(); sda=1; delay(); } void main() { uchar flag1,flag2; uchar code table[]={0,1,2,3,4,5,}; //设定密码 /****************************** 报警,测试MCU正常工作 ******************************/ didi(3); uart_init(); time_init(); kk: if(flag==1) //此处位设置的密码和重新设置密码的定义 { send_data(aa); switch(aa) { case 0x15:flag1=1;didi(3);break; case 0x14:flag2=1;break; } flag=0; } if(flag1==1) { num=0; aa:while(aa!=table[0]) //第1位密码输入不正确,等待 { if(num==1) { if(aa==table[0]) { goto aa; } huang_init(2); } if(num==2) 页 共 33 页 第 28 红外遥控电子密码锁设计 { if(aa==table[0]) { goto aa; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[0]) { goto aa; } hong_init(2); goto here; } } lv_init(1); didi(1); num=0; bb:while(aa!=table[1]) //第2位密码输入不正确,等待 { if(num==1) { if(aa==table[1]) { goto bb; } huang_init(2); } if(num==2) { if(aa==table[1]) { goto bb; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[1]) 页 共 33 页 第 29 红外遥控电子密码锁设计 { goto bb; } hong_init(2); goto here; } } lv_init(2); didi(2); num=0; cc:while(aa!=table[2]) //第3位密码输入不正确,等待 { if(num==1) { if(aa==table[2]) { goto cc; } huang_init(2); } if(num==2) { if(aa==table[2]) { goto cc; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[2]) { goto cc; } hong_init(2); goto here; } } lv_init(3); didi(3); num=0; dd:while(aa!=table[3]) //第4位密码输入不正确,等待 { 页 共 33 页 第 30 红外遥控电子密码锁设计 if(num==1) { if(aa==table[3]) { goto dd; } huang_init(2); } if(num==2) { if(aa==table[3]) { goto dd; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[3]) { goto dd; } hong_init(2); goto here; } } lv_init(4); didi(4); num=0; ee:while(aa!=table[4]) //第5位密码输入不正确,等待 { if(num==1) { if(aa==table[4]) { goto ee; } huang_init(2); } if(num==2) { if(aa==table[4]) { 页 共 33 页 第 31 红外遥控电子密码锁设计 goto ee; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[4]) { goto ee; } hong_init(2); goto here; } } lv_init(5); didi(5); num=0; ff:while(aa!=table[5]) { if(num==1) { if(aa==table[5]) { goto ee; } huang_init(2); } if(num==2) { if(aa==table[5]) { goto ee; } hong_init(2); huang_init(2); } if(num==3) { num=0; if(aa==table[5]) { goto ee; } //第6位密码输入不正确,等待第 32 页 共 33 页 红外遥控电子密码锁设计 hong_init(2); goto here; } } lv_init(6); didi(6); display(10); flag1=0; } goto kk; here: didi(3); goto here; } 第 33 页 共 33 页
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务