51单片机红外遥控格力空调程序

更新时间:2024-03-25 14:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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延迟函数 { }

void delay4500us(void) //4.5ms延迟函数 { }

void khz_2(uint num) {

for(;num>0;num--) }

void send0_a(void) //发送0

{

out=~out; }

uint j;

for(j=516;j>0;j--); uint j;

for(j=63;j>0;j--);

//38KHZ脉冲 占空比1:2

{

khz_2(42) ; //khz_3(21) ; out=1; delay560us(); }

void send1_a(void) {

khz_2(42) ; out=1; delay560us(); delay560us(); delay560us(); }

void leadcode_a(void) //发送引导码 {

khz_2(690) ; }

/***************************关机****************************/

out=1; delay4500us();

//发送1

void close( uchar a,uchar b,uchar c,uchar d) {

if(a) else if(b) else if(c) else if(d) else

send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a(); uint i; leadcode_a(); send1_a(); for(i=0;i<7;i++) send0_a();

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++)

send0_a(); send1_a(); send0_a(); send0_a(); for(i=0;i<12;i++) send0_a(); if(e) else if(f) else if(g) else if(h) else

send1_a(); send0_a(); send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a();

khz_2(42) ;

out=1;

delay(1000);

/*******************************************/

/****************开机************************/ }

void open(uchar a,uchar b,uchar c,uchar d ) { uint i;

leadcode_a(); send1_a(); send0_a(); send0_a(); send1_a(); for(i=0;i<4;i++) send0_a(); if(a) else if(b) else if(c) else if(d)

send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a();

else

send1_a();

send0_a();

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 open1(uchar e,uchar f,uchar g,uchar h) { uchar i;

for(i=0;i<13;i++) send0_a(); send1_a(); send0_a(); send0_a(); for(i=0;i<12;i++) send0_a(); if(e) else if(f) else if(g) else if(h) else

send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a(); send0_a(); send1_a();

khz_2(42) ;

out=1; }

void keyscan() {

if(wd1[x] & 0x08)

uchar a,b,c,d,e,f,g,h; if(key1==0) {

delay(10); if(key1==0) {

while(!key1);

delay(1000);

a=1; else

a=0;

if(wd1[x] & 0x04) else b=0;

if(wd1[x] & 0x02) else

c=1; b=1;

c=0;

if(wd1[x] & 0x01) else

d=0;

if(wd2[x] & 0x08)

d=1;

e=1; else

e=0;

if(wd2[x] & 0x04) else f=0;

if(wd2[x] & 0x02) else

g=0;

g=1; f=1;

if(wd2[x] & 0x01) else }

if(key2==0)

h=0; }

open(a,b,c,d); open1(e,f,g,h);

h=1;

{ else

a=0; delay(10); if(key2==0) { a=1;

while(!key2); if((wd1[x] & 0x08))

if((wd1[x] & 0x04)) else

b=0; b=1;

if((wd1[x] & 0x02)) else

c=0; c=1;

if((wd1[x] & 0x01)) else

d=0;

if((wd2[x] & 0x08)) d=1;

e=1; else

e=0;

if((wd2[x] & 0x04))

else f=0;

f=1;

if((wd2[x] & 0x02)) else else

h=0;

close(a,b,c,d); close1(e,f,g,h);

g=0;

if((wd2[x] & 0x01)) h=1;

g=1;

}

}

if(key3==0) { else

delay(10); if(key3==0) { a=1;

while(!key1); x++;

if((wd1[x] & 0x08))

a=0;

if((wd1[x] & 0x04)) else

b=0; b=1;

if((wd1[x] & 0x02)) else

c=0; c=1;

if((wd1[x] & 0x01)) else

d=0;

if((wd2[x] & 0x08))

d=1;

e=1; else

e=0;

if((wd2[x] & 0x04)) else f=0;

if((wd2[x] & 0x02)) else

g=0;

g=1; f=1;

if((wd2[x] & 0x01))

else }

h=1;

h=0; }

open(a,b,c,d); open1(e,f,g,h);

if(key4==0) {

delay(10); if(key4==0) {

while(!key1); x--;

if((wd1[x] & 0x08))

a=1; else

a=0;

if((wd1[x] & 0x04)) else

b=0;

b=1;

if((wd1[x] & 0x02)) else

c=0; c=1;

if((wd1[x] & 0x01)) else

d=0;

if((wd2[x] & 0x08))

d=1;

e=1; else

e=0;

if((wd2[x] & 0x04)) else f=0;

if((wd2[x] & 0x02)) else

g=0;

g=1; f=1;

if((wd2[x] & 0x01)) else

h=0;

open(a,b,c,d); open1(e,f,g,h);

h=1;

}

}

} void init() { }

void main() { }

init(); while(1) { }

keyscan(); key1=1; key2=1; key3=1; key4=1; out=1;

本文来源:https://www.bwwdw.com/article/osu8.html

Top