Seven Segment 4 Digit dengan Arduino

Diposting pada

Pada tulisan kali ini kita akan mensimulasikan rangkaian dan program untuk menampilkan angka menggunakan seven segment 4 digit dengan Arduino. Seperti sebelumnya pada percobaan ini akan menggunakan proteus untuk simulasinya . Seven segment yang digunakan pada simulasi kali ini berjenis Common Cathode.
Untuk menampilkan beberapa seven segment dalam waktu bersamaan menggunakan prinsip scanning. Scanning digunakan untuk membuat penggunaan port output lebih sedikit. Dimana segment-segment (a,b,c,d,e,f,g dan dot) dari tiap segment dirangkai pada port output yang sama. Sedangkan pin common nya pada port yang berbeda-beda. Bisa dibayangkan jika tidak menggunakan sistem scanning maka akan membutuhkan port output yang sangat banyak.

Cara kerja

Cara kerja dari sistem scanning yang dimaksud adalah dengan mengatur nyala matinya seven segment melalui pin common. Sehingga seven segment akan nyala bergiliran dan menampilkan angka sesuai urutannya. Maksudnya ketika menampilkan angka ribuan misalnya maka hanya pin common pada digit ribuan saja yang diberi tegangan(dinyalakan) sedangkan yang lainnya mati, sehingga hanya digit ribuan yang menampilkan angka. Begitu seterusnya secara bergiliran. Dengan memberikan delay (penundaan) yang pendek hanya beberapa mili detik, maka mata kita melihatnya seolah olah nyala bersamaan.

Rangkaian

Untuk percobaan nya kita buat rangkaian simulasi seperti yang terlihat pada gambar berikut:

Rangkaian seven segment 4 digit

Program

Untuk lebih memudahkan pembuatan programnya kita buat konversi dari biner ke hexa nya, seperti tabel berikut:

Tabel seven segment common katoda

Karena menggunakan pin 0-7 untuk segment nya dimana pin itu merupakan PORT D. Maka kita membuat PORT D tersebut sebagai output dengan code DDRD=0xFF;

Sedangkan pin common nya diletakan pada pin 8-11, maka kita set sebagai berikut:

DDRB=B00001111;

Untuk membuat program nya kita gunakan software arduino IDE. Program selengkapnya sebagai berikut:

void setup() {
 DDRD=0xFF; //pin 0-7 sebagai output (a,b,c,d,e,f,g,dot)
 DDRB=B00001111; //pin 8-11 sebagai output (common)
 }
 
void loop() {
int nomor;
nomor=1945; //angka yang akan ditampilkan
 
int ribuan=nomor/1000;  
int ratusan=nomor/100;
    ratusan=ratusan %10;
int puluhan=nomor/10;
    puluhan=puluhan%10;
int satuan=nomor%10;
 
for(int i=0; i<500;i++){    //lama tampilan
  //scanning
  angkaSatuan();
  segment(satuan);  //memanggil fungsi segment untuk menampilkan angka satuan
  delay(4);
   angkaPuluhan();
  segment(puluhan);
  delay(4);
  angkaRatusan();
  segment(ratusan);
  delay(4);
   angkaRibuan();
  segment(ribuan);
  delay(4);}
}
 
//FUNGSI SEVEN SEGMENT
void segment(int angka){
//0
if (angka==0){
 PORTD=0x3F;}
//1  
  if (angka==1){
   PORTD=0x6;}
// 2
  if (angka==2){
      PORTD=0x5B;}
//3  
 if (angka==3){
    PORTD=0x4F;}
//4  
 if (angka==4){
   PORTD=0x66;}
//5  
 if (angka==5){
   PORTD=0x6D; }
//6  
 if (angka==6){
   PORTD=0x7D; }
//7  
 if (angka==7){
    PORTD=0x7; }
 
//8
if (angka==8){
   PORTD=0x7F; }
//9
if (angka==9){
  PORTD=0x6F; }
}
 
//scanning common
void angkaSatuan(){
  PORTB=B0000111; }
void angkaPuluhan(){
  PORTB=B0001011; }
void angkaRatusan(){
  PORTB=B0001101;  }
void angkaRibuan(){
  PORTB=B0001110; }

Hasil

Kemudian kita simulasikan untuk menampilkan angka 1234, maka hasilnya sebagai berikut:

Tampilan angka 1234 seven segment

Selanjutnya kita coba menampilkan angka 1945, hasilnya sebagai berikut:

Tampilan angka 1945 seven segment

Berikut ini adalah video simulasi dari up counter dengan 4 digit seven segment dan  arduino:

Sekian tulisan tentang seven segment 4 digit kali ini, terimakasih telah membaca dan semoga bermanfaat.

2 komentar

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *