Advertisement
gabbyshimoni

7seg with shift register

Dec 18th, 2018
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. #define dataPin  4  // wire to 74HC595 pin 14
  2. #define latchPin  7 // wire to 74HC595 pin 12
  3. #define clockPin  8 // wire to 74HC595 pin 11
  4.  
  5. const char common = 'c';    // common cathode
  6.  
  7. void setup() {
  8.   // initialize I/O pins
  9.   pinMode(dataPin, OUTPUT);
  10.   pinMode(latchPin, OUTPUT);
  11.   pinMode(clockPin, OUTPUT);
  12. }
  13.  
  14. void loop() {
  15.   // generate characters to display for hexidecimal numbers 0 to F
  16.   for (int i = 0; i <= 15; i++) {
  17.     byte bits = myfnNumToBits(i) ;
  18.     digitalWrite(latchPin, LOW);  // prepare shift register for data
  19.     shiftOut(dataPin, clockPin, LSBFIRST, bits); // send data
  20.     digitalWrite(latchPin, HIGH); // update display
  21.     delay(500);                 // pause for 1/2 second
  22.   }
  23. }
  24.  
  25. //*****************************************************************************//
  26. // convert decimal number to segments to turn ON. The function get a decimal number
  27. // and return a byte to send to shift register
  28. //*****************************************************************************//
  29. byte myfnNumToBits(int someNumber) {
  30.   switch (someNumber) {
  31.     case 0:
  32.       return B11111100;
  33.       break;
  34.     case 1:
  35.       return B01100000;
  36.       break;
  37.     case 2:
  38.       return B11011010;
  39.       break;
  40.     case 3:
  41.       return B11110010;
  42.       break;
  43.     case 4:
  44.       return B01100110;
  45.       break;
  46.     case 5:
  47.       return B10110110;
  48.       break;
  49.     case 6:
  50.       return B10111110;
  51.       break;
  52.     case 7:
  53.       return B11100000;
  54.       break;
  55.     case 8:
  56.       return B11111110;
  57.       break;
  58.     case 9:
  59.       return B11110110;
  60.       break;
  61.     case 10:
  62.       return B11101110; // Hexidecimal A
  63.       break;
  64.     case 11:
  65.       return B00111110; // Hexidecimal B
  66.       break;
  67.     case 12:
  68.       return B10011100; // Hexidecimal C or use for Centigrade
  69.       break;
  70.     case 13:
  71.       return B01111010; // Hexidecimal D
  72.       break;
  73.     case 14:
  74.       return B10011110; // Hexidecimal E
  75.       break;
  76.     case 15:
  77.       return B10001110; // Hexidecimal F or use for Fahrenheit
  78.       break;
  79.     default:
  80.       return B10010010; // Error condition, displays three vertical bars
  81.       break;
  82.   }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement