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

標題: 可編程紅外遙控模塊原理圖PCB工程與單片機源碼等全套資料下載 [打印本頁]

作者: 電子愛好者999    時間: 2018-2-24 01:18
標題: 可編程紅外遙控模塊原理圖PCB工程與單片機源碼等全套資料下載
Altium Designer畫的可編程紅外遙控模塊的電路原理圖和PCB圖如下:(51hei附件中可下載工程文件)




單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. void delay(uchar x);  //x*0.14MS
  6. void delay1(int ms);
  7. void beep();
  8. sbit IRIN = P3^3;         //紅外接收器數據線
  9. sbit K1=P1^0;
  10. sbit K2=P1^1;
  11. sbit K3=P1^2;
  12. sbit K4=P1^3;
  13. sbit K5=P1^4;

  14. sbit K6=P0^0;
  15. sbit K7=P0^1;
  16. sbit K8=P0^2;
  17. sbit K9=P0^3;
  18. sbit K10=P0^4;
  19. sbit K11=P0^5;
  20. sbit K12=P0^6;
  21. sbit K13=P0^7;
  22. sbit K14=P2^7;
  23. sbit K15=P2^6;
  24. sbit K16=P2^5;
  25. sbit K17=P2^4;
  26. sbit K18=P2^3;
  27. sbit K19=P2^2;
  28. sbit K20=P2^1;
  29. sbit K21=P2^0;
  30. uchar IRCOM[7];
  31. uchar t1,t2;
  32. main()
  33. {
  34.     IE = 0x84;                 //允許總中斷中斷,使能 INT1 外部中斷
  35.     TCON = 0x10;               //觸發方式為脈沖負邊沿觸發
  36.    IRIN=1;                    //I/O口初始化
  37.   // delay1(10);                 //延時

  38.     while(1)        ;

  39. } //end main
  40. /**********************************************************/
  41. void IR_IN() interrupt 2 using 0
  42. {
  43.   unsigned char j,k,N=0;
  44.      EX1 = 0;   
  45.          delay(15);
  46.          if (IRIN==1)
  47.      { EX1 =1;
  48.            return;
  49.           }
  50.                            //確認IR信號出現
  51.   while (!IRIN)            //等IR變為高電平,跳過9ms的前導低電平信號。
  52.     {delay(1);}

  53. for (j=0;j<4;j++)         //收集四組數據
  54. {
  55.   for (k=0;k<8;k++)        //每組數據有8位
  56.   {
  57.    while (IRIN)            //等 IR 變為低電平,跳過4.5ms的前導高電平信號。
  58.      {delay(1);}
  59.     while (!IRIN)          //等 IR 變為高電平
  60.      {delay(1);}
  61.      while (IRIN)           //計算IR高電平時長
  62.       {
  63.     delay(1);
  64.     N++;           
  65.     if (N>=30)
  66.          { EX1=1;
  67.          return;}                  //0.14ms計數過長自動離開。
  68.       }                        //高電平計數完畢               
  69.      IRCOM[j]=IRCOM[j] >> 1;                  //數據最高位補“0”
  70.      if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //數據最高位補“1”
  71.      N=0;
  72.   }
  73. }
  74.    
  75.    if (IRCOM[2]!=~IRCOM[3])
  76.    { EX1=1;
  77.      return; }

  78.    IRCOM[5]=IRCOM[2] & 0x0F;     //取鍵碼的低四位
  79.    IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位變為低四位
  80.   // IRCOM[5]=IRCOM[5]+0x30;
  81. //  IRCOM[6]=IRCOM[6]+0x30;

  82. if(IRCOM[5]>9)
  83.     { IRCOM[5]=IRCOM[5]+0x37;}
  84.    else
  85.           IRCOM[5]=IRCOM[5]+0x30;

  86.    if(IRCOM[6]>9)
  87.     { IRCOM[6]=IRCOM[6]+0x37;}
  88.    else
  89.           IRCOM[6]=IRCOM[6]+0x30;
  90.           t1=IRCOM[6];
  91.           t2=IRCOM[5];
  92.           //switch(t1,t2)
  93. //  {
  94. //          case '4','5': BEEP=~BEEP; break;
  95. //          case '4','6': BEEP=1; break;
  96. //          default: break;
  97. //          }
  98. if(IRCOM[6]=='4'&&IRCOM[5]=='5')
  99.           K1=!K1        ;
  100. if(IRCOM[6]=='4'&&IRCOM[5]=='6')
  101.       K2=!K2 ;
  102. if(IRCOM[6]=='4'&&IRCOM[5]=='7')
  103.   K3=!K3 ;
  104. if(IRCOM[6]=='4'&&IRCOM[5]=='4')
  105.      K4=!K4        ;
  106.          if(IRCOM[6]=='4'&&IRCOM[5]=='0')
  107.          K5=!K5        ;
  108. if(IRCOM[6]=='4'&&IRCOM[5]=='3')
  109.   K6=!K6        ;
  110.          if(IRCOM[6]=='0'&&IRCOM[5]=='7')
  111.    K7=!K7        ;
  112. if(IRCOM[6]=='1'&&IRCOM[5]=='5')
  113.            K8=!K8         ;
  114.          if(IRCOM[6]=='0'&&IRCOM[5]=='9')
  115.           K9=!K9         ;
  116. if(IRCOM[6]=='1'&&IRCOM[5]=='6')
  117.             K10=!K10        ;
  118.          if(IRCOM[6]=='1'&&IRCOM[5]=='9')
  119.      K11=!K11        ;
  120. if(IRCOM[6]=='0'&&IRCOM[5]=='D')
  121.     K12=!K12        ;
  122.          if(IRCOM[6]=='0'&&IRCOM[5]=='C')
  123.      K13=!K13        ;
  124. if(IRCOM[6]=='1'&&IRCOM[5]=='8')
  125.               K14=!K14;
  126.          if(IRCOM[6]=='5'&&IRCOM[5]=='E')
  127.    K15=!K15;
  128. if(IRCOM[6]=='0'&&IRCOM[5]=='8')
  129.             K16=!K16;
  130. if(IRCOM[6]=='1'&&IRCOM[5]=='C')
  131.              K17=!K17        ;
  132.   if(IRCOM[6]=='5'&&IRCOM[5]=='A')
  133.       K18=!K18 ;
  134.   if(IRCOM[6]=='4'&&IRCOM[5]=='2')
  135.             K19=!K19;
  136.   if(IRCOM[6]=='5'&&IRCOM[5]=='2')
  137.              K20=!K20;
  138.    if(IRCOM[6]=='4'&&IRCOM[5]=='A')
  139.   K21=!K21;
  140.   EX1 = 1;
  141. }                  

  142. /**********************************************************/
  143. void delay(unsigned char x)    //x*0.14MS
  144. {
  145. unsigned char i;
  146.   while(x--)
  147. {
  148.   for (i = 0; i<13; i++) {}
  149. ……………………

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

【簡要說明】
一、 尺寸:54.4mm X35.1mm X   長X寬
二、 主要芯片:STC89c52
三、 工作電壓:直流5~12伏;
五、 可通過紅外遙控器控制單片機上的輸出21路信號。通過按鍵可設置為信號開關,延遲開關,定時開關。可根據實際需要實現。
六:通過對單片機編程可根據實際需要實現。
七:紅外遙控特點:
紅外遙控的編碼目前廣泛使用的是:NEC Protocol  的PWM( 脈沖寬度調制)和Philips
RC-5 Protocol 的PPM(脈沖位置調制)。我們配套的遙控器使用的是NEC 協議,其特征如下:
1 、8 位地址和 8 位指令長度;
2 、地址和命令 2 次傳輸(確保可靠性)
3 、PWM 脈沖位置調制,以發射紅外載波的占空比代表“0”和“1 ”;
4 、載波頻率為 38Khz ;
5 、位時間為1.125ms 或2.25ms ;
NEC 碼的位定義:一個脈沖對應560us 的連續載波,一個邏輯 1 傳輸需要 2.25ms (560us脈沖+1680us 低電平),一個邏輯 0 的傳輸需要1.125ms(560us 脈沖+560us 低電平)。而遙控接收頭在收到脈沖的時候為低電平,在沒有脈沖的時候為高電平,這樣,我們在接收頭端收到的信號為:邏輯1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低+560us 高。
NEC 遙控指令的數據格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個9ms 的低電平和一個4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是
8 位數據格式。按照低位在前,高位在后的順序發送。采用反碼是為了增加傳輸的可靠性(可用于校驗)。


所有資料51hei提供下載:
可編程紅外遙控模塊DXP資料.rar (543.66 KB, 下載次數: 92)
可編程紅外遙控模塊.zip (857.5 KB, 下載次數: 100)


作者: dww465757120    時間: 2018-6-4 15:37
好牛逼的樣子啊啊。
作者: ak333    時間: 2018-6-8 15:28
最近正學習IR程序,努力學習中,謝謝資料!
作者: wangtianbao    時間: 2018-6-12 08:49
挺牛的,不知道能干什么用

作者: 切克奈斯    時間: 2020-5-20 10:20
挺強的

作者: 110101    時間: 2020-10-23 17:20
跟我想要的資料不符合,PDF資料沒有
作者: QTACM    時間: 2021-6-28 19:38
你好,請問哪個部分是紅外模塊啊




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1