欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

8路紅外遙控開(kāi)關(guān)控制器(可擴(kuò)展為32路)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-6 14:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 51黑tt 于 2016-3-6 14:47 編輯

論壇上有一些希望能DIY多路的紅外遙控開(kāi)關(guān),我在此做了一個(gè)DOME版的,同樣用我熟悉的SAA3010T的解碼程序(省下了不少時(shí)間),程

序可以直接用于AT89C51或AT89C2051或相容的芯片,用2051時(shí),P1.0,P1.1要用10K電阻上拉。使用一體化接收頭時(shí)電源方面一定要做好濾波

,如用大的濾波電容使直流更加的穩(wěn)定,用104(0.1uF)的小電容去掉高頻等等,只有這樣才能在一定程序上提高抗干擾性。在程序方面,

我這里做的很簡(jiǎn)單,用了遙控器的1-8號(hào)鍵做1-8的繼電器控制,按一下為繼電器通,再按一下為繼,二次按鍵的間隔時(shí)間大約在1秒鐘,這

樣就可以避免按一次鍵會(huì)使繼電器返復(fù)通斷(按一次鍵的時(shí)間不定發(fā)送鍵值的次數(shù)也不定)。還用了遙控的電源按鍵,按下時(shí)所有斷電器關(guān)

閉。這個(gè)電路如果使用AT89C51的話可以找到32路或更多的控制。有網(wǎng)友說(shuō)要做兼容多遙控學(xué)習(xí)型的,我想也是可行的,那會(huì)用到IC2器件,

存儲(chǔ)收到的數(shù)據(jù)做為學(xué)習(xí),接收時(shí)再對(duì)比對(duì),但是如果你的數(shù)據(jù)較多的話會(huì)造成速度慢等問(wèn)題。我個(gè)人認(rèn)為還是用專一的遙控器好點(diǎn),比如

說(shuō)你用電視遙控去遙控電視和紅外開(kāi)關(guān),當(dāng)你要開(kāi)電視或許同時(shí)會(huì)觸發(fā)到紅外開(kāi)關(guān)。









