查看: 899|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-3-18 16:35:40 | 显示全部楼层 |阅读模式
    分享到:
      在开发板的配置中有红外遥控器功能,即用板上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 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-13 11:01 , Processed in 0.110495 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.