Escolar Documentos
Profissional Documentos
Cultura Documentos
e d (a) Gambar 1.
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.
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.
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
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.
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
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
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.
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.
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); } } }
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.
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.
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);
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.
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.
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); } } }