標(biāo)題: 30路紅外遙控開(kāi)關(guān) [打印本頁(yè)]

作者: ll13536121668    時(shí)間: 2018-6-26 15:50
標(biāo)題: 30路紅外遙控開(kāi)關(guān)
本帖最后由 ll13536121668 于 2018-6-27 09:49 編輯

30路紅外遙控開(kāi)關(guān)因使用不方便,
想用一只管腳復(fù)用到每路輸出增加30只手動(dòng)開(kāi)關(guān)可以嗎
程序什樣修改才能增加30只手動(dòng)開(kāi)關(guān),
勞煩各位師傅研究一下什樣修改
//12M晶振
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit P3_2=P3^2;
sbit LED=P3^3;
sbit A0=P0^0  ;
sbit A1=P0^1  ;
sbit A2=P0^2  ;
sbit A3=P0^3  ;
sbit A4=P0^4  ;
sbit A5=P0^5  ;
sbit A6=P0^6  ;
sbit A7=P0^7  ;

sbit B0=P2^0  ;
sbit B1=P2^1  ;
sbit B2=P2^2  ;
sbit B3=P2^3  ;
sbit B4=P2^4  ;
sbit B5=P2^5  ;
sbit B6=P2^6  ;
sbit B7=P2^7  ;

sbit C0=P1^0  ;
sbit C1=P1^1  ;
sbit C2=P1^2  ;
sbit C3=P1^3  ;
sbit C4=P1^4  ;
sbit C5=P1^5  ;
sbit C6=P1^6  ;
sbit C7=P1^7  ;

sbit D0=P3^0  ;
sbit D1=P3^1  ;
//sbit D3=P3^3  ;
sbit D4=P3^4  ;
sbit D5=P3^5  ;
sbit D6=P3^6  ;
sbit D7=P3^7  ;

unsigned char data IRCode[4],IRCON,IRCON2;
unsigned int k,s=1;
unsigned char i,m,count;
//uchar code dis_7[]={0x18,0xDB,0x31,0x91,0xD2,0x94,0x14,0xD9,0x10,0x90,0xFF,0x3C,0xf7};
//uchar code scan_con[]={0x7F,0xBF,0xDF,0xEF};//段碼表 從右至左掃描
//uchar data dis[]={0x00,0x00};

