单片机/MCU论坛
直播中

wanglibin

7年用户 42经验值
擅长:可编程逻辑
私信 关注
[问答]

16x64点阵屏消隐没办法解决

据网上介绍可以在发送数据后先关掉行驱动,等数据锁存后再开行驱动,我试了一下,但是必须加延时,加了延时拖尾没有了,但是字体移动时,字体上半部分比下半部分要先移动,不加延时的话,又不能消隐,气死我了。我用的是74hc138两片做行驱动,595列驱动。

程序如下:

#include
#define uint unsigned int
#define uchar unsigned char
***it DS = P3^1;
***it RCK = P3^2;
***it SCK = P3^3;
***it AOE = P1^0;
***it BOE = P1^1;

uchar code wenzi[] = {

回帖(7)

李雷

2017-10-24 09:03:40
你的时序还是不对!要等到上下的数据都锁存后才开行驱动的。
举报

wanglibin

2017-10-24 12:48:56
能否帮我修改一下,我用的是行列式(顺向<--)扫描字模
举报

h1654155269.7612

2017-11-1 14:55:52
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

wanglibin

2017-11-1 15:19:09
无标题.png
举报

h1654155269.7612

2017-11-7 17:27:42
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

wanglibin

2017-11-16 23:02:02
请大侠看一下程序:


#include
#define uint unsigned int
#define uchar unsigned char
***it DS = P3^1;
***it RCK = P3^2;
***it SCK = P3^3;
***it INH = P3^0;
***it OE = P2^0;
uchar code wenzi[] = {
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x04,0x10,0x24,0x08,0x44,0x06,0x84,0x01,
0x64,0x82,0x9C,0x4C,0x40,0x20,0x30,0x18,
0x0F,0x06,0xC8,0x01,0x08,0x06,0x08,0x18,
0x28,0x20,0x18,0x40,0x00,0x80,0x00,0x00,/*"欢",0*/

0x40,0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,
0x00,0x20,0x00,0x40,0xFC,0x4F,0x04,0x44,
0x02,0x42,0x00,0x40,0xFC,0x7F,0x04,0x42,
0x04,0x44,0xFC,0x43,0x00,0x40,0x00,0x00,/*"迎",1*/

0x40,0x80,0x40,0x80,0x42,0x40,0x44,0x20,
0x58,0x18,0xC0,0x07,0x40,0x00,0x7F,0x00,
0x40,0x00,0xC0,0x3F,0x50,0x40,0x48,0x40,
0x46,0x40,0x40,0x40,0x40,0x78,0x00,0x00,/*"光",2*/

0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,
0xFF,0xFF,0x40,0x00,0x20,0x00,0x18,0x7F,
0x0F,0x21,0x18,0x21,0x68,0x3F,0x08,0x21,
0x08,0x21,0x08,0x7F,0x08,0x00,0x00,0x00,/*"临",3*/

         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

void delay(uint time)
{
        uchar i;
        for(i=0;i }

void  hc595_senddat(unsigned char dat)
{
        unsigned char i;
        dat=~dat;
        for(i=0;i<8;i++)
        {
                DS=dat&0x80;
                SCK=1;
                SCK=0;
                dat<<=1;
        }       
}
void main()
{
        unsigned char i,n;
        unsigned int k,m;
        char j;
        m=sizeof(wenzi);
        SCK=0;
        RCK=0;
        OE = 1;
        INH=0;
        while(1)
        {
                for(k=0;k                 {
                        for(n=0;n<2;n++)
                        {
                                for(i=0;i<16;i++)
                                {       
                                        //delay(190);
                                        for(j=3;j>=0;j--)
                                        {
                                                hc595_senddat(wenzi[(32*j+2*i+k)%m]);       
                                                hc595_senddat(wenzi[(32*j+2*i+1+k)%m]);
                                        }
                                        OE=1;
                                        P1=i;
                                        RCK=0;
                                        RCK=1;
                                        delay(15);
                                        OE=0;
                                        RCK=0;
                                        //INH=0;
                                        delay(40);
                                }
                        }
                }
        }
}



举报

alonggege

2019-7-24 15:13:11
不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分