Anda di halaman 1dari 16

113

APLIKASI SEVEN SEGMEN DENGAN MIKROKONTROLLER


PENDAHULUAN
Peralatan keluaran yang sering digunakan dalam menampilkan bilangan adalah penampil seven segmen yang ditunjukkan pada gambar 1 (a). tujuh segmen tersebut dilabelkan dengan huruf a sampai g. a f g b

e d (a) Gambar 1.

(b) (a) Tampilan Fisik LED, (b) Skema dalam LED

Peraga seven segmen dapat dibuat dalam berbagai cara. Tiap tujuh segmen tersebut dapat berupa filamen tipis yang berpijar. Jenis peraga ini disebut peraga pijar (meandescent display), dan sama dengan bola lampu biasa. Peraga jenis lain adalah LCD (liquid crystal display), peraga cairan, yang ,menghasilkan angka angka berwarna kelabu atau puth perak. Dioda pemancar cahaya (LED, Light Emiting Dioda)

menghasilkan cahaya kemerah merahan. Pada peraga LED, LED membutuhkan arus khusus sebesar 20 mA. Karena berupa dioda, LED sensitif terhadap polaritas. Katoda (K) harus dihubung ke negatif (GND) dari catu daya dan Anoda (A) dihubung ke positif dari catu daya. Seven segmen ini mempunyai 2 tipe yaitu common anoda dan common katoda.

114

Gambar 4.1(b) memperlihatkan catu daya yang dihubungkan ke seven segmen common anoda.

RANGKAIAN SEVEN SEGMENT TUNGGAL 1


Rangkaian seven segment tunggal adalah rangkaian untuk menggerakkan penampil 7 segment secara langsung dari port keluaran mikrokontroller. Penampil seven segment yang digunakan common anoda. Data yang digunakan untuk menghasilkan angka atau huruf tertentu didapatkan dengan cara seperti pada Tabel 1
V C C

U 3 3 3 3 3 3 3 3 T 1 2 3 4 5 6 7 8 1 9 1 8 X 1 V 1 2 M H z C 3 1 0 u C 3 0 p C 6 3 0 p R C 7 E S E T R D S 3 1 N A T A C C 3 1 9 9 8 7 6 5 4 3 2 P P P P P P P P P P P P P P P P

1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 L 1 A L 2 P / / / / / / / / A A A A A A A A D P D P PD PD PD PD PD PD 20 21 2. 3. 4. 5. 6. 7. . . 2 3 4 5 6 7 2 1 0 / A 28 2 1 / A 39 2 / A 2 14 / A 2 15 / A 2 16 / A 2 17 / A 2 18 / A 1

E 1 2 3 4 5

E R

R S

G 4

1 0 P 3 . 0 / R 1 X1 D P 3 . 1 / T 1X 2D P 3 . 2 / I N1 3 0 T P 3 . 3 / I N1 4 1 T P 3 . 4 / 1 50 T P 3 . 5 / 1 61 T P 3 . 6 / W 1 7R P 3 . 7 / R D L E P P 3 0 / P R 2 O9 S E N G

X T A X T A E R

A / V S T T 8 9 S

5 1

R 2 4 K 7

4 0 0 2

Gambar 2.

Rangkaian aplikasi penggerak seven segmen tunggal

Tabel 1 Data Karakter Angka Pada 7 Segment

1 2 3 4 5 8 9 10

2 2 2 2 2 2

0 1 2 3 4 5

115

0 1 2 3 4 5 6 7 8 9

b7 dp 1 1 1 1 1 1 1 1 1 1

b6 g 1 1 0 0 0 0 0 1 0 0

b5 f 0 1 1 1 0 0 0 1 0 0

b4 e 0 1 0 1 1 1 0 1 0 1

b3 d 0 1 0 0 1 0 0 1 0 0

b2 c 0 0 1 0 0 0 0 0 0 0

b1 b 0 0 0 0 0 1 1 0 0 0

b0 a 0 1 0 0 1 0 0 0 0 0

HEX DATA COH F9H A4H BOH 99H 92H 82H F8H 80H 90H

PEMROGRAMAN SEVENT SEGMENT TUNGGAL 1 2.1.1. Program Seven Segment 1_1

Setelah rangkaian seven segment dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya anda membuat program Program Seven Segment 1. Program ini digunakan untuk menampilkan data 3 dan 2 secara bergantian. Program sebagai berikut ini

116

