久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8878|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

51單片機格力空調(diào)遙控器設(shè)計源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:281190 發(fā)表于 2018-1-31 15:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //51單片機格力空調(diào)遙控器

  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. #define enTransmitt   flag=1
  7. #define disTransmitt  flag=0
  8. sfr   T2MOD  = 0XC9;
  9. bit   flag=0;
  10. sbit IR38k =P2^3;     //紅外發(fā)射管
  11. sbit key1=P1^1;
  12. sbit key2=P1^3;
  13. sbit key3=P1^5;
  14. sbit key4=P1^7;
  15. sbit key5=P1^0;
  16. sbit key6=P1^4;
  17. uchar KeyScan();
  18. uint  count=0,set_count=0;
  19. uchar fengliang_value=0;
  20. uchar key_value=0;
  21. uchar wendu_value=0;
  22. uchar mode_value=0;
  23. uchar switch_value=0;
  24. uchar zhuanye_value=0;
  25. uchar code zhuanye[][5]={{0x39,0x04,0x00,0x50,0x02},{0x79,0x04,0x00,0x50,0x02}};  // 手動,自動轉(zhuǎn)頁(20度,冷氣)
  26. uchar code  fengliang[][5]={{0x28,0x08,0x00,0x50,0x02},{0x19,0x08,0x00,0x50,0x02},
  27.                              {0x09,0x08,0x00,0x50,0x02}
  28.          }; //自動模式風(fēng)量 小,中,大  (20度)
  29. uchar code  mode[][5]={  
  30.                          {0x58,0x00,0x00,0x50,0x02},{0x59,0x04,0x00,0x50,0x02},
  31.        {0x5a,0x04,0x00,0x50,0x02},{0x5b,0x04,0x00,0x50,0x02}
  32.                       };    //自動,冷氣,除濕,送風(fēng)
  33. /*uchar code  on_or_off[][5]={ {0x40,0x00,0x00,0x50,0x02},{0x48,0x00,0x00,0x50,0x02} }; */
  34. uchar code  on_or_off[][5]={
  35.        {0x39,0x08,0x00,0x50,0x02},{0x31,0x08,0x00,0x50,0x02},
  36.                             {0x59,0x08,0x00,0x50,0x02},{0x51,0x08,0x00,0x50,0x02},
  37.        {0x79,0x08,0x00,0x50,0x02},{0x71,0x08,0x00,0x50,0x02},
  38.        }; //開機,關(guān)機
  39. uchar code  wendu[][5]={
  40.                      {0x59,0x00,0x00,0x50,0x02},{0x59,0x01,0x00,0x50,0x02},
  41.          {0x59,0x02,0x00,0x50,0x02},{0x59,0x03,0x00,0x50,0x02},
  42.          {0x59,0x04,0x00,0x50,0x02},{0x59,0x05,0x00,0x50,0x02},
  43.          {0x59,0x06,0x00,0x50,0x02},{0x59,0x07,0x00,0x50,0x02},
  44.          {0x59,0x08,0x00,0x50,0x02},{0x59,0x09,0x00,0x50,0x02},
  45.          {0x59,0x0a,0x00,0x50,0x02},{0x59,0x0b,0x00,0x50,0x02},
  46.          {0x59,0x0c,0x00,0x50,0x02},{0x59,0x0d,0x00,0x50,0x02},
  47.          {0x59,0x0e,0x00,0x50,0x02}  
  48.                        }; //溫度值

  49. void send_precode(unsigned int s_cnt_1,unsigned int s_cnt_2);
  50. void send_8bit_code(uchar value);
  51. void send_4bit_code(uchar value);
  52. void send_final_code();
  53. void ir_out1() //啟動和關(guān)閉
  54. {
  55. send_precode(180,90);
  56. send_8bit_code(on_or_off[switch_value][0]);
  57. send_8bit_code(on_or_off[switch_value][1]);
  58. send_8bit_code(on_or_off[switch_value][2]);
  59. send_8bit_code(on_or_off[switch_value][3]);
  60. send_4bit_code(on_or_off[switch_value][4]);
  61. //send_final_code();
  62. // key_value=0;
  63.     switch_value++;
  64. if(switch_value==6){ switch_value=0; }

  65. }
  66. void ir_out2() //wendu--
  67. {

  68. send_precode(180,90);
  69. send_8bit_code(wendu[wendu_value][0]);
  70. send_8bit_code(wendu[wendu_value][1]);
  71. send_8bit_code(wendu[wendu_value][2]);
  72. send_8bit_code(wendu[wendu_value][3]);
  73. send_4bit_code(wendu[wendu_value][4]);
  74. send_final_code();
  75. wendu_value--;
  76. if(wendu_value==0)  {wendu_value=15;}

  77. }
  78. void ir_out3() //wendu++
  79. {   
  80. send_precode(180,90);
  81. send_8bit_code(wendu[wendu_value][0]);
  82. send_8bit_code(wendu[wendu_value][1]);
  83. send_8bit_code(wendu[wendu_value][2]);
  84. send_8bit_code(wendu[wendu_value][3]);
  85. send_4bit_code(wendu[wendu_value][4]);
  86. send_final_code();
  87. wendu_value++;
  88. if(wendu_value==15) { wendu_value=0;}
  89. }
  90. void ir_out4()//mode choose
  91. {
  92. send_precode(180,90);
  93. send_8bit_code(mode[mode_value][0]);
  94. send_8bit_code(mode[mode_value][1]);
  95. send_8bit_code(mode[mode_value][2]);
  96. send_8bit_code(mode[mode_value][3]);
  97. send_4bit_code(mode[mode_value][4]);
  98. send_final_code();
  99. mode_value++;
  100. if(mode_value==4)
  101. { mode_value=0;}

  102. }
  103. void ir_out5() //轉(zhuǎn)葉
  104. {
  105. send_precode(180,90);
  106. send_8bit_code(zhuanye[zhuanye_value][0]);
  107. send_8bit_code(zhuanye[zhuanye_value][1]);
  108. send_8bit_code(zhuanye[zhuanye_value][2]);
  109. send_8bit_code(zhuanye[zhuanye_value][3]);
  110. send_4bit_code(zhuanye[zhuanye_value][4]);
  111. send_final_code();
  112.     zhuanye_value++;
  113. if(zhuanye_value==2)  {zhuanye_value=0;}
  114. }
  115. void ir_out6() //風(fēng)量
  116. {
  117. send_precode(180,90);
  118. send_8bit_code(fengliang[fengliang_value][0]);
  119. send_8bit_code(fengliang[fengliang_value][1]);
  120. send_8bit_code(fengliang[fengliang_value][2]);
  121. send_8bit_code(fengliang[fengliang_value][3]);
  122. send_4bit_code(fengliang[fengliang_value][4]);
  123. send_final_code();
  124.     fengliang_value++;
  125. if(fengliang_value==3)  {fengliang_value=0;}
  126. }
  127. //============================================

  128. void delayms(unsigned char ms)
  129. {
  130. unsigned char i;                 
  131. while(ms--)
  132. {
  133.   for(i=0;i<120;i++){};
  134. }
  135. }
  136. void TimerInit()
  137. {
  138. EA=1;
  139. ET0=1;
  140. TMOD=0X01;
  141. TH0=0XfF;
  142. TL0=221;  //50US

  143. T2CON=0x00;
  144.     T2MOD=0x02;  //enable T2's wave output through T2 pin(P10)
  145.     RCAP2H=(65536-11059/38/4)>>8; //output frequency is 38KHz
  146.     RCAP2L=(65536-11059/38/4)&0xff;   
  147. }
  148. void TransmittPulse()
  149. {
  150.   enTransmitt;
  151. // ir=0;
  152. TR0=1;
  153. TR2=1;
  154. }
  155. void TransmittLow()
  156. {
  157. //ir=1;
  158. TR0=1;
  159. disTransmitt;
  160. TR2=0;
  161. IR38k=1;
  162. }
  163. void endTransmitt()
  164. {
  165. //ir=0;
  166. TR0=0;
  167. TR2=0;
  168. IR38k=1;   //JIEZHI
  169. }
  170. void send_logic0(unsigned int s_cnt_1,unsigned int s_cnt_2)
  171. {
  172. set_count=s_cnt_1;//
  173. TransmittPulse();
  174. count =0;

  175. while(count<set_count)
  176. ;
  177. endTransmitt();
  178. //ir=1;
  179. set_count=s_cnt_2;//11;//
  180. //ir=1;
  181. count =0;
  182. TransmittLow();

  183. while(count<set_count)
  184. ;
  185. endTransmitt();
  186. }
  187. void send_logic1(unsigned int s_cnt_1,unsigned int s_cnt_2)
  188. {
  189. set_count=s_cnt_1;//
  190. TransmittPulse();

  191. count =0;

  192. while(count<set_count)
  193. ;
  194. endTransmitt();
  195. //ir=1;
  196. //=========================
  197. set_count=s_cnt_2;//32;//
  198. //ir=1;
  199. count =0;

  200. TransmittLow();

  201. while(count<set_count)
  202. ;
  203. endTransmitt();
  204. }
  205. void send_precode(unsigned int s_cnt_1,unsigned int s_cnt_2)
  206. {
  207. set_count =s_cnt_1;//180;// 9MS
  208. TransmittPulse();  //start send pulse
  209. count =0;

  210. while(count<set_count)
  211. {;}
  212. endTransmitt();
  213. set_count =s_cnt_2;//90;//4.5MS

  214. count =0;
  215. TransmittLow();
  216. while(count<set_count)
  217. {;}
  218. endTransmitt();

  219. }
  220. void send_final_code()
  221. {
  222. set_count=28;//

  223. count =0;
  224. TransmittPulse();
  225. while(count<set_count)
  226. ;
  227. endTransmitt();
  228. }
  229. void send_8bit_code(uchar value)
  230. {
  231. uchar i,temp;
  232. temp=value;
  233. for(i=0;i<8;i++)
  234. {
  235.   if(temp&0x01)  send_logic1(11,32); //1.68ms
  236.   else  send_logic0(11,11); //600US
  237.   temp=temp>>1;
  238. }
  239. }
  240. void send_4bit_code(uchar value)
  241. {
  242. uchar i,temp;
  243. temp=value;
  244. for(i=0;i<4;i++)
  245. {
  246. if(temp&0x01)  send_logic1(11,32); //1.68ms
  247.   else  send_logic0(11,11); //600US

  248.   temp=temp>>1;
  249. }
  250. }
  251. //============================主函數(shù)========================
  252. void main()
  253. {
  254.   TimerInit();      
  255.   while(1)
  256. {
  257.   key_value=KeyScan();
  258.   switch(key_value)
  259.   {
  260.   case 1:ir_out1();delayms(200);break;  //   開和關(guān)
  261.   case 2:ir_out2();delayms(200);break;  //   溫度-
  262.   case 3:ir_out3();delayms(200);break;   //   溫度+.
  263.   case 4:ir_out4();delayms(200);break;  // 模式選擇
  264.   case 5:ir_out5();delayms(200);break;    //轉(zhuǎn)葉設(shè)置
  265.   case 6:ir_out6();delayms(200);break;
  266.     //default:ir=1;break;
  267.   }
  268. }  
  269. }
  270. void timer0(void) interrupt 1
  271. {
  272. TH0=0XfF;
  273. TL0=221; //50us
  274. count++;
  275. if(flag)
  276.    TR2=1; //IR38k=0;
  277. else TR2=0;//IR38k=1;

  278. }
  279. unsigned char KeyScan()
  280. {

  281. /*-------------第一列掃描-----------------*/


  282.     if(key1==0)
  283. {
  284.    delayms(20);
  285.   if(key1==0)
  286.   {
  287.    return 1;
  288.   }
  289.   while(!key1);
  290. }
  291. if(key2==0)
  292. {
  293.    delayms(20);
  294.   if(key2==0)
  295.   {
  296.    return 2;
  297.   }
  298.   while(!key2);
  299. }

  300. if(key3==0)
  301. {
  302.    delayms(20);
  303.   if(key3==0)
  304.   {
  305.    return 3;
  306.   }
  307.   while(!key3);
  308. }
  309. if(key4==0)
  310. {
  311.    delayms(20);
  312.   if(key4==0)
  313.   {
  314.    return 4;
  315.   }
  316.   while(!key4);
  317. }
  318.   if(key5==0)
  319. {
  320.    delayms(20);
  321.   if(key5==0)
  322.   {
  323.    return 5;
  324.   }
  325.   while(!key5);
  326. }
  327.   if(key6==0)
  328. {
  329.    delayms(20);
  330.   if(key6==0)
  331.   {
  332.    return 6;
  333.   }
  334.   while(!key6);
  335. }
  336.    return 0 ;
  337. }


