很贫穷哈:))这就是软件的力量!
软件编码,单片机硬件编码!
一体化红外接收头是个怪老头,没有红外发送它肯定不收,老有红外发送(叫载波)它也不收,那间隙调制载波它就收?!不全面严格说来长时间(超过60MS以上的调制波)它也不收!需要说明的是它收到时是低电平!
大家跟我一起来51单片机来编程,我们的晶体是24M 12分频!波特率2.4K
没彻底搞懂的朋友以为38.4K是红外发送频率,我们收不到是因为频率不对------是我们不对,我们不对怪老头的脾气!38K可以40K也可以区别不大就标称的38.4吧光鲜点就选它吧!
2M/38.4K=取52吧 于是我们装数52 错!装256-52有进步可也错!该装256-26!---因为是一高一低(各12.6US)取反才产生38.4K啊!定时器0定时器1全部方式2,重装入无误差!串口设置8,2400,N.1
再算一下1000000/(2400*12.6)=33 但我们取32误差1/32很小可尽管用
假设我们发送的数据是7FH = 01111111B
我们先发起始位,发送计数FOR32次到,起始位完毕,下面继续发7FH的0?错!!!串口是低位在前的,所以发1,1不是不发送吗?所以我们“分开进行”7次不发送!现在发到D7了,再发送32次的38.4K停止发送,完了,一幁数据发完!
接收呢,串口硬件自动接收啊!则发送自己编码接收硬件解码,一般说来发送是主动已知的所以不痛苦,接收痛苦呢!
总结:先发一个起始位32次,随后到着看八次一还是0,0发送1不发送,发送完8位关闭发送,就到这里吧!
先算一下2.4 |