// Program 4.1. Sevent Segmen Tunggal /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++); } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } /* fungsi konversi BCD ke karakter 7-segment */ unsigned char bin7seg(unsigned char c,bit status) { code char d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; code char d7seg_dt_on[10]={0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; if (status) return d7seg_dt_on[c]; else return d7seg_dt_off[c]; } /* fungsi utama */ void main() { /* melakukan loop terus-menerus */ while(1) { P3=bin7seg(3,0); tunda(1000); P3=bin7seg(2,0); tunda(1000); } }

2.1.2.

Program Seven Segment 1_2

117

Setelah rangkaian LED dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat Program Seven Segment 2. Program ini digunakan untuk menampilkan angka mulai 0 sampai dengan 9. Program sebagai berikut ini // Program 4.2. Sevent Segmen Tunggal cacah naik /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++); } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } /* fungsi konversi BCD ke karakter 7-segment */ unsigned char bin7seg(unsigned char c,bit status) { code char d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; code char d7seg_dt_on[10]={0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; if (status) return d7seg_dt_on[c]; else return d7seg_dt_off[c]; } /* fungsi utama */ void main() { while(1) { char i; for(i=0;i<10;i++) { P3=bin7seg(i,0); tunda(1000); } } }

118

APLIKASI SEVEN SEGMENT TUNGGAL 2


Rangkaian seven segment tunggal 2 adalah rangkaian untuk menggerakkan penampil 7 segment secara langsung dari port keluaran mikrokontroller dengan data input BCD. Penampil seven segment yang digunakan common anoda.
V C C

U 3 3 3 3 3 3 3 3 1 2 3 4 5 6 7 8 1 1 X 1 V 1 2 M H z C 3 1 0 u 3 0 p C 6 3 0 p R C 7 E S E T C R D 1 A S 3 N 4 0 0 T A C C 3 9 9 8 7 6 5 4 3 2 P P P P P P P P P P P P P P P P

1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 / / / / / / / / AP AP AP AP AP AP AP AP D2 D2 D2 D2 D2 D2 D2 D2 0. 0 1. 1 .22 .33 .44 .55 .66 .77 2 /2 A /2 A 2A 2A 2A 2A 2A A 1 2 8 3 9 41 51 61 71 81 1

E 1 2 3 4 5

E R

R S T

G 4

1 0 P 3 . 0 / R1 1X D P 3 . 1 / T 2 D 1 X P 3 . 2 / I 1N 3 T 0 P 3 . 3 / I 1N 4 T 1 P 3 . 4 /1 T 5 0 P 3 . 5 /1 T 6 1 P 3 . 6 / 1W 7 R P 3 . 7 / R D 3 0 L A 1 L E / P 2R 9 O L 2 P S E N P P G V C C

7 1 2 6 3 4 5

U A B C D L T B I L E 4 5

2 A B C D E F G 1 1

1 1 1 1 9 1 1

3 2 1 0 5 4

9 8 X T A X T A 1 E R

A / V S T T 8 9 S

R 2 4 K 7

Gambar 3.

Rangkaian aplikasi penggerak seven segmen tunggal dengan BCD

Pemrograman Sevent Segment Tunggal 2 3.1.1. Program Seven Segment 2_1

1 2 3 4 5 8 9 10

/ / / / / /

0 1 2 3 4 5

119

Setelah rangkaian seven segment dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat program Program Seven Segment 1. Program ini digunakan untuk menampilkan data 3 dan 2 secara bergantian. Program sebagai berikut ini // Program 4.3. Sevent Segmen Tunggal IC 4511 /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++); } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } /* fungsi utama */ void main() { while(1) { P3=0x01; tunda(1000); P3=0x09; tunda(1000); } }

3.1.2.

Program Seven Segment 2_2

Setelah program Seven Segment 2_1 dibuat dan di jalankan, maka sekarang saatnya Anda membuat Program Seven Segment 2_2. Program ini digunakan untuk menampilkan angka mulai 0 sampai dengan 9. Program sebagai berikut ini

120

// Program 4.4. Sevent Segmen IC 4511 Cacah Naik /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++); } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } /* fungsi utama */ void main() { while(1) { char i; for(i=0;i<10;i++) { P3=0x00 + i; tunda(1000); } } }

APLIKASI SEVEN SEGMENT TERMULTIPLEKS 1


Rangkaian seven segment termultipleks Seven Segment adalah rangkaian untuk menggerakkan 4 buah penampil 7 segment secara langsung dari port keluaran mikrokontroller dengan data input Seven Segment.

121

. 0 1

Q 2

1 P 1

2 . 1 6 1 3 1

Q 2 P 2 N 1

2 . 2 6 1 3 1

Q 3 P 2 N 1

2 . 3 6 1 3 1

