Advertisement
TolentinoCotesta

7 segment

May 31st, 2017
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. void ShowNumber(byte Number){
  2.     //  La maschera  definisce quale segmento accendere/spegnere per ogni cifra richiesta (rif. datasheet display 7 segmenti)
  3.     //  1 segmento acceso; 0 segmento spento
  4.     const byte sevenSeg_mask[]  = {
  5.     //  xx.gfedcba
  6.         0b00111111,  // segmenti attivi per visualizzare la cifra 0                    
  7.         0b00000110,  // segmenti attivi per visualizzare la cifra 1
  8.         0b01011011,  // segmenti attivi per visualizzare la cifra 2
  9.         0b01001111,  // segmenti attivi per visualizzare la cifra 3
  10.         0b01100110,  // segmenti attivi per visualizzare la cifra 4
  11.         0b01101101,  // segmenti attivi per visualizzare la cifra 5
  12.         0b01111101,  // segmenti attivi per visualizzare la cifra 6                    
  13.         0b00000111,  // segmenti attivi per visualizzare la cifra 7
  14.         0b01111111,  // segmenti attivi per visualizzare la cifra 8
  15.         0b01100111,  // segmenti attivi per visualizzare la cifra 9
  16.         0b01110110,  // segmenti attivi per visualizzare la lettera H
  17.         0b00111000,  // segmenti attivi per visualizzare la lettera L
  18.         0b01101101,  // segmenti attivi per visualizzare la lettera S
  19.         0b01110001,  // segmenti attivi per visualizzare la lettera F                    
  20.         0b01000000,  // segmenti attivi per visualizzare il trattino -
  21.         0b01110011,  // segmenti attivi per visualizzare la lettera P  
  22.         0b00000000   // segmenti tutti spenti                  
  23.     } ;    
  24.  
  25.     // Con questo secondo array invece definisco a quale pin di arduino è collegato il corrispondente segmento                
  26.     // Assegnazione uscite BCD        a   b  c  d  e  f  g     (.)
  27.     const byte sevenSeg_pinout[]  = {10, 9, 8, 7, 6, 5, 4};
  28.     byte out_state = bcd_mask[Number];  
  29.     for(int pin=0; pin<=7; pin++) {
  30.         // Se il display è ad anodo comune, per accendere il segmento è necessario che l'uscita sia LOW
  31.         // Sarà quindi sufficiente negare il risultato di bitRead -> digitalWrite(bcd_pinout[pin], !bitRead(out_state, pin));  
  32.         digitalWrite(bcd_pinout[pin], bitRead(out_state, pin));    
  33.     }
  34.    
  35. }
  36.  
  37. ShowNumber(0);      // Visualizzo il numero 0
  38. ShowNumber(1);      // Visualizzo il numero 1
  39. ShowNumber(10);     // Visualizzo la lettera H
  40. ShowNumber(16);     // Tutti i segmenti spenti
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement