万马奔腾 发表于 2013-10-20 21:32:55

shiow1984 发表于 2013-10-20 20:19 static/image/common/back.gif
我已经研究出来了,这个datain 根本就没什么用,我也找不到接在哪里,但是成功了,我买的是一个16*64单 ...

滚动屏你研究出来了没有啊,我一直无解~

shiow1984 发表于 2013-10-20 21:51:34

万马奔腾 发表于 2013-10-20 21:32 static/image/common/back.gif
滚动屏你研究出来了没有啊,我一直无解~

这两天净研究这个东东了   刚点亮,显示静止的汉字了,还没研究滚动的,明天再研究吧
你到哪一步了?

shiow1984 发表于 2013-10-21 13:50:53

万马奔腾 发表于 2013-10-20 21:32 static/image/common/back.gif
滚动屏你研究出来了没有啊,我一直无解~

看看这个帖子,他这个能滚动, http://www.geek-workshop.com/forum.php?mod=viewthread&tid=4787

smartjay 发表于 2013-10-24 20:12:07

万马奔腾 发表于 2013-10-2 00:18 static/image/common/back.gif
01.for(row=0;row

我剛看懂ZZZ 所寫的16*16 單字驅動程式,
也經過測試其實第二段
for(row=0;row<16;row++){

      for (int i=0;i<4;i++){//8片595
         //硬件SPI发送8字节耗时:22US         
         spi_transfer(~(zzz));//硬件SPI      
         spi_transfer(~(zzz));//硬件SPI      
      }
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x03,0xC0,0x02,0xE0,0x06,0x60,0x04,0x70,
0x0C,0x30,0x0F,0xF8,0x18,0x38,0x10,0x1C,0x30,0x1C,0xFC,0x3F,0x00,0x00,0x00,0x00, //A
這程式是掃描 16*1 及第16*2
把zzz[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x03,0xC0,0x02,0xE0,0x06,0x60,0x04,0x70,
0x0C,0x30,0x0F,0xF8,0x18,0x38,0x10,0x1C,0x30,0x1C,0xFC,0x3F,0x00,0x00,0x00,0x00, //A
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x03,0xC0,0x02,0xE0,0x06,0x60,0x04,0x70,
0x0C,0x30,0x0F,0xF8,0x18,0x38,0x10,0x1C,0x30,0x1C,0xFC,0x3F,0x00,0x00,0x00,0x00, //A
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x03,0xC0,0x02,0xE0,0x06,0x60,0x04,0x70,
0x0C,0x30,0x0F,0xF8,0x18,0x38,0x10,0x1C,0x30,0x1C,0xFC,0x3F,0x00,0x00,0x00,0x00, //A
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x03,0xC0,0x02,0xE0,0x06,0x60,0x04,0x70,
0x0C,0x30,0x0F,0xF8,0x18,0x38,0x10,0x1C,0x30,0x1C,0xFC,0x3F,0x00,0x00,0x00,0x00 //A

}

而原始程式中是直接橫向掃64行,所以會造成錯位。
這樣應該你就懂了。
我最近專題也在做這個,關於滾動的部分還在研究...
共勉之:D

shiow1984 发表于 2013-11-29 21:40:16

smartjay 发表于 2013-10-24 20:12 static/image/common/back.gif
我剛看懂ZZZ 所寫的16*16 單字驅動程式,
也經過測試其實第二段
for(row=0;row

滚动研究的怎么样了?好像得先设置缓存,在缓存里操作移位,循环左移的方法是 temp=(a>>7|a<<1)

iceicon 发表于 2014-1-8 11:37:58

本帖最后由 iceicon 于 2014-1-8 11:39 编辑

问下楼主,用的硬件spi,下面这段代码是多余的吧?
void hc595senddata(byte data){// 高位在前反相(1亮0灭)
for (byte i=0; i<8;i++) {
   digitalWrite(CLK,0);
   if (data & 0x80) {
         digitalWrite(R1, 0);   
   } else {
         digitalWrite(R1, 1);
   }
   data=data<<1;
   digitalWrite(CLK,1);
}
}然后我也把js给的51代码改到了arduino里面。单色左移的程序。digitalWrite(hc138en, 1);//关闭显示
      hc138sacn(row);            //换行
      digitalWrite(STB, 0);      //595刷新      
      digitalWrite(STB, 1);
      delayMicroseconds(500) ;   //节电用,
      digitalWrite(hc138en, 0);//开启显示
      delayMicroseconds(500) ;//刷新频率调,差不多60HZ,1/16间隔上面这段代码写的很好用,我也顺便加上去了

iceicon 发表于 2014-1-8 11:39:12

本帖最后由 iceicon 于 2014-1-8 20:28 编辑

int R1=7;
int STR=8;
int CLK=9;
int EN=2;


int dig0=3;
int dig2=4;
int dig4=5;
int dig8=6;
//int i,m;

unsigned char jj,j;


void setup()
{
pinMode(R1,OUTPUT);
pinMode(STR,OUTPUT);
pinMode(CLK,OUTPUT);
pinMode(EN,OUTPUT);
pinMode(dig0,OUTPUT);
pinMode(dig2,OUTPUT);
pinMode(dig4,OUTPUT);
pinMode(dig8,OUTPUT);
}

unsigned char zi[]={
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,
//以上为空白显示,保证汉字从最右面开始滚出
/*煮   CD6F3 */
0x01,0x01,0x3F,0x01,0xFF,0x03,0x0F,0x38,0xCF,0x08,0x0F,0x00,0x24,0x22,0x42,0x00,
0x00,0x08,0xD8,0x24,0xFE,0x00,0xF0,0x10,0xF0,0x10,0xF0,0x10,0x88,0x44,0x62,0x00,

/*豆   CB6B9 */
0x00,0x7F,0x00,0x00,0x1F,0x10,0x10,0x10,0x1F,0x00,0x10,0x08,0x04,0xFF,0x00,0x00,
0x00,0xFE,0x00,0x00,0xF0,0x10,0x10,0x10,0xF0,0x20,0x30,0x20,0x40,0xFE,0x00,0x00,

/*燃   CC8BC */
0x22,0x22,0x23,0x2C,0xB4,0xAA,0xA5,0xA2,0x22,0x24,0x29,0x52,0x4D,0x45,0x88,0x00,
0x10,0x10,0xD8,0x54,0x90,0xFE,0x10,0x28,0x48,0x84,0x06,0x48,0x24,0xB6,0x92,0x00,

/*豆   CB6B9 */
0x00,0x7F,0x00,0x00,0x1F,0x10,0x10,0x10,0x1F,0x00,0x10,0x08,0x04,0xFF,0x00,0x00,
0x00,0xFE,0x00,0x00,0xF0,0x10,0x10,0x10,0xF0,0x20,0x30,0x20,0x40,0xFE,0x00,0x00,

/*箕   CBBFE */
0x20,0x3F,0x28,0x45,0x8A,0x7F,0x08,0x0F,0x08,0x0F,0x08,0x08,0xFF,0x04,0x18,0x60,
0x40,0x7E,0x90,0x08,0x20,0xFC,0x20,0xE0,0x20,0xE0,0x20,0x20,0xFE,0x40,0x30,0x0C,

/*,   CA3AC */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*豆   CB6B9 */
0x00,0x7F,0x00,0x00,0x1F,0x10,0x10,0x10,0x1F,0x00,0x10,0x08,0x04,0xFF,0x00,0x00,
0x00,0xFE,0x00,0x00,0xF0,0x10,0x10,0x10,0xF0,0x20,0x30,0x20,0x40,0xFE,0x00,0x00,

/*在   CD4DA */
0x02,0x02,0x7F,0x04,0x04,0x08,0x18,0x17,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x00,
0x00,0x00,0xFE,0x00,0x00,0x40,0x40,0xFC,0x40,0x40,0x40,0x40,0x40,0xFE,0x00,0x00,

/*斧   CB8AB */
0x04,0x18,0x66,0x01,0x06,0x78,0x00,0x0F,0x08,0x0F,0x08,0x10,0x10,0x20,0xC0,0x00,
0x20,0x18,0x64,0x80,0x60,0x1E,0x68,0x80,0x00,0xFC,0x40,0x40,0x40,0x40,0x40,0x40,

/*中   CD6D0 */
0x01,0x01,0x21,0x3F,0x21,0x21,0x21,0x21,0x21,0x3F,0x21,0x01,0x01,0x01,0x01,0x01,
0x00,0x00,0x08,0xFC,0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,

/*泣   CC6FC */
0x20,0x10,0x10,0x07,0x88,0x48,0x50,0x12,0x22,0x21,0xE1,0x21,0x20,0x20,0x3F,0x20,
0x80,0x40,0x40,0xFC,0x00,0x08,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0xFE,0x00,

/*;   CA3BB */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*本   CB1BE */
0x01,0x01,0x01,0xFF,0x03,0x03,0x05,0x05,0x09,0x11,0x2F,0xC1,0x01,0x01,0x01,0x00,
0x00,0x00,0x00,0xFE,0x80,0x40,0x40,0x20,0x10,0x18,0xEE,0x04,0x00,0x00,0x00,0x00,

/*是   CCAC7 */
0x00,0x0F,0x08,0x0F,0x08,0x0F,0x00,0xFF,0x01,0x09,0x09,0x09,0x15,0x23,0x40,0x00,
0x00,0xF0,0x10,0xF0,0x10,0xF0,0x00,0xFE,0x00,0x00,0xF8,0x00,0x00,0x00,0xFE,0x00,

/*同   CCDAC */
0x00,0x7F,0x40,0x40,0x5F,0x40,0x40,0x4F,0x48,0x48,0x48,0x4F,0x48,0x40,0x40,0x40,
0x00,0xFC,0x04,0x04,0xF4,0x04,0x04,0xE4,0x24,0x24,0x24,0xE4,0x24,0x04,0x14,0x08,

/*根   CB8F9 */
0x10,0x11,0x11,0xFD,0x11,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x10,
0x00,0xF8,0x08,0x08,0xF8,0x08,0x08,0xF8,0x84,0x4C,0x30,0x10,0x48,0x8E,0x04,0x00,

/*生   CC9FA */
0x00,0x10,0x10,0x10,0x1F,0x20,0x20,0x40,0x9F,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,
0x80,0xC0,0x80,0x88,0xFC,0x80,0x80,0x88,0xFC,0x80,0x80,0x80,0x80,0x84,0xFE,0x00,

/*,   CA3AC */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


/*相   CCFE0 */
0x10,0x10,0x10,0x10,0xFE,0x18,0x34,0x32,0x52,0x50,0x90,0x10,0x10,0x10,0x10,0x10,
0x00,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0x84,0xFC,0x84,

/*煎   CBCE5 */
0x08,0x04,0xFF,0x00,0x3E,0x22,0x3E,0x22,0x3E,0x22,0x2A,0x24,0x48,0x44,0xC6,0x82,
0x20,0x40,0xFE,0x00,0x08,0x48,0x48,0x48,0x48,0x48,0x28,0x10,0x88,0x44,0x66,0x22,

/*何   CBACE */
0x08,0x0C,0x1B,0x10,0x30,0x27,0x64,0xA4,0x24,0x27,0x24,0x20,0x20,0x20,0x20,0x00,
0x00,0x00,0xFE,0x08,0x08,0xC8,0x48,0x48,0x48,0xC8,0x48,0x08,0x08,0x28,0x10,0x00,

/*太   CCCAB */
0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x02,0x02,0x04,0x05,0x08,0x10,0x20,0x40,
0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x98,0xCC,0x86,0x04,

/*急   CBCB1 */
0x04,0x04,0x0F,0x08,0x10,0x2F,0x00,0x0F,0x00,0x0F,0x01,0x28,0x28,0x68,0x07,0x00,
0x00,0x00,0xE0,0x40,0x80,0xF0,0x10,0xF0,0x10,0xF0,0x00,0x84,0x92,0x12,0xF0,0x00,

/*。   CA1A3 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x30,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,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void row1(int i)
{
        digitalWrite(dig0,(i&0x01));
        digitalWrite(dig2,(i&0x02));
        digitalWrite(dig4,(i&0x04));
        digitalWrite(dig8,(i&0x08));
}

void sendbyte(byte bbyte1)
{
        for(byte i=0;i<8;i++)
        {
                digitalWrite(CLK,LOW);
                if (bbyte1&0x80)
                {
                        digitalWrite(R1,0);
                }
                else
                {
                        digitalWrite(R1,1);
                }
                digitalWrite(CLK,HIGH);
                bbyte1=bbyte1<<1;
        }
}

void sendbyte2(byte bbyte1,byte m)
{
        for(byte i=0;i<m;i++)
        {
                digitalWrite(CLK,LOW);
                if (bbyte1&0x80)
                {
                        digitalWrite(R1,0);
                }
                else
                {
                        digitalWrite(R1,1);
                }
                digitalWrite(CLK,HIGH);
                bbyte1=bbyte1<<1;
        }
}

void loop()
{
        unsigned char row,m,k;
        for(row=0;row<16;row++)
        {
                k=jj;
                for(m=0;m<8;m++)
                {
                        sendbyte(zi);
                }
                sendbyte2(zi,j);
                if(j==8)
                {
                        j=0;
                        jj++;
                        if(jj>55)
                        {
                                jj=0;
                        }
                }
                digitalWrite(EN,1);
                row1(row);
                digitalWrite(STR,0);
                digitalWrite(STR,1);
                delayMicroseconds(100);
                digitalWrite(EN,0);
                delayMicroseconds(100);
        }
        j++;
}



这是我写的,用的软件spi。

iceicon 发表于 2014-1-8 20:22:51

滚屏代码是sendbyte2,是每次多读M个数据传过去,同理可以往右滚屏。翻页的代码51的有,还没转成arduino。同理往下网上也可以,翻页是改数组第二个,滚屏是第一个

shiow1984 发表于 2014-2-11 15:38:24

iceicon 发表于 2014-1-8 20:22 static/image/common/back.gif
滚屏代码是sendbyte2,是每次多读M个数据传过去,同理可以往右滚屏。翻页的代码51的有,还没转成arduino。同 ...

我后来用网上51版的改了一个滚屏的,不过总有问题,哪天传上了大家研究研究,问题是有几行字前面总多几个灯亮

shiow1984 发表于 2014-2-12 15:45:39

本帖最后由 shiow1984 于 2014-2-12 15:48 编辑

iceicon 发表于 2014-1-8 20:22 static/image/common/back.gif
滚屏代码是sendbyte2,是每次多读M个数据传过去,同理可以往右滚屏。翻页的代码51的有,还没转成arduino。同 ...

用你的代码试了下,正常,这是我的代码,有点小问题, 我用的是arduino uno R3的板子,帮忙看下可以吧,
这个问题,我在arduino版块新发表了个帖子,http://www.geek-workshop.com/thread-8598-1-1.html

#define RowA 2   
#define RowB 3
#define RowC 4
#define RowD 5
//业界所采用的ABCD 08驱动模式
/*2 ABCD G1 G2 STB CLK 16 1 N N N EN R1 R2 N N 15*/
int hc138en=6; //EN口

//使用了硬件SPI,以下脚不能更改
#define R1 11          //数据出    MOSI
#define CLK 13         //时钟    SCK
#define STB 10         //595 刷新显示SS锁存         STB(LT)为锁存信号,CLK(CK)为时钟信号
#define DATAIN12   //数据入,读FLASH时有用MISO

char yid,h;                     //YID为移动计数器,H为行段计数器
int zimuo;                   //字模计数器

byte Zdate;//缓存
byte zzz[] =
{/*------------------------------------------------------------------------------
;源文件 / 文字 : 吉祥如意
;宽×高(像素): 64×16
------------------------------------------------------------------------------*/
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,

0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,/*"吉",0*/
0x21,0x04,0x10,0x88,0x10,0x50,0xFD,0xFE,0x04,0x20,0x08,0x20,0x11,0xFC,0x38,0x20,
0x54,0x20,0x94,0x20,0x13,0xFE,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,/*"祥",1*/
0x10,0x00,0x10,0x00,0x18,0x00,0x10,0x7E,0xFE,0x42,0x22,0x42,0x22,0x42,0x22,0x42,
0x22,0x42,0x24,0x42,0x14,0x42,0x08,0x42,0x14,0x7E,0x23,0x42,0x42,0x42,0x80,0x00,/*"如",2*/
0x01,0x00,0x3F,0xFC,0x08,0x20,0x04,0x40,0xFF,0xFE,0x00,0x00,0x1F,0xF0,0x12,0x10,
0x11,0x10,0x1F,0xF0,0x00,0x00,0x29,0x08,0x28,0x84,0x68,0x14,0x07,0xF0,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 spi_transfer(volatile char data)
{
SPDR = data;                  // Start the transmission
while (!(SPSR & (1<<SPIF)))   // Wait the end of the transmission
{
};
//return SPDR;                  // return the received byte
}


void hc138sacn(byte r){//输出行线状态ABCD (A低,D高)
    digitalWrite(RowA,(r & 0x01));
    digitalWrite(RowB,(r & 0x02));
    digitalWrite(RowC,(r & 0x04));
    digitalWrite(RowD,(r & 0x08));
}
/**************************************************************************************
左移显示数据生成模块:(功能相当于有返回值的函数 )
***************************************************************************************/
char two_onebyteL(char h1,char h2)
{
char temp,tempcol;          //输出变量;列移动位数变量。
if(yid<8)
tempcol=yid;
else
tempcol=yid-8;
temp=(h1<<tempcol)|(h2>>(8-tempcol));    //左移显示
temp=255-temp;         
return temp;            //将显示数据返回显示输出函数。
}
/*************************************************************************************
左移待显示数据调取函数
*************************************************************************************/
void loadoneline_L(void)
{
char s;               //此处不要用uchar定义s
for(s=4;s>=0;s--)         //s值为屏数加1(16*16为一屏)
{
Zdate=zzz;
Zdate=zzz;   //左移显示
}
}

/**********************************************************************************
左移显示数据输出函数 : 为显示数据生成模块的h1、h2赋值并且输出合成后的新的h1、h2数据
***********************************************************************************/
void sendoneline_L(void)
{
char s;char inc;
if(yid<8)inc=0;else inc=1;
for(s=0+inc;s<8+inc;s++)
{   //左移显示:单屏s=1+,4屏s=7+,8屏s=15+;
spi_transfer(two_onebyteL(Zdate,Zdate));
}
}
int uiAllData = sizeof(zzz)-128;//定义显示字幕数据的长度 2048/32=64
void setup ()
{
    pinMode(RowA, OUTPUT);
    pinMode(RowB, OUTPUT);
    pinMode(RowC, OUTPUT);
    pinMode(RowD, OUTPUT); //138片选
    pinMode(hc138en, OUTPUT); //138 使能
    pinMode(R1, OUTPUT);//595 数据
    pinMode(CLK, OUTPUT); //595 时钟
    pinMode(STB, OUTPUT); //595 使能
    pinMode(DATAIN, INPUT); //595 使能
      //digitalWrite(hc138d, HIGH);
Serial.begin(19200);
SPCR = (1<<SPE)|(1<<MSTR);
delay(10);
}

void loop ()
{
char i,d=10;
yid=0;
h=0;
zimuo=0;                                                   
while(1)
{
       while(yid<16)                           //数据移位。
       {
            for(i=0;i<d;i++)                      //移动速度
            {
               for(h=0;h<16;h++)
                {   
                loadoneline_L();
                sendoneline_L();
               
                digitalWrite(hc138en, 1);//关闭显示
                digitalWrite(STB, 0);      //595刷新      
                digitalWrite(STB, 1);
                hc138sacn(h);            //换行   
                delayMicroseconds(50) ;   //节电用,
                digitalWrite(hc138en, 0);//开启显示
                delayMicroseconds(500) ;//刷新频率调,差不多60HZ,1/16间隔                        
                }                           
               }
             yid++;                        //移动一步
          }
      yid=0;
      zimuo=zimuo+32;                  //后移一个字,
      if(zimuo>= uiAllData )         //定义显示字幕数据的长度 2048/32=64 即显示完64个16*16大小的字符后 重新循环
   zimuo=0;
}
}

Cupid 发表于 2014-2-12 17:04:45

信息备份。

wetnt 发表于 2014-2-12 21:30:37

高手佩服,保持一下……

非主流@ 发表于 2014-4-28 09:22:32

硬件部分是怎样连接的唉 !!!

clumsybird 发表于 2014-7-16 00:02:43

ranqingfa 发表于 2013-6-29 17:21 static/image/common/back.gif
其实我开始时候就是arduino控制的,2560 ,竟然忘了,后来改了stc,stc有点吃力,但是安装方便
http://v.y ...

你的很棒,请问你是怎么实现滚屏的?能否给个滚屏的源代码?或者教教我。谢谢

ranqingfa 发表于 2014-7-16 09:15:09

clumsybird 发表于 2014-7-16 00:02 static/image/common/back.gif
你的很棒,请问你是怎么实现滚屏的?能否给个滚屏的源代码?或者教教我。谢谢

学生 ????
页: 1 2 [3] 4 5
查看完整版本: 【Z】Arduino也能驱动LED显示屏,LED业界标准Arduino驱动方案解析