基于单片机的红外遥控密码锁.doc_第1页
基于单片机的红外遥控密码锁.doc_第2页
基于单片机的红外遥控密码锁.doc_第3页
基于单片机的红外遥控密码锁.doc_第4页
基于单片机的红外遥控密码锁.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1 遥控密码锁遥控密码锁 基于基于 51 单片机单片机 自己几年前做的一个课程设计 程序简介 目录目录 1 目的和意义目的和意义 2 2 方案设计方案设计 2 3 硬件原理分析及设计硬件原理分析及设计 2 3 1 发射模块原理 2 3 1 1 红外发送系统原理 3 3 1 2 NEC编码格式介绍 3 3 2 接收解码模块 4 3 2 1 接收解码原理 4 3 2 2 接收解码模块的硬件电路 5 3 4 液晶显示模块 6 4 软件设计软件设计 7 4 1 编程语言 7 4 2 主要程序说明及流程图 7 4 2 1 主程序 7 4 2 2 接收解码程序 8 4 2 3 按键数字分配 11 4 2 4 密码判断 报警及修改程序 12 4 2 5 按键发声程序 19 4 2 6 没操作响应 19 5 功能分析及总结功能分析及总结 20 5 1 功能分析 20 5 2 C 语言编程的延时技巧 21 5 3 本设计优缺点 23 5 4 设计总结 23 参参 考考 文文 献献 1 附录附录 C 实物图实物图 3 1 摘 要 单片机遥控系统是将红外遥控技术和单片机应用技术相结合的一种方案 本系统为 红外遥控电子密码锁的控制管理部分 只要再连接上不同用途的电磁锁即可成为一个完 整的红外遥控电子密码锁系统应用到各种领域中 而且本系统还设计有学习 NEC 红外编 码遥控器的功能 通过红外接收解码电路 把遥控器的键码还原并储存起来 再利用查 找对比的方法便能够识别不同的遥控器 大大提高了系统的灵活性和实用性 本系统以单片机作为核心元件将电子密码锁和无线遥控技术结合起来 使其具有修 改密码 报警锁定等功能 不仅能进行远距离遥控解锁 还能实现近距离按键密码初始 化及复位解除报警 同时采用 E2PROM 作为存储单元 方便用户存储 修改密码和遥控 器键码 采用 LCD 显示令使用更加方便直观 红外线遥控电子密码锁能实现多种控制功 能 改善了传统机械锁的各种缺点 有较好的市场发展前景和技术应用价值 而且本系 统的红外接收解码部分延时计数准确 并且有错误校验 所以整个接收解码的准确性非 常高 设计电路主要由红外线解码学习电路 密码修改和存储电路 声光提示报警电路 LCD 显示电路组成 系统能完成输入密码开锁 出错报警 超次锁定 修改用户密码等 基本的密码锁的功能 并且还能实现远距离遥控 按键密码初始化 掉电存储 声光提 示 遥控器学习识别等附加功能 本设计详细介绍了单片机遥控系统的软硬件设计方法 并给出了具体的各单元电路设计 程序设计及主程序流程图 关键词 电子密码锁 红外遥控 单片机 NEC 编码 2 1 目的和意义 随着人们生活水平的提高 如何实现家庭防盗这一问题也变得尤其重要 目前国内 大部分人使用的还是传统的机械锁 传统的机械锁由于其构造的简单 被撬的事件屡见 不鲜 即使是一把质量过关的机械锁 通过急开锁 甚至可以在不损坏锁的前提下将锁 打开 而且 在日常的生活和工作中 若使用传统的机械式钥匙开锁 人们常需携带多 把钥匙 使用极不方便 且钥匙丢失后安全性即大打折扣 为此 本系统试着设计具有 防盗报警功能的红外线遥控电子密码锁来代替传统的机械式密码锁 克服了机械式密码 锁密码量少 安全性能差的缺点 而且还添加了红外遥控 遥控器学习识别和 LCD 显 示等功能 可以实现远距离开关锁 修改密码等 系统灵活性强 操作简单直观 使用 非常方便 2 方案设计 用以下方案设计本次系统 发射模块使用型号为 HZ FT007 的 20 键车载 MP3 红外 遥控器和创维 RC 585 型 DVD 遥控器 因为它们都是采用 NEC 编码格式的红外遥控芯 片作为主要芯片 使用一体化红外接收头 SM0038 和单片机 STC89C51RC 结合的方式 完成接收解码模块 学习识别 NEC 编码格式的不同遥控器 使用 AT24C02 这一串行 E2PROM 作为存储模块 使用 LCD1602A 实现系统的显示模块 系统的总框图如图 3 所 示 这样的选择使系统在较低成本的情况下较好地实现系统的功能 而且系统有着较高 的抗干扰性和稳定性 图 3 选用方案系统框图 3 硬件原理分析及设计 3 1 发射模块原理 按键 uPD6122G SM0038 MCU AT24C02 LCD1602 电磁锁 NEC 编码遥控器 3 3 1 1 红外发送系统原理 红外遥控信号是一连串的二进制脉冲码 为了使其在无线传输过程中免受其他红外 信号的干扰 通常都是先将其调制在特定的载波频率上 然后再经红外发光二极管发射 出去 红外线接收装置则会滤除其它杂波只接收该特定频率的信号并将其还原成二进制 脉冲码 在本红外遥控系统中 红外信号的载波频率为 38KHz 通常 红外遥控系统中所采用的编码方式有两种 通过脉冲宽度来实现信号调制的 脉宽调制 PWM 和通过脉冲串之间的时间间隔来实现信号调制的脉时调制 PPM 本 系统是采用 PPM 方法 即用两个脉冲之间的时间间隔来表示二进制信息 为了确保发送端和接收端之间数据传输的准确无误 红外线信号还要按照特定的传 输协议来进行信号传输 常用的红外线信号传输协议有 NEC 协议 RC 5 协议 RC 6 协议 Sharp 协议等 3 1 2 NEC 编码格式介绍 本系统使用的型号为 HZ FT007 的 20 键车载 MP3 红外遥控器和创维 RC 585 型 DVD 遥 控器请参看附录 C 中的实物图 它们主要芯片都是 NEC 编码格式的红外遥控芯片 NEC 编码广泛应用于电视机 DVD PC 电脑 音响等 是比较常用的一种红外编码格式 下面以 NEC 编码标准的红外编码芯片 uPD6122G 作为例子介绍 NEC 遥控编码是连续 的 32 位二进制码组 其中的前十六位是用户码 后 16 位为 8 位的数据码及其反码 在 每次编码之前还会发送 9ms 高电平和 4 5ms 低电平组成的引导码 或称起始码 而且 第二段的用户码也可以在遥控应用电路中被设置为第一段用户码的反码 它的帧结构如 图 4 所示 图 4 uPD6122G 编码格式 NEC 编码标准是以用不同脉冲的时间间隔来区分 0 和 1 的 uPD6122G 以脉 宽为 0 56ms 间隔 0 565ms 周期为 1 125ms 的组合表示二进制的 0 以脉宽为 4 0 56ms 间隔 1 69ms 周期为 2 25ms 的组合表示二进制的 1 其波形如图 5 所示 图 5 uPD6122G 0 和 1 波形图 使用 455KHz 晶振时各代码所占的时间如图 6 所示 图 6 使用 455KHz 晶振时各代码所占的时间 uPD6122G 按键输出有两种方式 一种是每次按键都输出完整的一帧数据 另一种 是按下按键不松开时 发送完整的一帧数据后再发送重复码 直到按键被松开 其波形 如图 7 所示 图 7 重复码的波形图 3 2 接收解码模块 3 2 1 接收解码原理 接收解码的关键是如何识别 0 和 1 本系统使用的是一体化红外接收头进行红 5 外信号接收 在没有信号的时候其输出端是高电平 而有信号的时候是低电平 所以其 输出信号电平正好和遥控发射端相反 从上面的讨论可以发现在遥控发射端 0 和 1 均以 0 56ms 的高电平开始 不同的是低电平的宽度 0 为 0 565ms 1 为 1 69ms 所以必须根据低电平的宽度区别 0 和 1 本系统用中断的方式实现从接 收头到 MCU 的信号传输 如图 9 所示 红外接收头的输出端连接到单片机的 INT0 脚 接收头输出端有低电平信号输出时引起单片机的中断 单片机响应中断并进行信号的接 收解码 解码后的信号就变成相应的遥控器按键代码 从而可以成为密码锁的密码 图 9 中断接收示意图 3 2 2 接收解码模块的硬件电路 接收解码电路由一体化红外接收头 SM0038 和单片机 STC89C51RC 组成 STC 系列单片机具有在系统中直接可编程特性 其好处是 省去购买通用编程器 单片机在用户系统上即可下载 烧录用户程序 而无须将单片机从已生产好的产品上拆 下 再用通用编程器将程序代码烧录进单片机内部 有些程序尚未定型的产品可以一边 生产 一边完善 加快了产品进入市场的速度 减小了新产品由于软件缺陷带来的风险 由于可以在用户的目标系统上将程序直接下载进单片机看运行结果对错 故无须仿真器 因此选择使用这款单片机 一体化红外接收头 SM0038 是集信号放大 滤波 检波 整形于一体的红外接收器 电路内置 PIN 二极管和前置放大器 采用可以红外滤波的环氧树脂材料封装 可靠性高 不易受环境影响并可以防止非控制信号的输出脉冲出现 它的内部电路如图 10 所示 接收头 SM0038 MCU INT0 6 图 10 SM0038 内部结构图 SM0038 内置带通滤波器 积分器 和自动增益控制电路以抑制各种干扰和噪音 数据信号和干扰信号的主要区别在于载波频率 脉冲波长和工作周期上 所以数据信号 应该满足以下的要求 而本系统选用的 SM0038 在这三方面和 NEC 编码格式是相配的 载波信号的频率尽量接近带通滤波器的中心频率 38KHz 脉冲长度在 300us 以上 数据的编码类型相兼容 3 4 液晶显示模块 系统中采用 LCD1602 作为显示器件输出信息 与传统的 LED 数码管显示器件相比 液晶显示模块具有体积小 功耗低 显示内容丰富等优点 而且不需要外加驱动电路 现在液晶显示模块已经是单片机应用设计中最常用的显示器件了 LCD1602 可以显示 2 行 16 个字符 具有 8 位数据总线 D0 D7 和 RS R W E 三个控制端口 工作电压 为 5V 并且带有字符对比度调节和背光设置 LCD1602 与单片机的连接电路图参考附 录 A 其管脚功能简介如下 VL LCD 对比度调节端 电压调节范围为 0 5V 接正电源时对比度最弱 接地 电源时对比度最高 可以用一个 10K 的电位器来调整对比度 RS 数据或者指令选择端 处理器写入指令时 RS 为低电平 写入数据时 RS 为 高电平 R W 读写控制端 R W 为高电平时 读取数据 R W 为低电平时 写入数据 E LCD 模块使能信号控制端 写数据时 需要下降沿触发模块 D0 D7 8 位数据总线 三态双向 7 BLA LED 背光正极 需要背光时 BLA 串接一个限流电阻接 VCC BLK LED 背光负极 4 软件设计 4 1 编程语言 目前 对单片机的编程主要采用汇编和 C 语言 汇编语言有执行效率高 速度快 与硬件结合紧密等特点 尤其在进行 I O 端口管理时 使用汇编语言有快捷 直观的优 点 但是使用汇编语言相对于使用高级语言编程难度要大一些 且程序可读性低 开放 性差 从系统开发时间来看 效率不是很高 C 语言是一种结构化语言 可产生紧凑代码 C 语言可以用许多机器级函数直接控 制操作 8051 硬件 与汇编语言相比 C 语言有如下的优点 不要求了解单片机的指令系统 仅要求对 8051 的存储结构有初步了解 寄存器分配 不同存储器的寻址及数据类型等细节可由编译器管理 程序有规范的结构 可分为不同的函数 这种方式可使程序结构化 具有将可变的选择与特殊操作组合在一起的能力 改善了程序的可读性 关键字及运算符可用近似人的思维方式使用 编程及程序调试时间显著缩短 从而提高效率 提供的库包含许多标准子程序 具有较强的数据处理能力 已编好的程序可容易地植入新程序 因为它具有方便的模块化编程技术 当然 采用混编模式 就能结合两者的优点 本着学习的目的 本系统均采用 C51 语言编写 4 2 主要程序说明及流程图 4 2 1 主程序 本系统的软件程序主要包括主程序 接收解码程序 密码判断和报警程序 密码修 改程序 遥控器学习识别程序几个大的模块程序 完整程序见附录 B 主程序首先是初始化程序 然后就等待红外接收头输出端的低电平 低电平出现说 明遥控有键按下 外部中断设定为下降沿触发 故单片机进入中断服务程序进行信号的 接收解码 系统进入密码输入界面 并且接收到八位的密码以后就开始运行密码核对程 序 当密码输入正确后 就可以进行开锁 上锁或修改密码的操作 当密码输入错误的 时候就会进入密码输入提醒程序提醒用户重新输入密码 密码输入累积到 3 次时系统会 8 报警并锁定 相应的主程序流程图如图 12 所示 图 12 主程序流程图 4 2 2 接收解码程序 红外接收解码的关键是如何识别 0 和 1 码 我的做法是根据 0 和 1 码 的高电平宽度不一样的特点来进行识别 接收程序的流程图如图 13 所示 进入红外接收程序后先关闭中断 接着的工作是避开 9ms 高电平 4 5ms 的低电平 的引导码 并且判断是否干扰信号或者重复信号 正如前面所说 一体化红外接收头的 输出端电平跟遥控发射端电平相反 如图 14 所示 所以只要遥控有键按下单片机就会马上产生中断接收数据 跟在引导码后面的是 32 位用户码和数据码 也就是我们想要的数据 单片机把它接收并保存 当接收完 8 位的 数据时要更换另外一个数据缓冲区 当 32 位的键码都接收完的时候就意味这一帧的数 据已经接收完毕 然后根据接收到的数据码和数据反码是否对应位相反来确定接收的这 初始化 等待遥控识别按键 时钟模式 密码核对 报警锁定 开锁上锁密码修改 N 错误 正确 密码锁按键 密码锁模式 Y 9 一帧数据是否正确 最后退出接收解码程序 图 13 红外接收程序流程图 图 14 接收头前导码信号变相图 红外中断程序 关中断 是否 9ms 低电平 开始接收 32 位编 码 接收信号 1 保存 接收了 8 位 是否 4 5ms 低电平 低电平大于 800us 接收信号 0 保存 接收了 32 位 开中断 返回 干扰信号重复信号 N N N N N Y Y Y Y Y 发射模块MCU 9ms 4 5ms 接收头 9ms 4 5ms 10 而单片机的接收端的 0 1 波形图如图 15 所示 在保存 0 码和 1 码的时 候还有一个保存时机的问题 如果从 0 56ms 低电平过后开始延时 0 56ms 以后若读到 为低电平 说明该位为 0 反之则为 1 为安全起见 延时必须比 0 56ms 长一些 但又不能超过 1 12ms 否则如果该位为 0 读到的已是下一位的高电平 因此取 1 12ms 0 56ms 2 0 84ms 较为可靠 一般取 0 84ms 左右均可 图 15 单片机接收端的 0 1 波形图 接收解码关键程序 sbit IR P3 2 红外中断输入端口 INT0 void ir svr void interrupt 0 using 0 int width 0 i EX0 0 关中断 常规状态下 INT0 为高电平 由高电平跳变为低电平时 即下降沿 产生中断 引导信号 9ms 低电平 while IR delay 100us width 计算引导电平的宽度 if width 80 EX0 1 return 8ms 80 100us 如果不到 8ms 视为干扰信号 计算 4 5ms 高电平宽度 width 0 x00 while IR delay 100us width if width 30 EX0 1 return 3ms 30 100us 如果不到 3ms 即视为 2 5ms 重复信 号 至此 引导码已校验 以下接收地址码和数据码 一共 32 位 11 i 0 while i 32 接收 32 位编码 while IR 等待高电平 width 0 x00 while IR 记录高电平宽度 delay 100us width ir data 0 x08 ir data 0 x01 信号 1 和 0 判断 if i 8 保存接收到的数据 dataIR 0 ir data if i 16 dataIR 1 ir data if i 24 dataIR 2 ir data if i 32 dataIR 3 ir data if dataIR 2 dataIR 3 纠错校验 EX0 1 return ir data dataIR 2 ir flag 1 接收成功标志位 TR1 0 有按键关定时器 1 T 0 EX0 1 4 2 3 按键数字分配 由于遥控器的编码是为了不容易出错而编的 导致数据比较乱 为了编程方便 我们特意修改 了数据 0 9 号为密码数据 10 号为退格键 11 号为密码修改键 18 号为开锁键 14 号为调整时 间键 8 号调时 9 号调分 按 键 数 据 编 码 12 18 19 20 15 16 17 12 13 14 0 10 11 1 2 3 4 5 6 7 8 9 遥控器 uchar key match switch ir data case 0 x68 return 0 case 0 x30 return 1 case 0 x18 return 2 case 0 x7a return 3 case 0 x10 return 4 case 0 x38 return 5 case 0 x5a return 6 case 0 x42 return 7 case 0 x4a return 8 case 0 x52 return 9 case 0 x98 return 10 case 0 xb0 return 11 case 0 xe0 return 12 case 0 xa8 return 13 case 0 x90 return 14 case 0 x22 return 15 case 0 x02 return 16 case 0 xc2 return 17 case 0 xa2 return 18 case 0 x62 return 19 case 0 xe2 return 20 default return 99 4 2 4 密码判断 报警及修改程序 电子密码锁的软件编程主要分为两方面 分别是接收密码后判断及报警部分和密码 修改控制部分 首先介绍密码判断及报警程序 显示收到的键码并保存到接收缓存 receive code 8 直到 8 位键码接收完毕 然后和原密码缓存 origin code 8 比较 判断密码是否正确 若 密码正确则将标志位 code right 1 若不正确则报警并使密码输入错误次数 13 wrong num 再判断错误次数是否已达 3 次 若是则程序进入死循环锁定 程序流程 图如图 16 所示 图 16 密码判断及报警流程图 接着介绍密码修改控制程序 当密码输入正确以后用户按下 密码修改键 就会进 入密码修改操作 单片机也就会运行密码修改程序 程序流程图如图 17 所示 code right 1 修改密码 保存新密码 新密码接收完毕 返回 N N N N Y Y Y Y 新密码确认完毕 两次密码相同 显示错误 输入密码 接收了 8 位键码 code right 1 密码是否正确 wrong num wrong num 3 错误警告 报警锁定 N N N Y Y Y 14 图 17 密码修改流程图 进入密码修改程序首先等待新密码的第一次输入 第一次输入的新密码放在接收缓 存 receive code 8 中 当输入完第八个密码后系统会提示再次输入密码 第二次输入的 新密码放在密码比较缓存 com code 8 中 第二次输入密码完成后就检验两次输入的新 密码是否相同 如果相同的话就更换密码 将新密码储存到 AT24C02 中 关键程序如下 void check code void if ir flag 1 flag 0 key data key match Beep ir flag 0 j 0 Beep 函数发 出按键声音 if show 1 flag 1 rec num if key data 18 跳到时钟模式 key data 99 delay LCM 10 LCM cls show 0 beep flag 0 rec num 0 k 1 15 if rec num 8 输入八个密码后密码检查 for j 7 j 0 j if origin code j receive code j 与原密码比较 wrong num if wrong num 1 delay LCM 1000 LCM cls delay LCM 1000 DisplayListChar 0 0 Input it again else if wrong num 2 delay LCM 1000 LCM cls delay LCM 1000 DisplayListChar 0 0 the last time else if wrong num 3 LCM cls DisplayListChar 0 0 Wrong DisplayListChar 0 1 Lock LED1 1 LED2 1 LED3 0 SPEAKER 0 3 次错误报警 delay LCM 10000 while 1 3 次错误进入死循环锁定 code right 0 rec num 0 return LCM cls DisplayListChar 0 0 密码正确 开锁成功 DisplayListChar 0 1 What You Want rec num 0 show 0 code right 1 密码正确标识位 void change code void 16 int i j if ir flag 1 key data key match flag 0 Beep ir flag 0 if code right 1 LCM cls DisplayListChar 0 0 Input new code new code1 1 修 II 改密码标识位 1 if new code1 1 rec num flag 1 if code right 1 LCM cls DisplayListChar 0 0 Input again rec num 0 new code2 1 修改密码标识位 2 new code1 0 if new code2 1 rec num flag 1 if code right 1 new code2 0 j 8 while j 判断两次输入是否一致 if com code j com1 code j delay LCM 10 LCM cls DisplayListChar 0 0 Not Match DisplayListChar 0 1 Press Change key delay LCM 200 return LCM cls for i 0 i 8 i 密码一致 开始修改密码 origin code i com code i DisplayListChar 0 0 New codes saved 修改密码成功 delay LCM 5000 wrong num 0 code right 0 ir flag 0 k 1 跳到时钟 return 4 2 3 时钟模式 一开始进入运行的是时钟模式 while 1 时钟部分程序 F1 DisplayListChar 0 0 DisplayListChar 0 1 DisplayListChar 6 0 0 0 18 DisplayListChar 3 1 write sfm 3 shi write sfm 6 fen write sfm 9 miao while 1 delay LCM 2000 DisplayListChar 6 0 if ir flag 1 key data key match ir flag 0 if key data 14 key data 99 goto F2 if key data 18 转入密码模式 beep flag 1 Beep key data 99 LCM cls delay LCM 10 DisplayListChar 0 0 Input The code show 1 beep flag 1 goto A1 miao if miao 60 miao 0 fen if fen 60 fen 0 shi if shi 24 shi 0 write sfm 3 shi write sfm 6 fen write sfm 9 miao F2 while 1 19 if ir flag 1 key data key match switch key data case 8 if shi 23 shi 0 else shi ir flag 0 write sfm 3 shi break case 9 if fen 59 fen 0 else fen ir flag 0 write sfm 6 fen break default DisplayListChar 6 0 ir flag 0 delay LCM 3000 DisplayListChar 6 0 0 break if key data 14 key data 99 goto F1 4 2 5 按键发声程序 如果有按键的话 就执行以下发声程序 Beep 靠定时器产生不同频率的声音 void Beep void int CurrentFre Temp T if key data 18 beep flag 1 SPEAKER 1 TR0 0 EA 1 if key data 99 查出对应音符的频率 Temp T 65536 50000 CurrentFre 10 12000000 SYSTEM OSC 计算计数器初值 Sound Temp TH0 Temp T 256 Sound Temp TL0 Temp T 256 TH0 Sound Temp TH0 TL0 Sound Temp TL0 12 加 12 是对中断延时的补偿 TR0 1 开计时中断 if key data 18 delay LCM 500 开机键响 0 5 秒 其它 0 2 秒 else delay LCM 200 TR0 0 关计时器 SPEAKER 1 void BeepTimer0 void interrupt 1 SPEAKER SPEAKER TH0 Sound Temp TH0 TL0 Sound Temp TL0 4 2 6 没操作响应 如果没有操作的话就开定时器 0 开始计时 5s 过后就返回时钟模式 在这段时间 20 之内只要有按键操作 就会关定时器 0 void No action void interrupt 3 if T 100 T TH1 0X3C TL1 0XB0 else rec num 0 k 1 T 0 TR1 0 5 功能分析及总结 5 1 功能分析 本系统顺利完成了输入正确密码开锁 出错报警 超次锁定 修改用户密码等基本 的密码锁功能 并且还能实现远距离遥控 掉电存储 声光提示 遥控器学习识别等功 能 完成后的实物图如图 19 所示 打开系统电源后程序初始化 LCD 提示输入遥控器识别 按键 同时等待红外接收头输出端的低电平 低电平出现说明遥控有键按下 外部中断 设定为下降沿触发 故单片机进入中断服务程序进行信号的接收解码 接收解码程序有 很好的抗干扰性 脉冲宽度的延时计数准确 能够识别重复信号 屏蔽多余按键避免误 操作 并且 32 位编码接收完毕后还要进行错误校验 所以整个接收解码的准确性非常 高 21 图 19 不带 LCD 的硬件实物图 当接收到识别按键后 单片机便可解码出相应的键码和该遥控器的用户码 组成该 遥控器的 ID 此 ID 是单片机识别不同遥控器的根据 单片机从 AT24C02 中查找相应 的 ID 如果此 ID 不存在 就会提示输入该遥控器其余键码的信息并保存到 AT24C02 相应的地址 如果 ID 存在 系统即进入电子密码锁模式 系统进入密码输入界面 每 输入一位密码 LCD 就显示 号 而且程序设有回格功能 删除上一位输入的密码 直到接收完八位的密码后就开始运行密码核对程序 若密码输入正确 就可以选择进行 开锁 上锁或修改密码的操作 并伴有 LED 灯显示 当密码输入错误的时候就会进入 密码输入提醒程序提醒错误次数 密码输入错误次数累积到 3 次时系统就会通过蜂鸣器 报警 而且程序进入死循环 系统被锁定 系统被锁定后无法通过遥控器解锁 只能够 按电子锁上面的复位键使整个程序复位 如果选择了密码修改操作 LCD 提示输入第一次新密码 接收完 8 位新密码后 保 存并 LCD 提示输入第二次新密码 两次新密码接收完毕后 进入密码比较程序 判断 两次输入的密码是否相同 若相同则把新密码保存到 origin code 中 由于没有外部存 储器 密码在下一次开机的时候还是原始密码 若不相同则 LCD 显示错误 程序返回 密码初始化 及遥控器 ID 清零按键 LCD 对比 度调节电阻 AT24C02 一体化红外接 收头 SM0038 STC89C51RC 复位键 LED 灯指示 22 5 2 C 语言编程的延时技巧 编写单片机程序的时候 经常会遇到需要短时间延时的情况 如本系统红外接收解 码的时候就需要用到精确的 100us 的短时间延时来确保接收解码的准确性 有时甚至还 需要更高的精度 C 语言不像汇编一样可以计算指令运行所要的时间 所以 C 语言的定 时是 C 语言编写单片机程序最大的一个缺陷 当然可以在 C 里嵌入汇编来解决这个问题 但在这里我没有使用这个方法 还有可以考虑用定时器 但进出中断程序以及重新装载 计数初值也是要耗费一些时间的 也很难精确定时到微秒级 而且在极端的情况下 计 时器甚至已经全部有其它的用途 所以在这里使用了循环计时的方式计时 用断点的方 式来调试 Keil uVision2 编译器有程序调试的功能 通过调试本系统成功地只用 C51 语言产生精确的定时 编写 100us 的延时程序 程序如下 void delay 100us void unsigned char i 48 while i 首先在 Keil uVision2 上编译上面的程序 并打开其汇编代码 如图 20 所示然后进 入 Keil uVision2 的调试状态 在延时子程序的开始和结束处设下两个断点 见图中的 两个红点 红点之间的程序就是所调试的延时程序 接着把项目所用的晶振设为 12M 这与硬件电路相对应 按运行后程序运行到断点 1 时所用的时间为 0 000616 秒 图 20 第一个断点调试图 第 1 个断点 到第 1 个 断点用时 23 再次按运行又可以从图 21 中看到运行到断点 2 所用的时间是 0 000717 秒 两时间 相减是 0 000101 秒 就是说延时程序的运行时间是 101us 与理想值只差 1us 延时十 分精确 图 21 第二个断点调试图 5 3 本设计优缺点 红外技术是一门相当成熟的技术 而单片机技术也有着相当长的一段发展时间 本 系统把两门技术结合起来 发挥各自的优点 使红外技术应用在单片机控制的电子密码 锁上 也就是利用红外遥控实现密码锁的开锁 上锁和修改密码的操作 这样的结合使 密码锁的使用更加方便 安全性能得到进一步的提高 本系统的遥控器使用的是家电遥 控中使用得最多的专用芯片 所以抗干扰能力比较强 而且十分准确可靠 误码率很低 本系统还具有学习识别 NEC 编码遥控器的功能 可以实现多对一操作 不同的遥控器 采用相同的密码 不用担心遥控器遗失的问题 而且用户可以经常更改密码 防止密码 被盗 当输入密码多次错误时 报警系统自动启动 接收部分用单片机作为主芯片 可 以根据不同要求来修改设定不同的密码位数或改变 增添一些新功能 这是使用专用的 密码锁芯片和以前的机械密码锁都不能做到的 而且本系统既可以室内使用 也可以在 野外使用 但是红外射束易受尘埃 雨水等物质的吸收 易受气候的影响 在恶劣的环境使用 出现故障的机率会大大的提高 而且本系统的最大一个技术缺陷是密码在发送过程中无 到第 2 个 断点用时 第 2 个断点 24 法避免通过监测反射的红外线和滤除环境噪声的窃听 这也是红外通讯的最大的缺点 还有就是由于红外遥控编码的调制方式有很多种 编码格式也各不相同 所以要对 各种形式的遥控器进行学习就存在着一定的难度 最常用的学习红外编码的方法也就是 记录下编码的所有高低电平时间 这种方式能实现对大部分的遥控器进行学习 不过这 样需要大量的存储空间 尤其是空调的遥控器 空调遥控器的编码包含很多的信息 编 码特别长 因此本系统只针对最常用的 NEC 编码格式的遥控器进行学习与识别 舍弃 其它编码 这样的优点是专用性强 解码的准确率高 缺点是并不是所有编码格式的遥 控器都能学习 有一定的局限性 5 4 设计总结 本次的课程设计过程中 Proteus 仿真软件中都是没有此类硬件的 只能放弃仿真 由于电烙铁不好用 所一制作了很久 用 keil 写程

温馨提示

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

评论

0/150

提交评论