打印

求高手指教计数器程序。

[复制链接]
1498|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jiemcu|  楼主 | 2011-8-18 18:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个简单的单片机计数器程序,573锁存,138位选通,数码管有8位,采用动态扫描显示。
     目前的问题:程序可以实现自加1的计数显示功能,但是8个数码管最高位(千万位)亮度很高(我认为是执行完Tube_static_Display(Ten_million,0);后,再返回for循环执行自加1后的数字经单片机计算花的时间比较长,导致千万位停留时间相比长一些的缘故,软件仿真计算出的时间确实相差蛮大),但是如果增加其他几位显示下边的延时又会导致数码管闪烁,请问是不是可以换一种写法,让数码管扫描每一位的时间相当呢?希望各位高手指点一二,谢谢!程序再附件里,请大家指点!

1.2.rar

911 Bytes

相关帖子

沙发
NE5532| | 2011-8-18 19:59 | 只看该作者
楼主想下中断和定时器怎么用。

使用特权

评论回复
板凳
Jiemcu|  楼主 | 2011-8-21 20:15 | 只看该作者
2# NE5532 5532的意见可以说得详细点吗? 现在我想出了个其他的方法暂时解决了这个问题。就是扫描完最高位送入0X00。

使用特权

评论回复
地板
Light_David| | 2011-8-22 02:10 | 只看该作者
本帖最后由 Light_David 于 2011-8-22 02:25 编辑

你的代码太糟糕了,
1.对于单片机来说int也会很吃力,能用char绝不用int. 何况你那些个十百千万位最大只是0~9,用int无益反而有弊;
2.主循环居然不是死循环,,,LZ这是做定时炸*么??
当计数到99999999 for循环不成立,就爆炸了。
3.取模运算让人很无语,,,这种BCD最好用减法做,省时,即便使用除法,最好也应该取中间结果再算;
4.seg那个数组用的更是无语,,数组定义成常量0~7,没有任何意义啊,数组下标就是这个数组返回的值,多此一举。
5.显示要中断来做,,解放CPU。用延迟,CPU啥也干不了了。

使用特权

评论回复
5
Jiemcu|  楼主 | 2011-9-5 19:49 | 只看该作者
4# Light_David
感谢David的指点,楼主目前正在努力学习当中,以后会逐渐改进的。再次感谢您的指点!

使用特权

评论回复
6
老鱼探戈| | 2011-9-6 22:41 | 只看该作者
看4L的回复,情况很纠结啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