对于led数码管显示大家有什么好的方法吗?

[复制链接]
4828|22
 楼主| wilkes 发表于 2007-4-19 12:43 | 显示全部楼层 |阅读模式
/******
用单片机的io口直接驱动led,行列中断扫描循环显示(15x8),一共
用到23个io口。但是整个装置程序运行后会出现闪烁现象,扫描频率
很快,循环扫描一遍少于20ms。感觉是扫描中断太快,但是程序还有其他的
中断处理(ad计算,uart等),其他中断的处理长了影响扫描中断显示效果,所以导致出现滚动式的拖曳闪烁。
请问大家在做led数码管显示装置的时候都是怎么处理显示和其他中断处理的?
ayb_ice 发表于 2007-4-19 13:14 | 显示全部楼层

20ms也叫快...

foxmax 发表于 2007-4-19 21:24 | 显示全部楼层

一般都用1ms

 楼主| wilkes 发表于 2007-4-21 11:40 | 显示全部楼层

20ms是整个扫描完一遍

 每个当然只有1ms或者更少咯,问题不是这里.是由于其他中断影响了扫描时间,导致扫描时间间隔不严格相等
conwh 发表于 2007-4-21 12:07 | 显示全部楼层

扫描周期再短点,程序尽量短

ocon 发表于 2007-4-21 13:17 | 显示全部楼层

把不需要全部实时处理的ad计算,uart等放到主循环中执行。

jinhwang 发表于 2007-4-21 13:45 | 显示全部楼层

中断程序的执行时间绝对不能大于扫描中断时间

twz8858877 发表于 2007-4-21 15:19 | 显示全部楼层

每次扫一位

用中断进行,置最高优先。
baipengwei 发表于 2007-4-21 21:08 | 显示全部楼层

真是浪费资源啊

用595驱动,只要用到3个IO口就够了

闪烁的话可能写完数据后适当加几个NOP看下
jxmemail 发表于 2007-4-21 22:03 | 显示全部楼层

扫描的时候关中断

可以在扫描的时候关中断。
 楼主| wilkes 发表于 2007-4-26 10:39 | 显示全部楼层

扫描的时候关中断会不会对其他程序有影响

 因为不止一个中断阿,还有ad中断也很快的,大约1秒1600次采样中断,上面有位朋友说写完数据加几个nop,不知道起什么作用。倒是可以尽量把时间长的程序移出中断,这样效果好一些了。
dengm 发表于 2007-4-26 11:44 | 显示全部楼层

UART 及时退出中断

INT_AD:  ; 高优先
      ; AD 采样
      ; ad计算
      SETB IE_AD
      RET
;--------------------------------
INT_SCAN:
      ; 扫描
      RETI

;------------------
INT_UART:          
   JBC RI, UART_RX
     JBC TI, UART_TI 
INT_RET:
      IRET
      NOP
;--------------------
UART_RI:
   MOV SBUF_RX, SBUF
   CALL INT_RET
  ;---------------
  ; UART RX 处理
  ;
  RET
;--------------
UART_TI:
   CALL INT_RET
  ;---------------
  ; UART TI 处理
  ;
   RET

lbx_00 发表于 2007-4-26 19:18 | 显示全部楼层

用锁存器不就行了

sdouen 发表于 2007-4-26 19:59 | 显示全部楼层

用164串行输出显示

 楼主| wilkes 发表于 2007-4-27 18:13 | 显示全部楼层

uart中断?

 上面有个兄弟写的汇编是什么意思呢?我感觉不是uart的原因阿,因为测试的时候没有通信发生都会闪烁的,可能还是ad中断执行时间太长的原因
yaoyunyuan 发表于 2007-5-17 16:41 | 显示全部楼层

7289

用7289解决吧
zxq1234508 发表于 2007-5-17 17:13 | 显示全部楼层

支持16楼 用ZLG7290 两根线就可以了

ayb_ice 发表于 2007-5-17 18:40 | 显示全部楼层

扫描用中断(1~2MS),设为最高优先级...

gyt 发表于 2007-5-17 19:25 | 显示全部楼层

中断处理尽量短

中断处理程序本身一定要短,大量的计算应该放在中断以外来做。
 楼主| wilkes 发表于 2007-7-23 14:03 | 显示全部楼层

程序里有ad中断和timerA中断(负责led显示),请问怎么处理?

  我的程序里有ad中断和timerA中断(负责led显示),两者都对时间有要求,请问怎么处理呢?
 ad负责对工频电量采集转换,1秒采样1600次,也是定时(timerB)触发采样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

147

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部