[其他ST产品] STM32 NEC红外遥控器解码

[复制链接]
1478|32
 楼主| wang6623 发表于 2023-2-28 23:34 | 显示全部楼层
  1. void TIM4_IRQHandler(void) //TIM4中断
  2. {
  3.        
  4.         if(TIM4->SR&0X0001)//溢出中断
  5.         {
  6.         key = Remote_Scan();//获取红外遥控键值
  7.                  if(key)
  8.                  {
  9.                         switch(key)
  10.                         {
  11.                                 case 104:num1=0x00; num = smg_num[1]; BEEP=0;break; //按键'1'
  12.                                 case 152:num1=0x00;num=smg_num[2];BEEP=0;break;     //按键'2'          
  13.                                 case 176:num1=0x00;num=smg_num[3];BEEP=0;break;     //按键'3'            
  14.                                 case 48:num1=0x00;num=smg_num[4];BEEP=0;break;      //按键'4'                    
  15.                                 case 24:num1=0x00;num=smg_num[5];BEEP=0;break;      //按键'5'                    
  16.                                 case 122:num1=0x00;num=smg_num[6];BEEP=0;break;     //按键'6'                  
  17.                                 case 16:num1=0x00;num=smg_num[7];BEEP=0;break;      //按键'7'                                                                  
  18.                                 case 56:num1=0x00;num=smg_num[8];BEEP=0;break;      //按键'8'         
  19.                                 case 90:num1=0x00;num=smg_num[9];BEEP=0;break;      //按键'9'
  20.                                 case 66:num1=0x00;num=smg_num[0];BEEP=0;break;      //按键'0'
  21.                                 case 82:num1=0x00;num=smg_num[17];BEEP=0;break;     //按键'DELETE'
  22.                                 case 162:num1=smg_num[1];num=smg_num[0];BEEP=0; break;//按键'POWER'   
  23.                                 case 98:num1=smg_num[1];num=smg_num[1];BEEP=0;  break;//按键'UP'
  24.                                 case 226:num1=smg_num[1];num=smg_num[2];BEEP=0; break;//按键'ALIENTEK'
  25.                                 case 34:num1=smg_num[1];num=smg_num[3];BEEP=0;  break;//按键'LEFT'
  26.                                 case 2:num1=smg_num[1];num=smg_num[4];BEEP=0;   break;//按键'PLAY'
  27.                                 case 194:num1=smg_num[1];num=smg_num[5];BEEP=0; break;//按键'RIGHT'
  28.                                 case 224:num1=smg_num[1];num=smg_num[6];BEEP=0; break;//按键'VOL-'
  29.                                 case 168:num1=smg_num[1];num=smg_num[7];BEEP=0; break;//按键'DOWN'
  30.                                 case 144:num1=smg_num[1];num=smg_num[8];BEEP=0; break;//按键'VOL+'
  31.                         }
 楼主| wang6623 发表于 2023-2-28 23:34 | 显示全部楼层
  1.                  }else
  2.                  {
  3.                         BEEP=1;
  4.                  }
  5.                  if(smg_wei==6)//数码管位
  6.                  {
  7.                          smg_duan = num1;
  8.                  }
  9.                  else if(smg_wei==7)//数码管位
  10.                  {
  11.                          smg_duan = num;
  12.                  }
  13.                  if(smg_flag) LED_Write_Data(0x00,smg_wei);//消除鬼影(段码不显示)
  14.                  else           LED_Write_Data(smg_duan,smg_wei);//正常显示
  15.                  LED_Refresh();//数码管数据更新
  16.                  smg_flag=!smg_flag;
  17.                  if(smg_flag==0)//正常显示才更新位码
  18.                  {
  19.                          smg_wei++;
  20.                      if(smg_wei==8) smg_wei=6;
  21.                  }
  22.                  t++;
  23.                  if(t==250)//LED0每500MS闪烁
  24.                  {
  25.                         t=0;
  26.                         LED0=!LED0;
  27.                  }
  28.         }
  29.         TIM4->SR&=~(1<<0);//清除中断标志位
  30.                
  31. }
 楼主| wang6623 发表于 2023-2-28 23:34 | 显示全部楼层
总结
通过本实验了解了NEC红外遥控解码的基本原理。红外遥控器的键码都是固定的,不同的遥控器的键码可能会不一样。红外遥控器也可以用红外发射管自己搭建发射电路,单片机程序进行编码,红外接收头根据编码规则进行解码。
帛灿灿 发表于 2024-5-6 08:11 | 显示全部楼层

MinUnit 是一个 用 C 语言编写的极其简单的单元测试框架
Bblythe 发表于 2024-5-6 09:14 | 显示全部楼层

功率开关和整流器的交流电流环路包含非常高的PWM开关电源典型的梯形电流波形
周半梅 发表于 2024-5-6 11:10 | 显示全部楼层

电源电压处于1.6V到5.5V之间
Pulitzer 发表于 2024-5-6 12:13 | 显示全部楼层

无法提供开关电源所需的脉冲电流
童雨竹 发表于 2024-5-6 14:09 | 显示全部楼层

单片机的外部都连接有象电池等电源部分
Wordsworth 发表于 2024-5-6 15:12 | 显示全部楼层

电源内部都有四个电流环路
Clyde011 发表于 2024-5-6 16:15 | 显示全部楼层

作为电路的共同电位参考点
公羊子丹 发表于 2024-5-6 17:08 | 显示全部楼层

主时钟振荡器主要用作CPU的工作时钟
万图 发表于 2024-5-6 18:11 | 显示全部楼层

传送直流信号的引线
Uriah 发表于 2024-5-6 19:14 | 显示全部楼层

Buck(或降压)变换器功率部分布局
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部