其余的问题,都是根据红外接收时序来编的程序,以下总结以下红外收发时序供参考,你读懂就可以理解了。
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1“上述"0"和"1"组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射遥拿让者控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H后16位为8位 *** 作码(功能码)及其反码。
发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
解码的关键是如何识别"0"滑衫和"1",接收端而言,"0"是0.56ms的高+0.56ms的低。"1"是1.68ms的高+0.56ms的低。所以可以根据高电平消薯的宽度区别"0"和"1"。当高电平出现时开始延时,0.56ms以后,若读到的电平为低,说明该位为"0",反之则为"1",为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为"0",读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。为了共用引导部分延时程序,一般用0.9ms延时。
由此可见,有效数据是4字节(32位)。前两个字节可定义用户编码,后两个字节分别是真正的数据及其反码。
CYCLE=10;在初始化中,在程序中不会改姿基锋变;pwm周期PWM_ON只在主循环来改变;延时程序很长delay(1000)中断函数执行很多次,第一次count=0时,就把led灭了,当PWM_ON=2时,有了亮度锋乎,此亮度保持到,PWM_ON=2,加亮,直到PWM_ON=10,最迹晌亮,开始执行变暗程序。
51单片机pwm调光电路参考源程序:
int potpin=0//定义模拟接口0
int ledpin=11//定义数字接口11(PWM 输出)
int val=0// 暂存来自传感器的变量数值
void setup()
{
pinMode(ledpin,OUTPUT)//定义数字接口11 为输出
Serial.begin(9600)//设置波特率为9600
//注意搜手庆:模拟接口自动设置为输入
}
void loop()
{
val=analogRead(potpin)// 读取传感器的模拟值并赋值给val
Serial.println(val)//显示val 变量
analogWrite(ledpin,val/4)// 打开LED 并设置亮度(PWM 输__________出最大值255)
delay(10)//延时0.01 秒
}
原理世握图:
PWM简介:
Pulse Width Modulation 就是通常所说的PWM,译为脉冲宽度调制,简称脉宽调制。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一薯慧个具体模拟信号的电平进行编码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)