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(); 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();...