西藏接收头厂家批发
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个时钟周期
为了减少对硬件资源定时的需求,我就用了一个定时器; 为了减少重复代码工作量,采用面向对象思路进行封装; 具体实现思路如下: 驱动分离,需要用户提供的API接口 主要是为了隔离驱动层。 提供给用户的接口 一个初始化API,初始化模块,内存等。 一个供用户调用的启动发送接口。 一个检测是否发送服务任务,main调用。 一个中断服务程序,由timer中断调用。 内部实现了两个list单链表,一个free表,一个TX表。用户启动发送,
红外接收头就有红外光电二极管。这时,通过扩展等一系列工程,最终将信号调整为电流信号,转换为必要的遥控代码,输出相应的功能。接收头容易受到外部信号的干扰,特别是红外线,因此在接收头的供电两端加上过滤电容器,即VCC和GND之间连接电解电容器和瓷器电容器,容量大小是制造商提供的数据。
注意: 波形先是发低位地址再发高位地址。 所以 反转过来就是 十六进制的DD20;键值波形如下: 另外注意8 位的键值代码是取反后再发一次的,。 一位是一个逻辑“1”。 RC5 编码相对简单一些: 同样由于取自红外接收头的波形需要反相一下波形以便于分析: 反相后的波形: 根据编码规则: 得到一组数字: 位是起始位S通常是逻辑1 第二位是场位F通常为逻辑1, 在RC5 扩展模式下它将6位命令代码扩充到7 位代码(高位MSB) , 这样可以从64 个键值扩充到128 个键值。