您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于红外遥控的门禁系统
电子设计大赛之“duang片机,给生活加特技”题目:红外遥控开门红外遥控开门一、选题背景华工北校宿舍的们是没有外置门把的,每次同学来敲门都要走到门口开房门,非常麻烦,如果出门忘记带钥匙就没办法从外面打开门。因此,使用红外遥控开门就能很方便实现门的自动开启。本课题要求使用红外遥控器控制来控制步进电机的转动,从而达到开门效果。通过51单片机设定密码锁,并对红外遥控器的信号进行解码,输入正确密码时可以开锁。主要是需要实现单片机最小电路的设计,红外接收电路的设计,步进电机驱动电路的设计以及液晶显示模块的电路设计等。二、方案论证2.1设计题目要求制作红外遥控开门装置,使得开关门可以通过红外遥控器控制步进电机转动来控制。(1)当用上遥控器上锁后,需输入相应的开门密码,单片机判断后,若正确,蜂鸣器发出“滴滴”,代表开门,若错误,蜂鸣器发出较快的“滴滴滴滴”。(2)在下次用遥控器上锁之前,直接按开门键即可开门。(3)单片机断电之后,所设密码不会丢失。(4)实现修改密码功能:以原密码修改旧密码,或者有更高层的密码可直接修改旧密码(类似于安全码)。(5)平时不用时,单片机处于休眠模式(降低功耗),但接收到遥控器的消息后,单片机进入工作模式。2.2方案设计与论证2.2.1设计思路单片机最小系统部分:设计使单片机运行起来的最小系统,控制外围电路;红外信号解码部分:设计红外接收电路,与单片机连接,并编写解码程序利用单片机对红外信号进行解码;显示部分:设计液晶与单片机连接的接口电路,编写控制液晶显示的程序,将开门过程的信息实时显示在液晶屏上;报警部分:由单片机控制外围的蜂鸣器,当密码输入正确是,输出方波使其发出“滴滴”声,输入错误时,则发出较快“滴滴滴滴”;电机驱动部分:设计步进电机驱动电路,当按下开门键时,由单片机控制其转;信息保存部分:利用单片机内部自带的EEPROM,将密码实时写入EEPROM中,重新执行程序时从EEPROM中读取密码数据,实现掉电保存。2.2.2设计方案论证与比较(1)红外遥控电路:方案一:使用红外发射管与红外接收管组合红外发射管与接收管组合硬件电路简单,制作简便;但是需要外加电路对信号进行调制,增加按键电路,同时接收效率不高,难以实现题目要求方案二:使用红外遥控器与红外一体接收管1838红外遥控器内置调制电路,按下某个按键即发射出特定的调制信号,信号稳定,且传输效率高;红外一体接收管1838对红外遥控器发射的信号进行解调,并转换为数字信号输出到输出管脚,利用单片机可以很方便地对信号进行解码,同时外围电路设计简单。综上所述,选择方案二。(2)显示模块方案一:使用LCD12864液晶进行显示LCD12864是一款常用的中文图形点阵液晶,128x64点阵,内含中文字库,可以显示SCAII码跟中文,同时,硬件电路简单,支持并行与串行操作时序,当使用串行操作时,只需要少量IO口便能进行控制,由单片机进行控制时需要遵守读写时序,能比较详细显示程序运行过程的信息。方案二:是用移位寄存器74HC595与数码管配合显示74HC595是一种8位串行输入,8位串行输入或并行输出的三态移位寄存器,利用74HC595可以大量节省单片机的IO口资源,实现对外数据的传输;数码管是多个发光二极管组成的“8”字形器件,通过8根管脚来控制内部对应二极管的亮与灭。但是数码管只能显示数字,且外围接口电路复杂,显示多位数字时需要不停进行动态扫描,显示效果单一。综上所述,选择方案一。(3)掉电保存模块方案一:使用AT24C02作为外部ROMAT24C02是一个串行的E2PROM,内部含256个8位字节,通过I2C总线进行操作,数据保密性好,能保存100年,操作简便,外部接口电路简单,需要遵守I2C协议与单片机进行通讯,能对单片机数据进行保存。方案二:使用STC12C5A60S2内部自带的E2PROMSTC12C5A60S2将内部的DataFlash当做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液晶显示电路LCD12864第三管脚用于设置对比度,通过改变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到LCDRS位为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”的区分取决于脉冲之间的时间,称之为脉冲位置调制方式。发射码格式与数据参数如下图所示:图10TC9012发射码格式图11数据参数示意图数据解码过程用到了单片机内部资源的外部中断与定时器中断,采用单片机外部中断的下降沿触发,识别非常灵敏,可以准确捕捉每个跳变信号;同时,使用8位定时器自动重装模式,准确计算出脉冲信号的持续时间,从而得到红外信号数据。具体操作过程:(1)接收到下降沿信号时计算是否为9ms,若是,则认为是启动信号;(2)依次接收数据线上的32为数据,将其数据参数暂时存入数组中,等到数据接收完毕,接收标志位置1;(3)接收标志位为1时,启动数据转换,将32位数据合为4字节数据,存入数组中;(4)判断第三字节与第四字节是否互为反码,是则认为数据接收正确(5)将数据码返回给调用函数。5.2单片机内部E2PROM操作程序STC12C5A60S2系列单片机内部集成了的EEPROM是与程序空间是分开的,利用ISP/IAP技术可将内部DataFlash当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读/写/擦除DataFlash/EEPROM1:允许IAP读/写/擦除DataFlash/EEPROMSWBS:软件选择从用户应用程序区启动(送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的使用,在编写程序的同时用注释分隔开,达到了较好的可读性。因为调试电路时做得比较仔细,所以焊接部分做得比较快,功能也都能实现。然后就是写论文部分,因为以前没有接触过论文的写法,格式都不懂,写
本文标题:基于红外遥控的门禁系统
链接地址:https://www.777doc.com/doc-2537137 .html