liubo_wh 发表于 2015-5-9 16:03:35

08接口1/4扫描的程序怎样改?

zjyylj 发表于 2015-5-22 14:07:07

这个厉害,马克

fddxsyf123 发表于 2015-10-23 17:58:56

对楼上所有的楼主和访客表示感谢,提供了很多有用的资料。
我在此基础上实现了64*32LED阵列的显示,但是问题是用软件SPI刷新速度跟不上,屏幕呈闪烁状态。顾想通过软硬SPI一起执行,提高速率。但是失败了。用了硬件SPI就没法用软件SPI,用了软件SPI就没法用硬件SPI。(我对SPI通信不是很懂)望各位能不能提供好的方法提高刷新速度。

PS:刷 64 * 16 还算可以,可是64 * 32 就 不行了。

附上代码:
int R1=11;
int R2=9;
int STR=10;
int CLK=13;
int EN=6;


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

unsigned char jj,j;

int down = 0;
int row_ = 0;
void setup()
{
pinMode(R1,OUTPUT);
   pinMode(R2,OUTPUT);
pinMode(STR,OUTPUT);
pinMode(CLK,OUTPUT);
pinMode(EN,OUTPUT);
pinMode(dig0,OUTPUT);
pinMode(dig2,OUTPUT);
pinMode(dig4,OUTPUT);
pinMode(dig8,OUTPUT);

//Serial.begin(19200);

//SPCR = (1<<SPE)|(1<<MSTR);
//delay(10);

}

unsigned char zi[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFD,0xFE,0x1E,0x01,0xBF,0x7F,0x7F,0x7F,0xFD,0xFD,0xEF,0xFD,0xBE,0xFF,0x7F,0x7F,
0xF9,0xFB,0xF7,0xFB,0xBD,0xFF,0x7F,0x7F,0xFA,0xFB,0xFF,0xF7,0xBB,0xFF,0x6F,0x7B,
0x87,0x0D,0xFF,0xEF,0xB7,0xFF,0x70,0x07,0xEF,0xBE,0x1F,0xDF,0xAB,0xFF,0x7C,0x1F,
0xF7,0x7F,0xEF,0xDF,0x9D,0xFF,0x7E,0x3F,0xF7,0x7F,0xF7,0xBF,0xBD,0xFF,0x7C,0x1F,
0xF0,0x7B,0xF7,0x7F,0xBE,0xEF,0x7D,0xDF,0xF7,0x7D,0xEE,0xFF,0xBF,0x6F,0x7B,0xEF,
0xEF,0xBE,0x1E,0x01,0xBF,0xB0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xED,0xB7,0xFE,0xFF,0xFD,0xFF,0x90,0x07,0xE5,0x37,0xFF,0x7F,0xFE,0xFF,0xDF,0xF7,
0xF5,0xE0,0x40,0x01,0x80,0x03,0xFF,0xF7,0xC8,0x2F,0xDF,0xFD,0xBF,0xFB,0x60,0x37,
0xF1,0xCE,0xF8,0x07,0xF3,0x3F,0x6F,0xB7,0xCC,0x4E,0xFF,0xCF,0xE7,0xCF,0x6F,0xB7,
0xFB,0xF5,0xFF,0xBF,0x9F,0xE3,0x60,0x37,0xC0,0x75,0xFF,0x7F,0x3F,0xF9,0x6F,0xB7,
0xEE,0xF9,0x80,0x00,0xC0,0x07,0x6F,0xB7,0xEE,0xFB,0xFF,0x7F,0xFE,0xFF,0x60,0x37,
0xF1,0xF5,0xFF,0x7F,0xFE,0xFF,0x6F,0xF7,0xF0,0x4C,0xFF,0x7F,0xFE,0xFF,0x7F,0xF7,
0xCE,0x9F,0x78,0x7F,0x80,0x03,0x7F,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};

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


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 sendbyte(byte bbyte1){// 高位在前 反相(1亮0灭)
for (byte i=0; i<8;i++) {
digitalWrite(CLK,0);
if ( bbyte1 & 0x80) {
digitalWrite(R1, 1);
} else {
digitalWrite(R1, 0);
}
bbyte1= bbyte1<<1;
digitalWrite(CLK,1);
}

}

void sendbyte2(byte bbyte1){// 高位在前 反相(1亮0灭)
for (byte i=0; i<8;i++) {
digitalWrite(CLK,0);
if ( bbyte1 & 0x80) {
digitalWrite(R2, 1);
} else {
digitalWrite(R2, 0);
}
bbyte1= bbyte1<<1;
digitalWrite(CLK,1);
}

}




void loop()
{
      unsigned char row,m,k;
       for(row=0;row<16;row++){
         
            for (int i=0;i<8;i++){
               sendbyte(zi);
         }

//          for(row=0;row<16;row++){
//         
//                for (int i=0;i<8;i++){   
//                   //spi_transfer((zi));
//                }
               
            down++;
                digitalWrite(EN,1);
                row1(row);
                digitalWrite(STR,0);
                digitalWrite(STR,1);
                delayMicroseconds(0);
                digitalWrite(EN,0);
                delayMicroseconds(0);
      }
      
         for(row=0;row<16;row++){
         
            for (int i=0;i<8;i++){
                sendbyte2(zi);
         }
            down++;
                digitalWrite(EN,1);
                row1(row);
                digitalWrite(STR,0);
                digitalWrite(STR,1);
                delayMicroseconds(0);
                digitalWrite(EN,0);
                delayMicroseconds(0);
      }
      down = 0;
}

zjhyhky 发表于 2015-11-15 00:31:59


Z大侠:请问我用淘宝上常见的T1接口的16x32广告屏,但是不能正常显示,都是138和595控制的,不知道为什么不对?

610781862 发表于 2016-1-6 16:40:53

很好,哦,就是没接线图

徐三木 发表于 2016-7-17 14:13:07

set uo 中的 SPCR = (1<<SPE)|(1<<MSTR);是什么意思

kongmeng0814 发表于 2016-8-3 23:34:57

请问,怎么让 点阵显示时间呀!获取 DS1302输出的时间,然后显示!

sdwjy1998 发表于 2017-1-7 22:54:37

谢谢分享,学习了!

dongxp 发表于 2017-11-8 10:57:51

楼主你好我照你的刷进去怎么是反显示?字没显示,背景亮了,应该怎么改,能不能帮忙一下,谢谢
页: 1 2 3 4 [5]
查看完整版本: 【Z】Arduino也能驱动LED显示屏,LED业界标准Arduino驱动方案解析