Hallo Foren-Gemeinde,
ich habe ein kleines (großes) Problem bei meinem aktuellen Projekt...
Mein Ziel ist es eine Laufschrift auf eine 5x7 Matrix darzustellen. Um 
mich dem Problem Schritt für Schritt zu nähern habe ich begonnen 
einzelne LED ´s zu selektieren, danach Buchstaben mittels Font 
darzustellen und als nächstes wollte ich eine Laufschrift darstellen. 
Dies ist mir auch mittels dem nachfolgenden Code gelungen, allerdings 
nicht ganz zufriedenstellend.
Warum? Ich versuche eine Spalte zwischen den einzelnen Zeichen leer 
zulassen aber dies will mir partout nicht gelingen. Ich sitze seit 3 
Tagen an diesem Problem und mittlerweile bin ich ratlos. Vielleicht kann 
sich jemand dem Code bzw. dem Problem mal annehmen. Vielleicht hat der 
ein oder andere das Problem schon gelöst...
Bin für jede Hilfe dankbar...
Viele Grüße
Yves
Hier der Code:
 1 #define NUM_ROWS 7                   // Single sign number rows 
2 #define NUM_COLS 5          // Single sign number cols 
3 char  bitmask  =  0 b00000001 ;            //bitmask for row setup 
4   
 5 
 6 void  print_run_hor_charstring_5x7 (  char  text_string []) 
7 { 
8   for  ( int  s  =  0 ;  s  <  (( strlen ( text_string )) * NUM_ROWS * 4 ) - NUM_COLS ;  s ++ ) 
 9         {   
 10          // showtime for single characters 
 11          for  ( int  j  =  0 ;  j  <  20 ;  j ++ ) 
 12          { 
 13       // for every col c...                            
 14           for ( int  c  =  0 ;  c  <  NUM_COLS ;  c ++ )                
 15           { 
 16                 col_com74hc595_setBit (  c  );                     
 17 
 18               // for every row r... 
 19               for ( int  r  =  0 ;  r  <  NUM_ROWS ;  r ++ )            
 20               { 
 21                       
 22               // check which row from which character 
 23               if (( font5x7 [ text_string [( c + ( s / NUM_COLS )) / NUM_COLS ] - ASCI_OFFSET ][( c + ( s / NUM_COLS )) % NUM_COLS ]  >>  r )  &  bitmask )                
 24       
 25             row_com74hc595_setBit (  r  );           
 26                } 
 27 
 28               // switch off the rows 
 29             for ( int  r  =  0 ;  r  <  NUM_ROWS ;  r ++ )            
 30               { 
 31           row_com74hc595_unsetBit (  r  );     
 32               } 
 33 
 34               // switch off cols 
 35               col_com74hc595_unsetBit (  c  );    
 36     
 37 
 38           }  // END for(int c = 0; c < NUM_COLS; c++ 
 39       
 40     }  //END for (int j = 0; j < 20; j++) 
 41 
 42   }  // END for (int i = 0; i < strlen(string); i++) 
 43 
 44 }  // END void print_textstring_5x7( char string[]) 
Der Aufruf würde dann so aussehen...
 1 print_run_hor_charstring_5x7 ( "mikrocontroller.net" ) 
Der font sieht folgendermaßen aus: 1 #ifndef _font5x7_H_ 
2 #define _font5x7_H_ 
3 
 4 #define ASCI_OFFSET 32  
