Advertisement
UnaClocker

ATTiny dual 7 Segment LED display w/ shift register

Sep 10th, 2011
3,128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. // Two digit, seven segment LED sketch. - cc - Brian Schulteis - UnaClocker
  2. // 8 pin multiplexed LED display
  3. // First 4 bits HIGH to trigger, Second 4 bits LOW to trigger
  4. // Using 74HC595 shift register
  5. // Intended for use with ATTiny85
  6.  
  7. int dataPin = 0;
  8. int clockPin = 1;
  9. int latchPin = 2;
  10. int temperatureADC = 3;
  11. int currentNumber = 0;
  12. long timeTemp = millis();
  13. byte segmentLight[15] = {
  14.   240, 113, 120, 116, 114, 184, 180, 178, 209, 216, 212, 210, 232, 228, 226};
  15. // 14 segments possible, 0 = all off
  16.  
  17.  
  18. void setup() {
  19.   pinMode(latchPin, OUTPUT);
  20.   pinMode(clockPin, OUTPUT);
  21.   pinMode(dataPin, OUTPUT);
  22.   pinMode(temperatureADC, INPUT);
  23. }
  24.  
  25. void showSegment(int segment) {
  26.   digitalWrite(latchPin, LOW);
  27.   shiftOut(dataPin, clockPin, MSBFIRST, segmentLight[segment]);
  28.   digitalWrite(latchPin, HIGH);
  29. }
  30.  
  31.  
  32. void displayRightDigit(int Right) {
  33.   switch (Right) {
  34.   case 0:
  35.     showSegment(8);
  36.     showSegment(9);
  37.     showSegment(10);
  38.     showSegment(12);
  39.     showSegment(13);
  40.     showSegment(14);
  41.     break;
  42.   case 1:
  43.     showSegment(10);
  44.     showSegment(13);
  45.     break;
  46.   case 2:
  47.     showSegment(9);
  48.     showSegment(10);
  49.     showSegment(11);
  50.     showSegment(12);
  51.     showSegment(14);
  52.     break;
  53.   case 3:
  54.     showSegment(9);
  55.     showSegment(10);
  56.     showSegment(11);
  57.     showSegment(13);
  58.     showSegment(14);
  59.     break;
  60.   case 4:
  61.     showSegment(8);
  62.     showSegment(10);
  63.     showSegment(11);
  64.     showSegment(13);
  65.     break;
  66.   case 5:
  67.     showSegment(8);
  68.     showSegment(9);
  69.     showSegment(11);
  70.     showSegment(13);
  71.     showSegment(14);
  72.     break;
  73.   case 6:
  74.     showSegment(8);
  75.     showSegment(9);
  76.     showSegment(11);
  77.     showSegment(12);
  78.     showSegment(13);
  79.     showSegment(14);
  80.     break;
  81.   case 7:
  82.     showSegment(9);
  83.     showSegment(10);
  84.     showSegment(13);
  85.     break;
  86.   case 8:
  87.     showSegment(8);
  88.     showSegment(9);
  89.     showSegment(10);
  90.     showSegment(11);
  91.     showSegment(12);
  92.     showSegment(13);
  93.     showSegment(14);
  94.     break;
  95.   case 9:
  96.     showSegment(8);
  97.     showSegment(9);
  98.     showSegment(10);
  99.     showSegment(11);
  100.     showSegment(13);
  101.     break;
  102.   }
  103. }
  104.  
  105. void displayLeftDigit(int Left) {
  106.   switch (Left) {
  107.   case 0:
  108.     showSegment(1);
  109.     showSegment(2);
  110.     showSegment(3);
  111.     showSegment(5);
  112.     showSegment(6);
  113.     showSegment(7);
  114.     break;
  115.   case 1:
  116.     showSegment(3);
  117.     showSegment(6);
  118.     break;
  119.   case 2:
  120.     showSegment(2);
  121.     showSegment(3);
  122.     showSegment(4);
  123.     showSegment(5);
  124.     showSegment(7);
  125.     break;
  126.   case 3:
  127.     showSegment(2);
  128.     showSegment(3);
  129.     showSegment(4);
  130.     showSegment(6);
  131.     showSegment(7);
  132.     break;
  133.   case 4:
  134.     showSegment(1);
  135.     showSegment(3);
  136.     showSegment(4);
  137.     showSegment(6);
  138.     break;
  139.   case 5:
  140.     showSegment(1);
  141.     showSegment(2);
  142.     showSegment(4);
  143.     showSegment(6);
  144.     showSegment(7);
  145.     break;
  146.   case 6:
  147.     showSegment(1);
  148.     showSegment(2);
  149.     showSegment(4);
  150.     showSegment(5);
  151.     showSegment(6);
  152.     showSegment(7);
  153.     break;
  154.   case 7:
  155.     showSegment(2);
  156.     showSegment(3);
  157.     showSegment(6);
  158.     break;
  159.   case 8:
  160.     showSegment(1);
  161.     showSegment(2);
  162.     showSegment(3);
  163.     showSegment(4);
  164.     showSegment(5);
  165.     showSegment(6);
  166.     showSegment(7);
  167.     break;
  168.   case 9:
  169.     showSegment(1);
  170.     showSegment(2);
  171.     showSegment(3);
  172.     showSegment(4);
  173.     showSegment(6);
  174.     break;
  175.   }
  176. }
  177.  
  178. void loop() {
  179.   while ((millis()-timeTemp) < 250) {
  180.     if (currentNumber > 9) {
  181.       displayLeftDigit(currentNumber/10);
  182.       displayRightDigit(currentNumber % 10);
  183.     }
  184.     else {
  185.       displayRightDigit(currentNumber);
  186.     }
  187.    
  188.   }
  189.   currentNumber++;
  190.   timeTemp=millis();
  191.   if (currentNumber > 99 ) currentNumber=0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement