找回密码
 立即注册
查看: 82|回复: 6

图中16*32双色点阵模组,这款点亮方式是静态还是动态刷新,有没有例程可供参考测试

[复制链接]

10

主题

27

回帖

204

积分

中级会员

积分
204
发表于 2026-9-7 17:16:17 | 显示全部楼层 |阅读模式
需要用这种屏拼成64*128的屏,横行4块,竖向也是4块
1.jpg
2.jpg
回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-9-7 17:35:40 | 显示全部楼层
这是LED点阵屏单元板,可以多块拼接成很大的面积。
这是HUB12接口,看其地址ABCD是16扫的,肯定是动态扫描的,扫描速度为0.5~1ms一行,刷新率62.5~125Hz。单色的驱动时序多数兼容74HC595,单元屏如果点阵比较密的多为64x16或64x32,你这个点阵比较疏,32x16,则一行4个字节,扫16次完成一屏。
回复

使用道具 举报 送花

已绑定手机

52

主题

2863

回帖

3155

积分

荣誉版主

积分
3155
发表于 2026-9-7 19:49:27 | 显示全部楼层
点阵必须是动态扫描的
~~~
回复

使用道具 举报 送花

10

主题

27

回帖

204

积分

中级会员

积分
204
 楼主| 发表于 2026-9-9 16:40:34 | 显示全部楼层
如下搞了一个测试程序,显示怎么也不正确,按理说最后一个字节固定了0xff,应该是屏的最后25-32列全亮,现在反而是4行全亮。还有,如果地址固定一个值(某行),屏反而不显示了

#include    "STC8C.h"

sbit    ADDR_A    =P3^5;
sbit    ADDR_B    =P3^4;
sbit    ADDR_C    =P3^3;
sbit    ADDR_D    =P3^2;
sbit    CLK        =P4^6;
sbit    LAT        =P0^7;
sbit    OE        =P0^6;
sbit    R_dat    =P0^4;
sbit    G_dat    =P0^3;

struct FONT_DATA
{
    unsigned char dat[32];
};

struct FONT_DATA code Font_Data[] =
{
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x20,0x04,0x20,0x04,0x20,
    0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00,0x00, /*'0',0*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
    0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x03,0xE0,0x00,0x00,0x00,0x00, /*'1',1*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x20,
    0x00,0x40,0x00,0x80,0x01,0x00,0x02,0x00,0x04,0x20,0x07,0xE0,0x00,0x00,0x00,0x00, /*'2',2*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x40,
    0x01,0x80,0x00,0x40,0x00,0x20,0x04,0x20,0x04,0x20,0x03,0xC0,0x00,0x00,0x00,0x00, /*'3',3*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xC0,0x00,0xC0,0x01,0x40,0x02,0x40,
    0x02,0x40,0x04,0x40,0x07,0xF0,0x00,0x40,0x00,0x40,0x01,0xF0,0x00,0x00,0x00,0x00, /*'4',4*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x04,0x00,0x04,0x00,0x04,0x00,0x07,0x80,
    0x04,0x40,0x00,0x20,0x00,0x20,0x04,0x20,0x04,0x40,0x03,0x80,0x00,0x00,0x00,0x00, /*'5',5*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x00,0x04,0x00,0x05,0xC0,
    0x06,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x20,0x01,0xC0,0x00,0x00,0x00,0x00, /*'6',6*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x04,0x20,0x00,0x40,0x00,0x40,0x00,0x80,
    0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /*'7',7*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x04,0x20,0x04,0x20,0x04,0x20,0x02,0x40,
    0x01,0x80,0x02,0x40,0x04,0x20,0x04,0x20,0x04,0x20,0x03,0xC0,0x00,0x00,0x00,0x00, /*'8',8*/
  },
  {
    0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x20,
    0x04,0x60,0x03,0xA0,0x00,0x20,0x00,0x20,0x02,0x40,0x01,0x80,0x00,0x00,0x00,0x00, /*'9',9*/
  },
};

unsigned char    bdata    Address;
sbit    Addr_A=Address^0;
sbit    Addr_B=Address^1;
sbit    Addr_C=Address^2;
sbit    Addr_D=Address^3;

