找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大家好,誰有紅外線解碼程序,求大神們發(fā)個,謝謝了。。。。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:83228 發(fā)表于 2015-7-19 11:02 來自手機(jī) | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
紅外解碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2015-7-19 23:38 | 只看該作者
回復(fù)

使用道具 舉報(bào)

板凳
ID:85124 發(fā)表于 2015-7-22 17:18 | 只看該作者
好貼,樓上么么噠
回復(fù)

使用道具 舉報(bào)

地板
ID:83228 發(fā)表于 2015-7-23 19:47 來自手機(jī) | 只看該作者
admin 發(fā)表于 2015-7-19 23:38
這里有 紅外解碼詳解http://www.torrancerestoration.com/mcu/184.html

謝謝昂
回復(fù)

使用道具 舉報(bào)

5#
ID:79544 發(fā)表于 2015-7-24 09:55 | 只看該作者
這是我現(xiàn)在
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code table_we[]={
  6.           0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  7. uchar code table_du[]={0xC0,0xF9,0xA4,0xB0,0x99,
  8.                                         0x92,0x82,0xf8,0x80,0x90,0x88,
  9.                                         0x83,0xC6,0xA1,0x86,0x8E};
  10. sbit ir=P3^3;
  11. sbit a=P0^0;//LED或小車端口
  12. sbit b=P0^1;//LED或小車端口
  13. sbit c=P0^2;//LED或小車端口
  14. sbit d=P0^3;//LED或小車端口
  15. uchar irtime;//紅外時間變量
  16. uchar irdata[33];//
  17. uchar bitnum;//第幾位
  18. uchar startflag;//起始標(biāo)志位
  19. uchar irok;//接收結(jié)束變量
  20. uchar ircode[4];

  21. uchar irprosok;
  22. uchar disnum[4];
  23. //uchar disnum[8];

  24. sbit duan=P0^6;
  25. sbit wei=P0^7;


  26. void timer0init(void) //256*(1/12m)*12=0.256ms
  27. {
  28.         TMOD=0x02;//方式2
  29.         TH0=0x00;
  30.         TL0=0x00;
  31.         ET0=1;
  32.         EA=1;
  33.         TR0=1;
  34. }
  35. void irpros(void) // 紅外碼值處理
  36. {
  37.         uchar mun,k,i,j;
  38.         k=1;
  39.         for(j=0;j<4;j++)//讀出4個碼循環(huán)4次
  40.         {
  41.                 for(i=0;i<8;i++)
  42.                 {
  43.                         mun=mun>>1;//右移7次
  44.                         if(irdata[k]>7)//判斷8次 大于6是高電平,小于6是低電平
  45.                         {
  46.                                 mun=mun | 0x80;
  47.                         }
  48.                                 k++;
  49.                 }
  50.                 ircode[j]=mun;
  51.         }
  52.         irprosok=1;
  53. }

  54. void irwork(void) // 紅外碼值轉(zhuǎn)換
  55. {
  56.         disnum[0]=ircode[0]/16;
  57.         disnum[1]=ircode[0]%16;
  58. //        disnum[2]=ircode[1]/16;
  59. //        disnum[3]=ircode[1]%16;
  60.         disnum[2]=ircode[2]/16;
  61.         disnum[3]=ircode[2]%16;
  62. //        disnum[6]=ircode[3]/16;
  63. //        disnum[7]=ircode[3]%16;

  64. }

  65. void delay(uchar x)
  66. {
  67.         uchar a,b;
  68.         for(a=x;a>0;a--)
  69.                 for(b=200;b>0;b--);

  70. }
  71. void display()//顯示
  72. {
  73.         P2=0xfe;
  74.         wei=1;
  75.         wei=0;
  76.         delay(5);

  77.         P2=table_du[disnum[0]];
  78.         delay(5);
  79.         duan=1;
  80.         duan=0;
  81.         P2=0xff;

  82.         P2=0xfd;
  83.         wei=1;
  84.         wei=0;
  85.         delay(5);

  86.         P2=table_du[disnum[1]];
  87.         delay(5);
  88.         duan=1;
  89.         duan=0;
  90.         P2=0xff;

  91.         P2=0xfb;
  92.         wei=1;
  93.         wei=0;
  94.         delay(5);

  95.         P2=table_du[disnum[2]];
  96.         delay(5);
  97.         duan=1;
  98.         duan=0;
  99.         P2=0xff;

  100.         P2=0xf7;
  101.         wei=1;
  102.         wei=0;
  103.         delay(5);

  104.         P2=table_du[disnum[3]];
  105.         delay(5);
  106.         duan=1;
  107.         duan=0;
  108.         P2=0xff;
  109.        
  110. }


  111. void int0init(void)//外部中斷初始化
  112. {
  113. IT1=1;//下降沿觸發(fā)
  114. EX1=1;//開外部中斷
  115. EA=1;//開總中斷
  116. }


  117. void main()
  118. {
  119.         timer0init();
  120.         int0init();
  121.         while(1)
  122.         {
  123.                 if(irok==1)
  124.                 {
  125.                         irpros();
  126.                         irok=0;
  127.                 }
  128.                 if(irprosok==1)
  129.                 {
  130.                         irwork();
  131.                         irprosok=0;
  132.                 }
  133.                   display();
  134.                
  135.         }
  136.                
  137. }

  138. void int0 () interrupt 2 //外部0中斷服務(wù)
  139. {
  140. if(startflag)
  141. {
  142. // if(irtime>32&&irtime<63)  //8-16ms檢測引導(dǎo)碼
  143.         if(irtime>32)
  144.         {
  145.            bitnum=0;
  146.         }
  147.         irdata[bitnum]=irtime;
  148.         irtime=0;
  149.         bitnum++;
  150.         if(bitnum==33)//接收結(jié)束
  151.           {
  152.            bitnum=0;
  153.            irok=1;
  154.           }
  155. }
  156. else
  157. {
  158.         startflag=1;
  159.         irtime=0;
  160. }
  161. }

  162. void timer0 () interrupt 1//定時器0中斷服務(wù)函數(shù)
  163. {
  164.         irtime++;
  165. }
復(fù)制代碼
用的紅外解碼程序。解碼數(shù)值用數(shù)碼管顯示。
回復(fù)

使用道具 舉報(bào)

6#
ID:83228 發(fā)表于 2015-7-24 10:33 來自手機(jī) | 只看該作者
騰飛的龍 發(fā)表于 2015-7-24 09:55
這是我現(xiàn)在用的紅外解碼程序。解碼數(shù)值用數(shù)碼管顯示。

好東西,謝了昂
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表