视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于红外遥控的门禁系统
2025-09-26 10:53:25 责编:小OO
文档


电子设计大赛之

“duang片机,给生活加特技”

题目:红外遥控开门

 

红外遥控开门

一、选题背景

华工北校宿舍的们是没有外置门把的,每次同学来敲门都要走到门口开房门,非常麻烦,如果出门忘记带钥匙就没办法从外面打开门。因此,使用红外遥控开门就能很方便实现门的自动开启。本课题要求使用红外遥控器控制来控制步进电机的转动,从而达到开门效果。通过51单片机设定密码锁,并对红外遥控器的信号进行解码,输入正确密码时可以开锁。主要是需要实现单片机最小电路的设计,红外接收电路的设计,步进电机驱动电路的设计以及液晶显示模块的电路设计等。

二、方案论证

2.1设计题目要求 

制作红外遥控开门装置,使得开关门可以通过红外遥控器控制步进电机转动来控制。

(1)当用上遥控器上锁后,需输入相应的开门密码,单片机判断后,若正确,蜂鸣器发出“滴滴”,代表开门,若错误,蜂鸣器发出较快的“滴滴滴滴”。

(2)在下次用遥控器上锁之前,直接按开门键即可开门。

(3)单片机断电之后,所设密码不会丢失。

(4)实现修改密码功能:以原密码修改旧密码,或者有更高层的密码可直接修改旧密码(类似于安全码)。

(5)平时不用时,单片机处于休眠模式(降低功耗),但接收到遥控器的消息后,单片机进入工作模式。

2.2方案设计与论证

2.2.1设计思路

单片机最小系统部分:设计使单片机运行起来的最小系统,控制外围电路;

红外信号解码部分:设计红外接收电路,与单片机连接,并编写解码程序利用单片机对红外信号进行解码;

显示部分:设计液晶与单片机连接的接口电路,编写控制液晶显示的程序,将开门过程的信息实时显示在液晶屏上;

报警部分:由单片机控制外围的蜂鸣器,当密码输入正确是,输出方波使其发出“滴滴”声,输入错误时,则发出较快“滴滴滴滴”;

电机驱动部分:设计步进电机驱动电路,当按下开门键时,由单片机控制其转;

信息保存部分:利用单片机内部自带的EEPROM,将密码实时写入EEPROM中,重新执行程序时从EEPROM中读取密码数据,实现掉电保存。

2.2.2设计方案论证与比较

(1)红外遥控电路:

方案一:使用红外发射管与红外接收管组合

红外发射管与接收管组合硬件电路简单,制作简便;但是需要外加电路对信号进行调制,增加按键电路,同时接收效率不高,难以实现题目要求

方案二:使用红外遥控器与红外一体接收管1838

红外遥控器内置调制电路,按下某个按键即发射出特定的调制信号,信号稳定,且传输效率高;红外一体接收管1838对红外遥控器发射的信号进行解调,并转换为数字信号输出到输出管脚,利用单片机可以很方便地对信号进行解码,同时外围电路设计简单。

综上所述,选择方案二。

(2)显示模块

方案一:使用LCD128液晶进行显示

LCD128是一款常用的中文图形点阵液晶,128x点阵,内含中文字库,可以显示SCAII码跟中文,同时,硬件电路简单,支持并行与串行操作时序,当使用串行操作时,只需要少量IO口便能进行控制,由单片机进行控制时需要遵守读写时序,能比较详细显示程序运行过程的信息。

方案二:是用移位寄存器74HC595与数码管配合显示

74HC595是一种8位串行输入,8位串行输入或并行输出的三态移位寄存器,利用74HC595可以大量节省单片机的IO口资源,实现对外数据的传输;数码管是多个发光二极管组成的“8”字形器件,通过8根管脚来控制内部对应二极管的亮与灭。但是数码管只能显示数字,且外围接口电路复杂,显示多位数字时需要不停进行动态扫描,显示效果单一。

综上所述,选择方案一。

(3)掉电保存模块

方案一:使用AT24C02作为外部ROM

AT24C02是一个串行的E2PROM,内部含256个8位字节,通过I2C总线进行操作,数据保密性好,能保存100年,操作简便,外部接口电路简单,需要遵守I2C协议与单片机进行通讯,能对单片机数据进行保存。

方案二:使用STC12C5A60S2内部自带的E2PROM

STC12C5A60S2将内部的Data Flash当做E2PROM,擦写次数达10万次以上,并且内部拥有相应的控制寄存器,可以很方便对程序执行过程中的数据进行保存,执行速度快,指令操作简单,不需要添加外围元件即能实现对数据的保存。

综上所述,选择方案二。

2.3方案框图

三、硬件电路论述

3.1最小系统电路

图1 单片机最小系统电路

