OLEH:
M Yazid Al Bastomy
2 D3 ELIN B
(1303131053)
DOSEN:
EPYK SUNARNO ,ST, MT
I.ABSTRAK
Lampu lalu lintas atau sering disebut dengan Traffic Light sangat berperan
penting dalam pengaturan lalu lintas yang semakin lama semakin padat pada saat ini.
Lampu lalu lintas ini dapat mengatur jalannya kendaraan dengan menggunakan tanda
nyala lampu yang berbeda yaitu merah, kuning, dan hijau yang merupakan warna
universal yang digunakan untuk peringatan berhenti, hati-hati dan jalan pada aturan
lalu lintas. Untuk pengaturan watunya kita dapat menggunakan delay waktu sesuai
lama yang diinginkan untuk menjaga efisiensi pemakaian jalan. Misal pada daerah
yang hampir masuk pedesaan biasanya delay waktunya akan singkat atau sedikit,
berbeda dengan perkotaan yang penduduknya padat dan banyak menggunakan
kendaraan bermotor. Apalagi apabila dalam pengaturan jalan itu terdapat palang pintu
kereta api yang sering membuat kemacetan. Sehingga sangat diperlukan pengaturan
lalu lintas yang dapat memperlancar arus dari kendaraan dengan menggunakan
7segmen untuk perhitungan yang dapat dilihat oleh pengendara dengan sistem
counting down dalam kerja 7segmen tersebut
II.PRINSIP KERJA
Pinsip kerja dari lampu lalu lintas ini yaitu
-
Saat pertama sumber VCC masuk lampu P3 akan menyala HIJAU (lampu merah
dan kuning mati) dengan count down mulai dari 20,pada lampu P1 akan menyala
MERAH (lampu hijau dan kuning mati) dengan perhitungan mundur yang dimulai
dari 53, dan pada lampu P2 akan menyala MERAH pula (lampu hijau dan kuning
mati) dengan count down yang dimulai dari setengah lama count down lampu
merah penuh atau sekitar 26. Kemudian setelah perhitungan lampu HIJAU P3 habis
(0), maka lampu akan berubah menjadi KUNING dan menghitung mulai dari lima
hingga habis yang diikuti dengan kedua lampu lain masih menyala MERAH.
Setelah penghitungan lampu KUNING P3 habis (0). Lampu P3 akan berubah
menjadi menyala MERAH dengan count down yang dimulai dari 53, yang diikuti
lampu P2 berubah menjadi warna HIJAU yang menyala dengan count down mulai
dari 20 dan lampu P1 masih MERAH dengan count down tersisa 26. Pada saat
lampu P3 yang menyala MERAH menghitung pada angka 30, lampu P2 akan
menyala KUNING dengan count down dimulai dari angka 5 dan pada lampu P1
masih tetap menyala MERAH dengan count down tinggal 5. Saat lampu P3
menyala MERAH dengan count down pada angka 20, lampu P2 akan menyala
MERAH dengan count down dimulai dari angka 53 dan lampu P1 akan menyala
HIJAU dengan count down dimulai dari angka 20. Dan pada saat P3 berwarna
MERAH dengan count down tersisa 5, lampu P2 masih tetap MERAH dan lampu
P1 akan menyala berwarna KUNING selama 5 sekon. Traffic Light akan akan
bekerja seperti ini terus menerus, akan tetapi pada saat kereta akan melintasi jalur
P3,maka lampu P3 akan menyala KUNING yang diikuti lampu P1 dan P2 akan
menyala KUNING berapapun count down yang masih berjalan dari ketiga lampu
lalu lintas yang sedang bekerja tersebut
IV.KOMPONEN
1. Dual 7 segment
2. Resistor 10 K ohm
3. Switch
4. Microcontroller AT Mega 128
V. BLOK DIAGRAM SISTEM
Alamat
Keterang
an
10
PORTD.0
PORTA.0
OUTPUT
11
PORTD.1
PORTA.1
OUTPUT
12
PORTD.2
PORTA.2
OUTPUT
13
PORTD.3
PORTA.3
OUTPUT
14
PORTD.4
PORTA.4
OUTPUT
15
PORTD.5
PORTA.5
OUTPUT
16
PORTD.6
PORTA.7
LED hijau
OUTPUT
17
PORTD.7
PORTB.07
7
segmen
OUTPUT
18
PORTE.0-7
7 segmen
PORTC.0
Switch
INPUT
19
PORTF.0-7
7 segmen
Peralatan
dp digit11
dp digit12
dp digit21
dp digit22
dp digit31
dp digit32
LED
merah
LED
kuning
LED hijau
LED
merah
LED
kuning
LED hijau
LED
merah
LED
kuning
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
OUTPU
T
IX. PROGRAM
#include <mega128.h>
#include <delay.h>
#define d1 PORTA.0
#define d2 PORTA.1
#define d3 PORTA.2
#define d4 PORTA.3
#define d5 PORTA.4
#define d6 PORTA.5
void On1Segmen(int a);
void On1Digit (int n);
void On2Segmen(int a);
void On2Digit (int n);
void On3Segmen(int a);
void On3Digit (int n);
void input (void);
void main(void)
{ int i,tunda;
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;
PORTE=0x00;
DDRE=0xFF;
PORTF=0x00;
DDRF=0xFF;
while (1)
{
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
PORTA.7=1;
On1Digit(i+48);
On2Digit(i+21);
On3Digit(i+15);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
PORTA.7=1;
On1Digit(i+43);
On2Digit(i+16);
On3Digit(i+10);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
PORTA.7=1;
On1Digit(i+38);
On2Digit(i+11);
On3Digit(i+5);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
PORTA.7=1;
On1Digit(i+33);
On2Digit(i+6);
On3Digit(i);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=0;
PORTD.7=1;
PORTA.7=0;
On1Digit(i+27);
On2Digit(i);
On3Digit(i);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=1;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+21);
On2Digit(i+15);
On3Digit(i+48);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=1;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+16);
On2Digit(i+10);
On3Digit(i+43);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=1;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+11);
On2Digit(i+5);
On3Digit(i+38);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=1;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+6);
On2Digit(i);
On3Digit(i+33);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=1;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i);
On2Digit(i);
On3Digit(i+27);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=0;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+15);
On2Digit(i+48);
On3Digit(i+21);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=0;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+10);
On2Digit(i+43);
On3Digit(i+16);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=0;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i+5);
On2Digit(i+38);
On3Digit(i+11);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=4;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=0;
PORTD.1=0;
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i);
On2Digit(i+33);
On3Digit(i+6);
}
}
}
if(PINC.0==1)
{
input();
}
else
{
for(i=5;i>=0;i--)
{
for(tunda=0;tunda<=10;tunda++)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=0;
PORTD.3=1;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTA.7=0;
On1Digit(i);
On2Digit(i+27);
On3Digit(i);
}
}
}
}
}
void On1Segmen(int a)
{ switch(a)
{
case 0:PORTB=0x3f;break;
case 1:PORTB=0x06;break;
case 2:PORTB=0x5b;break;
case 3:PORTB=0x4f;break;
case 4:PORTB=0x66;break;
case 5:PORTB=0x6d;break;
case 6:PORTB=0x7d;break;
case 7:PORTB=0x07;break;
case 8:PORTB=0x7f;break;
case 9:PORTB=0x6f;break;
}
}
void On2Segmen(int a)
{ switch(a)
{
case 0:PORTF=0x3f;break;
case 1:PORTF=0x06;break;
case 2:PORTF=0x5b;break;
case 3:PORTF=0x4f;break;
case 4:PORTF=0x66;break;
case 5:PORTF=0x6d;break;
case 6:PORTF=0x7d;break;
case 7:PORTF=0x07;break;
case 8:PORTF=0x7f;break;
case 9:PORTF=0x6f;break;
}
}
void On3Segmen(int a)
{ switch(a)
{
case 0:PORTE=0x3f;break;
case 1:PORTE=0x06;break;
case 2:PORTE=0x5b;break;
case 3:PORTE=0x4f;break;
case 4:PORTE=0x66;break;
case 5:PORTE=0x6d;break;
case 6:PORTE=0x7d;break;
case 7:PORTE=0x07;break;
case 8:PORTE=0x7f;break;
case 9:PORTE=0x6f;break;
}
}
void On1Digit(int n)
{
int s,p;
s=n%10;
p=n/10;
d1=0;d2=1;
On1Segmen(s);
delay_ms(1);
d1=1;d2=0;
On1Segmen(p);
delay_ms(1);
}
void On2Digit(int n)
{
int s,p;
s=n%10;
p=n/10;
d3=0;d4=1;
On2Segmen(s);
delay_ms(1);
d3=1;d4=0;
On2Segmen(p);
delay_ms(1);
}
void On3Digit(int n)
{
int s,p;
s=n%10;
p=n/10;
d5=0;d6=1;
On3Segmen(s);
delay_ms(1);
d5=1;d6=0;
On3Segmen(p);
delay_ms(1);
}
void input (void)
{ int i;
for(i=5;i>=0;i--)
{
PORTD.0=0;
PORTD.1=1;
PORTD.2=0;
PORTD.3=0;
PORTD.4=1;
PORTD.5=0;
PORTD.6=0;
PORTD.7=1;
PORTA.7=0;
d1=1;d2=0;
PORTB=0b1000000;
delay_ms(1);
d1=0;d2=1;
PORTB=0b1000000;
delay_ms(1);
d3=1;d4=0;
PORTF=0b1000000;
delay_ms(1);
d3=0;d4=1;
PORTF=0b1000000;
delay_ms(1);
d5=1;d6=0;
PORTE=0b1000000;
delay_ms(1);
d5=0;d6=1;
PORTE=0b1000000;
}
}