
This program is for LB circuit(LED Martix 8 x 8) x 3 with mbed.
main.cpp
- Committer:
- y_notsu
- Date:
- 2011-09-08
- Revision:
- 0:440d08e0dbbc
File content as of revision 0:440d08e0dbbc:
#include "mbed.h" DigitalOut myled(LED1); DigitalOut myled2(LED2); SPI spi(p5, p6, p7); // mosi, miso, sclk DigitalOut LEDRSTN(p30); //for Reset(Slot1) DigitalOut LEDLATCH(p29); //for LATCH(Slot1) DigitalOut LED2RSTN(p21); //for Reset(Slot2) DigitalOut LED2LATCH(p22); //for LATCH(Slot2) DigitalOut LED3RSTN(p23); //for Reset(Slot3) DigitalOut LED3LATCH(p24); //for LATCH(Slot3) Ticker flipper; //==================== // Global : LED Array //==================== // for each element // bit1 : Green // bit0 : Red int gLED_ARRAY[8][8]; int gLED2_ARRAY[8][8]; int gLED3_ARRAY[8][8]; void Init_LED_Array(void) { // Setup the spi for 8 bit data, high steady state clock, // second edge capture, with a 1MHz clock rate spi.format(8,3); spi.frequency(100000); int x=0; int y=0; LEDRSTN = 0; LED2RSTN = 0; LED3RSTN = 0; wait(0.1); LEDRSTN = 1; LED2RSTN = 1; LED3RSTN = 1; // Clear LED Array Buffer for (y = 0; y < 8; y++) { for (x = 0; x < 8; x++) { gLED_ARRAY[y][x] = 0; gLED2_ARRAY[y][x] = 0; gLED3_ARRAY[y][x] = 0; } } } //================== // Scan LED Array //================== // Caller of TIMER16_0_IRQHandler() void Scan_LED_Array(void) { static int x = 0,x2=0,x3=0; int y; int row,row2,row3; int col_LED_ARRAY_RED,col_LED_ARRAY_RED2,col_LED_ARRAY_RED3; int col_LED_ARRAY_GRN,col_LED_ARRAY_GRN2,col_LED_ARRAY_GRN3; row = 1 << x; row2 = 1 <<x2; row3 = 1 <<x3; // col_LED_ARRAY_RED = 0; col_LED_ARRAY_RED2 = 0; col_LED_ARRAY_RED3 = 0; for (y = 0; y < 8; y++) { col_LED_ARRAY_RED = col_LED_ARRAY_RED | ((gLED_ARRAY[y][x] & 0x01) << (7 - y)); col_LED_ARRAY_RED2 = col_LED_ARRAY_RED2 | ((gLED2_ARRAY[y][x2] & 0x01) << (7 - y)); col_LED_ARRAY_RED3 = col_LED_ARRAY_RED3 | ((gLED3_ARRAY[y][x3] & 0x01) << (7 - y)); } // col_LED_ARRAY_GRN = 0; col_LED_ARRAY_GRN2 = 0; col_LED_ARRAY_GRN3 = 0; for (y = 0; y < 8; y++) { col_LED_ARRAY_GRN = col_LED_ARRAY_GRN | (((gLED_ARRAY[y][x] & 0x02) >> 1) << (7 - y)); col_LED_ARRAY_GRN2 = col_LED_ARRAY_GRN2 | (((gLED2_ARRAY[y][x] & 0x02) >> 1) << (7 - y)); col_LED_ARRAY_GRN3 = col_LED_ARRAY_GRN3 | (((gLED3_ARRAY[y][x] & 0x02) >> 1) << (7 - y)); } // spi.write(row); spi.write(col_LED_ARRAY_RED); spi.write(col_LED_ARRAY_GRN); // LEDLATCH=1; // high LEDLATCH=0; // low (latch) // spi.write(row2); spi.write(col_LED_ARRAY_RED2); spi.write(col_LED_ARRAY_GRN2); // LED2LATCH=1; LED2LATCH=0; // spi.write(row3); spi.write(col_LED_ARRAY_RED3); spi.write(col_LED_ARRAY_GRN3); // LED3LATCH=1; LED3LATCH=0; x = (x + 1) & 0x07; x2 = (x2+1) & 0x07; x3 = (x3+1) & 0x07; } //=================== // Set LED Array //=================== void Set_LED_Array(int x, int y, int color) { gLED_ARRAY[y][x] = color; } void Set_LED2_Array(int x, int y, int color) { gLED2_ARRAY[y][x] = color; } void Set_LED3_Array(int x, int y, int color) { gLED3_ARRAY[y][x] = color; } //Interrupt Handler void scanLED(void) { Scan_LED_Array(); } int main() { Init_LED_Array(); flipper.attach(&scanLED,0.001); while(1) { myled = 1; myled2=0; Set_LED_Array(5,0,0x01); Set_LED_Array(2,1,0x01); Set_LED_Array(3,1,0x01); Set_LED_Array(4,1,0x01); Set_LED_Array(5,1,0x01); Set_LED_Array(6,1,0x01); Set_LED_Array(7,1,0x01); Set_LED_Array(5,2,0x01); Set_LED_Array(3,3,0x01); Set_LED_Array(4,3,0x01); Set_LED_Array(5,3,0x01); Set_LED_Array(6,3,0x01); Set_LED_Array(7,3,0x01); Set_LED_Array(5,4,0x01); Set_LED_Array(2,5,0x01); Set_LED_Array(3,5,0x01); Set_LED_Array(4,5,0x01); Set_LED_Array(5,5,0x01); Set_LED_Array(1,6,0x01); Set_LED_Array(5,6,0x01); Set_LED_Array(6,6,0x01); Set_LED_Array(2,7,0x01); Set_LED_Array(3,7,0x01); Set_LED_Array(4,7,0x01); Set_LED_Array(7,7,0x01); Set_LED2_Array(1,3,0x01); Set_LED2_Array(2,3,0x01); Set_LED2_Array(3,3,0x01); Set_LED2_Array(4,3,0x01); Set_LED2_Array(5,3,0x01); Set_LED2_Array(6,4,0x01); Set_LED2_Array(6,5,0x01); Set_LED2_Array(6,6,0x01); Set_LED2_Array(3,7,0x01); Set_LED2_Array(4,7,0x01); Set_LED2_Array(5,7,0x01); Set_LED3_Array(5,0,0x01); Set_LED3_Array(4,1,0x01); Set_LED3_Array(3,2,0x01); Set_LED3_Array(2,3,0x01); Set_LED3_Array(2,4,0x01); Set_LED3_Array(3,5,0x01); Set_LED3_Array(4,6,0x01); Set_LED3_Array(5,7,0x01); wait(1.5); myled = 0; myled2=1; Set_LED_Array(5,0,0x02); Set_LED_Array(2,1,0x02); Set_LED_Array(3,1,0x02); Set_LED_Array(4,1,0x02); Set_LED_Array(5,1,0x02); Set_LED_Array(6,1,0x02); Set_LED_Array(7,1,0x02); Set_LED_Array(5,2,0x02); Set_LED_Array(3,3,0x02); Set_LED_Array(4,3,0x02); Set_LED_Array(5,3,0x02); Set_LED_Array(6,3,0x02); Set_LED_Array(7,3,0x02); Set_LED_Array(5,4,0x02); Set_LED_Array(2,5,0x02); Set_LED_Array(3,5,0x02); Set_LED_Array(4,5,0x02); Set_LED_Array(5,5,0x02); Set_LED_Array(1,6,0x02); Set_LED_Array(5,6,0x02); Set_LED_Array(6,6,0x02); Set_LED_Array(2,7,0x02); Set_LED_Array(3,7,0x02); Set_LED_Array(4,7,0x02); Set_LED_Array(7,7,0x02); Set_LED2_Array(1,3,0x02); Set_LED2_Array(2,3,0x02); Set_LED2_Array(3,3,0x02); Set_LED2_Array(4,3,0x02); Set_LED2_Array(5,3,0x02); Set_LED2_Array(6,4,0x02); Set_LED2_Array(6,5,0x02); Set_LED2_Array(6,6,0x02); Set_LED2_Array(3,7,0x02); Set_LED2_Array(4,7,0x02); Set_LED2_Array(5,7,0x02); Set_LED3_Array(5,0,0x02); Set_LED3_Array(4,1,0x02); Set_LED3_Array(3,2,0x02); Set_LED3_Array(2,3,0x02); Set_LED3_Array(2,4,0x02); Set_LED3_Array(3,5,0x02); Set_LED3_Array(4,6,0x02); Set_LED3_Array(5,7,0x02); wait(1.5); myled = 1; myled2=1; Set_LED_Array(5,0,0x03); Set_LED_Array(2,1,0x03); Set_LED_Array(3,1,0x03); Set_LED_Array(4,1,0x03); Set_LED_Array(5,1,0x03); Set_LED_Array(6,1,0x03); Set_LED_Array(7,1,0x03); Set_LED_Array(5,2,0x03); Set_LED_Array(3,3,0x03); Set_LED_Array(4,3,0x03); Set_LED_Array(5,3,0x03); Set_LED_Array(6,3,0x03); Set_LED_Array(7,3,0x03); Set_LED_Array(5,4,0x03); Set_LED_Array(2,5,0x03); Set_LED_Array(3,5,0x03); Set_LED_Array(4,5,0x03); Set_LED_Array(5,5,0x03); Set_LED_Array(1,6,0x03); Set_LED_Array(5,6,0x03); Set_LED_Array(6,6,0x03); Set_LED_Array(2,7,0x03); Set_LED_Array(3,7,0x03); Set_LED_Array(4,7,0x03); Set_LED_Array(7,7,0x03); Set_LED2_Array(1,3,0x03); Set_LED2_Array(2,3,0x03); Set_LED2_Array(3,3,0x03); Set_LED2_Array(4,3,0x03); Set_LED2_Array(5,3,0x03); Set_LED2_Array(6,4,0x03); Set_LED2_Array(6,5,0x03); Set_LED2_Array(6,6,0x03); Set_LED2_Array(3,7,0x03); Set_LED2_Array(4,7,0x03); Set_LED2_Array(5,7,0x03); Set_LED3_Array(5,0,0x03); Set_LED3_Array(4,1,0x03); Set_LED3_Array(3,2,0x03); Set_LED3_Array(2,3,0x03); Set_LED3_Array(2,4,0x03); Set_LED3_Array(3,5,0x03); Set_LED3_Array(4,6,0x03); Set_LED3_Array(5,7,0x03); wait(1.5); } }