3 Q 4 2 N

U 3 3 3 3 3 3 3 3 1 2 3 4 5 6 7 8 1 1 X 1 V 1 2 M H z C 1 3 C 0 p 3 0 pR 6 C 7 E R 4 S 2 E T C 0 3 R D 1 A u S 3 N 4 0 T A C C 3 9 9 8 7 6 5 4 3 2 P P P P P P P P P P P P P P P P

1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . A A A S 8 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 AL L / V T 9 S /PA /PA P/ A P/ A P/ A P/ A P/ A P/ A 2D 2D 2 D. 2 D. 2 D. 2 D. 2 D. 2 D. 2 1 . 00 2 / 2 A . 11 2 / 3 A 2 2 2 / A4 3 3 2 / A5 4 4 2 / A6 5 5 2 / A7 6 6 2 / A8 7 7/ A P P 8 P 9 P1 1 1 1 1 1 2 2 2 20 1 2 3 4 5 . . . . 0 1 2 3

1 2 3 4 5 8 9 10

1 2 3 4 5 8 9 10

1 2 3 4 5 8 9 10

E 1 2 3 4 5

D R

E S

R T

G 4

1 0 P 3 . 0 1/ R 1 X D P 3 . 1 1 / T2 X D P 3 . 2 /1 I 3 N T 0 P 3 . 3 /1 I 4 N T 1 P 3 . 4 1 / 5T 0 P 3 . 5 1 / 6T 1 P 3 . 6 1 / W7 R P 3 . 7 / R D 3 1L E / P2 2P S E P P 0 9R N O G

9 8 X T X T 1 E R T

Gambar 4.

Rangkaian aplikasi penggerak seven termultipleks 1

Pemrograman Sevent Segment Termultipleks 1 4.1.1. Program Seven Segment 3_1

Setelah rangkaian sevent segment dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat program yang digunakan untuk menampilkan data 1512 dan 4123 pada seven segment. Program sebagai berikut ini //Program 7.3. Sevent Segment Termultipleks 1 /* deklarasi register AT89c51 */ #include <at89x51.h> void tunda1ms() { int i; for(i=0;i<100;i++) ;

1 2 3 4 5 8 9 10

122

} void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } unsigned char bin7seg(unsigned char c,bit status) { code char d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; code char d7seg_dt_on[10]={0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; if (status) return d7seg_dt_on[c]; else return d7seg_dt_off[c]; } void display(int angka) { char i; char dig0,dig1,dig2,dig3; dig3=angka/1000; angka %=1000; dig2=angka/100; angka %=100; dig1=angka/10; dig0=angka%10; for(i=0;i<50;i++) { P3=bin7seg(dig0,0); P1=0x01; tunda(1); P3=bin7seg(dig1,0); P1=0x02; tunda(1); P3=bin7seg(dig2,0); P1=0x04; tunda(1); P3=bin7seg(dig3,0); P1=0x08; tunda(1); } } void main() { while(1) { display(1512); tunda(1000); display(4123); tunda(1000); } }

4.1.2.

Program Seven Segment 3_2

123

Setelah rangkaian LED dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat Program Seven Segment 2. Program ini digunakan untuk menampilkan angka mulai 0 sampai dengan 9. Program sebagai berikut ini // Program 7.2. Sevent Segmen Tunggal /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++); } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } /* fungsi konversi BCD ke karakter 7-segment */ unsigned char bin7seg(unsigned char c,bit status) { code char d7seg_dt_off[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; code char d7seg_dt_on[10]={0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10}; if (status) return d7seg_dt_on[c]; else return d7seg_dt_off[c]; } /* fungsi untuk menampilkan angka ke 4 7segment*/ void display(int angka) { char i; char dig0,dig1,dig2,dig3; dig3=angka/1000; angka %=1000; dig2=angka/100; angka %=100; dig1=angka/10; dig0=angka%10; for(i=0;i<50;i++)

124

{ P3=bin7seg(dig0,0); P3=bin7seg(dig1,0); P3=bin7seg(dig2,0); P3=bin7seg(dig3,0); } } /* fungsi utama */ void main() { while(1) { char i; for(i=0;i<50;i++) { P3= display(i,0); } } } P1=0x01; P1=0x02; P1=0x04; P1=0x08; tunda(1); tunda(1); tunda(1); tunda(1);

tunda(1000);

APLIKASI SEVEN SEGMENT TERMULTIPLEKS 2


Rangkaian seven segment termultipleks Seven Segment adalah rangkaian untuk menggerakkan 4 buah penampil 7 segment secara langsung dari port keluaran mikrokontroller dengan data input Seven Segment.

