// From http://www.electrodragon.com/w/Dot_Matrix_Display_Kit_w/MAX7219_IC,_PCB unsigned char i; unsigned char j; /*Port Definitions*/ int Max7219_pinCLK = 10; int Max7219_pinCS = 9; int Max7219_pinDIN = 8; unsigned char disp1[38][8]={ { 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C } ,//0 { 0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10 } ,//1 { 0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E } ,//2 { 0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0 } ,//3 { 0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8 } ,//4 { 0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0 } ,//5 { 0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0 } ,//6 { 0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8 } ,//7 { 0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E } ,//8 { 0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E } ,//9 { 0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22 } ,//A { 0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0 } ,//B { 0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0 } ,//C { 0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0 } ,//D { 0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C } ,//E { 0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40 } ,//F { 0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C } ,//G { 0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44 } ,//H { 0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C } ,//I { 0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30 } ,//J { 0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24 } ,//K { 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C } ,//L { 0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81 } ,//M { 0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0 } ,//N { 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C } ,//O { 0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20 } ,//P { 0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D } ,//Q { 0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21 } ,//R { 0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C } ,//S { 0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8 } ,//T { 0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C } ,//U { 0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18 } ,//V { 0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0 } ,//W { 0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41 } ,//X { 0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8 } ,//Y { 0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F } ,//Z }; void Write_Max7219_byte(unsigned char DATA) { unsigned char i; digitalWrite(Max7219_pinCS,LOW); for(i=8;i>=1;i--) { digitalWrite(Max7219_pinCLK,LOW); digitalWrite(Max7219_pinDIN,DATA&0x80);// Extracting a bit data DATA = DATA<<1; digitalWrite(Max7219_pinCLK,HIGH); } } void Write_Max7219(unsigned char address,unsigned char dat) { digitalWrite(Max7219_pinCS,LOW); Write_Max7219_byte(address); //address,code of LED Write_Max7219_byte(dat); //data,figure on LED digitalWrite(Max7219_pinCS,HIGH); } void Init_MAX7219(void) { Write_Max7219(0x09, 0x00); //decoding :BCD Write_Max7219(0x0a, 0x03); //brightness Write_Max7219(0x0b, 0x07); //scanlimit;8 LEDs Write_Max7219(0x0c, 0x01); //power-down mode:0,normal mode:1 Write_Max7219(0x0f, 0x00); //test display:1;EOT,display:0 } void setup() { pinMode(Max7219_pinCLK,OUTPUT); pinMode(Max7219_pinCS,OUTPUT); pinMode(Max7219_pinDIN,OUTPUT); delay(50); Init_MAX7219(); } void loop() { for(j=0;j<38;j++) { for(i=1;i<9;i++) Write_Max7219(i,disp1[j][i-1]); delay(500); } }