本帖最后由 windseeker 于 2013-7-16 16:50 编辑
看了论坛一个大哥的帖子后,我也尝试用2560驱动了一个08接口的64X32的点阵,打算做个时钟玩玩,但是现在发现点阵屏闪的非常 厉害,请各位大哥瞧瞧咋回事。
症状为,当只驱动部分点阵时就比较好,当驱动整个屏时就非常闪,因为2560的晶振时16m的,是不是这个晶振不够啊,能更换为更高频率的不。
如下代码:
- int g1 = 10;
- int g2 = 9;
- int lt = 7;
- int sk = 8;
- int pa=2;
- int pb=3;
- int pc=4;
- int pd=5;
- int en=13;
- int r1=12;
- int r2=11;
-
- unsigned char g[8][32]={
- {0xFF,0xFF,0xFF,0xFF,0xC0,0x03,0xDF,0xFB,0xDF,0xFB,0xC0,0x1B,0xFF,0xDB,0xFF,0xDB,
- 0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xC0,0x1B,0xDF,0xFB,},
- {0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x7F,0xEF,0x7F,0xEF,0x60,0x6F,0x6F,0x6C,0x6F,0x6D,
- 0x6F,0x6D,0x6F,0x6C,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,},
- {0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF7,0xFE,0xF7,0xFE,0xF0,0x06,0x3F,0xF6,0xBF,0xF6,
- 0xBF,0xF6,0x3F,0xF6,0xFF,0xF6,0xFF,0xF6,0xFF,0xF6,0xFF,0xF6,0xF0,0x06,0xF7,0xFE, },
- {0xFF,0xFF,0xFF,0xFF,0xC0,0x03,0xDF,0xFB,0xDF,0xFB,0xD8,0x03,0xDB,0xFF,0xDB,0xFF,
- 0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xD8,0x03,0xDF,0xFB, },
- {0xDF,0xFB,0xDC,0x03,0xDD,0xFF,0xDD,0xFF,0xDD,0xFF,0xDD,0xFF,0xDD,0xFF,0xDD,0xFF,
- 0xDD,0xFF,0xDD,0xFF,0xDC,0x03,0xDF,0xFB,0xDF,0xFB,0xC0,0x03,0xFF,0xFF,0xFF,0xFF,},
- {0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6F,0x6C,0x6F,0x6D,
- 0x6F,0x6D,0x6F,0x6C,0x60,0x6F,0x7F,0xEF,0x7F,0xEF,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,},
- {0xF7,0xFE,0xF0,0x06,0xFF,0xF6,0xFF,0xF6,0xFF,0xF6,0xFF,0xF6,0x3F,0xF6,0xBF,0xF6,
- 0xBF,0xF6,0x3F,0xF6,0xF0,0x06,0xF7,0xFE,0xF7,0xFE,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,},
- {0xDF,0xFB,0xC0,0x1B,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,0xFF,0xDB,
- 0xFF,0xDB,0xFF,0xDB,0xC0,0x1B,0xDF,0xFB,0xDF,0xFB,0xC0,0x03,0xFF,0xFF,0xFF,0xFF,},
- };
-
- unsigned char num[8][8]={
- {0xC7,0xBB,0xB3,0xAB,0x9B,0xBB,0xC7,0xFF,}, /* 1 */
- {0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xC7,0xFF,}, /* 2 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 3 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 4 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 5 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 6 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 7 */
- {0xFF,0xC3,0xDB,0xE7,0xDB,0xDB,0xE3,0xFF,}, /* 8 */
- };
-
-
- unsigned char b[][4]={
- { 0,0,0,0 } ,
- { 1,0,0,0 } ,
- { 0,1,0,0 } ,
- { 1,1,0,0 } ,
- { 0,0,1,0 } ,
- { 1,0,1,0 } ,
- { 0,1,1,0 } ,
- { 1,1,1,0 } ,
- { 0,0,0,1 } ,
- { 1,0,0,1 } ,
- { 0,1,0,1 } ,
- { 1,1,0,1 } ,
- { 0,0,1,1 } ,
- { 1,0,1,1 } ,
- { 0,1,1,1 } ,
- { 1,1,1,1 }
- };
-
- void setup ()
- {
- pinMode(r1,OUTPUT);
- pinMode(r2,OUTPUT);
- pinMode(g1,OUTPUT);
- pinMode(g2,OUTPUT);
- pinMode(lt,OUTPUT);
- pinMode(sk,OUTPUT);
- pinMode(pa,OUTPUT);
- pinMode(pb,OUTPUT);
- pinMode(pc,OUTPUT);
- pinMode(pd,OUTPUT);
- pinMode(en,OUTPUT);
- digitalWrite(en,HIGH);
- digitalWrite(g1,HIGH);
- digitalWrite(g2,HIGH);
- digitalWrite(r1,HIGH);
- digitalWrite(r2,HIGH);
- }
- void loop()
- {
- unsigned char a=0;
- for(a=0; a<16;a++)
- {
-
- shiftOut(g1,sk,MSBFIRST,g[0][a*2]);
- shiftOut(g1,sk,MSBFIRST,g[0][a*2+1]);
- shiftOut(g1,sk,MSBFIRST,g[1][a*2]);
- shiftOut(g1,sk,MSBFIRST,g[1][a*2+1]);
- shiftOut(g1,sk,MSBFIRST,g[2][a*2]);
- shiftOut(g1,sk,MSBFIRST,g[2][a*2+1]);
- shiftOut(g1,sk,MSBFIRST,g[3][a*2]);
- shiftOut(g1,sk,MSBFIRST,g[3][a*2+1]);
-
-
- digitalWrite(lt,HIGH);
-
- digitalWrite(pa,b[a][0]);
- digitalWrite(pb,b[a][1]);
- digitalWrite(pc,b[a][2]);
- digitalWrite(pd,b[a][3]);
-
- digitalWrite(lt,LOW);
-
- }
-
- for(a=0; a<16;a++)
- {
-
- shiftOut(g2,sk,MSBFIRST,g[4][a*2]);
- shiftOut(g2,sk,MSBFIRST,g[4][a*2+1]);
- shiftOut(g2,sk,MSBFIRST,g[5][a*2]);
- shiftOut(g2,sk,MSBFIRST,g[5][a*2+1]);
- shiftOut(g2,sk,MSBFIRST,g[6][a*2]);
- shiftOut(g2,sk,MSBFIRST,g[6][a*2+1]);
- shiftOut(g2,sk,MSBFIRST,g[7][a*2]);
- shiftOut(g2,sk,MSBFIRST,g[7][a*2+1]);
-
-
- digitalWrite(lt,HIGH);
-
- digitalWrite(pa,b[a][0]);
- digitalWrite(pb,b[a][1]);
- digitalWrite(pc,b[a][2]);
- digitalWrite(pd,b[a][3]);
-
- digitalWrite(lt,LOW);
-
- }
- }
复制代码 |