void    TMR1_Isr()    interrupt    3 // 1ms定时
{
    unsigned char    i,j;
   
    ADDR_A=Addr_A;
    ADDR_B=Addr_B;
    ADDR_C=Addr_C;
    ADDR_D=Addr_D;   // 扫描行地址,如果固定为0000或其他值,屏幕什么也显示不出呢,郁闷
   
    OE=1;
    j=Address<<1;
    ACC=Font_Data[0].dat[j];        // 0,一行中第一个字节,此处是要显示 0 1 ,16*16点阵
    for (i=8;i>0;i--)
    {
        G_dat=ACC&0x80;
        R_dat=0;
        CLK=0;
        CLK=1;
    }
    j++;
    ACC=Font_Data[0].dat[j];        // 0
    for (i=8;i>0;i--)
    {
        G_dat=ACC&0x80;
        R_dat=0;
        CLK=0;
        CLK=1;
    }

    j=Address<<1;
    ACC=Font_Data[1].dat[j];        // 1
    for (i=8;i>0;i--)
    {
        G_dat=ACC&0x80;
        R_dat=0;
        CLK=0;
        CLK=1;
    }
    j++;
    ACC=Font_Data[1].dat[j];        // 1
    for (i=8;i>0;i--)
    {
//        G_dat=ACC&0x80;
        G_dat=1;
        R_dat=0;
        CLK=0;
        CLK=1;
    }
    LAT=0;
    LAT=1;
    OE=0;
   
    Address++;
    Address&=0x0f;
}


void    TMR1_Init(void)
{
    TR1=0;
    TMOD&=0x0f;        // 16 bit timer
    TH1=0xd1;
    TL1=0x20;
    AUXR|=0x40;
    TR1=1;
    ET1=1;
}
void    RST_WDT(void)
{
    WDT_CONTR=0x3a;
}
void    System_Init(void)
{
    P_SW2=0x80;
    XOSCCR=0xc0;        // Ñ¡ÓÃÍⲿ¾§Õñ
    while (!(XOSCCR&1));
    CLKDIV=0x00;
    CKSEL=0x01;
    P_SW2=0x00;
    P0M1=0x00;P0M0=0xff;
    P1M1=0x00;P1M0=0x00;
    P2M1=0x00;P2M0=0x00;
    P3M1=0x00;P3M0=0x3c;
    P4M1=0x00;P4M0=0x40;
    P5M1=0x00;P5M0=0x00;
}

main()
{
    IE=0;
    System_Init();
    TMR1_Init();
    EA=1;
   
    while (1)
    {
        RST_WDT();
    }
}
回复

使用道具 举报 送花

10

主题

27

回帖

204

积分

中级会员

积分
204
 楼主| 发表于 2026-9-9 17:54:42 | 显示全部楼层
做了4个数据测试显示,结果行列直接搞不懂了        

OE=1;
        j=Address<<1;
//        ACC=Font_Data[0].dat[j];                // 0
        ACC=0x1;
        for (i=8;i>0;i--)
        {
                G_dat=ACC&0x80;
                R_dat=0;
                CLK=0;
                CLK=1;
        }
        j++;
//        ACC=Font_Data[0].dat[j];                // 0
        ACC=0x3;
        for (i=8;i>0;i--)
        {
                G_dat=ACC&0x80;
                R_dat=0;
                CLK=0;
                CLK=1;
        }

        j=Address<<1;
//        ACC=Font_Data[1].dat[j];                // 1
        ACC=0x5;
        for (i=8;i>0;i--)
        {
                G_dat=ACC&0x80;
                R_dat=0;
                CLK=0;
                CLK=1;
        }
        j++;
//        ACC=Font_Data[1].dat[j];                // 1
        ACC=0x30;
        for (i=8;i>0;i--)
        {
                G_dat=ACC&0x80;
                R_dat=0;
                CLK=0;
                CLK=1;
        }
        LAT=0;
        LAT=1;
        OE=0;
3.jpg
回复

使用道具 举报 送花

10

主题

27

回帖

204

积分

中级会员

积分
204
 楼主| 发表于 昨天 12:04 | 显示全部楼层
最后搞定了,是4扫方式,这个方式太麻烦了,不是完整的一行。
回复

使用道具 举报 送花

1

主题

124

回帖

1477

积分

金牌会员

积分
1477
发表于 昨天 22:34 | 显示全部楼层
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 16:11 , Processed in 0.080059 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表