发 帖  

[经验] 【精英STM32F103 开发板试用体验】+红外遥控器编码显示

2018-10-8 15:04:50  1194 STM32
收藏 1 收藏 推荐 0 推荐
分享
       在开发板的配置中有红外遥控器功能,即用板上HS0038接收头来接收遥控器所发出的红外信号,经解码才形成可识别的编码。红外接收头的接口如图1所示,REMOTE所占用的为PB9。

图1  接收头接口

     由于所配的光盘中已提供了红外遥控器的相关程序,故只需为其配置一个显示器件即可直观地观察遥控情况的变化。若利用所得到的编码值,则可以控制相应的执行单元处理,如继电器的开关、参数的设置等。
    使用I2C接口的OLED屏显示遥控器编码值可得到图2和图3所示的效果,其主程序如下:

  1. int main(void)
  2. {        
  3.          u8 key;
  4.         u8 t=0;        
  5.         u8 *str=0;
  6.         Stm32_Clock_Init(9);        
  7.         delay_init(72);                             
  8.         LED_Init();
  9.         Remote_Init();         
  10.         OLED_InitI();
  11.         OLED_ClearI();
  12.         OLED_ShowStringI(10,0,"REMOTE TEST",16);        
  13.     OLED_ShowStringI(10,2,"KEYVAL:",16)
  14.     OLED_ShowStringI(10,4,"KEYCNT:",16);
  15.     OLED_ShowStringI(10,6,"SYMBOL:",16);
  16.         while(1)
  17.         {
  18.                 key=Remote_Scan();        
  19.                 if(key)
  20.                 {         
  21.                         OLED_ShowNumI(65,2,key,3,16);
  22.                         OLED_ShowNumI(65,4,RmtCnt,3,16);
  23.                         switch(key)
  24.                         {
  25.                                 case 0:str="ERROR";break;                           
  26.                                 case 162:str="POWER";break;            
  27.                                 case 98:str="UP";break;            
  28.                                 case 2:str="PLAY";break;                 
  29.                                 case 226:str="ALIENTEK";break;  
  30.                                 case 194:str="RIGHT";break;  
  31.                                 case 34:str="LEFT";break;         
  32.                                 case 224:str="VOL-";break;         
  33.                                 case 168:str="DOWN";break;   
  34.                                 case 144:str="VOL+";break;           
  35.                                 case 104:str="1";break;         
  36.                                 case 152:str="2";break;           
  37.                                 case 176:str="3";break;            
  38.                                 case 48:str="4";break;         
  39.                                 case 24:str="5";break;         
  40.                                 case 122:str="6";break;         
  41.                                 case 16:str="7";break;        
  42.                                 case 56:str="8";break;         
  43.                                 case 90:str="9";break;
  44.                                 case 66:str="0";break;
  45.                                 case 82:str="DELETE";break;
  46.                         }
  47.                         OLED_ShowStringI(65,6,str,16);   
  48.                 }else delay_ms(10);         
  49.                 t++;
  50.                 if(t==20)
  51.                 {
  52.                         t=0;
  53.                         LED0=!LED0;
  54.                 }
  55.         }
  56. }
复制代码
图2 UP键检测

图3 DOWN键检测

收藏 1 收藏 推荐 0 推荐
王栋春 2018-10-8 20:50:06
学习一下
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /9 下一条

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