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

2020-01-14 18:56发布

红外线遥控双向可控硅调光,过零检测频繁的10ms需要触发一次,如果中间丢失一个触发脉冲就会闪,多丢几个就不亮,单片机都给10ms占用了,如果红外线遥控(解码需要最少15ms)的程序就没法调光了,有什么方法可以解决这个问题啊,我用51没找到好的解决方法,请大家指点!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
pcbboy
1楼-- · 2020-01-16 18:05
单片机用几12MHZ晶振
gallle
2楼-- · 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
jrcsh
3楼-- · 2020-01-16 23:45
调用‘关闭可控硅函数’  ~~~~~ 你作的是很高深的东西还是~~~~很怪怪的
pcbboy
4楼-- · 2020-01-17 02:15
谢大家的指点,终于有点眉目了,我是用汇编做的,但思路应该可以借鉴楼上两位的方法,再次感谢.
pcbboy
5楼-- · 2020-01-17 06:36
 精彩回答 2  元偷偷看……
pcbboy
6楼-- · 2020-01-17 06:56
想到另一个办法,就是将编码分成两部分,中间加入过零检测处理程序,这个程序给足时间10ms ,就当它是一个10ms的延时程序,解码测试已经ok.等明天加入过零检测程序再看看又没问题。

一周热门 更多>