uchar data  keyvol,disout,n;
//void scan();
//void delay1ms( uchar t);
/***************延時(shí)函數(shù)*******************/
  void delay1ms( uint t)
{
  uint k,n;
  for (k=0;k<t;k++)
    {
           for (n=0;n<121;n++);
         }
}
/***************延時(shí)函數(shù)*******************/
void delay850us( void)
{      uint j;
           for (j=0;j<105;j++);//24M晶振時(shí)j=200,12M晶振時(shí),j=105;
}
/***************延時(shí)函數(shù)*******************/
void delay1200us( void)
{      uint j;
           for (j=0;j<150;j++);//24M晶振時(shí)j=400,12M晶振時(shí),j=150;
}
/**********************************/
void main()
{
   EA = 1; //允許CPU中斷
   EX0 = 1; //開(kāi)INT0中斷;   
   while (1)
     {
       if (LED==0)   
              {
             delay1ms( 500);
                         LED=1;
                  }
     }  
}
/**********************************/
//INT0中斷
void INT0Fun(void) interrupt 0 //using 2
{
  EA = 0; //外部中斷0關(guān)閉  
  for (i=0;i<12;i++)
    {
       delay850us();
           if (P3_2==0)  count++;
            else  break ;           
        }
  if (count==12)
    {  count=0;           
       while (P3_2==0);
           delay850us(); //跳過(guò)564us的高電平。
                    
       for (IRCON=0;IRCON<4;IRCON++)
         {
           for (IRCON2=0;IRCON2<8;IRCON2++) //每中斷一次讀一次遙控接收頭的狀態(tài),每二次為遙控編碼中的一個(gè)位
             {
                           IRCode[IRCON]=IRCode[IRCON]>>1; //每讀一次放入變量中的二進(jìn)制的一個(gè)位,每次左移一位
                           while (P3_2==0);
               delay850us();                             
               if (P3_2)  
                               {
                                       IRCode[IRCON]=IRCode[IRCON] | 0x80; //每八次填滿一個(gè)字節(jié),一個(gè)字節(jié)存放遙控編碼4個(gè)位
                       delay1200us();
                                   }
                     }
         }  

       if ((IRCode[0]==0x00) && (IRCode[1]==0xFF))
           {
              if (IRCode[2]==~IRCode[3])
                 {
                                   keyvol=IRCode[2];
                                   n=keyvol;
                                   LED=0;
                                   switch  (keyvol)
                     {
                         case  1:  { A0= ~ A0 ; break;}
                         case  2:  { A1= ~ A1 ; break;}
                         case  3:  { A2= ~ A2 ; break;}
                         case  4:  { A3= ~ A3 ; break;}
                         case  5:  { A4= ~ A4 ; break;}
                         case  6:  { A5= ~ A5 ; break;}
                         case  7:  { A6= ~ A6 ; break;}
                         case  8:  { A7= ~ A7 ; break;}

                         case  9:   { B0= ~ B0 ; break;}
                         case  10:  { B1= ~ B1 ;break; }
                         case  11:  { B2= ~ B2 ;break; }
                         case  12:  { B3= ~ B3 ;break; }
                         case  13:  { B4= ~ B4 ;break; }
                         case  14:  { B5= ~ B5 ; break;}
                         case  15:  { B6= ~ B6 ;break; }
                         case  16:  { B7= ~ B7 ;break; }

                         case  17:  { C0= ~ C0 ; break;}
                         case  18:  { C1= ~ C1 ; break;}
                         case  19:  { C2= ~ C2 ;break; }
                         case  20:  { C3= ~ C3 ;break; }
                         case  21:  { C4= ~ C4 ;break; }
                         case  22:  { C5= ~ C5 ;break; }                                                
                         case  23:  { C6= ~ C6 ;break; }
                         case  24:  { C7= ~ C7 ;break; }

                                                 case  25:  { D0= ~ D0 ;break; }
                                                 case  26:  { D1= ~ D1 ;break; }
                                                 case  27:  { D4= ~ D4 ;break; }
                                                 case  28:  { D5= ~ D5 ;break; }
                         case  29:  { D6= ~ D6 ;break; }
                                                 case  30:  { D7= ~ D7 ;break; }
                         case  31:  { P0=0XFF; P1=0XFF; P2=0XFF; P0=0XFF; P3=( P3&0X0C )|0XF3; break; }
                         case  32:  { P0=0X00; P1=0X00; P2=0X00; P0=0X00; P3= P3&0X0C ;        break; }
                                                  default : break;
                      }                                                                           
                 }
           }
    }      
        count=0;        
        for (IRCON=0; IRCON<3; IRCON++)
            IRCode[IRCON] = 0;
       EA = 1;
}
/*****************************************/

2.jpg (15.63 KB, 下載次數(shù): 33)

2.jpg

30路紅外接收器.rar

1.55 KB, 下載次數(shù): 18


作者: ahshmj    時(shí)間: 2018-6-26 19:38
文字?jǐn)⑹龅碾y理解。
作者: lstabc    時(shí)間: 2018-6-26 19:45
完全沒(méi)有看懂樓主要表達(dá)什么
作者: zsyzdx    時(shí)間: 2018-6-27 08:38
串口轉(zhuǎn)換嗎還是什么?
作者: ll13536121668    時(shí)間: 2018-6-27 09:51
zsyzdx 發(fā)表于 2018-6-27 08:38
串口轉(zhuǎn)換嗎還是什么?

上傳圖片看看

用一只管腳復(fù)用到每路輸出增加30只手動(dòng)開(kāi)關(guān)可以嗎




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