基于51单片机红外遥控定时开关智能家电插座设计

1、系统功能介绍

  • 系统构成:

    • 本系统由STC8C52单片机电路+时钟DS1302电路+LCD1602液晶显示电路+按键电路+继电器控制电路+蜂鸣器报警电路+红外传感器电路+电源电路组成。
  • 系统功能:

    • 1、DS1302时钟芯片,准确计时,自带3V纽扣电池,当系统掉电后,纽扣电池供电给时钟芯片继续工作,再次上电无需重新设置时间。
    • 2、LCD1602液晶可以显示时、分、秒、星期、年、月、日。
    • 3、可以设置5个开关开的时间和5个开关关的时间,每一个时间都可以单独设置成是否工作有效(Y/N),设定的时间并具有掉电保存功能,保存在STC单片机的内部,上电无需重新设置。
    • 4、继电器吸合指示灯亮实现开关开,继电器断开指示灯灭实现开关关,继电器可以外接其他的家用电器。
    • 5、具有自动模式和手动模式,手动模式下按加、减键就可以实现开关的开和关。
    • 6、开机默认是自动模式,当现在的时间和设置开的时间一致时,继电器工作打开开关,当现在的时候和设置关的时间一致时继电器断开关闭开关。
    • 7、开关的开和关蜂鸣器的提示声不同,当开关开时,蜂鸣器会发出滴滴的提示声,开关关时,蜂鸣器会长鸣一声。
    • 8、具有红外遥控功能,可以用红外遥控器完成整个产品的操作。“|<<”标识手动或切换,“>>|”表示设置或换页,“—”表示手动情况关闭或设置值–,“+”表示手动情况打开或设置值++。
    • 9、时间段的设置,具有掉电不丢失数据功能。
  • 可根据本篇文章完成毕业设计的开题报告、任务书、设计等

2、资料下载

3、系统电路介绍

3.1、STC89C52单片机核心系统电路设计

  • STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

STC89C52主要特性如下:

  • (1)8K字节程序存储空间;
  • (2)512字节数据存储空间;
  • (3)内带4K字节EEPROM存储空间;
  • (4)可直接使用串口下载

单片机最小系统电路图如下图所示

实物图:

3.2、DS1302时钟电路设计

  • DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。其电路的接口简单、价格低廉、使用方便,被广泛地采用。DS1302具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
  • 在本电路中,选择32.768KHZ晶振为DS1302提供时钟源,3V纽扣电池保证了DS1302掉电不丢失时间数据,电阻均为上拉电阻,使得DS1302工作更稳定。

电路原理图:

实物图:

3.3、VS1838万能红外接收头电路设计

  • 红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。
  • VS1838B内含高速高灵敏度PIN光电二极管和低功耗、高增益前置放大IC,采用环氧树脂封装外加外屏蔽抗干挠设计,该产品已经通过REACH和SGS认证属于环保产品,在红外遥控系统中作为接收器使用。

电路原理图:

实物图

3.4、5V继电器控制电路设计

  • 继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电子设备中
  • 在本系统中,通过三极管驱动继电器,当单片机的控制引脚为低电平时,三极管导通,此时继电器供电闭合

电路原理图

实物图

4、程序设计

4.1、系统初始化

void SYSInit()
{
	init_int0();
	init_time0();		 //初始化定时器
	init_ds1302();		 //ds1302初始化
	init_1602();		 //lcd1602初始化
	write_string(1,0,"    :  :    W:  ");			
	write_string(2,0," 20  -  -       ");

	init_eeprom(); //读取数据
}

4.2、红外解码程序

void int0() interrupt 0
{
	static unsigned char  i;             //接收红外信号处理
	static bit startflag;                //是否开始处理标志位
	
	if(startflag)                         
	{
		if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
			i=0;
		irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
		irtime=0;
		i++;
		if(i==33)
		{
			irok=1;
			i=0;
		}
	}
	else
	{
		irtime=0;
		startflag=1;
	}
}

4.3、红外码值处理

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=irdata[k];
          if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
             value|=0x80;
          if(j<8)
		    {
			 value>>=1;
			}
           k++;
         }
     IRcord[i]=value;
     value=0;     
     } 
	 irpro_ok=1;//处理完毕标志位置1
}

4.4、定时器初始化

void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值