125

1 2 3 4 5 8 9 10

1 2 3 4 5 8 9 10

1 2 3 4 5 8 9 10

13 12 11 10 9 15 14

13 12 11 10 9 15 14

13 12 11 10 9 15 14

3 3 3 3 3 3 3 3 H E 1 2 3 4 5 J P 4 1 1 X 1 V 1 2 M H z C 3 1 0 u T R C 7 A D 1 C C 3 9 A D R E S R T 5 1 2 3 4 5 6 7 8

9 8 7 6 5 4 3 2

P P P P P P P P P P P P P P P P

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

. . . . . . . . . . . . . . . .

0 1 2 3 4 5 6 7

/ PA / PA /P A /P A /P A /P A /P A /P A

2 2 2 2 2 2

2D 2D D D D D D D

. . . . . .

2 1 . 00 2 / A 2 . 11 2 / A 3 2 2 /2 A 4 3 3 /2 A 5 4 4 /2 A 6 5 5 /2 A 7 6 6 /2 A 8 77 / A

8 9 1 1 1 1 1 1 0 1 2 3 4 5

U 3 4 5 1

U 4

A B C D E F G

A B C D E F G

A B C D E F G

A B C D E F G 1

U 5 4 5 1

13 12 11 10 9 15 14 U 6 4 5 1

1 2 3 4 5 8 9 10

LT BI LE

LT BI LE

LT BI LE

7 1 2 6

3 4 5

7 1 2 6

3 4 5

7 1 2 6

3 4 5

7 1 2 6

1 0 0 P 3 . 0 /1 R 1 X D 1 P 3 . 1 /1 T 2 X D 2 P 3 . 2 / 1 I N3 T 0 3 P 3 . 3 / 1 I N4 T 1 4 P 3 . 4 1 / 5T 0 5 P 3 . 5 1 / 6T 1 6 P 3 . 6 /1 W 7 R 7 P 3 . 7 / R D 3 0 LA 1 L E / P 2 R 9 L 2 P S E N / V T P P O G

9 8 X T A X T A 1 E R A T A S 8

3 0 p C 6

3 0 pR C 7

E R 4

S 2

S 3 N

Gambar 5.

Rangkaian aplikasi penggerak seven segmen termultipleks 2

Pemrograman Sevent Segment Termultipleks 2 5.1.1. Program Seven Segment 4_1

Setelah rangkaian sevent segment dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat program yang digunakan untuk menampilkan data 1512 dan 4123 pada seven segment. Program sebagai berikut ini //Program 7.3. Sevent Segment Termultipleks /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms()

3 4 5

LT BI LE

A B C D

A B C D

A B C D

A B C D

126

{ int i; for(i=0;i<100;i++) ; } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } void display(unsigned int x) { int digit1; int digit2; int digit3; int digit4; digit4=x/1000; digit3=(x-digit4*1000)/100; digit2=(x-digit4*1000-digit3*100)/10; digit1=(x-digit4*1000-digit3*100-digit2*10); P3=0x80+digit4; tunda(10); P3=0x40+digit3; tunda(10); P3=0x20+digit2; tunda(10); P3=0x10+digit1; tunda(10); } /*fungsi utama */ void main() { while(1) { display(1512); display(4123); } }

tunda(1000); tunda(1000);

5.1.2.

Program Seven Segment 3_2

Setelah rangkaian LED dibuat dan dihubungkan dengan port pararel mikrokontroller, maka sekarang saatnya Anda membuat Program Seven Segment 2. Program ini digunakan untuk menampilkan angka mulai 0 sampai dengan 9.

127

Program sebagai berikut ini //Program 7.3. Sevent Segment Termultipleks /* deklarasi register AT89c51 */ #include <at89x51.h> /* fungsi tunda 1 milidetik (kira-kira) */ void tunda1ms() { int i; for(i=0;i<100;i++) ; } /* fungsi tunda n milidetik */ void tunda(int n) { int i; for (i=0; i<n;i++) tunda1ms(); } void display(unsigned int x) { int digit1; int digit2; int digit3; int digit4; digit4=x/1000; digit3=(x-digit4*1000)/100; digit2=(x-digit4*1000-digit3*100)/10; digit1=(x-digit4*1000-digit3*100-digit2*10); P3=0x80+digit4; tunda(10); P3=0x40+digit3; tunda(10); P3=0x20+digit2; tunda(10); P3=0x10+digit1; tunda(10); } /*fungsi utama */ void main() { int i; while(1) { for(i=0;i<10000;i++) {

128

display(i); tunda(100); } } }