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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機無線供電紅外遙控旋轉LED原理圖及程序 實測效果還可以

[復制鏈接]
跳轉到指定樓層
樓主
那個寶的旋轉LED 原理圖及程序 實測效果還可以

無線供電小板原理圖:

底盒上的紅外發光二極管,需對準旋轉主板的紅外接收管
紅外發光二極管點亮后需用攝像頭才可看到發光
人眼無法直接看到發光,請勿以為是普通發光二極管,沒看到亮起來就丟了
中功率三級管 (要加散熱片)
自激震蕩電路,把5V直流電壓轉換成交流電壓




作用:35顆LED獨立控制顯示,D0電源指示燈不可控
常見問題分析:LED焊接反,虛焊,單片機虛焊都有可能導致該LED不亮,對應處理即可

原理:由次級線圈感應的交流電壓經過4個4148全波整流
經過5V1穩壓二極管進行5V穩壓
220uf電容濾波
作用: 給旋轉主板供電
常見問題:4148,5V1,電容焊接反都會導致供電不正常
次級線圈焊接到板上L1處時注意:應該是焊接線圈的不包漆部分

作用:提供時鐘信息
常見問題分析:時鐘顯示不正常:一般是時鐘芯片虛焊導致
秒不走動:一般是晶振有問題導致,或者把20pf電容焊成104電容,后背電池接反也會導秒不走

作用:利用紅外對管作起點檢測
常見問題分析:焊接反或者沒對準紅外發射管均會導致不顯示的現象
注意:紅外接收二極管長腳是負極,短腳是正極

作用:紅外一體化接收頭接收遙控器按鍵
常見問題分析:遙控不靈敏可能是焊接時候沒平行電路板焊接
無法遙控需先判斷是遙控器問題還是接收頭問題

作用:CPU控制LED,讀取時鐘信息,接收遙控,起點檢測
常見問題分析:程序無法下載問題:請用TTL串口進行下載,初學者請務必仔細閱讀使用說明關于程序下載部分
電源接反有可能導致單片機損壞,請務必注意

