• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      8路紅外遙控開關控制器(可擴展為32路)
      文章長度[4759] 加入時間[2007/4/13] 更新時間[2023/10/27 12:23:11] 級別[0] [評論] [收藏]

      8路紅外遙控開關控制器(可擴展為32路)

      作者:溫正偉 出處:磁動力電子 www.cdle.net

        在此給出的只是一個DEMO,主要著重于單片機的應用上,安全方面請大家自行考慮增加。

        論壇上有一些朋友希望能DIY多路的紅外遙控開關,我在此做了一個DOME版的,同樣用我熟悉的SAA3010T的解碼程序(省下了不少時間),程序可以直接用于AT89C51或AT89C2051或相容的芯片,用2051時,P1.0,P1.1要用10K電阻上拉。使用一體化接收頭時電源方面一定要做好濾波,如用大的濾波電容使直流更加的穩定,用104(0.1uF)的小電容去掉高頻等等,只有這樣才能在一定程序上提高抗干擾性。在程序方面,我這里做的很簡單,用了遙控器的1-8號鍵做1-8的繼電器控制,按一下為繼電器通,再按一下為繼,二次按鍵的間隔時間大約在1秒鐘,這樣就可以避免按一次鍵會使繼電器返復通斷(按一次鍵的時間不定發送鍵值的次數也不定)。還用了遙控的電源按鍵,按下時所有斷電器關閉。這個電路如果使用AT89C51的話可以找到32路或更多的控制。有網友說要做兼容多遙控學習型的,我想也是可行的,那會用到IC2器件,存儲收到的數據做為學習,接收時再對比對,但是如果你的數據較多的話會造成速度慢等問題。我個人認為還是用專一的遙控器好點,比如說你用電視遙控去遙控電視和紅外開關,當你要開電視或許同時會觸發到紅外開關。

                                                  明浩 2004.03.28


      實驗的實物圖

      點擊看大圖
      原理圖-1

      點擊看大圖
      原理圖-2(點擊看大圖)

      點擊看大圖
      鍵值編碼 (點擊看大圖)

      單片機HEX文件下載:cdle050034.rar

      C51源碼:

      /*----------------------------------------

      8路紅外遙控開關控制器
      (SAA3010T電視遙控器)

      Copyright 2004/3/27
      http://www.cdle.net
      http://bbs.cdle.net

      All rights reserved.

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

      只用八路時可以用AT89C2051代替AT89C51
      一體化接收頭輸出端拉P3.2(int0),P1為控制輸出端。
      可以擴展到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; //定時器0方式1
      EA = 1; //允許CPU中斷
      IT0 = 1; //INT0下降沿有效
      EX0 = 1; //開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++) //這里起到按鍵值正確后會有一個延時,防止重復按鍵
      P3_6 = 1;
      for (de=0; de<30000; de++)
      P3_6 = 0;
      DT = 0;
      }
      EX0 = 1;
      }
      while(1);
      }

      //定時器0中斷處理
      void timeint(void) interrupt 1 using 2
      {
      TH0=0xFD;
      TL0=0x1E; //設定時值為800us

      if (IRCON<3)
      {
      if (IRCON2<8) //每中斷一次讀一次遙控接收頭的狀態,每二次為遙控編碼中的一個位
      {
      IRCON2++;
      IRCode[IRCON]=IRCode[IRCON]<<1; //每讀一次放入變量中的二進制的一個位,每次左移一位
      IRCode[IRCON]=IRCode[IRCON] | P3_2; //每八次填滿一個字節,一個字節存放遙控編碼4個位
      }
      else
      {
      IRCON++; //填滿一個字節,指向下一個變量
      IRCON2=0; //計數清零
      }
      }
      else
      {
      TR0 = 0; //關閉定時器
      ET0 = 0; //定時器0中斷關閉
      if ((IRCode[1]!=0xFF) && (IRCode[2]!=0xFF))
      {
      if (IRCode[1] == 0x55)
      {
      switch (IRCode[2])
      {
      case 0xAB: //1-8鍵控制
      P1_0 = ~P1_0;
      DT = 1;
      break;
      case 0xAC:
      P1_1 = ~P1_1;
      DT = 1;
      break;
      case 0xAD:
      P1_2 = ~P1_2;
      DT = 1;
      break;
      case 0xB2:
      P1_3 = ~P1_3;
      DT = 1;
      break;
      case 0xB3:
      P1_4 = ~P1_4;
      DT = 1;
      break;
      case 0xB4:
      P1_5 = ~P1_5;
      DT = 1;
      break;
      case 0xB5:
      P1_6 = ~P1_6;
      DT = 1;
      break;
      case 0xCA:
      P1_7 = ~P1_7;
      DT = 1;
      break;
      case 0xD2: //按關閉電源鍵,關閉所有繼電器
      P1 = 0xFF;
      DT = 1;
      break;
      }
      }
      }
      }
      }

      //INT0中斷
      void INT0Fun(void) interrupt 0 using 2
      {
      EX0 = 0; //外部中斷0關閉
      ET0 = 1; //定時器0中斷打開
      TH0=0xFD;
      TL0=0x1E; //設定時值為800us

      for (IRCON=0; IRCON<3; IRCON++)
      IRCode[IRCON] = 0;
      IRCON = 0;
      IRCON2 = 0; //計數清零

      TR0 = 1;//開始計數
      }

      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版,91色色天堂网,91小伙大屁股熟女高潮系列,97年轻水嫩的漂亮大学美女