关于利用单片机实现密码锁的红外遥控功能的几点思考
2014-10-20裴宇
裴宇
摘 要:设计了一种利用51单片机作为主控芯片的红外密码遥控锁,采用uPD6122G红外编码发射芯片和SM0038一体化红外接收芯片实现编码发送与接收,系统采用C51编程实现,给出了软件流程图,对此类产品开发具有一定借鉴意义。
关键词:单片机;红外;密码锁
密码锁在人们的日常工作生活中具有重要的意义,尤其是企业、政府机关和军队等重要部门的应用更为广泛,随着人们生活水平的提高,密码锁也渐渐走入了家庭。目前而言,大部分人使用的还是传统的机械锁。传统的机械锁由于其构造的简单,被撬的事件屡见不鲜。为此,设计具有防盗报警功能的电子密码锁来代替传统的机械式密码锁可以有效提高密码锁的安全系数,具有广阔的应用前景。
1 系统硬件设计
设备开发,不仅要考虑功能性,还要考虑实用性和设计成本,本系统整体框图如图1所示,系统分为两部分,发射部分和接收部分,发射部分负责发射红外开锁、关锁指令,接收部分主要负责执行指令及参数设置。
图1 系统整体框图
发射部分由按键、红外线遥控编码芯片及其外围电路组成。uPD6122G是红外线遥控编码专用芯片,其内部已经集成了按键检测、处理和红外编码模块,而且无须编程,使用十分方便,并且增强了抗干扰能力。
接收部分主控芯片采用控制功能强、价格低廉、应用广泛的51单片机,具体型号为ATMEL公司的AT89S52,该单片机内部具有8K字节Flash存储器,满足系统程序要求,而且支持在线编程,可反复擦写1000次以上,方便系统开发。一体化红外接收头选用SM0038,该芯片集信号放大、滤波、检波、整形于一体,电路内置PIN二极管和前置放大器,采用可以红外滤波的环氧树脂材料封装,可靠性高,不易受环境影响并可以防止非控制信号的输出脉冲出现。SM0038内置带通滤波器、积分器、和自动增益控制电路以抑制各种干扰和噪音。
2 软件设计
2.1 编程语言选择
目前,对单片机的编程主要采用汇编和C语言。汇编语言有执行效率高、速度快、与硬件结合紧密等特点。尤其在进行I/O端口管理时,使用汇编语言有快捷、直观的优点。但是使用汇编语言相对于使用高级语言编程难度要大一些,且程序可读性低,开放性差,从系统开发时间来看,效率不是很高。
C语言是一种结构化语言,可产生紧凑代码。C语言可以用许多机器级函数直接控制操作8051硬件。与汇编语言相比,C语言有如下的优点:
·不要求了解单片机的指令系统,仅要求对8051的存储结构有初步了解;
·寄存器分配,不同存储器的寻址及数据类型等细节可由编译器管理;
·程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;
·具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;
·关键字及运算符可用近似人的思维方式使用;
·编程及程序调试时间显著缩短,从而提高效率;
·提供的库包含许多标准子程序,具有较强的数据处理能力;
·已编好的程序可容易地植入新程序,因为它具有方便的模块化编程技术。
·鉴于C语言编程的以上优点,本系统均采用C51语言编写。
2.2 主要程序说明及流程图
主程序首先是初始化程序,然后就等待红外接收头输出端的低电平,低电平出现说明遥控有键按下,外部中断设定为下降沿触发,故单片机进入中断服务程序进行信号的接收解码。当接收到遥控器识别按键时,单片机查找并判断此遥控器ID是否已存在。当ID不存在时,系统进入遥控器学习模式,保存新ID及其键码;当遥控器ID已存在时,系统进入密码输入界面,并且接收到八位的密码以后就开始运行密码核对程序,当密码输入正确后,就可以进行开锁、上锁或修改密码的操作。当密码输入错误的时候就会进入密码输入提醒程序提醒用户重新输入密码,密码输入累积到3次时系统会报警并锁定。软件流程图如图2所示。
图2 系统软件流程图
3 小结
本系统设计通过具有防盗报警功能的红外线遥控电子密码锁来代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点。而且还添加了红外遥控、遥控器学习识别和LCD显示等功能,可以实现远距离开关锁、修改密码等,系统灵活性强,操作简单直观、使用非常方便。