单片机/MCU论坛
直播中

陈少泽

11年用户 245经验值
擅长:可编程逻辑 模拟技术 控制/MCU
私信 关注
[问答]

***点阵消隐问题请教

8*8点阵消隐问题请教

想用8*8的点阵做个心开流水灯,

硬件环境:

//P0口控制列
//通过74HC595串并转换,控制行,

因为行数据是通过74HC595串并转换得到的,每一列数据总是有拖尾现象。试了动态数码管的消隐方法,好像不好使。而且到右侧,几个点,整屏开始出现抖动,大家有什么好办法,可以消隐,去除抖动。




下面是程序。

#include
#include
#define NOP() _nop_()
                                                                                                                //P0口控制列
***it MOSIO=P3^4;                                                //通过74HC595串并转换,控制行,
***it R_CLK=P3^5;
***it S_CLK=P3^6;
unsigned char code H[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02};
unsigned char code L[]={0xef,0xdf,0xbf,0x7f,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfd,0xfd,0xfb,0xf7};

void delay(unsigned int i)
{
unsigned int j;
for(i;i>0;i--)
        for(j=30;j>0;j--);
}

void HC595SendData(unsigned char SendVal)
{
unsigned char i;
for(i=0;i<8;i++)
        {
        if((SendVal<
        else  MOSIO=0;
        S_CLK=0;
        NOP();
        NOP();
        S_CLK=1;

        R_CLK=0;
        NOP();
        NOP();
        R_CLK=1;
        }
}

void D(unsigned char a,b)
{
HC595SendData(a);                                                        //通过74HC595串并转换,控制行,
P0=b;                                                                                                        //P0口控制列
}

void main(void)
{
unsigned char c,d;
unsigned int e;
        for(d=1;d<17;d++)
        {        e=10;
                while(e--)
                {
                        for(c=0;c
                        {
                                D(H[c],L[c]);
                                delay(2);
                                D(0,0xff);
                                delay(1);
                        }
                        delay(3);
                }
        }
}


回帖(11)

jijuxie

2017-4-26 11:01:41
可能 是时间配置的不好吧。
举报

freedom100

2017-4-26 12:10:41
我看你程序没有作 传统的清屏处理,影像残留,人眼看到就是一直亮的。

首先发数据之前,先将点阵屏关掉,熄屏。
在发送过程,你的屏要保证是灭的,没亮的。
接着确认完成一次发送并设置成功,你再开屏。
就是 OE 脚,发数据之前要禁掉!!!!发完数据再开。
你程序没这个动作。

还有就是控制你的刷屏时间,你现在用这种循环体没法保证时间间隔准确性。最好开个定时器中断!!!

两项改过来后,如何还有残留,就再加上 复位脚,MR  每次发数据前 OE 禁掉 再 MR 复位一下,再发数据 ,再 OE 打开显示。这样肯定不会出现以上问题。
举报

陈少泽

2017-5-16 11:03:28
引用: freedom100 发表于 2017-4-26 12:10
我看你程序没有作 传统的清屏处理,影像残留,人眼看到就是一直亮的。

首先发数据之前,先将点阵屏关掉,熄屏。

好的,感谢,换各思路 。
举报

freedom100

2017-5-17 08:26:16
引用: csz9981 发表于 2017-5-16 11:03
好的,感谢,换各思路 。

这情况都是消隐 清屏
举报

黄子波

2017-5-19 13:04:26
楼主问题解决了吗?
举报

陈少泽

2017-5-24 16:12:00
引用: 黄子波 发表于 2017-5-19 13:04
楼主问题解决了吗?

已经解决。
000000000000000000000000000
举报

长生果

2017-7-18 20:48:59
引用: csz9981 发表于 2017-5-24 16:12
已经解决。
000000000000000000000000000

怎么解决的,能说一下嘛??
举报

长生果

2017-7-18 20:49:03
引用: csz9981 发表于 2017-5-24 16:12
已经解决。
000000000000000000000000000

怎么解决的,能说一下嘛??
举报

长生果

2017-7-18 20:49:04
引用: csz9981 发表于 2017-5-24 16:12
已经解决。
000000000000000000000000000

怎么解决的,能说一下嘛??
1 举报
  • 陈少泽: 2018年,已经一年不玩单片机了,现在无意中刚看到你的消息。

Grady黄

2019-3-27 10:21:38
高通中外文字库IC,支持全世界170多国家的语言,全国唯一字库IC原厂,可加Q2850929208黄工索取资料
举报

Grady黄

2019-3-27 10:22:24
高通中外文字库IC,支持全世界170多国家的语言,全国唯一字库IC原厂,可加Q2850929208黄工索取资料
举报

更多回帖

×
20
完善资料,
赚取积分