一.智能家居控制系统原理图

二.实物图

三.实验代码
(1) main.c 文件代码:
#include <string.h>
#include "STC12C5A.h" #include "uart.h" #include "time.h" void main(void)
{
Uart2Init(0,1,220);
while(1)
{
uartAction();
}
}
(2)Uart.c 文件代码:
#include "uart.h" #include "string.h" #define Buf_Max 50
unsigned char Rec_Buf[Buf_Max];
unsigned char Rec_BufU2[Buf_Max];
unsigned char i=0,a=0;
char Uart2Init(char s2smod,char brtx12,unsigned char reload)
{
S2CON = 0X50;
BRT= reload;
if(s2smod == 1)
{
AUXR |= S2SMOD;
}
else if(s2smod == 0)
{
AUXR &= (~S2SMOD);
}
else
{
return -1;
}
if(brtx12 == 1)
{
AUXR |= BRTx12;
}
else if(brtx12 == 0)
{
AUXR &= (~BRTx12);
}
else
{
return -2;
}
AUXR |= BRTR;
IE2 |= ES2;
EA = 1;
return 0;
}
unsigned char com=0;
void CLR_BufU2(void)
{
unsigned char k;
for(k=0;k<Buf_Max;k++)
{
Rec_BufU2[k] = 0;
}
com = 0;
}
bit HandU2(unsigned char *b)
{
if(strstr(Rec_BufU2,b)!=NULL)
{
return 1;
}
else
{
return 0;
}
}
void InterruptUart2() interrupt 8
{
IE2 &= (~ES2);
if(S2CON & S2RI)
{
S2CON &= (~S2RI);
Rec_BufU2[com++]=S2BUF;
if(com>50)com=0;
}
IE2 |= ES2;
}
(3)Time.c 文件代码:
#include "time.h" #include <string.h>
#include "uart.h"
sbit led1=P1^7;
sbit led2=P1^6;
sbit led3=P1^5;
sbit fmq=P3^6;
void uartAction()
{
if(HandU2("1"))
{
led1=0;
CLR_BufU2();
}
if(HandU2("2"))
{
led1=1;
CLR_BufU2();
}
if(HandU2("3"))
{
led2=0;
CLR_BufU2();
}
if(HandU2("4"))
{
led2=1;
CLR_BufU2();
}
if(HandU2("5"))
{
led3=0;
CLR_BufU2();
}
if(HandU2("6"))
{
led3=1;
CLR_BufU2();
}
if(HandU2("7"))
{
fmq=0;
CLR_BufU2();
}
if(HandU2("8"))
{
fmq=1;
CLR_BufU2();
}
}