遥控解码的原理:我们知道遥控是采用38khz的脉冲通过红外发光二极管调制发送出去的 。我们的主
目的是怎样将从空气中传送来的遥控信息,进行解码。对于遥控里面的最底层原理,我就不多介绍啦 , 网
友可以参考相关书籍。在这里简单的说一下遥控解码的注意事项:
引导码的时间为:13.5ms,高电平时间为9ms,低电平时间为4.5ms。
低电平时间周期为:用l表示低 l=1.125ms
高电平时间周期为:用h表示高 h=2.25ms
发送一串数据大约58.5---76.5ms
遥控码是由:引导码、用户码、用户反码、键盘码、键盘反码 几部分组成。
相关源程序:(c语言版本)
unsigned char th1_val = 0, th1_old = 0;
unsigned char c_last=0;
unsigned char c_bits = 8;
unsigned char c_index = 0;
unsigned char c_code ,c_last1,c_last2,c_last3=0;
bit c_error = 0;
#define t_100us (f_osc/12/10000)
#define t_zero_min (t_100us*10)
#define t_zero_max (t_100us*18)
#define t_one_min (t_100us*20)
#define t_one_max (t_100us*28)
#define t_rep_min (t_100us*110)
#define t_rep_max (t_100us*120)
#define t_start_min (t_100us*130)
#define t_start_max (t_100us*150)
#define th_zero_min (t_zero_min>>8)
#define th_zero_max (t_zero_max>>8)
#define th_one_min (t_one_min>>8)
#define th_one_max (t_one_max>>8)
#define th_rep_min (t_rep_min>>8)
#define th_rep_max (t_rep_max>>8)
#define th_start_min (t_start_min>>8)
#define th_start_max (t_start_max>>8)
#define code1 0x0a
#define code2 0xf5
#define init_t0 (65536l - (f_osc/12)/hz)
#define init_th0 (init_t0 >> 8)
unsigned int remocnt=0;
extern bit menu1flag;
void int0_bh(void)
{
unsigned char temp = th1_val;
th1_val -= th1_old;
if (temp th_start_max)
// goto err_out;
if (th1_val >= th_start_min)
goto reset_out;
if (th1_val > th_rep_max)
goto err_out;
if (th1_val >= th_rep_min) {
if (key_last == key_inc || key_last == key_dec||key_last == key_menu){
key_on = 1;
if(key_last==key_menu) key_on=0;
if(++remocnt>40) { keymenu=1;
key_on=1;
remocnt=0;
}
else keymenu=0;
if(menu1flag) key_on=0;
}
goto reset_out;
}
if (c_error)
return;
if (th1_val > th_one_max)
goto err_out;
if (th1_val >= th_one_min) {
c_last >>= 1;
c_last |= 0x80;
goto bit_rcv;
}
if (th1_val > th_zero_max)
goto err_out;
if (th1_val >= th_zero_min) {
c_last >>= 1;
goto bit_rcv;
}
goto err_out;
bit_rcv:
if (--c_bits)
return;
//c_index++;
switch (c_index++) {
case 0:
{ if (c_last == code1)
goto out;
else { goto out;}
}
case 1:
{ if (c_last == code2)
goto out;
// c_last2=c_last;
else {goto out;}
}
case 2: {
c_code = c_last;
goto out;
}
case 3: {
if (c_last != ~c_code)
goto err_out;
// c_last3=c_last;
break;
}
}
if (key_on) {
goto reset_out;
}
switch (c_code) {
case 0x12:
key_last = key_power;
break;
case 0x03:
{
key_last = key_menu;
keymenu=0;
remocnt=0;
}
break;
case 0x06:
key_last = key_video;
break;
case 0x13:
key_last = key_inc;
break;
case 0x48:
key_last = key_dec;
break;
case 0x09:
key_last = key_zoom;
break;
default:
key_last = key_invalid;
goto reset_out;
}
key_on = 1;
goto reset_out;
err_out:
c_error = 1;
goto out;
reset_out:
c_error = 0;
c_index = 0;
goto out;
out:
c_last = 0;
c_bits = 8;
}
台积电有望独享苹果5nm的A14处理器订单以及华为5nm高端处理器订单
装配厂要求越来越严,如何防止PCB板翘?
RK3568核心板和基板
ActiveRFID在车辆自动识别及防盗系统中的应用
使用Keras构建基于关键字和图像的搜索引擎
遥控器程序
24V+电源方案5:电源系统设计的pcb布局注意事项
图像识别中SIFT算法与SURF算法的区别
智能人工气候箱主机的作用是什么,它的使用效果怎么样
电动自行车控制器电路原理分析
外壳的构造和配置如何影响功率MOSFET器件内部的工作温度
什么是白炽灯_白炽灯优缺点及尺寸介绍_白炽灯发光原理
土壤墒情监测系统的应用广泛,它有哪些优势
恩智浦“跨界之王”i.MX RT如何赋能物联网边缘应用?
爱德万测试收购美国W2BI公司
一位Java程序员转型互联网的经历
浩鲸科技5G消息聚合平台助力浙江移动推出5G消息业务
二氧化碳检测仪的检测原理以及使用效果的介绍
仪表放大器公式推导+工作原理
5G时代手机仅是众多智能终端之一,毫米波产业将会更迎来多机会