Sebelum memulai coding 8 Digit Seven Segmen dan untuk meminimalkan kesalahan program, maka sebaiknya dikerjakan "diatas kertas" terlebih untuk pengaturan tampilannya.
Konfigurasi seven segmen memungkinkan untuk menampilkan semua angka dari 0 - 9 dan beberapa karakter antara lain :
A,a,b,C,c,d,E,e,F,H,h,I,J,L,n,o,P,q,r,t,U,u,Y,-,_.
Beberapa huruf tetapi bisa menimbukkan kerancuan yaitu :
G dgn 6, g dgn 9, O dgn 0 (nol), dan S dgn 5.
Untuk huruf M dan W bisa diakali dengan menggabungkan 2 buah tampilan segmen sehingga untuk tampilan M adalah 2 buah segmen dgn tampilan n dan untuk tampilan W adalah 2 buah segmen dgn tampilan u atau mengubah posisi segmen dari vertikal menjadi horizontal (untuk kasus tertentu).
Tabel disamping adalah nilai biner yang akan diberikan kepada segmen untuk menampilkan angka-angka tertentu.
Saya hanya akan membahas tampilan angka saja dengan konfigurasi common anode dan kondisi awal segmen DOT (titik) adalah mati.
Lihat dulu rangkaian Schematik 8 Digit 7 Segmen.
Dari gambar schematic di dapatkan konfigurasi yang diinginkan yaitu:
PORTB.0 - PORTB.7 adalah A,B,C,D,E,F,G,DOT
PORTC.0 - PORTC.7 adalah DRV0 - DRV7
Port DRV atau driver adalah port yang digunakan untuk mengaktifkan segmen yang akan menampilkan suatu angka.
PORTA tidak dipilih karena memiliki ADC sedangkan PORTD karena ada PWM dan USART yang mungkin bisa digunakan nantinya.
Coding disamping berfungsi untuk menampilkan angka pada Seven Segmen dan tidak termasuk mengatur segmen mana yang menampilkan angka tersebut.
Angka yang akan ditampilkan berada pada variable nilai yang nilainya bisa berupa nilai 0 - 9 atau berupa karakter ASCII '0' - '9', karena jika anda memberikan nilai 0 - 9, pada fungsi ini akan di konversi-nya menjadi nilai ASCII '0' - '9' yaitu ditambahkan dengan 0x30 (48 desimal).
Coding ini untuk menguji apakah program menampilkan angka pada semua segmen berhasil atau tidak.
Mula-mula semua segmen akan menampilkan angka 0 - 9 dengan tundaan selama 1 detik kemudian semua segman akan menampilkan angka 0, 8, 5, lalu 6 secara bergantian dengan waktu tunda 1 detik.
Ini menunjukkan penggunaan nilai berupa angka dan karakter ASCII.
Scanning 8 DIGIT
Coding ini akan menampilkan suatu nilai dengan type data float pada seven segmen.
Oleh sebab itu fungsi ini hanya untuk menampilkan bilangan pecahan saja (ada komanya).
Coba anda buat sendiri menampilkan bilangan bulat saja atau bahkan berupa huruf.
Penggunaannya fungsi diatas cukup sederhana sebagai contoh :
...............Selamat mencoba.
while(1)
{
DISPLAY_SEGMEN(1234.5678);
}