51单片机格力空调遥控器.docx

上传人:b****5 文档编号:8519380 上传时间:2023-01-31 格式:DOCX 页数:12 大小:17.40KB
下载 相关 举报
51单片机格力空调遥控器.docx_第1页
第1页 / 共12页
51单片机格力空调遥控器.docx_第2页
第2页 / 共12页
51单片机格力空调遥控器.docx_第3页
第3页 / 共12页
51单片机格力空调遥控器.docx_第4页
第4页 / 共12页
51单片机格力空调遥控器.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机格力空调遥控器.docx

《51单片机格力空调遥控器.docx》由会员分享,可在线阅读,更多相关《51单片机格力空调遥控器.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机格力空调遥控器.docx

51单片机格力空调遥控器

1.//51单片机格力空调遥控器

2.

3.#include 

4.#include

5.#defineucharunsignedchar

6.#defineuint  unsignedint 

7.#defineenTransmitt  flag=1

8.#definedisTransmitt  flag=0

9.sfr  T2MOD  =0XC9;

10.bit  flag=0;

11.sbitIR38k=P2^3;    //红外发射管

12.sbitkey1=P1^1;

13.sbitkey2=P1^3;

14.sbitkey3=P1^5;

15.sbitkey4=P1^7;

16.sbitkey5=P1^0;

17.sbitkey6=P1^4;

18.ucharKeyScan();

19.uint  count=0,set_count=0;

20.ucharfengliang_value=0;

21.ucharkey_value=0;

22.ucharwendu_value=0;

23.ucharmode_value=0;

24.ucharswitch_value=0;

25.ucharzhuanye_value=0;

26.ucharcodezhuanye[][5]={{0x39,0x04,0x00,0x50,0x02},{0x79,0x04,0x00,0x50,0x02}};  //手动,自动转页(20度,冷气)

27.ucharcode  fengliang[][5]={{0x28,0x08,0x00,0x50,0x02},{0x19,0x08,0x00,0x50,0x02},

28.                    {0x09,0x08,0x00,0x50,0x02} 

29.      };//自动模式风量小,中,大  (20度)

30.ucharcode  mode[][5]={  

31.                {0x58,0x00,0x00,0x50,0x02},{0x59,0x04,0x00,0x50,0x02},

32.    {0x5a,0x04,0x00,0x50,0x02},{0x5b,0x04,0x00,0x50,0x02}

33.              };  //自动,冷气,除湿,送风

34./*ucharcode  on_or_off[][5]={{0x40,0x00,0x00,0x50,0x02},{0x48,0x00,0x00,0x50,0x02}};*/

35.ucharcode  on_or_off[][5]={

36.    {0x39,0x08,0x00,0x50,0x02},{0x31,0x08,0x00,0x50,0x02}, 

37.                  {0x59,0x08,0x00,0x50,0x02},{0x51,0x08,0x00,0x50,0x02},

38.    {0x79,0x08,0x00,0x50,0x02},{0x71,0x08,0x00,0x50,0x02}, 

39.    };//开机,关机

40.ucharcode  wendu[][5]={

41.              {0x59,0x00,0x00,0x50,0x02},{0x59,0x01,0x00,0x50,0x02},

42.      {0x59,0x02,0x00,0x50,0x02},{0x59,0x03,0x00,0x50,0x02},

43.      {0x59,0x04,0x00,0x50,0x02},{0x59,0x05,0x00,0x50,0x02},

44.      {0x59,0x06,0x00,0x50,0x02},{0x59,0x07,0x00,0x50,0x02},

45.      {0x59,0x08,0x00,0x50,0x02},{0x59,0x09,0x00,0x50,0x02},

46.      {0x59,0x0a,0x00,0x50,0x02},{0x59,0x0b,0x00,0x50,0x02},

47.      {0x59,0x0c,0x00,0x50,0x02},{0x59,0x0d,0x00,0x50,0x02},

48.      {0x59,0x0e,0x00,0x50,0x02}  

49.                };//温度值 

50.

51.voidsend_precode(unsignedints_cnt_1,unsignedints_cnt_2);

52.voidsend_8bit_code(ucharvalue);

53.voidsend_4bit_code(ucharvalue);

54.voidsend_final_code();

55.voidir_out1()//启动和关闭

56.{

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.

68.}

69.voidir_out2()//wendu--

70.{

71.

72.send_precode(180,90);

73.send_8bit_code(wendu[wendu_value][0]);

74.send_8bit_code(wendu[wendu_value][1]);

75.send_8bit_code(wendu[wendu_value][2]);

76.send_8bit_code(wendu[wendu_value][3]);

77.send_4bit_code(wendu[wendu_value][4]);

78.send_final_code();

79.wendu_value--;

80.if(wendu_value==0)  {wendu_value=15;}

81.

82.}

83.voidir_out3()//wendu++

84.{   

85.send_precode(180,90);

86.send_8bit_code(wendu[wendu_value][0]);

87.send_8bit_code(wendu[wendu_value][1]);

88.send_8bit_code(wendu[wendu_value][2]);

89.send_8bit_code(wendu[wendu_value][3]);

90.send_4bit_code(wendu[wendu_value][4]);

91.send_final_code();

92.wendu_value++;

93.if(wendu_value==15){wendu_value=0;}

94.}