單片機源程序如下:
  1. #include "NEW_8051.H"
  2. #include "task.h"
  3. bit new_code;
  4. /*結構體*/      /* 保存一次解碼后接收到的四字節數據*/
  5. static struct IR_data    //紅外接收的數據結構
  6. {
  7.     unsigned char addr1;     // 地址1(客戶碼1)
  8.     unsigned char addr2;     // 地址2(客戶碼2)
  9.     unsigned char data1;     // 數據1(數據碼)
  10.     unsigned char data2;     // 數據2(數據碼反碼)
  11. } IR_DATA;
  12. #define GTime 53               
  13. #define CTime 114               
  14. #define D0MinTime 4  
  15. #define D0MaxTime 9  
  16. #define D1MinTime 11  
  17. #define D1MaxTime 16            
  18. #define TimeOut_cnt 250
  19. /*全局公共變量*/
  20. unsigned char T0_CNT;                // 定時器計數值
  21. unsigned char T0_CNT_bk;           // 計數備份
  22. bit TimeOut;                     // 超時標志
  23. bit Guide;                           // 引導碼有效
  24. bit Continuous;                      // 連_發碼
  25. unsigned char xdata IR_Time[33]; // 保存每兩個下降沿之間的時間間隔
  26. uchar key_code;
  27. /*********************************************************************************************
  28. /*Timer1中斷子程序*/
  29. void TR1_Service(void) interrupt 3 using 2
  30. {
  31.     //static unsigned char  T;
  32.   //  T++;
  33.   //  if(T>1)
  34.   //  {
  35.       //  T=0;
  36.         T0_CNT ++;
  37.   //  }
  38.     if(T0_CNT > TimeOut_cnt)
  39.     {
  40.         TimeOut = 1;       // 超時標志
  41.     }
  42. }
  43. /***********************************************************************/
  44. /*解碼核心程序*/
  45. void Decode(void)
  46. {
  47.     unsigned char i=0x00,j,k;
  48.     static unsigned char *p;  // 指向結構體IR_DATA.XX的指針
  49.     EX1 = 0;   // 關外部中斷1
  50.     /*/////////////////////////進行解碼處理////////////////////////*/
  51.     p = &IR_DATA.addr1;
  52.     for(k=0; k<4; k++)
  53.     {
  54.         for(j=0; j<8; j++)
  55.         {
  56.             if((IR_Time[i]>D0MinTime) & (IR_Time[i]<D0MaxTime))
  57.             {
  58.                 *p >>= 1;           // 右移1位,
  59.                 *p &= 0x7f;         // 與0111 1111置0. 數據“0” 0.56ms低電平+0.56ms高電平
  60.             }
  61.             else if((IR_Time[i]>D1MinTime) & (IR_Time[i]<D1MaxTime))
  62.             {
  63.                 *p >>= 1;                // 右移1位,
  64.                 *p |= 0x80;              // 或1000 0000置1. 數據“1” 0.56ms低電平+1.69ms高電平
  65.             }
  66.             i ++;
  67.         }
  68.         p ++;
  69.     }
  70.     if(IR_DATA.data2+IR_DATA.data1==0XFF)
  71.     {
  72.         key_code=IR_DATA.data1;
  73.                 new_code=1;
  74.     }
  75.     else
  76.     {
  77.         key_code=0XFF;   /**非本機遙控器或數據錯誤**/
  78.     };
  79.     /*/////////////////////////解碼處理完畢////////////////////////*/
  80.     EX1 = 1;   // 重新開放外部中斷1
  81. }
  82. void serviceINT0(void) interrupt 2 using 1  //{////外部中斷1的中斷函數。用于紅外線讀數。
  83. {
  84.     static unsigned char m=0;
  85.         TR1=1;
  86.         
  87.     T0_CNT_bk = T0_CNT;     // 備份時間計數值,即前一個下降沿到本下降沿的時間間隔
  88.     T0_CNT = 0x00;          // 清空時間計數值
  89.     if(TimeOut)             // 如果超時
  90.     {
  91.         //  TL0 = TIMER0_COUNT;     // 初始化定時器0       -0x1f(31)
  92.         TimeOut = 0;        // 清除超時標志
  93.         m = 0;              // 復位數據位
  94.         T0_CNT = 0x00;      // 清空時間計數值
  95.         Guide = 0;          // 清除引導標志
  96.         Continuous = 0;     // 清除連_發標志
  97.     }
  98.     else       // 正常按鍵時長58.5ms~76.5ms
  99.     {
  100.         if(Guide | Continuous)          // 如果引導碼有效
  101.         {
  102.             IR_Time[m++] = T0_CNT_bk;       // 保存時間間隔
  103.             if(m == 32)   // 接收夠32數據后
  104.             {
  105.                 m = 0;
  106.                 Guide = 0;    // 清除引導標志
  107.                                  //new_code=1;
  108.                                 TR1=0;
  109.                 /*進行解碼操作*/
  110.                 Decode();     // 解碼
  111.                                        
  112.             }
  113.         }
  114.         if(T0_CNT_bk > GTime)   // 如果時間間隔>引導碼時長
  115.         {
  116.             Guide = 1;          // 使能引導標志
  117.             m = 0;
  118.         };
  119.         if(T0_CNT_bk > CTime)    // 如果時間間隔>連_發碼時長
  120.         {
  121.             Continuous = 1;      // 使能連_發標志
  122.             m = 0;
  123.         }
  124.     }//end of 超時
  125. }