51单片机是一块芯片,单独时没办法进行工作。使得单片机能顺利工作的最少外围电路合称为最小系统,包括电源滤波模块,复位电路模块,时钟电路模块等。

3.1.1滤波电路

由于平时使用的5V电源并不是完全是直流成分,其中还包含了交流信号部分,为了剔除这部分噪声,在电源正极与负极之间并联了两个电容,其中104小电容可滤除高频信号,10uF电容可滤除低频信号,保证了流入单片机的电流基本上为直流电。

此外,在滤波电路旁并联一个LED,作为电源指示灯。其中1K电阻起到限流作用,防止LED被烧毁。

3.1.2复位电路                                           图2 滤波电路

程序在运行过程中,难免会发生错误,导致程序失控。此时通过一个复位按钮让程序从头开始执行,就能有效解决这个问题。51单片机有一个专门的复位管脚,当给管脚送一个高电平时,单片机就能复位,从头开始执行程序。

当电路稳定时,由于电容的隔直作用,RST引脚通过10K电阻接到低电平,不发生复位。当按下按键开关时,RST引脚瞬间变为高电平,芯片复位。

3.1.3时钟电路                                            图3 复位电路

51单片机工作的时候需要一个精准的时钟信号,根据这个信号执行指令,通过外接一个晶振与两个电容,与内部电路构成一个振荡器为芯片提供一个高频的时钟信号。其中,晶振的频率决定了单片机工作速度的快慢。

图4 时钟电路

3.2红外接收电路

                     图5 红外接收电路

红外一体接收头1838将红外遥控器发射的红外信号进行解调生成数字信号,并通过输出引脚OUT输出到单片机中。

3.3液晶显示电路

LCD128第三管脚用于设置对比度,通过改变10K电位器103的阻值就能实现对比度调节。PSB为时序选择端,接高电平时选择串行操作时序。RST为复位脚,低电平有效,此项目不需要复位功能,故接高电平。19与20 引脚分别是背光灯的正负极,正极的供电通过三极管9012来控制供电,单片机控制BG_VCC输出0时,三极管导通给背光灯供电,输出1时三极管截至,背光灯熄灭。

CS,SID,CLK则为液晶的控制引脚,直接由单片机IO口控制;CS为串行片选信号,置高电平选中芯片;SID为数据口,通过该管脚接受单片机的数据与指令;CLK为串行时钟,时钟信号由单片机产生。                图6 液晶接口电路 

控制时需要严格遵守时序图,串行时序图如下:

图7 串行操作时序图

数据传送分为3个字节:

第一字节——串口控制

RW位为1时表示数据从LCD到MCU,RW位为0时表示数据从MCU到LCD

RS位为1时表示数据为显示数据,RS位为0时表示数据为控制指令

第二字节——D7到D4表示数据字节的高四位

第二字节——D3到D0表示数据字节的低四位

具体工作时序的操作:

(1)将CS拉高选中LCD;

(2)将SCLK拉低,允许修改SID上的数据,为产生上升沿做准备;

(3)在SCLK为低电平期间修改SID的数据;

(4)将SCLK拉高,产生上升沿,LCD将SID上的数据读入;

(5)重复2到4步骤,直到24位数据传输完毕;

(6)将CS拉低取消选中。

 3.4步进电机驱动电路

    步进电机需要的驱动电流比较大,单片机无法直接驱动,因此选择ULN2003达林顿管来增大驱动电流,同时另外增加供电电压,使步进电机顺利转动。

                                            图8 步进电机驱动电路

四、整机电路

图9 整机电路图

五、软件原理论述

5.1红外解码程序

红外遥控器使用的是TC9012是一款专用红外发射集成电路,TC9012 的一帧数据中含有 32 位码,包含两次 8 位用户码, 8 位数据码和 8 位数据码的反码及最后位的同步位。引导码由 4.5ms 的载波和 4.5ms 的载波关断波形所构成,以作为用户码、数据码以及他们的反码的先导。

“ 1”和“ 0”的区分取决于脉冲之间的时间,称之为脉冲位置调制方式。

发射码格式与数据参数如下图所示:

图10 TC9012发射码格式

图11 数据参数示意图

    数据解码过程用到了单片机内部资源的外部中断与定时器中断,采用单片机外部中断的下降沿触发,识别非常灵敏,可以准确捕捉每个跳变信号;同时,使用8位定时器自动重装模式,准确计算出脉冲信号的持续时间,从而得到红外信号数据。

    具体操作过程:

(1)接收到下降沿信号时计算是否为9ms,若是,则认为是启动信号;

(2)依次接收数据线上的32为数据,将其数据参数暂时存入数组中,等到数据接收完毕,接收标志位置1;

(3)接收标志位为1时,启动数据转换,将32位数据合为4字节数据,存入数组中;

