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

標題: 21路紅外線遙控開關程序 [打印本頁]

作者: daniu    時間: 2014-12-24 16:02
標題: 21路紅外線遙控開關程序
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
void delay(uchar x);  //x*0.14MS
void delay1(int ms);
void beep();
sbit IRIN = P3^2;         //紅外接收器數據線
sbit BEEP = P1^5;         //蜂鳴器驅動線
sbit RELAY1= P1^0;         //繼電器驅動線
sbit RELAY2= P1^1;         //繼電器驅動線
sbit RELAY3= P1^2;         //繼電器驅動線
sbit RELAY4= P1^3;         //繼電器驅動線
sbit RELAY5= P1^4;         //繼電器驅動線
sbit RELAY6= P1^6;         //繼電器驅動線
sbit RELAY7= P1^7;         //繼電器驅動線
uchar IRCOM[7];
main()
{
    IRIN=1;                    //I/O口初始化
    BEEP=1;
    RELAY1=1;
delay1(10);                 //延時
    IE = 0x81;                 //允許總中斷中斷,使能 INT0 外部中斷
TCON = 0x01;               //觸發方式為脈沖負邊沿觸發
     while(1);

} //end main
/**********************************************************/
void IR_IN() interrupt 0 using 0
{
      unsigned char i,j,k,N=0;
     EX0 = 0;     //關掉外部中斷防止中斷的再次發生進入檢測引導碼階段(9ms的低電平4.5ms的高電平)
delay(15);
if (IRIN==1)
     { EX0 =1;  //9ms的檢測檢測結束從新打開外部中斷
  return;
}
                           //確認IR信號出現
  while (!IRIN)            //等IR變為高電平,跳過9ms的前導低電平信號。
    {delay(1);}

for (j=0;j<4;j++)         //收集四組數據
{
for (k=0;k<8;k++)        //每組數據有8位
{
  while (IRIN)            //等 IR 變為低電平,跳過4.5ms的引導高電平信號。
    {delay(1);}
   while (!IRIN)          //等 IR 變為高電平
    {delay(1);}
    while (IRIN)           //計算IR高電平時長(0和1的低電平的時長一樣的,只要判斷高電平時長超過0.56ms并小于1.12ms為1否  則為0)
     {
   delay(1);
   N++;           
if (N>=30)
{
EX0=1;
return;
}                  //0.14ms計數過長自動離開。
     }                        //高電平計數完畢               
    IRCOM[j]=IRCOM[j] >> 1;                  //數據最高位補“0”
    if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}  //高電平持續時間大于1.12ms則數據最高位補“1”
    N=0;
}//end for k
}//end for j

   if (IRCOM[2]!=~IRCOM[3])  // 判斷有沒有誤碼(有責放棄沒有判斷鍵碼)
   { EX0=1;
     return;
}
     switch(IRCOM[2])
{   // 顯示遙控上的字符按鍵
   case 0x45:
RELAY1=!RELAY1;  
break;
case 0x46:
    RELAY2=!RELAY2;
break;
case 0x47:
    RELAY3=!RELAY4;  
break;
case 0x44:
     RELAY4=!RELAY4;
break;
case 0x40:
      RELAY5=!RELAY5;
break;
case 0x43:
      RELAY6=!RELAY6;
break;
case 0x07:
      RELAY7=!RELAY7;
break;
case 0x15:
      RELAY1=!RELAY1;
break;
   case 0x09:

break;
case 0x19:
    ........
break;
case 0x0d:
    ........
break;  
case 0x16:  
    .........;
break;
case 0x0c:   
  .........
break;
case 0x18:
............   
break;
case 0x5e:
................  
break;
case 0x08:
    ..............
break;
case 0x1c:

break;
case 0x5a:

break;
   case 0x42:

break;
case 0x52:

break;
case 0x4a:

break;
}
     beep();
     EX0 = 1;
}

/**********************************************************/
void beep()
{
  unsigned char i;
  for (i=0;i<100;i++)
   {
   delay(4);
   BEEP=!BEEP;                 //BEEP取反
   }
  BEEP=1;                      //關閉蜂鳴器
}
/**********************************************************/
void delay(unsigned char x)    //x*0.14MS
{
unsigned char i;
  while(x--)
{
  for (i = 0; i<13; i++) {}
}
}

/**********************************************************/
void delay1(int ms)
{
unsigned char y;
  while(ms--)
{
  for(y = 0; y<250; y++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
}
}


作者: 51hei電控2112312    時間: 2014-12-24 20:30
GOOD!!!
作者: blj178    時間: 2014-12-25 14:01

作者: 我愛單片機①    時間: 2014-12-27 15:45
有圖紙嗎?樓主
作者: qq704661078    時間: 2015-1-31 20:25
謝謝樓主分享!!!
作者: 202305415    時間: 2015-3-2 21:43
很不錯的

作者: zrb5688    時間: 2015-3-3 10:25
樓主挺強,不錯
作者: hanpaopao    時間: 2015-5-19 16:13
找了好久啊
作者: tomgay    時間: 2017-5-1 19:42
有圖紙嗎?樓主
作者: Nemesis_126    時間: 2017-8-6 18:20
看不懂,發射的信號是怎樣的?
作者: 211209    時間: 2017-12-24 11:51
拿來玩下謝謝分享
作者: 老頭    時間: 2019-7-4 15:50

謝謝樓主分享!!!




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