C51源碼:
  1. /*----------------------------------------

  2. 8路紅外遙控開(kāi)關(guān)控制器
  3. (SAA3010T電視遙控器)

  4. All rights reserved.

  5. 明浩 E-mail: pnzwzw@163.com
  6.        pnzwzw@cdle.net

  7. 只用八路時(shí)可以用AT89C2051代替AT89C51
  8. 一體化接收頭輸出端拉P3.2(int0),P1為控制輸出端。
  9. 可以擴(kuò)展到32路或更多
  10. 輸出為低電平有效
  11. ----------------------------------------*/

  12. #include <AT89x51.h>

  13. static unsigned char data IRCode[3],IRCON,IRCON2;
  14. static unsigned char data DT;

  15. void main(void)
  16. {
  17. unsigned int de;

  18. TMOD = 0x01; //定時(shí)器0方式1
  19. EA = 1; //允許CPU中斷
  20. IT0 = 1; //INT0下降沿有效
  21. EX0 = 1; //開(kāi)INT0中斷;
  22. do
  23. {
  24. for (de=0; de<10000; de++)
  25. P3_6 = 1;
  26. for (de=0; de<10000; de++)
  27. P3_6 = 0;
  28. if (DT)
  29. {
  30. for (de=0; de<30000; de++) //這里起到按鍵值正確后會(huì)有一個(gè)延時(shí),防止重復(fù)按鍵
  31. P3_6 = 1;
  32. for (de=0; de<30000; de++)
  33. P3_6 = 0;
  34. DT = 0;
  35. }
  36. EX0 = 1;
  37. }
  38. while(1);
  39. }

  40. //定時(shí)器0中斷處理
  41. void timeint(void) interrupt 1 using 2
  42. {
  43. TH0=0xFD;
  44. TL0=0x1E; //設(shè)定時(shí)值為800us

  45. if (IRCON<3)
  46. {
  47. if (IRCON2<8) //每中斷一次讀一次遙控接收頭的狀態(tài),每二次為遙控編碼中的一個(gè)位
  48. {
  49. IRCON2++;
  50. IRCode[IRCON]=IRCode[IRCON]<<1; //每讀一次放入變量中的二進(jìn)制的一個(gè)位,每次左移一位
  51. IRCode[IRCON]=IRCode[IRCON] | P3_2; //每八次填滿一個(gè)字節(jié),一個(gè)字節(jié)存放遙控編碼4個(gè)位
  52. }
  53. else
  54. {
  55. IRCON++; //填滿一個(gè)字節(jié),指向下一個(gè)變量
  56. IRCON2=0; //計(jì)數(shù)清零
  57. }
  58. }
  59. else
  60. {
  61. TR0 = 0; //關(guān)閉定時(shí)器
  62. ET0 = 0; //定時(shí)器0中斷關(guān)閉
  63. if ((IRCode[1]!=0xFF) && (IRCode[2]!=0xFF))
  64. {
  65. if (IRCode[1] == 0x55)
  66. {
  67. switch (IRCode[2])
  68. {
  69. case 0xAB: //1-8鍵控制
  70. P1_0 = ~P1_0;
  71. DT = 1;
  72. break;
  73. case 0xAC:
  74. P1_1 = ~P1_1;
  75. DT = 1;
  76. break;
  77. case 0xAD:
  78. P1_2 = ~P1_2;
  79. DT = 1;
  80. break;
  81. case 0xB2:
  82. P1_3 = ~P1_3;
  83. DT = 1;
  84. break;
  85. case 0xB3:
  86. P1_4 = ~P1_4;
  87. DT = 1;
  88. break;
  89. case 0xB4:
  90. P1_5 = ~P1_5;
  91. DT = 1;
  92. break;
  93. case 0xB5:
  94. P1_6 = ~P1_6;
  95. DT = 1;
  96. break;
  97. case 0xCA:
  98. P1_7 = ~P1_7;
  99. DT = 1;
  100. break;
  101. case 0xD2: //按關(guān)閉電源鍵,關(guān)閉所有繼電器
  102. P1 = 0xFF;
  103. DT = 1;
  104. break;
  105. }
  106. }
  107. }
  108. }
  109. }

  110. //INT0中斷
  111. void INT0Fun(void) interrupt 0 using 2
  112. {
  113. EX0 = 0; //外部中斷0關(guān)閉
  114. ET0 = 1; //定時(shí)器0中斷打開(kāi)
  115. TH0=0xFD;
  116. TL0=0x1E; //設(shè)定時(shí)值為800us

  117. for (IRCON=0; IRCON<3; IRCON++)
  118. IRCode[IRCON] = 0;
  119. IRCON = 0;
  120. IRCON2 = 0; //計(jì)數(shù)清零

  121. TR0 = 1;//開(kāi)始計(jì)數(shù)
  122. }

  123.   
復(fù)制代碼




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

使用道具 舉報(bào)

沙發(fā)
ID:108142 發(fā)表于 2016-3-10 00:32 來(lái)自觸屏版 | 只看該作者
我的微信SUN469923905請(qǐng)大神指教
回復(fù)

使用道具 舉報(bào)

板凳
ID:194844 發(fā)表于 2017-5-1 19:35 | 只看該作者
verygood!
回復(fù)

使用道具 舉報(bào)

地板
ID:154669 發(fā)表于 2017-5-2 10:46 | 只看該作者
有制作教程嗎,
回復(fù)

使用道具 舉報(bào)

5#
ID:95393 發(fā)表于 2017-5-23 02:53 來(lái)自觸屏版 | 只看該作者
先做個(gè)記號(hào),有空鉆研一下程序
回復(fù)

使用道具 舉報(bào)

6#
ID:204748 發(fā)表于 2017-5-28 13:11 來(lái)自觸屏版 | 只看該作者
謝謝分享。謝謝奉獻(xiàn)。謝謝樓主。
回復(fù)

使用道具 舉報(bào)