復(fù)制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:272625 發(fā)表于 2018-2-5 21:27 來自手機 | 只看該作者
本來想驗證下樓主程序的!可現(xiàn)在是寒冷的冬天,天氣非常冷,再開空調(diào)怕小命不保呀!
回復(fù)

使用道具 舉報

板凳
ID:275438 發(fā)表于 2018-2-6 01:29 | 只看該作者
都市郎 發(fā)表于 2018-2-5 21:27
本來想驗證下樓主程序的!可現(xiàn)在是寒冷的冬天,天氣非常冷,再開空調(diào)怕小命不保呀!

開熱空調(diào)
回復(fù)

使用道具 舉報

地板
ID:110846 發(fā)表于 2018-2-6 11:16 | 只看該作者
感謝分享~~~很好的資料
回復(fù)

使用道具 舉報

5#
ID:302797 發(fā)表于 2018-5-10 11:23 | 只看該作者
解碼在哪里
回復(fù)

使用道具 舉報

6#
ID:374869 發(fā)表于 2018-7-20 10:36 | 只看該作者
謝謝,我學(xué)習(xí)遙控器怎么關(guān)機。
回復(fù)

使用道具 舉報

7#
ID:424544 發(fā)表于 2018-11-14 11:27 來自手機 | 只看該作者
niuge 發(fā)表于 2018-2-6 01:29
開熱空調(diào)

