51单片机格力空调遥控器.docx
《51单片机格力空调遥控器.docx》由会员分享,可在线阅读,更多相关《51单片机格力空调遥控器.docx(18页珍藏版)》请在冰豆网上搜索。
![51单片机格力空调遥控器.docx](https://file1.bdocx.com/fileroot1/2023-1/6/b99b87ef-7e9b-4998-a114-e9efdf1f4148/b99b87ef-7e9b-4998-a114-e9efdf1f41481.gif)
51单片机格力空调遥控器
1.1151单片机格力空调遥控器
2.
2.#include
3.#include
4.#defineucharunsignedchar
5.#defineuintunsignedint
6.#defineenTransmittflag=1
7.#definedisTransmittflag=O
8.sfrT2M0D=0XC9;
9.bitflag=0;
10.sbitIR38k=P2A3;//红外发射管
11.sbitkey1=P1A1;
12.sbitkey2=P1A3;
13.sbitkey3=P1A5;
14.sbitkey4=PM7;
15.sbitkey5=P1A0;
16.sbitkey6=P1A4;
17.ucharKeyScan();
18.uintcount=0,set_count=0;
19.ucharfengliang_value=0;
20.ucharkey_value=0;
21.ucharwendu_value=0;
22.ucharmode_value=0;
23.ucharswitch_value=0;
24.ucharzhuanye_value=0;
25.ucharcode
Zhuanye[][5]={{0x39,0x04,0x00,0x50,0x02},{0x79,0x04,0x00,0x50,0x02}};
//手动,自动转页(20度,冷气)
26.uchar
codefengliang[][5]={{0x28,0x08,0x00,0x50,0x02},{0x19,0x08,0x00,0x50,0
x02},
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
ucharcodemode[][5]={
{0x58,0x00,0x00,0x50,0x02},{0x59,0x04,0x00,0x50
0x02},
{0x5a,0x04,0x00,0x50,0x02},{0x5b,0x04,0x00,0x50,0x02}
};//自动,冷气,除湿,送风
/*uchar
codeon_or_off[][5]={{0x40,0x00,0x00,0x50,0x02},{0x48,0x00,0x00,0x50,
0x02}};*/
ucharcodeon_or_off[][5]={
{0x39,0x08,0x00,0x50,0x02},{0x31,0x08,0x00,0x50,0x02},
{0x59,0x08,0x00,0x50,0x02},{0x51,0x08,0x00,0
x50,0x02},
{0x79,0x08,0x00,0x50,0x02},{0x71,0x08,0x00,0x50,0x02},
};//开机,关机
ucharcodewendu[][5]={
{0x59,0x00,0x00,0x50,0x02},{0x59,0x01,0x00,0x50,0x0
2},
{0x59,0x02,0x00,0x50,0x02},{0x59,0x03,0x00,0x50,0x02},
{0x59,0x04,0x00,0x50,0x02},{0x59,0x05,0x00,0x50,0x02},
{0x59,0x06,0x00,0x50,0x02},{0x59,0x07,0x00,0x50,0x02},
{0x59,0x08,0x00,0x50,0x02},{0x59,0x09,0x00,0x50,0x02},
{0x59,0x0a,0x00,0x50,0x02},{0x59,0x0b,0x00,0x50,0x02},
{0x59,0x0c,0x00,0x50,0x02},{0x59,0x0d,0x00,0x50,0x02},
{0x59,0x0e,0x00,0x50,0x02}
};//温度值
voidsend_precode(unsignedints_cnt_1,unsignedints_cnt_2);
voidsend_8bit_code(ucharvalue);
voidsend_4bit_code(ucharvalue);
voidsend_final_code();
voidir_out1()//启动和关闭
57.send_precode(180,90);
58.send_8bit_code(on_or_off[switch_value][0]);
59.send_8bit_code(on_or_off[switch_value][1]);
60.send_8bit_code(on_or_off[switch_value][2]);
61.send_8bit_code(on_or_off[switch_value][3]);
62.send_4bit_code(on_or_off[switch_value][4]);
63.〃send_final_code();
64.//key_value=0;
65.switch_value++;
66.if(switch_value==6){switch_value=0;}
67.
67.}
68.voidir_out2()//wendu--
69.{
71.
70.send_precode(180,90);
71.send_8bit_code(wendu[wendu_value][0]);
72.send_8bit_code(wendu[wendu_value][1]);
73.send_8bit_code(wendu[wendu_value][2]);
74.send_8bit_code(wendu[wendu_value][3]);
75.send_4bit_code(wendu[wendu_value][4]);
76.send_final_code();
77.wendu_value--;
78.if(wendu_value==0){wendu_value=15;}
81.
79.}
80.voidir_out3()〃wendu++
81.{
82.send_precode(180,90);
83.send_8bit_code(wendu[wendu_value][0]);
84.send_8bit_code(wendu[wendu_value][1]);
85.send_8bit_code(wendu[wendu_value][2]);
86.send_8bit_code(wendu[wendu_value][3]);
87.send_4bit_code(wendu[wendu_value][4]);
88.send_final_code();
89.wendu_value++;
90.if(wendu_value==15){wendu_value=O;}
91.}
92.voidir_out4()//modechoose
93.{
94.send_precode(180,90);
95.send_8bit_code(mode[mode_value][0]);
96.send_8bit_code(mode[mode_value][1]);
97.send_8bit_code(mode[mode_value][2]);
98.send_8bit_code(mode[mode_value][3]);
99.send_4bit_code(mode[mode_value][4]);
100.send_final_code();
101.mode_value++;
102.if(mode_value==4)
103.{mode_value=0;}
107.
104.}
105.voidir_out5()//转叶
106.{
107.send_precode(180,90);
108.send_8bit_code(zhuanye[zhuanye_value][0]);
109.send_8bit_code(zhuanye[zhuanye_value][1]);
110.send_8bit_code(zhuanye[zhuanye_value][2]);
111.send_8bit_code(zhuanye[zhuanye_value][3]);
112.send_4bit_code(zhuanye[zhuanye_value][4]);
113.send_final_code();
114.zhuanye_value++;
115.if(zhuanye_value==2){zhuanye_value=0;}
}
voidir_out6()//风量
{
send_precode(180,90);
send_8bit_code(fengliang[fengliang_value][0]);
send_8bit_code(fengliang[fengliang_value][1]);
send_8bit_code(fengliang[fengliang_value][2]);
send_8bit_code(fengliang[fengliang_value][3]);
send_4bit_code(fengliang[fengliang_value][4]);
send_final_code();
fengliang_value++;
if(fengliang_value==3){fengliang_value=0;}
}
//============================================
voiddelayms(unsignedcharms)
{
unsignedchari;
while(ms--)
{
for(i=0;i<120;i++){};
}
}
voidTimerlnit()
{
EA=1;
ET0=1;
TMOD=0X01;
TH0=0XfF;
TL0=221;//50US
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
T2C0N=0x00;
152.T2MOD=0x02;//enableT2'swaveoutputthroughT2pin(P10)
153.RCAP2H=(65536-11059/38/4)>>8;//outputfrequencyis38KHz
154.RCAP2L=(65536-11059/38/4)&0xff;
155.}
156.voidTransmittPulse()
157.{
158.enTransmitt;
159.//ir=0;
160.TR0=1;
161.TR2=1;
162.}
163.voidTransmittLow()
164.{
165.//ir=1;
166.TR0=1;
167.disTransmitt;
168.TR2=0;
169.IR38k=1;
170.}
171.voidendTransmitt()
172.{
173.//ir=0;
174.TR0=0;
175.TR2=0;
176.IR38k=1;//JIEZHI
177.}
178.voidsend_logic0(unsignedints_cnt_1,unsignedints_cnt_2)
179.{
180.set_count=s_cnt_1;//
181.TransmittPulse();
182.count=0;
184.while(count185.;
186.endTransmitt();
187.〃ir=1;
188.set_count=s_cnt_2;//11;〃
189.//ir=1;
190.count=0;
191.TransmittLow();
192.
192.while(count193.;
194.endTransmitt();
195.}
196.voidsend_logic1(unsignedints_cnt_1,unsignedints_cnt_2)
197.{
198.set_count=s_cnt_1;//
199.TransmittPulse();
201.
200.count=0;
203.
201.while(count202.;
203.endTransmitt();
204.//ir=1;
205.//=========================
206.set_count=s_cnt_2;//32;〃
207.//ir=1;
208.count=0;
212.
209.TransmittLow();
214.
210.while(count216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
endTransmitt();
}
voidsend_precode(unsignedints_cnt_1,unsignedints_cnt_2)
{
set_count=s_cnt_1;//180;〃9MS
TransmittPulse();//startsendpulse
count=0;
while(count{;}
endTransmitt();
set_count=s_cnt_2;//90;//4.5MS
count=0;
TransmittLow();
while(count{;}
endTransmitt();
}
voidsend_final_code()
{
set_count=28;//
count=0;
TransmittPulse();
while(countendTransmitt();
}
voidsend_8bit_code(ucharvalue)
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
uchari,temp;
temp=value;
for(i=0;i<8;i++)
{
if(temp&0x01)sendl_logic1(11,32);//1.68ms
elsesend_logic0(11,11);//600US
temp=temp>>1;
}
}
voidsend_4bit_code(ucharvalue)
{
uchari,temp;
temp=value;
for(i=0;i<4;i++)
{
if(temp&0x01)sendd_logic1(11,32);//1.68ms
elsesend_logic0(11,11);//600US
temp=temp>>1;
}
}
//============================主函数========================
voidmain()
{
TimerInit();
while
(1)
{
key_value=KeyScan();
switch(key_value)
{
case1:
ir_out1();delayms(200);break;//
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
case2:
ir_out2();delayms(200);break;//温度-
case3:
ir_out3();delayms(200);break;//温度+.
case4:
ir_out4();delayms(200);break;//模式选择
case5:
ir_out5();delayms(200);break;//转叶设置
case6:
ir_out6();delayms(200);break;
〃default:
ir=1;break;
}
}
}
voidtimer0(void)interrupt1
{
TH0=0XfF;
TL0=221;〃50us
count++;
if(flag)
TR2=1;〃IR38k=0;
elseTR2=0;//IR38k=1;
}
unsignedcharKeyScan()
{
/*第一列扫描*/
if(key1==0)
{
delayms(20);
if(key1==0)
{
return1;
312.
while(!
key1);
313.
}
314.
if(key2==0)
315.
{
316.
delayms(20);
317.
if(key2==0)
318.
{
319.
return2;
320.
}
321.
while(!
key2);
322.
}
323.
324.
if(key3==0)
325.
{
326.
delayms(20);
327.
if(key3==0)
328.
{
329.
return3;
330.
}
331.
while(!
key3);
332.
}
333.
if(key4==0)
334.
{
335.
delayms(20);
336.
if(key4==0)
337.
{
338.
return4;
339.
}
340.
while(!
key4);
341.
}
342.
if(key5==0)
344.
delayms(20);
345.
if(key5==0)
346.
{
347.
return5;
348.
}
349.
while(!
key5);
350.
}
351.
if(key6==0)
352.
{
353.
delayms(20);
354.
if(key6==0)
355.
{
356.
return6;
357.
}
358.
while(!
key6);
359.
}
360.
return0;
361.
}