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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13619|回復: 4
打印 上一主題 下一主題
收起左側

格力空調遙控器(YB0F2)單片機解碼程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:127902 發(fā)表于 2016-6-23 22:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

紅外解碼的仿真和完整代碼下載詳見:http://www.zg4o1577.cn/bbs/dpj-52500-1.html
  1. 格力空調遙控器(YB0F2)解碼      
  2.     CUP:STC89C52RC     晶振:11.0569MHz
  3.     直接由串口輸出      波特率:57600
  4. ************************************   說 明 **********************************************
  5. 解碼方式:
  6. 以一個9ms的低電平和4.5ms的高電平為引導碼,后跟35位二進制代碼 接著0.565ms低電平和20MS高電平跟32位二進制代碼
  7. 前4個字節(jié)每個字節(jié)為8位,中間1個字節(jié)只有3位,接著為20MS高電平,跟后4個字節(jié)每個字節(jié)為8位
  8.     以低電平為0.565ms、高電平為0.56ms、 周期為1.125ms的組合表示"0";
  9.     以低電平為0.565ms、高電平為1.685ms、周期為2.25ms的組合表示"1"。;
  10. 注意:經(jīng)過紅外接收頭解調后單片機接收到的高低電平是和遙控器發(fā)射時是相反的一個過程
  11. * 兼容 1T-12T單片機中斷方式紅外接收數(shù)據(jù),并通過串口發(fā)送
  12. 程序編輯: lbq691477940         22/07/2011
  13. /*******************************************************************************************/0 S# V) ~# ^" a+ k2 V
  14. /*******************************************************************************************/
  15. #include <reg52.h>  
  16. typedef unsigned char uint8;
  17. sbit Ir_Pin = P3^2;
  18. uint8 Ir_Buf[9]; //用于保存解碼結果
  19. /*******************************************************************************************
  20. * 外部中斷0初始化
  21. /*******************************************************************************************/' z% ?5 r+ `" u9 c
  22. void int1_init(void)
  23. {
  24. IT0 = 1; //下降沿有效
  25. EX0 = 1;
  26. EA = 1;
  27. }
  28. /*******************************************************************************************
  29. * UART初始化1 l2 N5 e* e; }
  30. * 波特率:9600   波特率:57600
  31. /*******************************************************************************************/4 S2 o! d  c, k" o1 T
  32. void uart_init(void)
  33. {
  34.     TMOD = 0x21;
  35.     /* SCON = 0x50;
  36.     TH1 = 0xFD;   //9600bps @ 11.0592MHz
  37.     TL1 = 0xFD;
  38.     TR1 = 1;
  39. SCON = 0x50;
  40. PCON |= 0x80;
  41. TH1 = 0xff;     //57600bps @ 11.0592MHz;
  42. TL1 = 0xff;
  43. TR1 = 1;
  44. }
  45. /******************************   延時21ms子程序   ************************************
  46. void delay21ms(void)   
  47. {
  48.     uint8 a,b;
  49.     for(b=150;b>0;b--)
  50.         for(a=63;a>0;a--);
  51. }
  52. /*******************************************************************************************/' ]! m' Y$ d" t0 s
  53. /*******************************************************************************************
  54. * UART發(fā)送一字節(jié)
  55. /*******************************************************************************************/1 l' a& ^# P: Z
  56. void UART_Send_Byte(uint8 dat)
  57. {
  58. SBUF = dat;
  59. while (TI == 0);
  60. TI = 0;
  61. }
  62. /*******************************************************************************************
  63. * 獲取低電平時間/
  64. /*******************************************************************************************/
  65. unsigned int Ir_Get_Low()
  66. {
  67. TL0 = 0;
  68. TH0 = 0;
  69. TR0 = 1;
  70. while (!Ir_Pin && (TH0 & 0x80)==0);//一直計到Ir_Pin不等0與計到大于1.085*32768=35553.28us
  71. TR0 = 0;         
  72. return (TH0 * 256 + TL0); //返回T1 高八位和低八位計數(shù)值
  73. }
  74. /*******************************************************************************************
  75. * 獲取高電平時間
  76. /*******************************************************************************************/
  77. unsigned int Ir_Get_High()
  78. {
  79. TL0 = 0;
  80. TH0 = 0;
  81. TR0 = 1;
  82. while (Ir_Pin && (TH0 & 0x80)==0);//一直計到Ir_Pin不等1與計到大于1.085*32768=35553.28us
  83. TR0 = 0;
  84. return (TH0 * 256 + TL0); //返回T1 高八位和低八位計數(shù)值' k: M5 q6 C7 h, X* t, b
  85. }
  86. /**********************************  主函數(shù)  ****************************************
  87. main()
  88. {
  89. uart_init();
  90. int1_init();
  91. while (1);
  92. }
  93. /**************************** 外部中斷0解碼函數(shù) ****************************************/
  94. void int1_isr() interrupt
  95. {
  96. unsigned int temp;9 }
  97. char i,j;
  98. temp = Ir_Get_Low();
  99. if ((temp < 7833) || (temp > 8755))    //引導脈沖低電平8500~9500us: g2 X: z( {; _/ h0 T
  100.   return;   //不在這范圍則說明出錯 //1.085*7833=8498us ~ 1.085*8755=9499us
  101. temp = Ir_Get_High();
  102. if ((temp < 3686) || (temp > 4608))    //引導脈沖高電平4000~5000us
  103.   return;    //不在這范圍則說明出錯 //1.085*3686=3999us ~ 1.085*4608=4999us
  104. /*******************************************************************************************/
  105. for (i = 0; i < 4; i++)      //4個字節(jié)
  106. {
  107.   for (j = 0; j < 8; j++)     //每個字節(jié)8位
  108.   {
  109.    temp = Ir_Get_Low();
  110.    if ((temp < 184) || (temp > 737))  //200~800us
  111.     return; //不在這范圍則說明出錯 //1.085*200=217us ~ 1.085*800=868us
  112.    temp = Ir_Get_High();
  113.    if ((temp < 184) || (temp > 1843))  //200~2000us3 r! _  a# t$ Z6 ?- W: u9 h
  114.     return; //不在這范圍則說明出錯 //1.085*200=217us ~ 1.085*2000=2170us
  115.    Ir_Buf[i] >>= 1;     //先將它自動補0: _5 Y, \# b0 f. t
  116.    if (temp > 1032) //1120us   //1.085*1032=1119us
  117.     Ir_Buf[i] |= 0x80;    //如果大于1119us才將它設為1
  118.   }
  119. }
  120. /**************************   第5個字節(jié)只有三位故只讀其低三位即可 ************************/& X+ k8 {8 `: `
  121. for (i = 4; i <= 4; i++)      //1個字節(jié)/ J% I0 |5 L) ]( \) k  h* ]1 {( c
  122. { Ir_Buf[i] = 0;
  123.   for (j = 0; j < 3; j++)     //每個字節(jié)8位# ~- y2 e  [4 Q' i: j9 ^# {" Y6 g  O% {
  124.   {
  125.    temp = Ir_Get_Low();
  126.    if ((temp < 184) || (temp > 737))  //200~800us
  127.     return; //不在這范圍則說明出錯 //1.085*200 = 217us ~ 1.085*800 = 868us
  128.    temp = Ir_Get_High();
  129.    if ((temp < 184) || (temp > 1843))  //200~2000us
  130.     return; //不在這范圍則說明出錯 //1.085*200 = 217us ~ 1.085*2000 = 2170us
  131.    Ir_Buf[i] <<= 1;     //先將它自動補0( F/ ^$ Q8 F6 [; ]' v$ [* g
  132.    if (temp > 1032)  //1120us   //1.085*1032 = 1119us
  133.     Ir_Buf[i] |= 0x01;    //如果大于1119us才將它設為1
  134.   }
  135. }
  136. /*******************************************************************************************/
  137. //delay21ms(); //實測波形只20ms但如果只延時20ms讀出會出錯故延時21ms" ?8 _% g# m" h' `# u' W& @! d1 O% m
  138. temp = Ir_Get_Low();
  139.    if ((temp < 184) || (temp > 737))  //200~800us, h+ Q* e  X' K; R  w
  140.     return; //不在這范圍則說明出錯 //1.085*200 = 217us ~ 1.085*800 = 868us" K" [( _, t2 e7 n
  141. temp = Ir_Get_High();7 N9 u* B$ N5 Z# a
  142. if ((temp < 17498) || (temp > 19354))   //19~21ms
  143.   return;   //不在這范圍則說明出錯 //1.085*17498 = 18985us ~ 1.085*19354 = 20999us4 y( g4 Z" j0 p2 t
  144. /*******************************************************************************************/
  145. for (i = 5; i < 9; i++)       //4個字節(jié)3 t( G& X3 {( P  Y- @
  146.   {! Y6 h2 C: O0 ?! o+ g
  147.    for (j = 0; j < 8; j++)     //每個字節(jié)8位8 K/ D! g6 ~+ w) i/ o' c
  148.    {
  149.     temp = Ir_Get_Low();1 \3 O  o! c4 h% I* ]
  150.     if ((temp < 184) || (temp > 737))  //200~800us: d$ y* I8 Z( k
  151.      return; //不在這范圍則說明出錯 //1.085*200 = 217us ~ 1.085*800 = 868us# E) P4 H! H9 l! S2 z1 i
  152.     temp = Ir_Get_High();, L2 f7 G. u: H1 E
  153.     if ((temp < 184) || (temp > 1843))  //200~2000us
  154.      return; //不在這范圍則說明出錯 //1.085*200 = 217us ~ 1.085*2000 = 2170us! ?( I/ B" p+ }9 S" j
  155.     Ir_Buf[i] >>= 1;     //先將它自動補0
  156.     if (temp > 1032)  //1120us   //1.085*1032 = 1119us
  157.      Ir_Buf[i] |= 0x80;    //如果大于1119us才將它設為1
  158.    }
  159.   }
  160. /*******************************************************************************************/
  161. for(i = 0;i < 9;i++)             //通過串口將代碼發(fā)出9 w- f# k) U* |% y3 o, d' k
  162.   { 6 E$ Q7 L. J2 ~; E" T
  163.    UART_Send_Byte(Ir_Buf[i]);    //將9個字節(jié)的遙控鍵值通過串口輸出$ Z# D  U3 Q6 O4 q% e+ B9 H% }  U
  164.   }7 C2 ^( Z& Z* L
  165. }5 ^; G* g) _( P% S: S, s5 M
  166. /*******************************************************************************************/
復制代碼



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

使用道具 舉報

沙發(fā)
ID:7485 發(fā)表于 2016-6-24 09:34 | 只看該作者
是有亂碼吧?
回復

使用道具 舉報

板凳
ID:158555 發(fā)表于 2017-2-26 16:07 | 只看該作者
有沒有一個具體的實際項目程序打包呢,同求 QQ2777032763
回復

使用道具 舉報

地板
ID:74784 發(fā)表于 2017-2-26 22:43 | 只看該作者
有50462發(fā)射芯片的解碼程序嗎?
回復

使用道具 舉報

5#
ID:316880 發(fā)表于 2018-4-26 15:13 | 只看該作者
有亂碼的 不行的的
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品福利在线 | 亚洲精品成人网 | 日本小视频网站 | 亚洲夜夜爽 | 国产色婷婷精品综合在线播放 | 久草在线影 | 久草免费在线视频 | 男人天堂网址 | 亚洲一区二区在线播放 | 免费视频一区二区 | 美女福利网站 | 国产精品久久久久久久久久久免费看 | 亚洲精品成人网 | 亚洲精品女优 | 亚洲一区二区三区视频 | 亚洲色图插插插 | 综合网伊人 | 在线观看中文字幕 | 天天干在线播放 | 日韩一级电影免费观看 | 日韩一区在线观看视频 | 国产精品久久一区二区三区 | 在线视频91 | 蜜臀久久 | 久久久精品天堂 | 日日操夜夜摸 | 另类亚洲视频 | 热久久国产 | 精品乱码久久久久 | 九九热免费在线观看 | 久久久综合色 | 精品美女久久久 | 中文字幕精品一区 | 综合色影院| 欧美一级三级 | 精品久| 免费h在线 | 日韩av一区二区在线观看 | 亚洲第一天堂无码专区 | 亚洲一区二区三区视频 | 丁香综合 |