所有的格力空調(diào)都可以開嗎?
回復(fù)

使用道具 舉報

8#
ID:424544 發(fā)表于 2018-11-14 11:29 來自手機 | 只看該作者
這個程序一般的格力空調(diào)都可以開嗎?
回復(fù)

使用道具 舉報

9#
ID:438442 發(fā)表于 2018-12-3 15:59 | 只看該作者
很優(yōu)秀
回復(fù)

使用道具 舉報

10#
ID:479945 發(fā)表于 2019-3-2 12:30 | 只看該作者
怎么好像用不了呢?
回復(fù)

使用道具 舉報

11#
ID:501238 發(fā)表于 2019-3-30 16:00 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

12#
ID:305245 發(fā)表于 2019-4-27 14:23 | 只看該作者
最近就是想做一個遙控器
回復(fù)

使用道具 舉報

13#
ID:375715 發(fā)表于 2019-4-27 19:34 來自手機 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

14#
ID:628988 發(fā)表于 2019-11-4 19:07 | 只看該作者
第160行是不是少了東西...
回復(fù)

使用道具 舉報

15#
ID:628988 發(fā)表于 2019-11-4 19:10 | 只看該作者
第156行那個函數(shù)是不是應(yīng)該加一句IR^38=0,不然沒有紅外信號發(fā)射啊...
回復(fù)

