` 在开发板的配置中有红外遥控器功能,即用板上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;
- }
- }
- }
复制代码
图2 UP键检测
图3 DOWN键检测
`
|