首页 > 编程知识 正文

lm393红外传感器,微信开空调小程序

时间:2023-05-03 20:42:52 阅读:112319 作者:1243

红外模块51学习单片机代码

可以使用

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#定义uint unsigned int

# defines ever _ receivr _ buffer _ len 50

类型无符号字符字节;

类型无符号在word中;

unsignedcharreceivr _ buffer [ sever _ receivr _ buffer _ len ]={0};

unsigned char receive_number=0,flag1=0,acting=1,RF_ADD_H=0x2d,RF_ADD_L=0xd4;

unsigned char arry1[11]={0x7E,0x 07,0x 00,0x 26,0x 39,0x 39,0x 12,0x 01,0x 00,0x 56 }; //学习编号1的红外键值

unsigned char arry2[11]={0x7E,0x 07,0x 00,0x 26,0x 39,0x 39,0x 14,0x 01,0x 00,0x 58 }; //发送编号1的红外键值

sbit key1=P2^1;

sbit key2=P2^0;

sbit key3=P2^2;

sbit key4=P2^3;

void UART_init ()

{

SCON=0x50;

TMOD|=0x20;

TH1=0xfD软盘; //没有倍频12M时2400为0XF3 11.0592M时9600为0xFD

TL1=0xfD软盘;

TR1=1;

EA=1;

ES=1;

}

void delay () )

{

uchar i,j;

for(I=0; i50; I )

for(j=0; j200; j;

}

void _ delay _ us (未指定的int _ us ) )。

{

char a=0;

for(_us; _us; _us-- )

for(a=0; a1; a );

}

void delay _ ms (未指定的inta ) )。

{

wile(A0 ) )。

{a----; Delay_us(1000; }

}

void com _ send (挑战) )。

{

SBUF=string;

while (! 钛;

TI=0;

}

Void主() )

{

int i;

key1=1;

key2=1;

key3=1;

key4=1;

UART_init (;

while(1)。

{

if(key1==0)//外键处理器发送串行数据控制红外线模块学习第一键

{

while(key1==0; //7E 07 00 26 39 26 39 12 01 00 56学习1

for(I=0; i11; I )

{

com_send(arry1[I];

}

delay_ms(1000;

}

if(key2==0) )

{

while(key2==0; 外键连接处理器发送串行数据控制红外线模块发送第一号密钥

for(I=0; i11; I )

{

com_send(arry2[I];

}

delay_ms(1000;

}

if(flag1==1) /接收标志被设置时

{

flag1=0; //清除接收标志

if(receivr_buffer[0]==‘a ' )//如果收到的命令为a

{

for(I=0; i11; I )//串行发送命令控制红外线模块学习按钮1

{

com_send(arry1[I];

}

key3=0; //用外部引脚控制红外线模块学习按钮1

delay_ms(1000;

key3=1;

}

if(receivr_buffer[0]==‘b ' )//如果收到的命令为b

{

for(I=0; i11; I//串行发送命令控制红外模块发送按钮1

{

com_send(arry2[I];

}

key4=0; //用外部引脚控制红外线模块发送按钮1

delay_ms(1000;

key4=1;

}

}

}

}

//语音模块识别命令后串行端口输出Arn,语音模块识别命令后串行端口输出Brn

voidcom_interrupt(void ) interrupt 4

{

未指定Int I,j;

if(ri )//接收中断的处理

{

RI=0;

receivr _ buffer [ receive _ number ]=sbuf; //接收串行数据

if () receivr _ buffer [ receive _ number ]==0x0a ) ) receivr _ buffer [ receive _ number-1 ]==0x0d )

{

flag1=1; //语音模块发送来的串行命令接收完成标志

receive_number=0;

}

else

receive_number;

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。