(4)判断第三字节与第四字节是否互为反码,是则认为数据接收正确

(5)将数据码返回给调用函数。

5.2单片机内部E2PROM操作程序

STC12C5A60S2系列单片机内部集成了的EEPROM是与程序空间是分开的,利用ISP/IAP技术可将内部Data Flash当EEPROM,擦写次数在10万次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。在用户程序中,可以对EEPROM进行字节读/字节编程/扇区擦除操作。数据存储器的擦除操作是按扇区进行的。

单片机内部的E2PROM有专门的寄存器对其进行管理,包括数据寄存器IAP_DATA、地址寄存器IAP_ADDRH和IAP_ADDRL、命令寄存器IAP_CMD、命令触发寄存器IAP_TRIG、命令寄存器IAP_CONTR,具体地址如下图所示:

    

图12 与E2PROM相关的寄存器

(1)IAP_DATA : ISP/IAP操作时的数据寄存器。

ISP/IAP 从Flash读出的数据放在此处,向Flash写的数据也需放在此处

(2)IAP_ADDRH : ISP/IAP 操作时的地址寄存器高八位。

IAP_ADDRL : ISP/IAP 操作时的地址寄存器低八位。

(3)IAP_CMD模式选择:

图13 模式选择相关位

(4)IAP_TRIG: 在IAPEN(IAP_CONTR.7) = 1 时,对IAP_TRIG先写入5Ah,再写入    A5h,ISP/IAP 命令才会生效。

(5)命令寄存器IAP_CONTR:

IAPEN: ISP/IAP功能允许位。 

0:禁止IAP读/写/擦除Data Flash/EEPROM

1: 允许IAP读/写/擦除Data Flash/EEPROM

SWBS: 软件选择从用户应用程序区启动(送0),还是从系统ISP监控程序区启动ISP监控程序区启动监控程序区启动程序区启动(送1)。

要与SWRST直接配合才可以实现

SWRST: 0: 不操作; 1: 产生软件系统复位,硬件自动复位。

CMD_FAIL: 如果送了 ISP/IAP命令,并对IAP_TRIG送5Ah/A5h触发失败,则为1,需由软件清零

图14 等待时间设置表

具体操作过程:

(1)操作控制寄存器,使能IAP功能,设置CPU等待时间;

(2)关闭中断,防止中断打扰数据写入或读出;

(3)向命令寄存器写入操作命令,若为写指令,还需向数据寄存器写入数据;

(4)向地址寄存器写入要操作的地址;

(5)向触发寄存器写入触发命令5AH和A5H;

(6)关闭    IAP功能,若为读指令,则将数据返回。

六、总结

经过了半个月的努力,编程序,调试电路,组合测试以及写论文,总算将这个比赛项目做完了。在不落下功课的情况下争分夺秒地完成赛题确实很不容易,但是最后的成果出来了,基本的功能也都实现了,虽然创新方面做得不足,但也是蛮高兴的。

刚开始赛题发布的时候,看到ABC三个赛题,心里不会完全不知道从哪开始,因为寒假在家里学过单片机,赛题基本跟协会布置的作业很相近。所以有了较大的信心,代码以前写过有一些可以直接移植就比较方便。当然,问题还是不少,主要是在密码锁这部分内容比较难以控制,以前写过的程序因为使用了大量的goto语句导致可读性很差,难以重新使用,所以此次就严格控制goto的使用,在编写程序的同时用注释分隔开,达到了较好的可读性。因为调试电路时做得比较仔细,所以焊接部分做得比较快,功能也都能实现。

然后就是写论文部分,因为以前没有接触过论文的写法,格式都不懂,写起来就挺费劲的,而且还要自己学习绘制电路图,这就需要借助Altium Designer,但又没学过,因此就只能从头学起,画画电路图还好,但是PCB就没办法弄了,而且元件库还是网上下载的,所以,这方面以后还要好好学学。除此之外,还要查阅其他的相关资料,力求用简洁的语言表述自己的电路方案也不容易。

通过此次比赛,我更加了解到,学习电设真的不是一样容易的事情,除了要学得多,还得要能很好地表达自己,在遇到不懂的知识要学会如何查阅获取资料,并且需要耐心,制作过程中需要很细心,一点都不能马虎,否则可能就会前功尽弃,而且要尽可能在实验前找到错误所在,增加项目的成功几率。

感谢协会能举办这次活动,每次活动都会让自己有意想不到的收获,希望以后继续努力下去,不断提高自己的实践能力。

参考文献

[1]郭天祥.  新概念51单片机C语言教程:入门、提高、开发、拓展.  北京:电子工业出版社,2009

[2]数据手册http://www.alldatasheet.com/ 下载本文

显示全文
专题