|
void display(u8 num)这个函数有点废。。 总共就2个数码管,又是if ,又是switchr ...
|
| 应该是延时中断的问题 |
|
本帖最后由 名字不是重点 于 2022-3-8 17:00 编辑 动态扫描显示,就是利用人眼的“视觉暂留”效果,来实现整幅画面的“稳定”显示。 人眼的“视觉暂留”一般在100ms-400ms,如要8个数码管动态扫显,必需保证至少每100ms(扫描间隔Ts)要输出一帧的显示数据。假如传输一帧数据花费的时间为2ms(Tf),一帧包含8个数码管,所以每个数码管的维持时间(Th)约为0.25ms,这时数码管显示看上去很暗,就要把Th加大。而且每个数码管的Th必需相同,这样才不会显得亮度不均(硬件参数正确的情况下)。而Ts太大了,就会出现数码管闪烁的现象,也不能太小,否则会影响其它任务的时效性。这就牵涉到任务时间片的调度, 在祼奔系统中,常规的做法是把扫显任务做成一个函数,在其它任务片中按需调用。比如按键扫描,插入扫显,替代“去抖动延时”,等等。而RTOS之类的系统另说。 |
楼主仔细对比一下,会有收获。
|
| 延迟弄长一点看看 |
|
何时不用DELAY了,就好了。 初学者,只会用最低级的DELAY延时,不知道教课书上有没有教过DELAY的危害是什么。谁害了初学者。 你想想看,当你DELAY 0.3秒时,在这0.3秒里,两个LED是显示的是什么?一个有字一个无字? |
| 闪烁是“视觉暂留”没有控制好啊,delay_ms(300);delay_ms(25);都是问题 |
| 建议你程序规范一些,u8 c最好初始化的时候直接定于0或者其他数据要不然编译器有时会给你随便搞一个数值。 |