RGB 8*8 By Oey

Dependents:   B17_ClockGame

Revision:
0:c01d67879eb2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/my8x8RGB.cpp	Mon Dec 07 11:24:40 2015 +0000
@@ -0,0 +1,160 @@
+#include "mbed.h"
+#include "my8x8RGB.h"
+/**************Define*************************/
+DigitalOut RGB_RST(A2);
+DigitalOut RGB_LAT(A1);
+DigitalOut RGB_SB(A0);
+
+/*DigitalIn nn0(D7);
+DigitalIn nn1(D2);
+DigitalIn nn2(D6);*/
+SPI RGB_SPI(PB_15,PB_14,PB_13);
+BusOut RGB_CP(D8,D9,D10,D11,D12,D13,D3,D4);
+uint8_t RGBi= 0,RGBj= 0,RGBk= 0;
+uint8_t RedWB=55,GreenWB=0,BlueWB=60; // percent | R,G,B calibrate change it if some color brighter than other
+uint8_t display[8][8][3]= {0};
+/*******************************************/
+
+void INITRGB(char in[3])
+{
+    int wd;
+    RGB_RST =0;
+    RGB_RST =1;
+    RGB_SPI.frequency(20000000);
+    RGB_SPI.format(8,1);
+    RGB_LAT = 0;
+    RGB_SB  =0;
+    int l=0;
+
+    for (int i = 0; i<8; i++) { // Whitebalance......**important
+        for (int j = 0; j<3; j++) {
+            for (int k = 0; k<6; k++) {
+                wd+=((in[j]<<k)&0b00100000)?1:0;
+          //      wd<<1;
+                l++;
+                if(l>=7) {
+                    RGB_SPI.write(255);
+                    l=0;
+                }
+            }
+            //RGB_SPI.write(255);
+        }
+    }
+
+    RGB_LAT = 1;
+    RGB_LAT = 0;
+
+    RGB_SPI.format(8,0);
+}
+
+void displayRGB()
+{
+
+    RGB_SB  =1;
+    for( RGBi=0; RGBi<8; RGBi++) {
+        for( RGBk=0; RGBk<8; RGBk++) {
+            for( RGBj=0; RGBj<3; RGBj++) {
+                RGB_SPI.write(display[RGBi][RGBk][RGBj]);
+            }
+
+        }
+        RGB_CP = 0;
+        wait_us(15);
+        RGB_LAT = 1;
+        RGB_LAT = 0;
+
+        RGB_CP = (0x01<<RGBi);
+
+    }
+}
+
+void screen_color(uint8_t R,uint8_t G,uint8_t B)
+{
+
+    for(uint8_t Colum=0; Colum<8; Colum++) {
+        for(uint8_t Row=0; Row<8; Row++) {
+            display[Colum][Row][2]=R*RedWB/100;
+            display[Colum][Row][1]=G;
+            display[Colum][Row][0]=B*BlueWB/100;
+        }
+    }
+
+}
+void screen_off()
+{
+
+    for(uint8_t Colum=0; Colum<8; Colum++) {
+        for(uint8_t Row=0; Row<8; Row++) {
+            display[Colum][Row][2]=0;
+            display[Colum][Row][1]=0;
+            display[Colum][Row][0]=0;
+        }
+    }
+    displayRGB();
+}
+
+
+void RGB_led(uint8_t Colum,uint8_t Row,char color,uint8_t brightness)
+{
+    uint8_t c;
+    switch (color) {
+        case 'R':
+            c=2;
+            break;
+        case 'G':
+            c=1;
+            break;
+        case 'B':
+            c=0;
+            break;
+    }
+    display[Colum][Row][c]=brightness;
+}
+
+
+void rgb_point(uint8_t Colum,uint8_t Row,uint8_t R,uint8_t G,uint8_t B)
+{
+    display[Colum][Row][2]=R*RedWB/100;
+    display[Colum][Row][1]=G;
+    display[Colum][Row][0]=B*BlueWB/100;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+