5 
 6 const  char  font5x7 [][ 5 ] =    {                     
7                 { 0x00 , 0x00 , 0x00 , 0x00 , 0x00 },    //   0x20 32 
 8               { 0x00 , 0x00 , 0x6f , 0x00 , 0x00 },    // ! 0x21 33 
 9               { 0x00 , 0x07 , 0x00 , 0x07 , 0x00 },    // " 0x22 34 
 10               { 0x14 , 0x7f , 0x14 , 0x7f , 0x14 },    // # 0x23 35 
 11               { 0x00 , 0x07 , 0x04 , 0x1e , 0x00 },    // $ 0x24 36 
 12               { 0x23 , 0x13 , 0x08 , 0x64 , 0x62 },    // % 0x25 37 
 13               { 0x36 , 0x49 , 0x56 , 0x20 , 0x50 },    // & 0x26 38 
 14               { 0x00 , 0x00 , 0x07 , 0x00 , 0x00 },    // ' 0x27 39 
 15               { 0x00 , 0x1c , 0x22 , 0x41 , 0x00 },    // ( 0x28 40 
 16               { 0x00 , 0x41 , 0x22 , 0x1c , 0x00 },    // ) 0x29 41 
 17               { 0x14 , 0x08 , 0x3e , 0x08 , 0x14 },    // * 0x2a 42 
 18               { 0x08 , 0x08 , 0x3e , 0x08 , 0x08 },    // + 0x2b 43 
 19               { 0x00 , 0x50 , 0x30 , 0x00 , 0x00 },    // , 0x2c 44 
 20               { 0x08 , 0x08 , 0x08 , 0x08 , 0x08 },    // - 0x2d 45 
 21               { 0x00 , 0x60 , 0x60 , 0x00 , 0x00 },    // . 0x2e 46 
 22               { 0x20 , 0x10 , 0x08 , 0x04 , 0x02 },    // / 0x2f 47 
 23               { 0x3e , 0x51 , 0x49 , 0x45 , 0x3e },    // 0 0x30 48 
 24               { 0x00 , 0x42 , 0x7f , 0x40 , 0x00 },    // 1 0x31 49 
 25               { 0x42 , 0x61 , 0x51 , 0x49 , 0x46 },    // 2 0x32 50 
 26               { 0x21 , 0x41 , 0x45 , 0x4b , 0x31 },    // 3 0x33 51 
 27               { 0x18 , 0x14 , 0x12 , 0x7f , 0x10 },    // 4 0x34 52 
 28               { 0x27 , 0x45 , 0x45 , 0x45 , 0x39 },    // 5 0x35 53 
 29               { 0x3c , 0x4a , 0x49 , 0x49 , 0x30 },    // 6 0x36 54 
 30               { 0x01 , 0x71 , 0x09 , 0x05 , 0x03 },    // 7 0x37 55 
 31               { 0x36 , 0x49 , 0x49 , 0x49 , 0x36 },    // 8 0x38 56 
 32               { 0x06 , 0x49 , 0x49 , 0x29 , 0x1e },    // 9 0x39 57 
 33               { 0x00 , 0x36 , 0x36 , 0x00 , 0x00 },    // : 0x3a 58 
 34               { 0x00 , 0x56 , 0x36 , 0x00 , 0x00 },    // ; 0x3b 59 
 35               { 0x08 , 0x14 , 0x22 , 0x41 , 0x00 },    // < 0x3c 60 
 36               { 0x14 , 0x14 , 0x14 , 0x14 , 0x14 },    // = 0x3d 61 
 37               { 0x00 , 0x41 , 0x22 , 0x14 , 0x08 },    // > 0x3e 62 
 38               { 0x02 , 0x01 , 0x51 , 0x09 , 0x06 },    // ? 0x3f 63 
 39               { 0x3e , 0x41 , 0x5d , 0x49 , 0x4e },    // @ 0x40 64 
 40               { 0x7e , 0x09 , 0x09 , 0x09 , 0x7e },    // A 0x41 65 
 41               { 0x7f , 0x49 , 0x49 , 0x49 , 0x36 },    // B 0x42 66 
 42               { 0x3e , 0x41 , 0x41 , 0x41 , 0x22 },    // C 0x43 67 
 43               { 0x7f , 0x41 , 0x41 , 0x41 , 0x3e },    // D 0x44 68 
 44               { 0x7f , 0x49 , 0x49 , 0x49 , 0x41 },    // E 0x45 69 
 45               { 0x7f , 0x09 , 0x09 , 0x09 , 0x01 },    // F 0x46 70 
 46               { 0x3e , 0x41 , 0x49 , 0x49 , 0x7a },    // G 0x47 71 
 47               { 0x7f , 0x08 , 0x08 , 0x08 , 0x7f },    // H 0x48 72 
 48               { 0x00 , 0x41 , 0x7f , 0x41 , 0x00 },    // I 0x49 73 
 49               { 0x20 , 0x40 , 0x41 , 0x3f , 0x01 },    // J 0x4a 74 
 50               { 0x7f , 0x08 , 0x14 , 0x22 , 0x41 },    // K 0x4b 75 
 51               { 0x7f , 0x40 , 0x40 , 0x40 , 0x40 },    // L 0x4c 76 
 52               { 0x7f , 0x02 , 0x0c , 0x02 , 0x7f },    // M 0x4d 77 
 53               { 0x7f , 0x04 , 0x08 , 0x10 , 0x7f },    // N 0x4e 78 
 54               { 0x3e , 0x41 , 0x41 , 0x41 , 0x3e },    // O 0x4f 79 
 55               { 0x7f , 0x09 , 0x09 , 0x09 , 0x06 },    // P 0x50 80 
 56               { 0x3e , 0x41 , 0x51 , 0x21 , 0x5e },    // Q 0x51 81 
 57               { 0x7f , 0x09 , 0x19 , 0x29 , 0x46 },    // R 0x52 82 
 58               { 0x46 , 0x49 , 0x49 , 0x49 , 0x31 },    // S 0x53 83 
 59               { 0x01 , 0x01 , 0x7f , 0x01 , 0x01 },    // T 0x54 84 
 60               { 0x3f , 0x40 , 0x40 , 0x40 , 0x3f },    // U 0x55 85 
 61               { 0x0f , 0x30 , 0x40 , 0x30 , 0x0f },    // V 0x56 86 
 62               { 0x3f , 0x40 , 0x30 , 0x40 , 0x3f },    // W 0x57 87 
 63               { 0x63 , 0x14 , 0x08 , 0x14 , 0x63 },    // X 0x58 88 
 64               { 0x07 , 0x08 , 0x70 , 0x08 , 0x07 },    // Y 0x59 89 
 65               { 0x61 , 0x51 , 0x49 , 0x45 , 0x43 },    // Z 0x5a 90 
 66               { 0x3c , 0x4a , 0x49 , 0x29 , 0x1e },    // [ 0x5b 91 
 67               { 0x02 , 0x04 , 0x08 , 0x10 , 0x20 },    // \ 0x5c 92 
 68               { 0x00 , 0x41 , 0x7f , 0x00 , 0x00 },    // ] 0x5d 93 
 69               { 0x04 , 0x02 , 0x01 , 0x02 , 0x04 },    // ^ 0x5e 94 
 70               { 0x40 , 0x40 , 0x40 , 0x40 , 0x40 },    // _ 0x5f 95 
 71               { 0x00 , 0x00 , 0x03 , 0x04 , 0x00 },    // ` 0x60 96 
 72               { 0x20 , 0x54 , 0x54 , 0x54 , 0x78 },    // a 0x61 97 
 73               { 0x7f , 0x48 , 0x44 , 0x44 , 0x38 },    // b 0x62 98 
 74               { 0x38 , 0x44 , 0x44 , 0x44 , 0x20 },    // c 0x63 99 
 75               { 0x38 , 0x44 , 0x44 , 0x48 , 0x7f },    // d 0x64 100 
 76               { 0x38 , 0x54 , 0x54 , 0x54 , 0x18 },    // e 0x65 101 
 77               { 0x08 , 0x7e , 0x09 , 0x01 , 0x02 },    // f 0x66 102 
 78               { 0x0c , 0x52 , 0x52 , 0x52 , 0x3e },    // g 0x67 103 
 79               { 0x7f , 0x08 , 0x04 , 0x04 , 0x78 },    // h 0x68 104 
 80               { 0x00 , 0x44 , 0x7d , 0x40 , 0x00 },    // i 0x69 105 
 81               { 0x20 , 0x40 , 0x44 , 0x3d , 0x00 },    // j 0x6a 106 
 82               { 0x00 , 0x7f , 0x10 , 0x28 , 0x44 },    // k 0x6b 107 
 83               { 0x00 , 0x41 , 0x7f , 0x40 , 0x00 },    // l 0x6c 108 
 84               { 0x7c , 0x04 , 0x18 , 0x04 , 0x78 },    // m 0x6d 109 
 85               { 0x7c , 0x08 , 0x04 , 0x04 , 0x78 },    // n 0x6e 110 
 86               { 0x38 , 0x44 , 0x44 , 0x44 , 0x38 },    // o 0x6f 111 
 87               { 0x7c , 0x14 , 0x14 , 0x14 , 0x08 },    // p 0x70 112 
 88               { 0x08 , 0x14 , 0x14 , 0x18 , 0x7c },    // q 0x71 113 
 89               { 0x7c , 0x08 , 0x04 , 0x04 , 0x08 },    // r 0x72 114 
 90               { 0x48 , 0x54 , 0x54 , 0x54 , 0x20 },    // s 0x73 115 
 91               { 0x04 , 0x3f , 0x44 , 0x40 , 0x20 },    // t 0x74 116 
 92               { 0x3c , 0x40 , 0x40 , 0x20 , 0x7c },    // u 0x75 117 
 93               { 0x1c , 0x20 , 0x40 , 0x20 , 0x1c },    // v 0x76 118 
 94               { 0x3c , 0x40 , 0x30 , 0x40 , 0x3c },    // w 0x77 119 
 95               { 0x44 , 0x28 , 0x10 , 0x28 , 0x44 },    // x 0x78 120 
 96               { 0x0c , 0x50 , 0x50 , 0x50 , 0x3c },    // y 0x79 121 
 97               { 0x44 , 0x64 , 0x54 , 0x4c , 0x44 },    // z 0x7a 122 
 98               { 0x00 , 0x08 , 0x36 , 0x41 , 0x41 },    // { 0x7b 123 
 99               { 0x00 , 0x00 , 0x7f , 0x00 , 0x00 },    // | 0x7c 124 
 100               { 0x41 , 0x41 , 0x36 , 0x08 , 0x00 },    // } 0x7d 125 
 101               { 0x04 , 0x02 , 0x04 , 0x08 , 0x04 },    // ~ 0x7e 126 
 102               }; 
 103 
 104 #endif  /* _font5x7_ */ 
 
   
  
  
 
      
      
  
  
    
      von
      
        Georg  (Gast)
      
      
       
    
    
      31.01.2015 17:41  
    
    
     
  
   
  
  
      Hallo,
warum änderst du nicht einfach deinen Code von 5x7 auf 6x7?
Georg 
   
  
  
 
      
      
  
  
  
   
  
  
      Georg schrieb:  
> Hallo, 
> 
> warum änderst du nicht einfach deinen Code von 5x7 auf 6x7? 
> 
> Georg 
Hallo Georg,
Vielen Dank für deine Hilfe!
Manchmal denkt man halt viel zu kompliziert...
Komme gerade aus dem Hobbykeller und siehe da, es funktionierte auf 
Anhieb!
Ich trink heut einen auf dich!
Nochmals danke
Viele Grüße Yves 
   
  
  
 
    
    
         
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.