使用道具 舉報

16#
ID:628988 發(fā)表于 2019-11-5 19:48 | 只看該作者
為什么不用可編程時鐘輸出呀?感覺用波特率發(fā)生器好復(fù)雜...看不懂,還有那兩個捕獲寄存器是做什么用的?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品美女久久久久久免费 | 色婷婷av久久久久久久 | 久草视频2 | 国产精品久久久久久久久久三级 | 国产中文字幕在线观看 | 国外成人免费视频 | 国产一区二区在线免费观看 | 中文字幕日韩欧美一区二区三区 | 亚洲自拍偷拍欧美 | 成人性生交大片免费看r链接 | 国产免国产免费 | 日韩精品一区二 | 亚洲第一免费播放区 | 在线观看视频福利 | 综合五月婷 | 午夜理伦三级理论三级在线观看 | 中文字幕亚洲一区二区va在线 | 久久精品99 | 久久久国产精品视频 | 91成人精品| 天堂一区二区三区四区 | 亚欧精品一区 | 免费在线观看成年人视频 | 国产高清在线精品 | 国产精品久久久久999 | 国产999精品久久久 午夜天堂精品久久久久 | 亚洲一区二区在线免费观看 | 在线免费av电影 | 成人福利视频 | 中文字幕亚洲无线 | 成人欧美一区二区三区 | 在线一区视频 | 欧美二区在线 | 亚洲在线成人 | 黄色小视频大全 | 一级片在线视频 | 91久久国产综合久久 | 欧美在线播放一区 | 成人在线播放网站 | 国产在线一区二 | 久久久久亚洲精品中文字幕 |