Advertisement
adolf01

ATTINY2313 8-4-2-0 to multiplex 2x7segment

Mar 5th, 2019
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. #define D0 7
  2. #define D1 6
  3. #define D2 5
  4. #define D3 4
  5. #define D4 3
  6. #define D5 2
  7. #define D6 1
  8. #define D7 0
  9.  
  10. #define A 8
  11. #define B 9
  12. #define C 10
  13. #define D 11
  14. #define E 12
  15. #define F_SEG 13
  16. #define G 14
  17.  
  18. #define CA1 15
  19. #define CA2 16
  20.  
  21. const int vstup[8] = {D0, D1, D2, D3, D4, D5, D6, D7};
  22. const byte numbers[16] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000, 0b0001000, 0b0000011, 0b1000110, 0b0100001, 0b0000110, 0b0001110};
  23. const int segs[7] = { A, B, C, D, E, F_SEG, G };
  24.  
  25. byte cislo;
  26.  
  27. void setup() {
  28.   for (int i = 0; i < 7; i++) {
  29.     pinMode(segs[i], OUTPUT);
  30.   }
  31.   //  pinMode(A, OUTPUT);
  32.   //  pinMode(B, OUTPUT);
  33.   //  pinMode(C, OUTPUT);
  34.   //  pinMode(D, OUTPUT);
  35.   //  pinMode(E, OUTPUT);
  36.   //  pinMode(F_SEG, OUTPUT);
  37.   //  pinMode(G, OUTPUT);
  38.  
  39.   pinMode(CA1, OUTPUT);
  40.   pinMode(CA2, OUTPUT);
  41.  
  42.   for (int i = 0; i < 8; i++) {
  43.     pinMode(vstup[i], INPUT);
  44.     //digitalWrite(vstup[i], HIGH);
  45.   }
  46.   //  pinMode(D0, INPUT);
  47.   //  pinMode(D1, INPUT);
  48.   //  pinMode(D2, INPUT);
  49.   //  pinMode(D3, INPUT);
  50.   //  pinMode(D4, INPUT);
  51.   //  pinMode(D5, INPUT);
  52.   //  pinMode(D6, INPUT);
  53.   //  pinMode(D7, INPUT);
  54.   //  digitalWrite(D0, HIGH);
  55.   //  digitalWrite(D1, HIGH);
  56.   //  digitalWrite(D2, HIGH);
  57.   //  digitalWrite(D3, HIGH);
  58.   //  digitalWrite(D4, HIGH);
  59.   //  digitalWrite(D5, HIGH);
  60.   //  digitalWrite(D6, HIGH);
  61.   //  digitalWrite(D7, HIGH);
  62.   //  Serial.begin(9600);
  63.   //  Serial.println("jedeme");
  64. }
  65.  
  66. void loop() {
  67.   for (int i = 0; i < 4; i++) {
  68.     bitWrite(cislo, i, digitalRead(vstup[i]));
  69.   }
  70.   lightDigit1(numbers[cislo]);
  71.   delay(10);
  72.   for (int i = 0; i < 4; i++) {
  73.     bitWrite(cislo, i, digitalRead(vstup[i + 4]));
  74.   }
  75.   lightDigit2(numbers[cislo]);
  76.   delay(10);
  77.  
  78.   //  Serial.println(cislo, HEX);
  79.   //  delay(500);
  80. }
  81. void lightDigit1(byte number) {
  82.   digitalWrite(CA1, LOW);
  83.   digitalWrite(CA2, HIGH);
  84.   lightSegments(number);
  85. }
  86.  
  87. void lightDigit2(byte number) {
  88.   digitalWrite(CA1, HIGH);
  89.   digitalWrite(CA2, LOW);
  90.   lightSegments(number);
  91. }
  92. void lightSegments(byte number) {
  93.   for (int i = 0; i < 7; i++) {
  94.     int bit = bitRead(number, i);
  95.     digitalWrite(segs[i], bit);
  96.   }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement