搜索
bottom↓
回复: 18

求教:按着遥控器的+,-键不放,让数值连续的增加或减少.

[复制链接]

出0入0汤圆

发表于 2019-3-22 15:21:16 | 显示全部楼层 |阅读模式
按着遥控器的+,-键不放,让数值连续的增加或减少,解码程序该怎么写?
我原来的程序是按一下,数值变一下的。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入9汤圆

发表于 2019-3-22 15:23:02 来自手机 | 显示全部楼层
一直收到同一个键值,当成长按,然后改怎么处理就怎么处理。

出0入0汤圆

发表于 2019-3-22 15:23:40 | 显示全部楼层
你看过红外协议没有,看过了就知道怎么写了

出0入16汤圆

发表于 2019-3-22 15:25:32 | 显示全部楼层
以前家用的红外遥控器编码是用特殊的信号表示repeat的

出0入0汤圆

发表于 2019-3-22 15:29:22 | 显示全部楼层
按着不放收到的是连发码,根本就没有重发键值,红外协议确实需要了解一下

出0入4汤圆

发表于 2019-3-22 16:08:59 | 显示全部楼层
就是发一次,然后告诉你,
又发了一次,内容和上次一样,内容就不发了。。。。
又发了一次,内容和上次一样,内容就不发了。。。。
又发了一次,内容和上次一样,内容就不发了。。。。

出0入213汤圆

发表于 2019-3-22 16:42:53 来自手机 | 显示全部楼层
请问楼主需要红外解码的方案吗?可以联系我

出0入0汤圆

发表于 2019-3-22 16:46:47 来自手机 | 显示全部楼层
按压加速,单位时间内接收到1-5次时,数字按照采集的次数改变,单位时间内接收到5-10次时,数字改变加倍,10次以上三倍-5倍,原理就是这样的

出0入0汤圆

发表于 2019-3-22 17:21:19 | 显示全部楼层
NEC的红外码里面有重发码,看看NEC码的协议就好了

出0入0汤圆

发表于 2019-3-22 17:22:08 | 显示全部楼层
电视机的声音加减就是这样。

出0入0汤圆

发表于 2019-3-22 17:27:12 | 显示全部楼层
是需要 修改一下 按键 扫描程序, 网上 搜   键盘 扫描 按键连发 ,有实例程序

出0入0汤圆

 楼主| 发表于 2019-3-24 09:52:46 | 显示全部楼层
搞了几天,还是搞不定,哪位高手能详细指导一下啊?最好有参考代码,先谢谢了!

出0入162汤圆

发表于 2019-3-24 10:13:16 来自手机 | 显示全部楼层
提醒楼主,重复发帖违反版规的哦!

出0入0汤圆

发表于 2019-3-24 10:29:08 | 显示全部楼层
6121红外格式的,有检测重复码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-3-24 12:32:34 | 显示全部楼层
楼主应该是没有认真阅读红外遥控的编码规则,否则就不会这样问了。长按时,遥控器是要发送重复码的,接收端在收到重复码时,就认为遥控器当前的按键没有释放,然后该怎么动作就怎么动作。给楼主附上一份多年前网上找回来的红外遥控器编码资料,可以参考一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-3-27 11:40:47 | 显示全部楼层
已仔细看过红外协议,也按协议说的检测了重发码,但是仍然搞不定,唉。。。。。。

出0入0汤圆

发表于 2019-3-27 17:06:11 | 显示全部楼层
磁动力网站还有木有了

出0入0汤圆

 楼主| 发表于 2019-3-31 10:01:04 | 显示全部楼层
本帖最后由 rjx 于 2019-3-31 10:12 编辑

这是我原来使用的红外遥控程序,可以单次按键,使用没有问题,在AVR单片机里使用的,用INT0中断。现在想增加长按键,即按住不放,数码管的数字可以连续增加或减少,我也知道是要判断连发码,但搞了几天也没搞出来,请教高手。应如何在原代码的基础上增加判断连发码的功能,诚信求教了。

uchar IR_buf[4]={0x00,0x00,0x00,0x00};  //IR_buf[0]、IR_buf[1]为用户码低位、用户码高位接收缓冲区
                                                             // IR_buf[2]、IR_buf[3]为键数据码和键数据码反码接收缓冲区


/********us延时程序,延时时间0.14ms(140us*)*******/
void Delayus(uint x)
{
        char i, j;
        for(i=0;i<x;i++)
      {for(j=0;j<210;j++);}
}


interrupt [EXT_INT0] void ext_int0_isr(void)    //用中断来处理接收到的红外信号。
{
   uchar i,j,sum=0;  
   GICR |=(0<<INT0);                //开INT0中断
   Delayus(20);                                //延时20*0.14MS  ,2.8MS
   for(i = 0;i < 14;i++)
      {
         Delayus(1);
         if(IRIN)                            //9MS内有高电平,则判断为干扰,退出处理程序
         {
           GICR |=(1<<INT0);
                  return;                                    //返回
         }
      }
      
   while(!(IRIN));                          //等待9ms低电平过去
   
   for(i=0;i<4;i++)           
    {
      for(j=0;j<8;j++)         
      {
         while(IRIN);                         //等待4.5ms高电平过去
         while(!(IRIN));                    //等待变高电平
         while(IRIN)                          //计算高电平时间
          {
             Delayus(1);                        //延时0.14ms
             sum++;                                    //对0.14ms延时时间进行计数
             if(sum >= 30)                //高电平时间过长,则退出处理程序
             {
               GICR |=(1<<INT0);
               return;
             }   
          }
        
       IR_buf = IR_buf >> 1;      //接受一位数据
      
       if(sum >= 6)
          {IR_buf = IR_buf | 0x80;}   //若计数值大于6(高电平时间大于0.56),则为数据1
         
       sum = 0;                  //若计数小于6,数据最高位补"0",说明收到的是"0",同时计时清零
     }
   }
  if(IR_buf[2]!=~IR_buf[3])                //将键数据反码取反后与键数据码码比较,若不等,表示接收数据错误,放弃
    { GICR |=(1<<INT0);    return;}      
           
  HW_Status=1;
}

void RR()    //遥控器键控处理程序
{
        if(HW_Status==1)
           {   static uchar m;
                  if((IR_buf[2]==0xfb)||(IR_buf[2]==e))           //音量加
                        {
                                if( VOLUME_1<98)
                                        {++ VOLUME_1;}
                                else if( VOLUME_1>=98)
                                        { VOLUME_1=98;}                           
                        }
                  if((IR_buf[2]==0xfa)||(IR_buf[2]==b))        //音量减
                        {
                                if( VOLUME_1>0)
                                        {-- VOLUME_1;}                         
                       
                        }
          }

出0入0汤圆

发表于 2019-8-8 19:57:57 | 显示全部楼层
遥控的种类没说,电视的、车子的。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 02:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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