
cualquier cosa
Fork of 00_LAB_matrix8x8_SPI by
Diff: main.cpp
- Revision:
- 7:315c0b5f9425
- Parent:
- 5:377b23953ba1
diff -r 377b23953ba1 -r 315c0b5f9425 main.cpp --- a/main.cpp Thu Sep 06 14:22:35 2018 +0000 +++ b/main.cpp Fri Sep 07 12:59:13 2018 +0000 @@ -1,5 +1,6 @@ #include "mbed.h" + SPI deviceM(PB_5, PB_4, PB_3); DigitalOut ssel (PB_9); Serial command(USBTX,USBRX); @@ -9,37 +10,6 @@ #define FIG_L 0x03 #define FIG_T 0x04 #define FIG_S 0x05 - -//#define uint8_t unsigned char -//uint8_t vcol2[8]={0,0,0,0,0,0,0,0}; - -int enviarficha(int x,int y) -{ - int k=y; - - if(x==1) // cuadrado - { - return k; - } - else if (x==2) //linea - { - return k; - } - else if (x==3) //ele - { - return k; - } - else if (x==4) //te - { - return k; - } - else if (x==5) //ese - { - return k; - } - else - return 1; -} void sendSPI(uint8_t d1, uint8_t d2) { @@ -61,75 +31,62 @@ void cuadro(int x,int y) { - int j,r; - - if (x==1) - r=0xC0; - else if(x==2) - r=0x60; - else if(x==3) - r=0x30; - else if(x==4) - r=0x18; - else if(x==5) - r=0xC; - else if(x==6) - r=0x06; - else if(x==7) - r=0x03; - else if(x==8) - r=0x01; + int j; + int cu[8]={0xC0,0x60,0x30,0x18,0xc,0x6,0x3,0x1}; + switch(y) { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r); - sendSPI(0x0+(j+1),r); - wait_ms(200); - sendSPI(0x0+j,0x00); - sendSPI(0x0+(j+1),0x00); - wait_us(10); - } - sendSPI(0x07,r); - sendSPI(0x08,r); + case 1: case1: + for(j=0;j<=7;j++) + { + sendSPI(0x0+j,cu[x-1]); + sendSPI(0x0+(j+1),cu[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,cu[x-1]); + sendSPI(0x08,cu[x-1]); + break; + case 2: goto case1; + case 3: goto case1; + case 4: goto case1; } }; void linea(int x,int y) { - int j,r=y; + int j; int lin0[8]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1}; - int lin90[8]={0xe0,0x70,0x38,0x1c,0x56,0x6f,0x6f,0x6f}; + int lin90[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000111,0b00000111}; { - switch (r){ - case 1: for(j=0;j<=6;j++) + switch (y){ + case 1: case1: for(j=0;j<=6;j++) { - sendSPI(0x0+j,lin0[x]); - sendSPI(0x0+(j+1),lin0[x]); - sendSPI(0x0+(j+2),lin0[x]); + sendSPI(0x0+j,lin0[x-1]); + sendSPI(0x0+(j+1),lin0[x-1]); + sendSPI(0x0+(j+2),lin0[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); sendSPI(0x0+(j+2),0x00); wait_us(10); } - sendSPI(0x06,lin0[x]); - sendSPI(0x07,lin0[x]); - sendSPI(0x08,lin0[x]); + sendSPI(0x06,lin0[x-1]); + sendSPI(0x07,lin0[x-1]); + sendSPI(0x08,lin0[x-1]); break; - case 2: - for(j=0;j<=6;j++) + case 2: case2: for(j=0;j<=7;j++) { - sendSPI(0x0+j,lin90[x]); + sendSPI(0x0+j,lin90[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); wait_us(10); } - sendSPI(0x06,lin90[x]); - sendSPI(0x07,lin90[x]); - sendSPI(0x08,lin90[x]); + sendSPI(0x08,lin90[x-1]); break; - //case 3: ele(columna,grados); break; - //case 4: te(columna,grados); break; + case 3: goto case1; + case 4: goto case2; } } @@ -137,174 +94,195 @@ void ele(int x,int y) { - int j,r,r2; - if (x==1) - { - r=0xC0; - r2=0x80; - } - else if(x==2) - { - r=0x60; - r2=0x40; - } - else if(x==3) - { - r=0x30; - r2=0x20; - } - else if(x==4) - { - r=0x18; - r2=0x10; - } - else if(x==5) + int j; + int ele10[8]={0xc0,0x60,0x30,0x18,0xc,0x06,0x03,0x01}; + int ele20[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; + int ele190[8]={0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0x00,0x00}; + int ele290[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int ele1180[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int ele2180[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int ele1270[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int ele2270[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001}; + switch(y) { - r=0xC; - r2=0x08; - } - else if(x==6) - { - r=0x06; - r2=0x04; - } - else if(x==7) - { - r=0x03; - r2=0x02; - } - else if(x==8) - { - r=0x01; - r2=0x01; - } - { - for(j=0;j<=6;j++) + case 1: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele20[x-1]); + sendSPI(0x0+(j+1),ele20[x-1]); + sendSPI(0x0+(j+2),ele10[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,ele20[x-1]); + sendSPI(0x07,ele20[x-1]); + sendSPI(0x08,ele10[x-1]); + break; + case 2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele190[x-1]); + sendSPI(0x0+(j+1),ele290[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,ele190[x-1]); + sendSPI(0x08,ele290[x-1]); + break; + case 3: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele1180[x-1]); + sendSPI(0x0+(j+1),ele2180[x-1]); + sendSPI(0x0+(j+2),ele2180[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,ele1180[x-1]); + sendSPI(0x07,ele2180[x-1]); + sendSPI(0x08,ele2180[x-1]); + break; + case 4: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ele1270[x-1]); + sendSPI(0x0+(j+1),ele2270[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,ele1270[x-1]); + sendSPI(0x08,ele2270[x-1]); + break; + } +}; + +void te(int x,int y) +{ + int te10[8]={0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x01}; + int te20[8]={0xe0,0x70,0x38,0x1c,0xe,0x7,0x03,0x01}; + int te190[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001}; + int te290[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int te1180[8]={0b11100000,0b01110000,0b00111000,0b00011100,0b00001110,0b00000111,0b00000011,0b00000001}; + int te2180[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int te1270[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0b00000000}; + int te2270[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0b00000001}; + int j; + + switch(y) + { + case 1: + for(j=0;j<=7;j++) { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r2); - sendSPI(0x0+(j+2),r); + sendSPI(0x0+j,te10[x-1]); + sendSPI(0x0+(j+1),te20[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + wait_us(10); + } + sendSPI(0x07,te10[x-1]); + sendSPI(0x08,te20[x-1]); + break; + case 2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,te190[x-1]); + sendSPI(0x0+(j+1),te290[x-1]); + sendSPI(0x0+(j+2),te190[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); sendSPI(0x0+(j+2),0x00); wait_us(10); } - sendSPI(0x06,r2); - sendSPI(0x07,r2); - sendSPI(0x08,r); - } + sendSPI(0x06,te190[x-1]); + sendSPI(0x07,te290[x-1]); + sendSPI(0x08,te190[x-1]); + break; + case 3: + for(j=0;j<=7;j++) + { + sendSPI(0x0+j,te1180[x-1]); + sendSPI(0x0+(j+1),te2180[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x07,te1180[x-1]); + sendSPI(0x08,te2180[x-1]); + break; + case 4: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,te1270[x-1]); + sendSPI(0x0+(j+1),te2270[x-1]); + sendSPI(0x0+(j+2),te1270[x-1]); + wait_ms(200); + sendSPI(0x0+j,0x00); + sendSPI(0x0+(j+1),0x00); + sendSPI(0x0+(j+2),0x00); + wait_us(10); + } + sendSPI(0x06,te1270[x-1]); + sendSPI(0x07,te2270[x-1]); + sendSPI(0x08,te1270[x-1]); + break; + } }; -void te(int x,int y) +void ese(int x,int y) { - int j,r,r2; - - if (x==1) - { - r=0xE0; - r2=0x40; - } - else if(x==2) - { - r=0x70; - r2=0x20; - } - else if(x==3) - { - r=0x38; - r2=0x10; - } - else if(x==4) + int ese10[8]={0x60,0x30,0x18,0xc,0x6,0x3,0x1,0x0}; + int ese20[8]={0xc0,0x60,0x30,0x18,0xc,0x6,0x3,0x01}; + int ese190[8]={0b10000000,0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0x01}; + int ese290[8]={0b11000000,0b01100000,0b00110000,0b00011000,0b00001100,0b00000110,0b00000011,0x01}; + int ese390[8]={0b01000000,0b00100000,0b00010000,0b00001000,0b00000100,0b00000010,0b00000001,0x00}; + + int j; + switch(y) { - r=0x1C; - r2=0x8; - } - else if(x==5) - { - r=0xE; - r2=0x4; - } - else if(x==6) - { - r=0x7; - r2=0x2; - } - else if(x==7) - { - r=0x03; - r2=0x1; - } - else if(x==8) - r=0x01; - { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r); + case 1: case1: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ese10[x-1]); + sendSPI(0x0+(j+1),ese20[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); wait_us(10); - } - sendSPI(0x07,r2); - sendSPI(0x08,r); - } -}; - -void ese(int x,int y) -{ - int j,r,r2; - - if (x==1) - { - r=0xC0; - r2=0x60; - } - else if(x==2) - { - r=0x60; - r2=0x30; - } - else if(x==3) - { - r=0x30; - r2=0x18; - } - else if(x==4) - { - r=0x18; - r2=0xC; - } - else if(x==5) - { - r=0xC; - r2=0x6; - } - else if(x==6) - { - r=0x6; - r2=0x3; - } - else if(x==7) - { - r=0x03; - r2=0x1; - } - else if(x==8) - r=0x01; - { - for(j=0;j<=7;j++) - { - sendSPI(0x0+j,r2); - sendSPI(0x0+(j+1),r); + } + sendSPI(0x07,ese10[x-1]); + sendSPI(0x08,ese20[x-1]); + break; + case 2: case2: + for(j=0;j<=6;j++) + { + sendSPI(0x0+j,ese190[x-1]); + sendSPI(0x0+(j+1),ese290[x-1]); + sendSPI(0x0+(j+2),ese390[x-1]); wait_ms(200); sendSPI(0x0+j,0x00); sendSPI(0x0+(j+1),0x00); wait_us(10); - } - sendSPI(0x07,r2); - sendSPI(0x08,r); + } + sendSPI(0x06,ese190[x-1]); + sendSPI(0x07,ese290[x-1]); + sendSPI(0x08,ese390[x-1]); + break; + case 3: goto case1; + case 4: goto case2; } }; @@ -317,7 +295,7 @@ } }; -void dibujar(char type_fig,char grados, char columna) +void dibujar(int type_fig,int grados, int columna) { //borrar(); @@ -350,7 +328,7 @@ if(lee1==0x3c && lee2==0x3e) { - dibujar(tipo_fig,grados,ncolumna); + dibujar(tipo_fig,grados,ncolumna); } } } \ No newline at end of file