xyr 发表于 2012-4-13 09:40:09

求助解决数据管闪烁问题!!!!

我用ATTINY48做了一个PCF8653 8位数码管显示的电子时钟,每位数码管刷新时间为1.2MS,用遥控器控制,MCU频率1MHZ。
现在出现了一个问题,用遥控调节时间出现数码管闪烁,如果优先数码管显示又会遥控失控,请求解决方案。

xyr 发表于 2012-4-13 09:41:12

先做个记号

xiaodao35 发表于 2012-4-13 09:57:42

数码显示用定时器中断,解码用外部中断,中断程序尽量短!

xyr 发表于 2012-4-13 10:38:01

xiaodao35 发表于 2012-4-13 09:57 static/image/common/back.gif
数码显示用定时器中断,解码用外部中断,中断程序尽量短!

数码管是采用定时中断,但是遥控译码占用70MS时间,引起闪烁.

xiaodao35 发表于 2012-4-13 10:50:16

遥控译码在中断中立标志,在大循环处理接收的码元!

xyr 发表于 2012-4-13 13:42:02

遥控译码采集占用70ms不论在主程序还是中断一样占用。

dragon_hn 发表于 2012-4-13 14:04:53

楼上说得对.
优先级:遥控中断>显示中断>主循环.
中断程序尽量短.具体来说:
1.红外遥控接收:中断中只处理接收到的位数据,字节数据处理在主循环中进行.
2.显示中断,要显示的内容建一个显存区,在主循环中更新显存区.中断中只处理显示驱动.

Etual 发表于 2012-4-13 14:09:11

典型的多任务问题,中断 125uS 收红外的码,不要处理,在主程序处理。
主程序每 1ms 扫描一位数码管。
要不干脆加个IC扫数码管呗,1628什么的

sf49ers 发表于 2012-4-13 14:28:06

xyr 发表于 2012-4-13 10:38 static/image/common/back.gif
数码管是采用定时中断,但是遥控译码占用70MS时间,引起闪烁.

70ms。。。你在那干等译码吗

huayuliang 发表于 2012-4-13 14:31:34

时间片啊。。。

dianzichina 发表于 2012-4-14 10:10:45

70ms?想不闪都难,15Hz都不到。。。。。。

plc_avr 发表于 2012-4-16 07:31:49

如果能搞到不闪,说明楼主已经达到一境界了。

plc_avr 发表于 2012-4-16 07:32:51

看到很多解码都是死等,那样不闪才怪。软件架构要重改。上面很多网友说的已经够明白了。

liulingo1 发表于 2012-4-16 08:29:11

我们 扫描显示 400多只LED,有SPI通讯,有按键输入,神马的,都没闪烁。

usingavr 发表于 2012-4-16 09:08:17

中断只设置标志,尽快返回,所有的处理在主循环中做

xyr 发表于 2012-4-16 16:25:43

各位大哥:
好!
有没有红外遥控解码不用死等LED显示案例(源程序)。
谢谢!

无级电工 发表于 2012-4-16 16:47:51

上面说得都不错哦。LZ应该自己稍微动动脑筋,这样才有进步嘛。有看别人代码的时间,自己都做好了。

machao 发表于 2012-4-16 19:38:54

xyr 发表于 2012-4-16 16:25 static/image/common/back.gif
各位大哥:
好!
有没有红外遥控解码不用死等LED显示案例(源程序)。


显现出真实的面目了,可怜,可怜,实在是可怜(个体)。杯具、杯具,的确是杯具(教育)

xyr 发表于 2012-4-17 10:52:42

原来也是一样,我还在看贴子学习过程中,以为我自已不用学,不用看别人编的教程可以自学成才。
如果我不看别人欧姆定律,我想我没有那本事可以搞个什么定律出来,忘了我好像小学没毕业。呵呵。

EasyEagle 发表于 2012-4-17 12:49:36

刚开始写程序可能会出现死等,因为学校的教材都是delay_ms(),好多入门例程也是这样写的,但是写着写着就会慢慢理解状态转移和时间片,这样才会使嵌入式有更高的执行效率,楼主莫急,万事都有个循序渐进的过程。{:tongue:}俺也是菜鸟

machao 发表于 2012-4-17 19:35:43

EasyEagle 发表于 2012-4-17 12:49 static/image/common/back.gif
刚开始写程序可能会出现死等,因为学校的教材都是delay_ms(),好多入门例程也是这样写的,但是写着写着就会 ...

"因为学校的教材都是delay_ms(),好多入门例程也是这样写的"

这个说的不符合实际情况。的确目前大多数的教材和入门教程的确是这样的,因为编写人大多自己不具备真正设计系统的能力,只是从老的书上抄。就连很多的32位入门教材都是这样的。

问题是为什么不从入门的开始阶段就给学习者建立中断、时间片、状态机,使用缓冲的理念?这个是值得思考的。

楼上可能会把原因归为学校里的教师(这个是事实),但另一个方面说明学习者不能主动的学习。

实际上好的教材和例子网上还是有的,至少我编写的教材,就非常强调中断、时间片、状态机,使用缓冲这些理念上。而且前2篇的电子版在站上可以免费下载参考的。

jlhgold 发表于 2012-4-17 20:01:05

machao 发表于 2012-4-17 19:35 static/image/common/back.gif
"因为学校的教材都是delay_ms(),好多入门例程也是这样写的"

这个说的不符合实际情况。的确目前大多数的 ...

可惜,当年没有碰到像马老师一样好的老师交编程,或者说,好老师都去交硬件了!

EasyEagle 发表于 2012-4-18 12:58:37

machao 发表于 2012-4-17 19:35 static/image/common/back.gif
"因为学校的教材都是delay_ms(),好多入门例程也是这样写的"

这个说的不符合实际情况。的确目前大多数的 ...

我阅读过马老师的书,从中学习到很多知识,在这里是要先说声谢谢,无意间我以偏概全,我的失误!
前几天有一个10年从业经验的工程师应聘嵌入式软件,对于如何去编写定时任务或延时任务,他的回答是:“如果要求时间精确,就用定时器,如果不要求时间精确,就用delay_ms()”,delay_ms也可以做到时间精确。具体该怎么用,得看系统的需求了,如果能认真阅读马老师的状态机、缓存池、时间片等,便能写出非常优秀的嵌入式软件了。

mcujack 发表于 2012-4-18 13:46:39

马老师的书确实不错,前两天看了马老师的按键双击处理程序,昨天用上了,确实不错。

xyr 发表于 2012-4-18 18:56:19

家里环境原因我小学没读完,学了一年家电维修。我对电子特别感兴趣,只要有空闲时间就动动手制作小东西玩玩。
我也买过很多单片机的书看,内容都是上楼说的那样,死延时,现在对买书失去了信心。
大家都说马老师书写的好,今天在当当网买了一本。
页: [1]
查看完整版本: 求助解决数据管闪烁问题!!!!