dianzichina 发表于 2012-12-18 20:22:23

收了两个点阵屏,如何测出驱动板的接口?




08接口吧,貌似可以级连。想自己写个程序,可上面08接口的几根线咋跟MCU相连的呢?

dianzichina 发表于 2012-12-19 14:22:52




wadz365 发表于 2012-12-20 00:48:04

看看是什么芯片的,在查查PDF,能想到的就是这样吧

dianzichina 发表于 2012-12-20 09:30:17

wadz365 发表于 2012-12-20 00:48 static/image/common/back.gif
看看是什么芯片的,在查查PDF,能想到的就是这样吧

片子是MEGA8 16AU 0847G 这个片子是不是可容易烧锁熔丝?

CK PD2
ST PD4
R1 PC4
G1 PD5

A PC3
B PC2
C PC1
D PC0

wadz365 发表于 2012-12-20 10:19:41

MEGA8是有烧锁熔丝的问题,但仔细点一般不会,
这个是控制芯片吧,看看驱动芯片型号,不就知道怎么用了

dianzichina 发表于 2012-12-20 15:33:24


用这个搞定了一个翻页钟。


有点小BUG,那就是整个字都向下移了一行。不知道改哪了。

名字不能太长 发表于 2012-12-20 16:57:27

CK PD2595时钟
ST PD4138使能(用于控制亮度)
R1 PC4   595数据(红色)
G1 PD5   595数据(绿色)

A PC3   138地址1
B PC2   138地址2
C PC1   138地址3
D PC0   138地址4

猜的。{:biggrin:}

我之前也做过一个点阵时钟,用的是那种32*64单元板,也就这些引脚。

dianzichina 发表于 2012-12-20 17:41:31

NND想用这个控制板写点程序玩玩,不过在写之前想保存一下里面的数据,万一自己整不成,还可以把原来的程序写进去,这样子原来的东东还有得玩,结果,读出来是个这玩艺儿!
蛋疼的熔丝位啊,加密位啊,哪位能解这个么?

logsoft 发表于 2012-12-21 21:10:57

我也有一块屏,80*32双色,用的atmega16。你整体字下移一行,可能是138的控制初始输入是1,应该是0。

dianzichina 发表于 2012-12-29 14:40:28

用原装MEGA8板点亮1664成功,美中不足的是最底下一行总有一些灯闪动。应该是与我的程序有关,特附上程序,请各位大师指点。


#include <mega8.h>
#include <delay.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int

#define RCK0      PORTD &= ~(1<<4) //PD4
#define RCK1      PORTD |= (1<<4)
#define SCK0      PORTD &= ~(1<<2) //PD2
#define SCK1      PORTD |= (1<<2)
#define SI_Rdata0 PORTC &= ~(1<<4) //PC4
#define SI_Rdata1 PORTC |= (1<<4)
#define SI_Gdata0 PORTD &= ~(1<<5) //PD5
#define SI_Gdata1 PORTD |= (1<<5)
#define EN0       PORTD &= ~(1<<3) //PD3
#define EN1       PORTD |= (1<<3)

void SendByteR(unsigned char);
//void SendByteG(unsigned char);

unsigned char font[]=
{                                                                              //阳码 顺向 列行 20121229 by he

{0xFF,0xEF,0xEF,0xEF,0xE0,0xEF,0xEF,0xEF,0xE0,0xEF,0xEF,0xEF,0xDF,0xDF,0xBF,0x7F},
{0xBF,0xBF,0xBF,0xBB,0x01,0xFF,0xFF,0xFF,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF},/*"片",0*/

{0xFF,0xEF,0xEF,0xEF,0xE0,0xEF,0xEF,0xEF,0xE0,0xEF,0xEF,0xEF,0xDF,0xDF,0xBF,0x7F},
{0xBF,0xBF,0xBF,0xBB,0x01,0xFF,0xFF,0xFF,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF},/*"片",1*/

{0xFF,0x80,0xBF,0xA0,0xBE,0xBE,0xBE,0xB0,0xBE,0xBE,0xBE,0xA0,0xBF,0xBF,0x80,0xBF},
{0xFF,0x03,0xFB,0x0B,0xFB,0xFB,0xFB,0x1B,0xBB,0xDB,0xDB,0x0B,0xFB,0xFB,0x03,0xFB},/*"国",2*/

{0xFF,0xFE,0xFE,0xFE,0xFE,0x80,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0x01,0xFF,0xFF},/*"土",3*/
};
void main(void)
{
        unsigned char i,j;
//        PORTD=0B01011100;                           //对于开始时不操作的IO口应根据实际硬件电路确定是置为H还是L,如我只要显示红灯,就要给绿灯信号线一个
//        DDRD=0B01011111;                                //强制上拉置1,使绿灯不显示,否则绿灯也是亮
//        DDRC=0B00001111;
        PORTD=0XFF;                          
        DDRD=0XFF;
    PORTC=0XFF;
        DDRC=0XFF ;
        while(1)
        {             
           for(i=0;i<16;i++)
      {
            EN1;
                  RCK0;       
                         for(j=0;j<8;j++)         //4M时250us
                          {            
                    SendByteR(font);                                                                                                                                            
              }
            RCK1;
            delay_us(1);
            EN0;
            PORTC=i;                        //注意检查此口连接
          }
       }
}
void SendByteR(unsigned char dat)                  //传1BYTE函数               红灯
{
        unsigned char i,j=dat;
        for(i=0;i<8;i++)
        {
      SI_Gdata1;
//      EN1;
                if(j&0x80)
                        SI_Rdata1;
                else
                        SI_Rdata0;
                SCK0;
                SCK1;
//      EN0;
                j=j<<1;
        }
}

gracialee 发表于 2012-12-31 21:42:43

程序有问题没有啊?

logsoft 发表于 2013-1-1 09:25:30

给定138的行选择信号后再打开outenable.

meirenai 发表于 2013-1-1 10:57:53

mark            

dianzichina 发表于 2013-1-1 12:57:22

logsoft 发表于 2013-1-1 09:25 static/image/common/back.gif
给定138的行选择信号后再打开outenable.

        while(1)
        {             
             for(i=0;i<16;i++)
                  {
                 for(j=0;j<8;j++)         //4M时250us
                {            
                    SendByteR(font);                                                                                                                                            
//                    SendByteG(font);                                                                                                                                            
                      }
                RCK0;       
                        RCK1;
                        PORTC=i&0x0f;                        //注意检查此口连接   
                EN1;
                     delay_us(500);
                     EN0;
          }
       }

按您的指示,把使能端改到了主程序的主循环里了。结果是最底层不闪了。但亮度从上往下依次渐暗。。。

logsoft 发表于 2013-1-1 21:41:37

关断输出,移位送行数据,锁存(先高后低),行选择,打开输出,按这步骤试试,如果显示亮度不均,那是电源功率不足。

meirenai 发表于 2013-1-2 03:14:15

楼主,供电用什么?直接从开发板上扯得电吗?电流够不够?

dianzichina 发表于 2013-1-2 19:43:35

我想应该还是我的程序的问题,就是当我把上面修改过了的程序烧录好后,再用上了单独的电源(5V1A,2A的都试过),始终达不到原机所带的亮度,也就是最上图的“欢迎光临”。而原装的亮度几乎到了刺眼的地步。

gracialee 发表于 2014-11-1 23:47:10

这个问题还有吗?
页: [1]
查看完整版本: 收了两个点阵屏,如何测出驱动板的接口?