找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1769|回复: 4
打印 上一主题 下一主题
收起左侧

30路红外遥控开关

[复制链接]
跳转到指定楼层
楼主
本帖最后由 ll13536121668 于 2018-6-27 09:49 编辑

30路红外遥控开关因使用不方便,
想用一只管脚复用到每路输出增加30只手动开关可以吗
程序什样修改才能增加30只手动开关,
劳烦各位师傅研究一下什样修改
//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);
/***************延时函数*******************/
  void delay1ms( uint t)
{
  uint k,n;
  for (k=0;k<t;k++)
    {
           for (n=0;n<121;n++);
         }
}
/***************延时函数*******************/
void delay850us( void)
{      uint j;
           for (j=0;j<105;j++);//24M晶振时j=200,12M晶振时,j=105;
}
/***************延时函数*******************/
void delay1200us( void)
{      uint j;
           for (j=0;j<150;j++);//24M晶振时j=400,12M晶振时,j=150;
}
/**********************************/
void main()
{
   EA = 1; //允许CPU中断
   EX0 = 1; //开INT0中断;   
   while (1)
     {
       if (LED==0)   
              {
             delay1ms( 500);
                         LED=1;
                  }
     }  
}
/**********************************/
//INT0中断
void INT0Fun(void) interrupt 0 //using 2
{
  EA = 0; //外部中断0关闭  
  for (i=0;i<12;i++)
    {
       delay850us();
           if (P3_2==0)  count++;
            else  break ;           
        }
  if (count==12)
    {  count=0;           
       while (P3_2==0);
           delay850us(); //跳过564us的高电平。
                    
       for (IRCON=0;IRCON<4;IRCON++)
         {
           for (IRCON2=0;IRCON2<8;IRCON2++) //每中断一次读一次遥控接收头的状态,每二次为遥控编码中的一个位
             {
                           IRCode[IRCON]=IRCode[IRCON]>>1; //每读一次放入变量中的二进制的一个位,每次左移一位
                           while (P3_2==0);
               delay850us();                             
               if (P3_2)  
                               {
                                       IRCode[IRCON]=IRCode[IRCON] | 0x80; //每八次填满一个字节,一个字节存放遥控编码4个位
                       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, 下载次数: 31)

2.jpg

30路红外接收器.rar

1.55 KB, 下载次数: 18

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:7485 发表于 2018-6-26 19:38 | 只看该作者
文字叙述的难理解。
回复

使用道具 举报

板凳
ID:359614 发表于 2018-6-26 19:45 | 只看该作者
完全没有看懂楼主要表达什么
回复

使用道具 举报

地板
ID:320306 发表于 2018-6-27 08:38 | 只看该作者
串口转换吗还是什么?
回复

使用道具 举报

5#
ID:17109 发表于 2018-6-27 09:51 | 只看该作者
zsyzdx 发表于 2018-6-27 08:38
串口转换吗还是什么?

上传图片看看

用一只管脚复用到每路输出增加30只手动开关可以吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表