復制代碼

  1. #include "NEW_8051.H"
  2. #include "task.h"

  3. bit BIT_10MS;

  4. extern void OS_ALLRun(void);
  5. extern void start(void);

  6. /*********************************************************************************************************
  7. ** 函數名稱: init
  8. ** 功能描述: 初始化程序,此處包含定時器0、串行口初始化
  9. ** 輸  入: 無
  10. ** 輸  出: 無
  11. ** 全局變量: 無
  12. ** 調用模塊:
  13.   **
  14. ** 作  者:
  15. ** 日  期:
  16. **-------------------------------------------------------------------------------------------------------
  17. ** 修 改 人:
  18. ** 日  期:
  19. **------------------------------------------------------------------------------------------------------
  20. ********************************************************************************************************/
  21. void init()
  22. {
  23.    
  24.         //"系統初始化"
  25.         //IE = 0x00;      //"清除中斷"
  26.         EA = 1;                        //總中斷
  27.         //ES = 1;         //4"串行中斷允許"
  28.         //EX0 = 1;        //0"外部中斷0允許"
  29.         //ET0 = 1;        //1"定時器0中斷允許"
  30.         //EX1 = 1;        //2"外部中斷1允許"
  31.         //ET1 = 1;        //3"定時器1中斷允許"
  32.         //ET2 = 1;
  33.         //IP = 0;         //"清除中斷優先級"
  34.         //PS = 1;         //"串行中斷優先"
  35.         //PX0 = 1;        //"外部中斷0"
  36.         //PT0 = 1;        //"定時器中斷0"
  37.         //PX1 = 1;        //"外部中斷1"
  38.         //PT1 = 0;        //"定時器中斷1"
  39.         //TCON--------     "定時器控制寄存器",   TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0
  40.         //TCON = 0;
  41.         //TF1             "T1溢出標志"
  42.         //TR1 = 1;        //"T1運行控制"
  43.         //TF0             "T0溢出標志"
  44.         //TR0 = 1;        //"T0運行控制"
  45.         //IE1             "外部中斷1申請標志"
  46.         //IT1 = 1;        //"外部中斷1觸發方式 0=電平 1=邊沿"
  47.         //IE0             "外部中斷0申請標志"
  48.         //IT0 = 1;        //"外部中斷0觸發方式 0=電平 1=邊沿"
  49.         //TMOD--------    "定時器模式控制寄存器"
  50.         //  | GATE   | C//T   | M0     | M1    | GATE   | C//T   | M0       | M1        |
  51.         //"高4位用于T1  低4位用于T0"
  52.         //TMOD = 0x21;
  53.         //SCON  "串行控制"
  54.         //| SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI  | RI  |
  55.         //"| SM0  SM1 | 工作方式  |   說    明   |   波 特 率    |"
  56.         //"|   0    0 | 方 式 0   |? 同步移位   |   fosc/12     |"
  57.         //"|   0    1 | 方 式 1   | 10位異步收發 |  定時器控制   |"
  58.         //"|   1    0 | 方 式 2   | 11位異步收發 |fosc/32|fosc/64|"
  59.         //"|   1    1 | 方 式 3   | 11位異步收發 |  定時器控制   |"
  60.         //"SM2 多機通訊允許"
  61.         //"REN 接收允許控制"
  62.         //"TB8 發送數據第9位"
  63.         //"RB8 接收數據第9位"
  64.         //"TI  發送中斷標志"
  65.         //"RI  接受中斷標志"
  66.         //SCON = 0x50;
  67.         //PCON "電源控制寄存器"
  68.         //SMOD"波特率選擇位 =1 方式1,2,3 波特率加倍"
  69.         //"波特率=2^(sod)*fosc/(32*12*(256-初值))"
  70.     //T2CON = 0x0;
  71.     //TR2 = 1;
  72.     //ET2 = 1;
  73. //-----------中斷初始化-------------------------------------------------  BELL
  74. //INT0 init                  
  75. #ifdef EN_OS_INT0
  76.     IT0 = 1;    //外部中斷為邊沿觸發
  77.     EX0 = 1;    //允許外部中斷
  78. #endif



  79.   #ifdef EN_OS_INT1
  80. //        PX1 = 1;    //"外部中斷1"
  81.     IT1 = 1;    //外部中斷為邊沿觸發
  82.     EX1 = 1;    //允許外部中斷
  83.         IP=0X40;
  84.   #endif         
  85.   
  86.    
  87. #ifdef EN_OS_SERIAL
  88.     SCON = 0x50;
  89.     //TMOD|= 0x20;
  90.         BRT           = 0xfb;  //0xfb: 18.432MHz,12T,SMOD=0,9600bps
  91.         AUXR   |= 0x11;        // 使用獨立波特率發生器
  92.    /* TH1  = 0xFB;
  93.     TL1  = 0xFB;
  94.     TR1  = 1; */
  95.     ES   = 1;       //允許串口中斷
  96.     PS = 1;         //"串行中斷優先"
  97.     PSH;
  98. #endif

  99. #ifdef EN_OS_TIMER0
  100. /****************定時器0初始化****************/
  101.   TMOD|=0X01;
  102.           ET0=1;
  103.         TH0 =0x0FE; //200us
  104.     TL0 =0x0CD;
  105. //        TR0=1;         
  106. #endif
  107. /****************定時器1初始化****************/
  108. #ifdef EN_OS_TIMER1
  109.      TMOD|=0X20;//8位自動重載模式
  110.            ET1=1;  //定時器0開中斷
  111.      TH1=0x00;//定時160us 晶振18.432M
  112.      TL1=0x00;
  113.          IPH=0x0C;
  114.          //TR1=1;
  115. #endif
  116. /***************************/
  117. #ifdef EN_OS_UART2         

  118.         S2CON  = 0x50;  //0101,0000 8位可變波特率,無奇偶校驗位,允許接收
  119.         BRT           = 0xfb;  //0xfb: 18.432MHz,12T,SMOD=0,9600bps
  120.         AUXR   |= 0x11;  //T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS        
  121.         IE2            = 0x01;        //允許串口2中斷,ES2=1
  122. #endif

  123. /***/
  124. #ifdef EN_OS_PCA0  //用于16位定時

  125.     CMOD = 0x80;            //0分頻
  126.     CCON = 0x00;   //清中斷標志
  127.     CL = 0;
  128.     CH = 0;
  129.         CCAP0H = 0xEF; //40ms定時
  130.     CCAP0L = 0xD8;                                  //        30 200
  131.         CCAPM0 = 0x49; //設置PCA0為16位定時器,允許PCA模塊0中斷
  132.         //CR=1; //啟動PCA計數
  133. #endif
  134. /*******************************************/
  135. #ifdef EN_OS_PCA1          //用于16位定時

  136.     CMOD = 0x8E;            //12分頻
  137.         CCON = 0x00;   //清中斷標志   
  138.     CL = 0;
  139.     CH = 0;
  140.         CCAP1L =0x26;        //1MS定時
  141.     CCAP1H =0x02;   
  142.         //CCAPM1 = 0x49;  允許PCA模塊1中斷

  143. #endif
  144. /***********************************************************************/
  145. }
  146. /*********************************************************************************************************
  147. ** 函數名稱: main
  148. ** 功能描述: 主函數,用戶程序從這里執行
  149. ** 輸  入: 無
  150. ……………………

  151. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
綜合效果程序.zip (172.71 KB, 下載次數: 40)
旋轉LED主控板.pdf (186.6 KB, 下載次數: 35)
無線供電小板原理圖.pdf (115.89 KB, 下載次數: 33)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:516266 發表于 2019-9-18 15:41 | 只看該作者
樓主有沒有焊好的實物圖?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.99re | 青青久久| 一级做a爰片久久毛片 | 久久高清免费视频 | 日本一二区视频 | av一区二区三区四区 | 欧美jizzhd精品欧美巨大免费 | 亚洲午夜网 | 国产精品久久精品 | 精品久久网 | 九色 在线 | 日日夜夜天天久久 | 91在线最新| 日韩综合| 日韩欧美一区二区在线播放 | 欧美炮房 | 青青草网 | 国产二区视频 | 国产精品日韩 | 国产精品久久久久久久免费观看 | 亚洲人成在线播放 | 亚洲一区三区在线观看 | 中文字幕免费视频 | 在线播放一区二区三区 | 男人的天堂在线视频 | 日韩欧美在线观看 | 神马久久av | 男人的天堂亚洲 | 日韩高清一区二区 | 国产精品小视频在线观看 | 亚洲综合色自拍一区 | 久久精品亚洲成在人线av网址 | 中文在线播放 | 成人在线小视频 | 一区二区三区电影在线观看 | 美女张开腿露出尿口 | 精品一区二区三区免费毛片 | 午夜日韩精品 | 久久久亚洲一区 | 日韩av一区二区在线观看 | 一级高清视频 |