动态显示数码管的闪烁问题请教?

[复制链接]
3601|7
 楼主| DAVIDYE 发表于 2007-4-17 21:52 | 显示全部楼层 |阅读模式
菜鸟请教采用动态显示的方式怎样实现让四个数码管上的数字同时闪烁呢?
dai_weis 发表于 2007-4-17 22:20 | 显示全部楼层

关闭100mS-250mS就可以

扫描频率不变
 楼主| DAVIDYE 发表于 2007-4-17 22:44 | 显示全部楼层

多谢 dai_weis

多谢!我的程序如下,可以看到实现不了,请教&nbsp;dai_weis&nbsp;了!<br /><br />ORG&nbsp;00H<br />START:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />DIR1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#TABLE2<br /><br />DIR:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R0,#00H;R0是数的代码寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R1,#0fdH;R1是数码管选择位10111111,P21亮<br />NEXT:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;p0,#0ffh;清除显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P2,#0FFH;清除显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,R0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVC&nbsp;A,@A+DPTR;取代码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;P0,A;送显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;A,R1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;P2,#0FFH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL&nbsp;DELAY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P2,A;数码管选择<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INC&nbsp;R0;取下一个码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RL&nbsp;A;右移一位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R1,A;取下一个数码管端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CJNE&nbsp;R1,#7fh,NEXT;如果6个数送完重新开始<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJMP&nbsp;START;重新开始<br /><br /><br />DELAY:&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;r5,#20&nbsp;&nbsp;&nbsp;&nbsp;;延时200MS<br />&nbsp;&nbsp;&nbsp;&nbsp;d1:mov&nbsp;r6,#20<br />&nbsp;&nbsp;&nbsp;&nbsp;d2:&nbsp;mov&nbsp;r7,#250<br />&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;r7,$<br />&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;r6,d2<br />&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;r5,d1<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />TABLE2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DB&nbsp;0C0h,0F9h,0A4h,0B0h,099h,092h;显示012345<br />&nbsp;&nbsp;&nbsp;&nbsp;END
 楼主| DAVIDYE 发表于 2007-4-17 22:55 | 显示全部楼层

觉得比较难搞哦!

期待可参考的程序!
ayb_ice 发表于 2007-4-18 07:47 | 显示全部楼层

这都难啊...

  
mugenwon 发表于 2007-4-18 13:44 | 显示全部楼层

我的做法

首先我是用c写的,汇编也可以但是麻烦。<br />其次要用定时器中断<br /><br />我会写一段专门负责显示扫描的定时器中断程序,它能够把固定地址的单元内容显示出来,我把这个程序叫显示驱动模块,显示的内存就是显存。<br /><br />然后我会在程序某个地方定时或不定时的刷新这些单元的内容。原始数据经过处理后,放到显存里面。我把这段程序叫翻译模块。<br /><br />然后要显示的东西我会做一个表格,包括数码管0~9,英文字母,等等还有各种要显示的灯,点阵等。用于查表。<br /><br />有了这几个概念我就可以随便操作要显示的东西了,这一切是全自动完成的。就像PC显卡一样。
ayb_ice 发表于 2007-4-18 15:51 | 显示全部楼层

随便说说

根据LZ的意图,最简单的方法是设置一开关标志...
 楼主| DAVIDYE 发表于 2007-4-18 15:58 | 显示全部楼层

mugenwon的思路较清晰

mugenwon的方法值得参考啊!多谢先!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

235

帖子

2

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