7#
ID:272625 發(fā)表于 2018-2-20 00:43 | 只看該作者
樓主請(qǐng)教下,為什么程序編譯通過(guò),可燒錄到單片機(jī)什么反應(yīng)都沒(méi)有。程序如下:/**********************BST-V51實(shí)驗(yàn)開(kāi)發(fā)板例程************************
回復(fù)

使用道具 舉報(bào)

8#
ID:272625 發(fā)表于 2018-2-20 00:43 | 只看該作者
/**********************BST-V51實(shí)驗(yàn)開(kāi)發(fā)板例程************************
*  平臺(tái):BST-V51 + Keil U3 + STC89C52
*  名稱:8路紅外遙控開(kāi)關(guān)控制器   
*  日期:2018-1-17
*  晶振:11.0592MHZ

(SAA3010T電視遙控器)

All rights reserved.

明浩 E-mail: pnzwzw@163.com

      pnzwzw@cdle.net

只用八路時(shí)可以用AT89C2051代替AT89C51

一體化接收頭輸出端拉P3.2(int0),P1為控制輸出端。

可以擴(kuò)展到32路或更多

輸出為低電平有效
******************************************************************/
#include<AT89X51.h>
static unsigned char data IRCode[3],IRCON,IRCON2;
static unsigned char data DT;

void main(void)

{
   unsigned int de;

   TMOD = 0x01; //定時(shí)器0方式1  

   EA = 1; //允許CPU中斷

   IT0 = 1; //INT0下降沿有效

   EX0 = 1; //開(kāi)INT0中斷;  

   do

   {

      for (de=0; de<10000; de++)

      P3_6 = 1;

      for (de=0; de<10000; de++)

      P3_6 = 0;

      if (DT)

      {

         for (de=0; de<30000; de++) //這里起到按鍵值正確后會(huì)有一個(gè)延時(shí),防止重復(fù)按鍵

         P3_6 = 1;

         for (de=0; de<30000; de++)

         P3_6 = 0;

         DT = 0;

      }

      EX0 = 1;

   }

      while(1);

}

//定時(shí)器0中斷處理

void timeint(void) interrupt 1 using 2

{

   TH0=0xFD;

   TL0=0x1E; //設(shè)定時(shí)值為800us

   if (IRCON<3)

   {

      if (IRCON2<8) //每中斷一次讀一次遙控接收頭的狀態(tài),每二次為遙控編碼中的一個(gè)位

     {
        IRCON2++;

        IRCode[IRCON]=IRCode[IRCON]<<1; //每讀一次放入變量中的二進(jìn)制的一個(gè)位,每次左移一位

        IRCode[IRCON]=IRCode[IRCON] | P3_2; //每八次填滿一個(gè)字節(jié),一個(gè)字節(jié)存放遙控編碼4個(gè)位

     }

     else

     {

        IRCON++; //填滿一個(gè)字節(jié),指向下一個(gè)變量

        IRCON2=0; //計(jì)數(shù)清零

     }

   }

      else

     {

        TR0 = 0; //關(guān)閉定時(shí)器

        ET0 = 0; //定時(shí)器0中斷關(guān)閉

        if ((IRCode[1]!=0xFF) && (IRCode[2]!=0xFF))

       {

          if (IRCode[1] == 0x55)

          {

             switch (IRCode[2])

             {

                case 0x0C: //1-8鍵控制已改為MP3通用遙控器

                P1_0 = ~P1_0;

                DT = 1;

                break;

                case 0x18:

                P1_1 = ~P1_1;

                DT = 1;

                break;

                case 0x5E:

                P1_2 = ~P1_2;

                DT = 1;

                break;

                case 0x08:

                P1_3 = ~P1_3;

                DT = 1;

                break;

                case 0x1C:

                P1_4 = ~P1_4;

                DT = 1;

                break;

                case 0x5A:

                P1_5 = ~P1_5;

                DT = 1;

                break;

                case 0x42:

                P1_6 = ~P1_6;

                DT = 1;

                break;

                case 0x52:

                P1_7 = ~P1_7;

                DT = 1;

                break;

                case 0x45: //按關(guān)閉電源鍵,關(guān)閉所有繼電器

                P1 = 0xFF;

                DT = 1;

                break;

             }

         }

      }

   }

}



//INT0中斷

void INT0Fun(void) interrupt 0 using 2

{

    EX0 = 0; //外部中斷0關(guān)閉

    ET0 = 1; //定時(shí)器0中斷打開(kāi)

    TH0=0xFD;

    TL0=0x1E; //設(shè)定時(shí)值為800us

    for (IRCON=0; IRCON<3; IRCON++)

    IRCode[IRCON] = 0;

    IRCON = 0;

    IRCON2 = 0; //計(jì)數(shù)清零

    TR0 = 1;//開(kāi)始計(jì)數(shù)

}


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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