ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMENT(7-S)
A. TUJUAN Membuat program aplikasi menggunakan media tampilan 7-Segment. Membuat Membuat proses proses kontrol kontrol display display seven seven segment segment menggunak menggunakan an SWITCH sebagai set (H) dan reset () program. • •
A. DASAR DASAR TEORI Identifikasi Segment
Mempermuda! pembuatan program untuk menampilkan nyala "# 7-Segment
Suatu segment yang digunakan menampilkan angka. $umpulan dari beberapa dioda dengan identi%ikasi a& b& '& d& e& %& g dan dp (#e'imal oint).
C A Rangkaian dioda pada 7-Segment
Jenis Seven Segment
•
Common Katoda
Common Cat!ode .*+ In'! (,.mm)
•
Common Anoda
Common /node .*+ In'! (,.mm)
Jenis 7-S
Menggunakan Multitester Common /noda • • •
$alibrasi multitester pada skala , 0!m Tempatkan penyindik !itam (-) pada multitester ke 7S bagian tenga! (C/). Tempatkan penyindik mera! (1) pada multitester ke 7S bagian yang lain se'ara berpinda! pinda! maka akan menyalakan lampu tiap bagian pada 7S begitu seterusnya sampai lampu segment dapat menyala se'ara berurutan.
•
Semua anoda "# seven segmen disatukan di!ubungkan ke 2CC& kemudian "# di!ubungkan melalui ta!anan pembatas arus keluar dari penggerak "#.
•
C0MM03 /30#/ berada pada kondisi /$TI4 0W (led akan menyala5akti% bila diberi logika ).
Common $atoda • • •
• •
$alibrasi multitester pada skala , 0!m Tempatkan penyindik mera! (1) pada multitester ke 7S bagian tenga! (CC). Tempatkan penyindik !itam (-) pada multitester ke 7 segment bagian ka6at yang lain se'ara berpinda! pinda! maka akan menyalakan lampu tiap bagian pada 7S begitu seterusnya sampai lampu segment dapat menyala se'ara berurutan Semua katoda disatukan di!ubungkan ke 8093#. C0MM03 $/T0#/ berada pada kondisi /$TI4 HIH (led akan menyala5akti% bila diberi logika ,).
Prinsip Kerja 7S dgn Driver •
•
•
Input biner dimasukan ke dalam de'oder& kemudian de'oder mengkonversi bilangan biner tersebut men:adi de'imal& yang akan ditampilkan pada 7 segment. Sebua! de'oder atau seven segment driver akan mengatur akti% tidaknya ledled dalam seven segment sesuai dengan nilai biner yang diberikan. #ekoder ;C# ke 7 segment < ◦
menyalakan 7 segment mode 'ommon anoda IC TT 7S7
◦
menyalakan 7 segment mode 'ommon katoda IC TT 7S=.
,. $on%igurasi pin IC 7S7 •
•
•
#ekoder ;C# ke 7 segment mempunyai masukan berupa bilangan ;C# -bit (masukan /& /,& / dan />). ;ilangan ;C# ini dikodekan se!ingga membentuk kode tu:u! segmen yang akan menyalakan ruas-ruas yang sesuai pada seven segment. Masukan ;C# diakti%kan ole! logika ?,@& dan keluaran dari dekoder 77 adala! akti% lo6.
•
•
•
•
Tiga masukan ekstra :uga ditun:ukkan pada kon%igurasi pin IC 77 yaitu lamp test& blanking input5ripple blanking output& dan ripple blanking input. amp Test& ber%ungsi mengeset display& bila diberi logika ?@ maka semua keluaran IC A berlogika dan Seven segment A angka delapan (=). ;IB58;0?& ber%ungsi mematikan keluaran dari IC. ;ila diberi logika D maka semua keluaran IC A berlogika ,D dan seven segment akan mati. 8;IB & ber%ungsi mematikan keluaran dari IC :ika semua input berlogika D. ;ila diberi logika D& maka semua keluaran IC akan berlogika ,D dan seven segment akan mati. ◦
#river Common $atoda
◦
#river Common /noda
Tabel kebenaran IC 74S47
A. PERALATAN /rduino 9no ;oard , bua! Seven segmet 'ommon /noda $abel :umper • • •
A. RANGKAIAN
Vcc
B. HASIL PERCOBAAN ,. rogram ,a int /A,>& ;A,& CA,,& #A,E int "AF& 4A=& A7& #A+E void setup() G pinMode(/& 09T9T)E pinMode(;& 09T9T)E pinMode(C& 09T9T)E pinMode(#& 09T9T)E pinMode("& 09T9T)E pinMode(4& 09T9T)E pinMode(& 09T9T)E pinMode(#& 09T9T)E void digit () G digitalWrite(/& 0W)E digitalWrite(;& 0W)E digitalWrite(C& 0W)E digitalWrite(#& 0W)E digitalWrite("& 0W)E digitalWrite(4& 0W)E digitalWrite(& HIH)E digitalWrite(#& HIH)E E void digit, () G digitalWrite(/&HIH)E digitalWrite(;& 0W)E digitalWrite(C& 0W)E digitalWrite(#& HIH)E digitalWrite("& HIH)E digitalWrite(4& HIH)E digitalWrite(& HIH)E digitalWrite(#& HIH)E E void digit () G digitalWrite(/&0W)E digitalWrite(;& 0W)E digitalWrite(C& HIH)E digitalWrite(#& 0W)E digitalWrite("& 0W)E digitalWrite(4& HIH)E digitalWrite(& 0W)E digitalWrite(#& HIH)E E void digit> () G digitalWrite(/&0W)E digitalWrite(;& 0W)E digitalWrite(C& 0W)E digitalWrite(#& 0W)E digitalWrite("& HIH)E digitalWrite(4& HIH)E digitalWrite(& 0W)E digitalWrite(#& HIH)E E void digit () G digitalWrite(/&HIH)E digitalWrite(;& 0W)E digitalWrite(C& 0W)E digitalWrite(#& HIH)E digitalWrite("& HIH)E digitalWrite(4& 0W)E digitalWrite(& 0W)E digitalWrite(#& HIH)E
s6it'! (digit) G 'ase < digit ()E breakE 'ase ,< digit, ()E breakE 'ase < digit ()E breakE 'ase >< digit> ()E breakE 'ase < digit ()E breakE 'ase *< digit* ()E breakE 'ase +< digit+ ()E breakE 'ase 7< digit7 ()E breakE 'ase =< digit= ()E breakE 'ase F< digitF ()E breakE de%ault< breakE E E void loop() G %or (int iAEi,Ei11) G 55'ounting %rom to F s!o6digit(i)E delay (,)E 55 ,msA ,s delay i% (iJ) G digitalWrite(#& HIH)E else GdigitalWrite(#& 0W)E E E E
. rogram ,b byte sevenKsegKdigitsL,L7 A G G &&&&&&, & 55 A G ,&&&,&,&,&, & 55 A , G &&,&&&,& & 55 A G &&&&,&,& & 55 A > G ,&&&,&,&& & 55 A G &,&&&,&& & 55 A * G &,&&&&& & 55 A + G &&&,&,&,&, & 55 A 7 G &&&&&& & 55 A = G &&&&,&& & 55 A F E void setup() G pinMode(,>& 09T9T)E pinMode(,& 09T9T)E pinMode(,,& 09T9T)E pinMode(,& 09T9T)E pinMode(F& 09T9T)E pinMode(=& 09T9T)E pinMode(7& 09T9T)E pinMode(+& 09T9T)E 6rite#ot(,)E 55 padamkan tanda NdotN (titik) void 6rite#ot(byte dot) G digitalWrite(+& dot)E void sevenSegWrite(byte digit) G byte pin A ,>E %or (byte segCount A E segCount 7E 11segCount) G digitalWrite(pin& sevenKsegKdigitsLdigitLsegCount)E 11pinE void loop() G %or (byte 'ount A E 'ount , E 11'ount) G sevenSegWrite('ount)E delay(,)E %or (byte 'ount A FE 'ount O E --'ount) G sevenSegWrite('ount-,)E delay(,)E
>. rogram void setup() G %or (int iAE i =E i11) G pinMode(segmentinsLi& 09T9T)E void loop() G %or (int iAE i A,E i11) G s!o6#igit(i)E delay(,)E delay()E
void s!o6#igit (int number) G boolean is;itSetE %or (int segmentA,E segment =E segment11) G Is;itSetA bit8ead(numeralLnumber& segment)E digitalWrite(segmentinsLsegment& is;itSet)E
C. LATIHAN 1. ;uatla! eksperimen dengan meggunakan , driver (IC TT 7S7) dan sebua! 7S Common /noda. !angkaian"
Program: int input[]={13,12,11,10};
%ounter=1+%ounter; } void setup() { } void disp$a&'inar&(&te nu"o*o){ for(int a=0;a<4;a++){ for(int =0;<4;++){ pinMode(input [a], !"#!"); if(it-ead(nu"o*o,)==1){ } di.ita$/rite( input[], ); } } e$se{ void $oop() { di.ita$/rite( input[], /); for(int %ounter=0;%oun ter<10;%ounter + } +){ } disp$a&'inar&(%ounter); } de$a&(300);
Hasil< ati!an ini meng!asilkan output pada 7 segment bilangan genap. Padi outputnya adala! & & & +& = lalu kembali lagi ke & dst. . ;uatla! eksperimen dengan meggunakan , driver (IC TT 7S=) dan sebua! 7S Common $atoda. !angkaian"
Program:
int inputs[4]={10,11,12,13}; int nuer; &te '5[10][4]={ {0,0,0,0}, {0,0,0,1}, {0,0,1,0}, {0,0,1,1}, {0,1,0,0}, {0,1,0,1}, {0,1,1,0}, {0,1,1,1}, {1,0,0,0}, {1,0,0,1}, }; void setup() { for (int a=0; a<4;a++){ pinMode(inputs[a],!"#!"); }
void drivers(&te di.it) { for (&te ount = 0; ount < 4; ount++) { di.ita$/rite(inputs[ount], '5[di.it][ount]); } } void $oop() { for(int nuer=0;nuer<10;nuer+ +){ drivers(nuer); de$a&(1000); } }
Hasil< ati!an ini meng!asilkan output pada 7 segment angka -F lalu kembali lagi ke dst. 3. Buat aplikasi kontrol 7S Common Anoda dan driver 74LS74 dengan menggunakan saklar sebagai input untuk Set data (p!do"n#$ounter% dan &'S' data. !angkaian"
Program: int input[]={13,12,11,10}; int sa6$ar=7; int utton*tate=0; void setup() { for(int a=0;a<4;a++){ pinMode(input[ a], !"#!"); } pinMode(sa6$ar,8#!"); } void $oop() { utton*tate=di.ita$-ead(sa6$ar); if(utton*tate==){ for(int %ounter=0;%oun ter<10;%ounter ++){ disp$a&'inar&(%ounter); de$a&(300); } }
e$se if(utton*tate==/){ for(int %ounter=9;%ou nter:=0;%ounte r){ disp$a&'inar&(%ounter); de$a&(300); } } } void disp$a&'inar&(&te nu"o*o){ for(int =0;<4;++) {
Hasil< ati!an ini meng!asilkan output pada 7 segment angka -F (up 'ounter) dan F- (do6n 'ounter). 9ntuk saklar bagian ba6a! digunakan untuk up5do6n 'ounter& sedangkan saklar atas digunakan untuk reset.
D. ANALISA DAN KESIMPULAN Analisa ;erdasarkan per'obaan yang tela! dilakukan untuk membuat program aplikasi menggunakan tampilan 7 segment dan membuat proses kontrol display 7 segment& diperole! !asil per'obaan seperti di atas.
808/M-,a. ada per'obaan ini& membuat program menampilkan angka -F pada 7 segment menggunakan 'ommon anoda. pertama& dibuat variable /& ;& C& #& "& 4& & # yang diberi nilai dari pin-pin arduino. ada %ungsi void setup()& variable-variable tersebut diberikan mode pin sebagai 09T9T. Selan:utnya dibuat %ungsi-%ungsi untuk menampilkan angka -F. pada %ungsi%ungsi tersebut& variable diberikan kondisi HIH ataupun 0W yang mana HIH berarti mati dan 0W berarti nyala ('ommon anoda). $ita ambil 'onto! pada %ungsi void digit()& variable /-4 diberikan kondisi 0W (nyala) dan variable Q # diberi kondisi HIH (mati)& se!ingga ketika %ungsi digit() dipanggil di!asilkan output berupa angka . pada %ungsi void s!o6digit()& terdapat kondisi s6it'! 'ase yang memba6a nilai dari %ungsi loop(). Se!ingga pada %ungsi void loop()& data yang diba6a pada %ungsi s!o6digit adala! -F. maka di!asilkan output angka -F dengan delay ,ms. :ika suda! sampai pada angka F& output akan kembali ke angka .
808/M-,b. ada per'obaan ini& membuat program menampilkan angka -F pada 7 segment menggunakan 'ommon anoda. ertama dibuat array dua dimensi dengan nama sevenKsegKdigits yang merupakan kondisi HIH dan 0W untuk pin-pin pada seven segment sesuai dengan dimensi pertamanya. ada %ungsi void setup()& variable-variable tersebut diberikan mode pin sebagai 09T9T. alu& ada %ungsi sevenSegWrite yang ber%ungsi untuk memberi nilai HIH atau 0W pada tiap-tiap pin arduino yang ter!ubung pada seven segment tergantung dari nilai angka yang diberikan pada %ungsi tersebut.. alu pada %ungsi void loop nya terdapat %or yang dimana ber%ungsi untuk meng!itung mulai dari !ingga F yang dimana nilai dari looping ini akan diba6a ke %ungsi sevenSegWrite untuk dioutputkan pada arduino dengan delay , detik& lalu %or selan:utnya untuk meng!itung mulai F !innga dengan delay yang sama.
808/M-. ada per'obaan ini& membuat program menampilkan angka -F pada 7 segment menggunakan 'ommon katoda. ertama dibuat array dua
dimensi dengan nama numeral yang merupakan kondisi HIH dan 0W untuk pin-pin pada seven segment sesuai dengan dimensi pertamanya. ada %ungsi void setup()& variable-variable tersebut diberikan mode pin sebagai 09T9T. ada %ungsi void loop terdapat looping %or yang mengitung dari !ingga , dengan delay , detik yang dimana variabel dari per!itungan tadi akan diba6a ke %ungsi s!o6#igit& apabila loopin suda! men'apai angka , maka akan ada delay selama detik untuk memulai loopin lagi dari . ada %ungsi s!o6#igit sendiri ber%ungsi untuk memberi nilai HIH atau 0W pada tiap-tiap pin arduino yang ter!ubung pada seven segment tergantung dari nilai angka yang diberikan pada %ungsi tersebut.
/TIH/3 ,. ada per'obaan ini membuat sebua! program dengan meggunakan , driver (IC TT 7S7) dan sebua! 7S Common /noda. ertama dikenalkan array input yang merupakan pin-pin yang digunakan untuk output ke driver. ada %ungsi void setup()& variable-variable tersebut diberikan mode pin sebagai 09T9T. ada %ungsi void loop terdapat looping %or yang merupakan looping untuk meng!itung dari & & & +& = lalu kembali ke dengan delay > milidetik
yang dimana variabel dari per!itungan tadi akan diba6a ke %ungsi
display;iner. ada %ungsi display;iner sendiri ber%ungsi untuk memberi nilai HIH atau 0W pada tiap-tiap pin arduino yang ter!ubung pada driver seven segment tergantung dari nilai angka yang diberikan pada %ungsi tersebut.
/TIH/3 . ada per'obaan ini membuat sebua! program dengan meggunakan
, driver (IC TT 7S=) dan sebua! 7S Common $atoda.
ertama dikenalkan array input yang merupakan pin-pin yang digunakan untuk output ke driver. ada %ungsi void setup()& variable-variable tersebut diberikan mode pin sebagai 09T9T. ada %ungsi void loop terdapat looping %or yang merupakan looping untuk meng!itung dari !ingga F dengan delay , milidetik
yang dimana variabel dari per!itungan tadi akan diba6a ke %ungsi
display;iner. ada %ungsi driver sendiri ber%ungsi untuk memberi nilai HIH atau 0W pada tiap-tiap pin arduino yang ter!ubung pada driver seven segment tergantung dari nilai angka yang diberikan pada %ungsi tersebut.
/TIH/3 >. kontrol 7S Common /noda dan driver 7S7 dengan menggunakan saklar sebagai input untuk Set data (9p5do6n-'ounter) dan 8"S"T data. ertama dikenalkan array input yang merupakan pin-pin yang digunakan untuk output ke driver dan saklar. ada %ungsi void setup()& variable-variable
tersebut diberikan mode pin sebagai 09T9T dan I39T. ada %ungsi loop terdapat variabel buttonState yang memba'a kondisi dari saklar HIH atau 0W. /pabila kondisi variabel saklar HIH maka meng!itung dari !ingga F dengan delay > milidetik& sedangkan apabila kondisi variabel saklar 0W maka akan meng!itung dari F !ingga dengan delay > milidetik yang dimana variabel dari per!itungan tadi akan diba6a ke %ungsi display;iner. ada %ungsi display;iner sendiri ber%ungsi
untuk memberi nilai HIH atau 0W pada tiap-tiap pin
arduino yang ter!ubung pada driver seven segment tergantung dari nilai angka yang diberikan pada %ungsi tersebut. alu pada rangkaiannya terdapat saklar yang ter!ubung pada pin reset yang dimana apabila saklar tersebut ditekan akan mereset program men:adi seperti a6al di:alankan.
Kesimpulan ;erdarkan per'obaan yang tela! dilakukan& dapat disimpulkan ba!6a Seven Segment merupakan alat yang digunakan untuk mempermuda! pembuatan program untuk menampilkan nyala "# 7-Segment. enggunaan driver mempermuda! proses datanya& karena tidak perlu mende%inikan datanya.