95.voidir_out4()//modechoose

96.{

97.send_precode(180,90);

98.send_8bit_code(mode[mode_value][0]);

99.send_8bit_code(mode[mode_value][1]);

100.send_8bit_code(mode[mode_value][2]);

101.send_8bit_code(mode[mode_value][3]);

102.send_4bit_code(mode[mode_value][4]);

103.send_final_code(); 

104.mode_value++;

105.if(mode_value==4) 

106.{mode_value=0;} 

107.

108.}

109.voidir_out5()//转叶

110.{

111.send_precode(180,90);

112.send_8bit_code(zhuanye[zhuanye_value][0]);

113.send_8bit_code(zhuanye[zhuanye_value][1]);

114.send_8bit_code(zhuanye[zhuanye_value][2]);

115.send_8bit_code(zhuanye[zhuanye_value][3]);

116.send_4bit_code(zhuanye[zhuanye_value][4]);

117.send_final_code();

118.  zhuanye_value++;

119.if(zhuanye_value==2)  {zhuanye_value=0;}

120.}

121.voidir_out6()//风量

122.{

123.send_precode(180,90);

124.send_8bit_code(fengliang[fengliang_value][0]);

125.send_8bit_code(fengliang[fengliang_value][1]);

126.send_8bit_code(fengliang[fengliang_value][2]);

127.send_8bit_code(fengliang[fengliang_value][3]);

128.send_4bit_code(fengliang[fengliang_value][4]);

129.send_final_code();

130.  fengliang_value++;

131.if(fengliang_value==3)  {fengliang_value=0;}

132.}

133.//============================================

134.

135.voiddelayms(unsignedcharms)

136.{

137.unsignedchari;            

138.while(ms--)

139.{

140.  for(i=0;i<120;i++){};

141.}

142.}

143.voidTimerInit()

144.{

145.EA=1;

146.ET0=1;

147.TMOD=0X01;

148.TH0=0XfF;

149.TL0=221;  //50US

150.

151.T2CON=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;

183.

184.while(count

185.;

186.endTransmitt();

187.//ir=1;

188.set_count=s_cnt_2;//11;//

189.//ir=1;

190.count=0;

191.TransmittLow();

192.

193.while(count

194.;

195.endTransmitt();

196.}

197.voidsend_logic1(unsignedints_cnt_1,unsignedints_cnt_2)

198.{

199.set_count=s_cnt_1;//

200.TransmittPulse();

201.

202.count=0;

203.

204.while(count

205.;

206.endTransmitt();

207.//ir=1;

208.//=========================

209.set_count=s_cnt_2;//32;//

210.//ir=1;

211.count=0;

212.

213.TransmittLow();

214.

215.while(count

216.;

217.endTransmitt();

218.}

219.voidsend_precode(unsignedints_cnt_1,unsignedints_cnt_2)

220.{

221.set_count=s_cnt_1;//180;//9MS

222.TransmittPulse();  //startsendpulse

223.count=0;

224.

225.while(count

226.{;}

227.endTransmitt();

228.set_count=s_cnt_2;//90;//4.5MS

229.

230.count=0;

231.TransmittLow();

232.while(count

233.{;}

234.endTransmitt();

235.

236.}

237.voidsend_final_code()

238.{

239.set_count=28;//

240.

241.count=0;

242.TransmittPulse();

243.while(count

244.;

245.endTransmitt();

246.}

247.voidsend_8bit_code(ucharvalue)

248.{

249.uchari,temp;

250.temp=value;

251.for(i=0;i<8;i++)

252.{

253.  if(temp&0x01)  send_logic1(11,32);//1.68ms

254.  else  send_logic0(11,11);//600US

255.  temp=temp>>1;

256.}

257.}

258.voidsend_4bit_code(ucharvalue)

259.{

260.uchari,temp;

261.temp=value;

262.for(i=0;i<4;i++)

263.{

264.if(temp&0x01)  send_logic1(11,32);//1.68ms

265.  else  send_logic0(11,11);//600US

266.

267.  temp=temp>>1;

268.}

269.}

270.//============================主函数========================

271.voidmain()

272.{

273.  TimerInit();    

274.  while

(1)

275.{

276.  key_value=KeyScan();

277.  switch(key_value)

278.  {

279.  case1:

ir_out1();delayms(200);break;  //  开和关

280.  case2:

ir_out2();delayms(200);break;  //  温度-

281.  case3:

ir_out3();delayms(200);break;  //  温度+.

282.  case4:

ir_out4();delayms(200);break;  //模式选择

283.  case5:

ir_out5();delayms(200);break;  //转叶设置

284.  case6:

ir_out6();delayms(200);break; 

285.  //default:

ir=1;break;

286.  }

287.}  

288.}

289.voidtimer0(void)interrupt1

290.{

291.TH0=0XfF;

292.TL0=221;//50us

293.count++;

294.if(flag) 

295.  TR2=1;//IR38k=0; 

296.elseTR2=0;//IR38k=1;

297.

298.}

299.unsignedcharKeyScan()

300.{

301.

302./*-------------第一列扫描-----------------*/

303.

304.

305.  if(key1==0)

306.{

307.  delayms(20);

308.  if(key1==0)

309.  {

310.  return1;

311.  }

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)

343.{

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.}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1