淮阴一体化遥控接收头厂家
TAPwmInit('S',4,'N','N')TA时钟设为SMCLK/4, 通道1、2均为低电平输出 TAPwmInit('A',1,'P',0)TA时钟设为ACLK,通道1高电平输出,通道2不用,被 禁用的PWM通道的输出管脚仍可作为普通IO口使用。 定时器TA设为增计数模式 外部输入(TACLK) 外部输入(TACLK取反) 设置PWM通道1的输出模式。 如果设置为高电平模式高电平PWM输出 从P1.2输出 (不同型号单片机可能不一样) 从P1.2输出 (不同型号单片机可能不一样) 如果设置为低电平模式 低电平PWM输出 从P1.2输出 (不同型号单片机可能不一样) 将定时器TA初始化成为PWM发生器 时钟源=SMCLK ; 无分频; 通道1和通道2均设为高电平模式。 通道1/2的PWM方波周期均设为500个时钟周期 1通道 有效200个时钟周期
RAM存储器操作指令。 RAM读取指令,只讲2条,其他的大家有需要可以去查资料。 这里要注意的是,我们的DS18B20的温度数据是2个字节,我们读取数据的时候,先读取到的是低字节的低位,读完了个字节后,再读高字节的低位,一直到两个字节读取完毕。 Convert Temperature(启动温度转换):0x44 当我们发送一个启动温度转换的指令后,开始进行转换。从转换开始到获取温度,是需要时间的,而这个时间长短取决于的精度。前边说DS18B20高可以用12位来存储温度,但是也可以用11位,10位和9位一共四种格式。位数越高,精度越高,9位模式位变化1温度变化0.5度,同时转换速度也要快一些,如图16-15所示。
LED红外线接收头收到红外信号,然后将信号送到放大器和限幅器,限幅器的作用是把脉冲幅度控制在一定的水平内(因为LED红外线发射管的距离远近不确定),交流信号再进入带通滤波器(可通过30khz到60khz的负载波),然后通过解调电路和积分电路进入比较器,由比较器输出还原成发射端的信号波形。
接收判定每bit的560us低电平 时间判定范围为340~780us, 超过此范围则说明为误码,直接退出 接收每bit高电平时间,判定该bit的值 时间判定范围为340~780us, 在此范围内说明该bit值为0 因低位在先,所以数据左移,高位为0 时间判定范围为1460~1900us, 在此范围内说明该bit值为1 因低位在先,所以数据左移, 不在上述范围内则说明为误码,直接退出接收完一个字节后保存到缓冲区 接收完毕后设置标志 退出前清零INT1中断标志 大家在阅读这个文件里的代码时,会发现我们在获取高低电平时间的时候做了超时判断if (TH1 >= 0x40),这个超时判断一方面是应对空间突发的红外干扰信号,如果我们不做超时判断,程序有可能会一直等待下一个跳变才会停止检测,造成程序假死。另外一个方面,遥控器的单按按键和持续按住按键发出来的信号是不同的。我们先来对比一下两种按键方式的信号状态,如图16-9和16-10所示。