Anda dapat mengurangi penggunaan port dengan menggunakan IC BCD (Binary Coded Decimal) Decoder. IC jenis ini berfungsi untuk mengubah input berupa bilangan biner menjadi bilangan desimal yang dapat ditampilkan melalui 7-Segmen. 7-Segmen ada 2 jenis, yaitu Common Anode dan Common Cathode. Oleh karena hal tersebut, IC jenis ini juga dibagi menjadi 2 jenis, yaitu Common Anode dan Common Cathode.
- 7-Segment Common Anode, menggunakan IC 74LS247 atau 74LS47
- 7-Segment Common Cathode, menggunakan IC 74LS248 atau 74LS48
Apa perbedaan IC tipe 74LS24x dan 74LS4x? Perbedaannya terletak pada tampilan angka 6 dan 9. Tipe 74LS24x memiliki tampilan angka 6 dan 9 yang sempurna, dan tipe 74LS4x memiliki tampilan angka 6 dan 9 yang kurang sempurna. Itu menurut pendapat saya.
Setelah menggunakan IC BCD Decoder, maka port Arduino Uno anda akan muat untuk menampilkan 3 digit angka, pas sekali menggunakan 12 port. Bagaimana jika anda ingin menampilkan 3 digit angka dan menggunakan port yang lain lagi untuk kebutuhan lain? Apakah port TX/RX dapat dipakai? Saya sarankan untuk tidak menggunakan port TX/RX. Saya lebih menyarankan menambahkan IC Bit Shifter. Bit Shifter ada 2 jenis, yaitu Bit Shifter untuk Input dan Bit Shifter untuk Output. Sesuai namanya IC jenis ini akan melakukan pergeseran bit.
Jenis Bit Shifter yang kita butuhkan kali ini adalah Bit Shifter Output. Dengan menggunakan IC jenis ini, anda hanya menggunakan 3 port saja untuk menampilkan 3 digit angka. yaitu pin LATCH, CLOCK dan DATA. Output dari IC ini kemudian diteruskan ke IC BCD Decoder.
Bahan :
- U1 = IC HC595
- U2 = IC 74LS247
- R1, R2, R3 = 56R
- R4, R5 = 470R
- DUINO 1 = Arduino Uno R3
- 7-Segmen 0.36 inchi x3
![]() |
Skema Rangkaian Decoder 3 Digit |
#define LATCH_PIN 2 #define CLOCK_PIN 3 #define DATA_PIN 4 // Number and phase byte bits[10][3] = { // 0 // 1 // 2 {0b00100000, 0b01000000, 0b10000000}, // 0 {0b00100010, 0b01000010, 0b10000010}, // 1 {0b00100100, 0b01000100, 0b10000100}, // 2 {0b00100110, 0b01000110, 0b10000110}, // 3 {0b00101000, 0b01001000, 0b10001000}, // 4 {0b00101010, 0b01001010, 0b10001010}, // 5 {0b00101100, 0b01001100, 0b10001100}, // 6 {0b00101110, 0b01001110, 0b10001110}, // 7 {0b00110000, 0b01010000, 0b10010000}, // 8 {0b00110010, 0b01010010, 0b10010010}, // 9 }; char *number = 0; void loop() { unsigned int x = (unsigned int)number; x++; if (x > 999){ x = 0; } char *y = (char *)x; if (strlen(y) == 1){ number = strcpy("00", y); } else if (strlen(y) == 2){ number = strcpy("0", y); } else { number = strcpy(number, y); } show3Digit(number); } void show3Digit(char *number){ setBitShift((byte)number[0] - 48, 0); setBitShift((byte)number[1] - 48, 1); setBitShift((byte)number[2] - 48, 2); } void setBitShift(int number, int phase){ digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, bits[number][phase]); digitalWrite(LATCH_PIN, HIGH); }Demikianlah penjelasan saya dalam tulisan ini, semoga dapat dimengerti dan membantu. Jika ada pertanyaan, silahkan kirimkan melalui form komentar. Terimakasih.
Tidak ada komentar:
Posting Komentar