51单片机红外遥控格力空调程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机红外遥控格力空调程序#include
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;//按键控制开机
sbit key2=P3^5;//按键控制关机
sbit key3=P3^6;//按键控制温度+
sbit key4=P3^7;//按键控制温度-
sbit out=P1^5;//发送IO口
uchar wd1[15]={0x00,0x08,0x04,0x0c,0x02,
0x0a,0x06,0x0e,0x01,0x09,
0x05,0x0d,0x03,0x0b,0x07
};
uchar wd2[15]={0x0a,0x06,0x0e,0x01,0x09,
0x05,0x0d,0x03,0x0b,0x07,
0x0f,0x00,0x08,0x04,0x0c
};
uchar x=12;//开机28度
/************晶振11.0592MHz**************/ void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒for(j=112;j>0;j--);
}
void delay560us(void) //560us延迟函数
{
uint j;
for(j=63;j>0;j--);
}
void delay4500us(void) //4.5ms延迟函数
{
uint j;
for(j=516;j>0;j--);
}
void khz_2(uint num) //38KHZ脉冲占空比1:2
{
for(;num>0;num--)
{
out=~out;
}
}
void send0_a(void) //发送0
{
khz_2(42) ;
//khz_3(21) ;
out=1;
delay560us();
}
void send1_a(void) //发送1 {
khz_2(42) ;
out=1;
delay560us();
delay560us();
delay560us();
}
void leadcode_a(void) //发送引导码{
khz_2(690) ;
out=1;
delay4500us();
}
/***************************关机****************************/
void close( uchar a,uchar b,uchar c,uchar d) {
uint i;
leadcode_a();
send1_a();
for(i=0;i<7;i++)
send0_a();
if(a)
send1_a();
else
send0_a();
if(b)
send1_a();
else
send0_a();
if(c)
send1_a();
else
send0_a();
if(d)
send1_a();
else
send0_a();
send0_a();
send0_a();
send0_a();
for(i=0;i<5;i++)
send0_a();
send1_a();
for(i=0;i<6;i++)
send0_a();
send1_a();
send0_a();
send1_a();
send0_a();
send0_a();
send1_a();
send0_a();
khz_2(42) ;
out=1;
delay(20);
}
void close1(uchar e,uchar f,uchar g,uchar h ) {
uchar i;
for(i=0;i<13;i++)
send1_a();
send0_a();
send0_a();
for(i=0;i<12;i++)
send0_a();
if(e)
send1_a();
else
send0_a();
if(f)
send1_a();
else
send0_a();
if(g)
send1_a();
else
send0_a();
if(h)
send0_a();
else
send1_a();
khz_2(42) ;
out=1;
delay(1000);
/*******************************************/