红外线遥控双向可控硅调光问题请教

2020-01-14 18:56发布

红外线遥控双向可控硅调光,过零检测频繁的10ms需要触发一次,如果中间丢失一个触发脉冲就会闪,多丢几个就不亮,单片机都给10ms占用了,如果红外线遥控(解码需要最少15ms)的程序就没法调光了,有什么方法可以解决这个问题啊,我用51没找到好的解决方法,请大家指点!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
32条回答
gallle
2020-01-16 20:04
我做的调整是这样的,一个中断0专门检测过零信号。在里边通过当前的输出给出一个延时时间(用0.14ms的倍数)我要求的精度不高。
每次加减的时候,时间长度加减1。
定时中断0.14ms一次,设定2个变量做红外解码。一个变量做调光时间调整。
以下所有变量都是全局或静态变量。
中断0程序
IF ‘时间长度’>‘最大时间长度’,‘时间长度’=‘最大时间长度’
IF ‘时间长度’=0
{
   调用‘关闭可控硅函数’}
   ‘延时时间’=0

ELSE {
   调用‘打开可控硅函数’
   ‘延时时间’=0
}
中断0程序结束
定时中断函数(0.14ms)
IF  ‘延时时间’>=‘时间长度’
{
    调用‘关闭可控硅函数’
}
ELSE ‘延时时间’+1

‘红外本地时基’取反
IF  ‘红外本地时基’//用0.28ms解码
{
   IF‘本次状态’=0,‘上次状态’=0
   ELSE ‘上次状态’=1
   ‘状态计数’+1
   
}
//通过‘状态计数’可以算出 高电平的次数,通过解码状态变量知道当前在解哪部分码 头码?用户码?还是什么的时间定一个范围,不要用精准的数。
例如解头码时9ms,计数28~36之间   36=10ms/0.28ms  28=8ms/0.28ms
检测标准间隔4.5MS 12-20           20=5.5ms/0.28ms 12=3.5ms/0.28ms

一周热门 更多>