P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
红外线的载波发射,其实也不是很简单的,因为一般的载波为38K左右.周期只有26us,如果用50%占空比,那么13us单片机的IO口就需要高低切换一次,如果载波再高一点,那就更忙了的.所以一般的单片机在发送载波的时候根本就不能再处理其他的事情了.P.L.C.技.术.网——可编程控制器技术门户
但是,你想过没有,如果用一个CPU专门来处理红外发射的软件部分,那另外一个处理其他的事情就轻松多了,这也是多核心在软件设计上的一大优势.WWW_PLCJS_COM-PLC-技.术_网
先定义一些载波的参数,这样在载波或编码有改变时,只需要改变这些参数就好了.现在以一款红外遥控飞机的编码为例,来说明独立的红外发射软件模块的设计. ——可——编——程——控-制-器-技——术——门——户
红外线的编码宽度是以载波频率的周期来计算的,宽度为载波频率周期的整数倍,这样就比较好处理了.然后定义一两个数据存储器来存放这样的倍数,使用延时来处理整个红外发射部分.看看我的载波处理部分.WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_P※LCJS_CO※M-PLC-技-.术_网
和一般的通信一样,都还是一字节一字节的发送的,当然设计以为位数控制在自程序中,可以使发送更方便的,比如发射13位等.P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WW.W_PLCJS_COM-PLC-技.术_网
有了字节(位)位发送,那么要发送一些数据就比较简单了.只需要将需要发送的数据放入待发送的数据存储器,然后调用发送就好了.比如我的程序中有2个字节和外部进行接口,外部在需要修改发送数据时,只需要修改这2个数据存储器就好了了,不用专门照顾红外发射部分了,是不是对其他控制显得更轻松呢.WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
因为专门用一个核心来处理,所以就不停的发送了,呵呵!WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PL※CJS_COM-PLC-技.术_网
虽然单核心也可以实现软件载波的发送,但肯定不会有我这样方便的,因为我不占用中断,也不占用定时器!把这些资源都留给其他控制了,当然控制起来也就容易多了.WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
最后再发一个发送的波形供大家参考:WWW_PLC※JS_COM-PmLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
希望有人拍砖呀,呵呵!WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)