打印

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

[复制链接]
2762|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
dai_weis| | 2007-4-17 22:20 | 只看该作者

关闭100mS-250mS就可以

扫描频率不变

使用特权

评论回复
板凳
DAVIDYE|  楼主 | 2007-4-17 22:44 | 只看该作者

多谢 dai_weis

多谢!我的程序如下,可以看到实现不了,请教 dai_weis 了!

ORG 00H
START:        
            
            
DIR1:        MOV DPTR,#TABLE2

DIR:        MOV R0,#00H;R0是数的代码寄存器
        MOV R1,#0fdH;R1是数码管选择位10111111,P21亮
NEXT:        mov p0,#0ffh;清除显示
                  MOV P2,#0FFH;清除显示
                  MOV A,R0
                  MOVC A,@A+DPTR;取代码
             MOV  P0,A;送显示
        MOV  A,R1
        MOV  P2,#0FFH
        CALL DELAY
        MOV P2,A;数码管选择
        INC R0;取下一个码
        RL A;右移一位
        MOV R1,A;取下一个数码管端口        
        CJNE R1,#7fh,NEXT;如果6个数送完重新开始
        SJMP START;重新开始


DELAY:  
       mov r5,#20    ;延时200MS
    d1:mov r6,#20
    d2: mov r7,#250
    djnz r7,$
    djnz r6,d2
    djnz r5,d1
    ret

TABLE2:        DB 0C0h,0F9h,0A4h,0B0h,099h,092h;显示012345
    END

使用特权

评论回复
地板
DAVIDYE|  楼主 | 2007-4-17 22:55 | 只看该作者

觉得比较难搞哦!

期待可参考的程序!

使用特权

评论回复
5
ayb_ice| | 2007-4-18 07:47 | 只看该作者

这都难啊...

使用特权

评论回复
6
mugenwon| | 2007-4-18 13:44 | 只看该作者

我的做法

首先我是用c写的,汇编也可以但是麻烦。
其次要用定时器中断

我会写一段专门负责显示扫描的定时器中断程序,它能够把固定地址的单元内容显示出来,我把这个程序叫显示驱动模块,显示的内存就是显存。

然后我会在程序某个地方定时或不定时的刷新这些单元的内容。原始数据经过处理后,放到显存里面。我把这段程序叫翻译模块。

然后要显示的东西我会做一个表格,包括数码管0~9,英文字母,等等还有各种要显示的灯,点阵等。用于查表。

有了这几个概念我就可以随便操作要显示的东西了,这一切是全自动完成的。就像PC显卡一样。

使用特权

评论回复
7
ayb_ice| | 2007-4-18 15:51 | 只看该作者

随便说说

根据LZ的意图,最简单的方法是设置一开关标志...

使用特权

评论回复
8
DAVIDYE|  楼主 | 2007-4-18 15:58 | 只看该作者

mugenwon的思路较清晰

mugenwon的方法值得参考啊!多谢先!

使用特权

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

本版积分规则

37

主题

235

帖子

2

粉丝