基于红外遥控的智能插座课程设计报告书.docx
南昌大学课程设计报告书课 程 设 计 报 告 书基于红外遥控的智能插座学院: 信息工程学院 班级: 自动化121班 姓名: 肖庆 学号: 6100312241 目录概述1完成目标2主要元器件2工作原理2程序代码5参考资料10心得体会10附页:12原理图12飞线图12PCB图1313基于红外遥控的智能插座概述随着电器产品待机能耗的迅速增长,家庭和社会付出了太多的代价,中国节能认证中心对家庭待机能耗做过的调查显示,待机能耗占到家庭电力消耗的10%左右,仅以电视机为例,平均每台电视机的待机能耗是8.07W,按每天待机2小时大约耗电0.016度。待机能耗引起的资源和环境问题越来越受到社会的广泛关注,为此国际能源署提出了“1瓦计划”,到2010年实施1瓦的待机能耗行动。该计划得到欧盟和美国的积极响应,并签署协议承诺逐年降低待机能耗,各国相继推行了强制性法规(例如2003年欧盟委员会正式启动了“欧洲理智能源计划”,2005年6月欧盟发表了关于能源效率的绿皮书,2006年美国实施了“白标机制”等)。智能开关插座因其方便节能,受到了国外消费者的广泛欢迎,目前智能开关插座正在成为新节能产品的研究热点。红外遥控节能开关插座是采用欧盟技术标准设计的针对电视机的一款智能开关插座,本文阐述了红外节能开关插座的硬件电路设计、软件算法设计,以及对产品进行的白/黑盒定型测试,给出了自动开关插座的设计和定型方案,消费者利用它可以对家中一些需要不断开关的电器进行自动断电控制,而不需要拔掉插头。完成目标1. 红外遥控控制开关通断。2. 设定定时时间,到达时间后自动切换电路状态。3. 液晶显示当前时间日期。主要元器件220V12V变压器,二极管,发光二极管,电容,7805稳压芯片,STC89C52,晶振,1602液晶显示屏,继电器,插座等。工作原理继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。因为继电器需要比较大的电流才能产生足够的磁场。交流电经过二极管整流之后,方向单一了,但是大小(电流强度)还是处在不断地变化之中。这种脉动直流一般是不能直接用来给无线电装供电的。要把脉动直流变成波形平滑的直流,还需要再做一番“填平取齐”的工作,这便是滤波。换句话说,滤波的任务,就是把整流器输出电压中的波动成分尽可能地减小,改造成接近恒稳的直流电。以下要介绍的是由NEC开发的NEC红外协议。这与在网络上流行一种名为日本格式的协议非常相近,其实就是这个协议。特征| 8位地址码,8位命令码| 完整发射两次地址码和命令码,以提高可靠性| 脉冲时间长短调制方式| 38KHz载波频率| 位时间1.12ms或2.25ms 调制 NEC协议根据脉冲时间长短解码。每个脉冲为560us长的38KHz载波(约21个载波周期)。逻辑”1”脉冲时间为2.25ms,逻辑”0”脉冲时间为1.12ms。推荐的载波周期为1/4或者1/3。协议 上图所示为NEC协议的典型脉冲链。协议规定低位首先发送,如上图所示的情况,发送的地址码为”59”,命令码为”16”。每次发送的信息首先是用于调整红外接收器增益的9ms AGC(自动增益控制)高电平脉冲,接着是4.5ms的低电平,接下来便是地址码和命令码。地址码和命令码发送两次,第二次发送的是反码 (如:1111 0000的反码为0000 1111),用于验证接收的信息的准确性。因为每位都发送一次它的反码,所以总体的发送时间是恒定的(即每次发送时,无论是1或0,发送的时间都是它及它反码发送时间总和)。这种以发送反码验证可靠性的手段,如果你不在意,则你可以忽略它,或者是扩展你的地址码和命令码为16位,这样就可以扩展整个系统的命令容量。尽管一直按住那个按键,一串信息只能发送一次。如果一直按着按键,发送的则是以110ms为周期的重复码,重复码是由9ms的AGC高电平和4.5ms的低电平及一个560us的高电平组成。51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。此课程设计运用51单片机做主控芯片,设定定时器,处理红外信号,控制继电器工作等。利用红外遥控设定一个时间,当单片机定时器运行到这个时间后,自动切换电路状态,从而实现电路通断。流程如图:开始红外信号扫描N 1秒定时器Y设定时间达到设定时间NY切断电路程序代码#include<reg52.h>#include"define.h"#include"infrared.h"#include"lcd.h"#include"fun.h"uchar code table="2014-06-25 wen"uchar code table1="00:00:00"uint count=0,miao,fen;uint time_fen=0,time_miao=0;bit settime_flag=0;bit start=0;void T0init(void)/定时器0初始化 TMOD=0x12;/定时器0工作方式2,TH0是重装值,TL0是初值 TH0=0x00; /重载值 TL0=0x00; /初始化值 PT0=0; ET0=1; /开中断 TR0=1; /*- 外部中断0初始化-*/void EX0init(void) IT0 = 1; /指定外部中断0下降沿触发,INT0 (P3.2) EX0 = 1; /使能外部中断 EA = 1; /开总中断/*- 定时器0中断处理-*/void tim0_isr (void) interrupt 1 using 1 irtime+; /用于计数2个下降沿之间的时间/*- 外部中断0中断处理-*/void EX0_ISR (void) interrupt 0 /外部中断0服务函数 static unsigned char i; /接收红外信号处理 static bit startflag; /是否开始处理标志位if(startflag) if(irtime<63&&irtime>=33)/引导码 TC9012的头码,9ms+4.5ms i=0; irdatai=irtime;/存储每个电平的持续时间,用于以后判断是0还是1 irtime=0; i+; if(i=33) irok=1; i=0; elseirtime=0;startflag=1;/*- 红外码值处理-*/void Ircordpro(void)/红外码值处理函数 unsigned char i, j, k; unsigned char cord,value; k=1; for(i=0;i<4;i+) /处理4个字节 for(j=1;j<=8;j+) /处理1个字节8位 cord=irdatak; if(cord>7)/大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差 value|=0x80; if(j<8) value>>=1; k+; IRcordi=value; value=0; irpro_ok=1;/处理完毕标志位置1int get_value()return IRcord2;void T1init()TMOD|=0x12;TH1=(65536-45872)/256; /重载值 TL1=(65536-45872)%256; /初始化值PT1=1; ET1=1; /开中断 TR1=1;void main()uchar num;RW=0;SIGN=0;/保证电路初始状态通路T1init();T0init();EX0init();lcd_init();write_com(0x80);for(num=0;num<14;num+)write_data(tablenum);delay(5);write_com(0x80+0x40+2);for(num=0;num<8;num+)write_data(table1num);delay(5);while(1) if(irok) Ircordpro(); /红外码值处理irok=0; if(irpro_ok) switch(get_value()/判断第三个数码值 case 0x0c:set_time();break; /设定时间标志位 定时功能开启 case 0x18:if(settime_flag=1)fen+;time_fen=fen;break;/设定分+ case 0x5e:if(settime_flag=1)fen-;time_fen=fen;break;/设定分- case 0x08:; break; case 0x1c:;break; case 0x5a:;break; case 0x42:LED1=LED1;break; case 0x52:SIGN=0;break;/按键8 电路断开 case 0x4a:SIGN=1;break;/按键9 电路闭合 default:break; irpro_ok=0;/处理完成标志 if(time_fen=fen&&start) start=0; SIGN=1; /继电器断开 fen=0; miao=0; time_fen=0; write_sfm(10,time_fen); write_com(0x80+0x40+10); write_sfm(7,miao); write_com(0x80+0x40+7); write_sfm(4,fen); write_com(0x80+0x40+4);void tim1_isr() interrupt 3TH1=(65536-45872)/256; /重载值 TL1=(65536-45872)%256; /初始化值count+;if(count=20) count=0;miao+;LED0=LED0;if(miao=60) miao=0;fen+; 参考资料1魏宁宇. 基于AT89S52单片机控制的电器定时插座的设计J. 信息通信,2012,03:66.2汪国坚. 浅谈51单片机在红外遥控器系统中的应用J. 科技资讯,2011,16:128.心得体会制作这块板子可算是困难重重,要熟悉altium designer 制板软件的使用,画封装,原理图,最后生成PCB板,一步一步不可马虎,还有给单片机写程序,设置定时器寄存器时出现了一些问题,查了好久才把问题找出来解决了,每做一步都很小心。在调试电路板的时候,忽略了单片机引脚输出电流比较小等问题,导致不能使三极管处于正常饱和区,不能提供足够大的电流,进而导致继电器无法正常工作。这是设计电路时考虑欠佳。此次课程设计,我学会了做事要细心,不懂的要多问,从原理到最终实物,每个环节都可能出错,只要一出错,电路功能就不能实现。调试电路要有耐心,如果出现问题,有可能是线路问题,有可能是程序问题,这就需要时间去一一排查,虽然比较繁琐,但结果还是挺令人满意的,在调试过程中,能学会在制作实物的过程中到底是哪个环节出问题,是什么原因造成的,避免此类错误再犯。在制作实物的过程中,我意识到自身基础知识严重缺乏,书本上的知识运用不到实际中来,所以在今后的学习中,要扎实基础,碰到问题也就能迎刃而解了,多实践,积累丰富的动手实践能力,培养对电子设计制作的热情与喜爱。附页:原理图飞线图PCB图