回答

收藏

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

其他 其他 1626 人阅读 | 0 人回复 | 2020-03-18

  在开发板的配置中有红外遥控器功能,即用板上HS0038接收头来接收遥控器所发出的红外信号,经解码才形成可识别的编码。红外接收头的接口如图1所示,REMOTE所占用的为PB9。

图1  接收头接口

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

  • int main(void)
  • {
  •          u8 key;
  •         u8 t=0;
  •         u8 *str=0;
  •         STM32_clock_Init(9);
  •         delay_init(72);
  •         LED_Init();
  •         Remote_Init();
  •         OLED_Initi();
  •         OLED_ClearI();
  •         OLED_ShowStringI(10,0,"REMOTE TEST",16);
  •     OLED_ShowStringI(10,2,"KEYVAL:",16)
  •     OLED_ShowStringI(10,4,"KEYCNT:",16);
  •     OLED_ShowStringI(10,6,"SYMBOL:",16);
  •         while(1)
  •         {
  •                 key=Remote_Scan();
  •                 IF(key)
  •                 {
  •                         OLED_ShowNumI(65,2,key,3,16);
  •                         OLED_ShowNumI(65,4,RmtCnt,3,16);
  •                         switch(key)
  •                         {
  •                                 case 0:str="ERROR";break;
  •                                 case 162:str="POWER";break;
  •                                 case 98:str="UP";break;
  •                                 case 2:str="PLAY";break;
  •                                 case 226:str="alientek";break;
  •                                 case 194:str="RIGHT";break;
  •                                 case 34:str="LEFT";break;
  •                                 case 224:str="VOL-";break;
  •                                 case 168:str="DOWN";break;
  •                                 case 144:str="VOL+";break;
  •                                 case 104:str="1";break;
  •                                 case 152:str="2";break;
  •                                 case 176:str="3";break;
  •                                 case 48:str="4";break;
  •                                 case 24:str="5";break;
  •                                 case 122:str="6";break;
  •                                 case 16:str="7";break;
  •                                 case 56:str="8";break;
  •                                 case 90:str="9";break;
  •                                 case 66:str="0";break;
  •                                 case 82:str="DELETE";break;
  •                         }
  •                         OLED_ShowStringI(65,6,str,16);
  •                 }else delay_ms(10);
  •                 t++;
  •                 if(t==20)
  •                 {
  •                         t=0;
  •                         LED0=!LED0;
  •                 }
  •         }
  • }

[color=rgb(51, 102, 153) !important]复制代码


图2 UP键检测


图3 DOWN键检测





分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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