Disini disajikan contoh kecil project lampu lalulintas secara sederhana
dengan microcontroler AT89C51 untuk 4 keadaan. Dari tabel contoh yang telah
dibuat dapat Anda kembangkan sendiri menjadi lampu lalulintas 3 dan 2 keadaan.
Lampu lalu lintas 4 keadaan atau 4 kutub berarti satu siklus terdiri dari 4
keadaan nyala lampu. Keadaan nyala lampu lebih jelas dapat dilihat dalam tabel
4.1 untuk output nyala lampu pada uC AT89C51 dipakai port sbb:
Arah Timur:
Port 1.0 = lampu merah
Port 1.1 = lampu
kuning
Port 1.2 = lampu hijau
Arah Selatan:
Port 1.3 = lampu merah
Port 1.4 = lampu
kuning
Port 1.5 = lampu hijau
Arah Barat:
Port 3.0 = lampu merah
Port 3.1 = lampu
kuning
Port 3.2 = lampu hijau
Arah Utara:
Port 3.3 = lampu merah
Port 3.4 = lampu
kuning
Port 3.5 = lampu hijau
Contoh mudah mendrive nyala lampu Merah, Kuning dan Hijau pada sisi jalan bagian
timur tampak pada gambar 4.1 untuk sisi jalan bagian lainnya idenya adalah sama,
hanya dengan mengganti port masukan yang sesuai seperti pada penjelasan di atas.
Gambar 4.1 Skema rangkaian traffic light
bagian Timur.
Bagan kerja lampu traffic
light empat kutub dirancang sebagai berikut:
Gambar 4.2 Diagram lampu
traffic light
Tabel 4.1 Keadaan lampu
P3
P1
PORT 3
PORT 1
K
X
UTARA
BARAT
X
SELATAN
TIMUR
H
K
M
H
K
M
H
K
M
H
K
M
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
09
09
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
1
09
0C
0
0
0
0
1
0
0
1
0
0
0
0
1
1
0
0
2
09
0E
0
0
0
0
1
0
0
1
0
0
0
0
1
1
1
0
3
09
09
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
4
09
21
0
0
0
0
1
0
0
1
0
0
1
0
0
0
0
1
5
09
31
0
0
0
0
1
0
0
1
0
0
1
1
0
0
0
1
6
09
09
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
7
0C
09
0
0
0
0
1
1
0
0
0
0
0
0
1
0
0
1
8
0E
09
0
0
0
0
1
1
1
0
0
0
0
0
1
0
0
1
9
09
09
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
10
21
09
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
1
11
31
09
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
1
12
Untuk menyalakan lampu,
microcontroller mengirim sinyal high ke port yang terkait. Disini nyala
lampu membutuhkan masukan high bagi driver lampu, karena rancangan driver
seperti pada gambar 4.1, transistor mula dalam keadaan off. Maka jika mendapat
masukan high dari port maka teraliri arus basis sebesar:
ib= (Vport-Vbe)/4,7k ohm Ampere
Arus ini cukup untuk membuat transistor bekerja jenuh sehingga LED akan
tersupplay arus dari Vcc sebesar:
ic= (Vcc-VLED)/560ohm Ampere
Misalnya kita
ingin menyalakan lampu hijau timur (HT) dan yang lain merah semua
maka, kirim data ke port 1 = 0CH (00001100b ) dan port3 = 09H (00001001b)
Sehingga programnya ditulis
sebagai berikut, untuk mudahnya tunda tidak dihitung dalam hitungan menit yang
presisi. JIka diinginkan lebih mendetail dapat dipakai acuan clock pada uC
dengan pemrogram timer.
;-----------------------------------
; PROGRAM TRAFFIC
LIGHT
;-----------------------------------
ORG 00H
LJMP K1
ORG 100H
K1: MOV P1,#09H
; MERAH SEMUA
MOV P3,#09H
ACALL TUNDA
K2: MOV
P1,#0CH
MOV P3,#09H
ACALL TUNDA
K3: MOV P1,#0EH
MOV P3,#09H
ACALL TUNDA
K4: MOV P1,#09H
MOV P3,#09H
ACALL TUNDA
K5: MOV P1,#21H
MOV P3,#09H
ACALL TUNDA
K6: MOV P1,#31H
MOV P3,#09H
ACALL TUNDA
K7: MOV P1,#09H
MOV P3,#09H
ACALL TUNDA
K8: MOV P1,#09H
MOV P3,#0CH
ACALL TUNDA
K9: MOV P1,#09H
MOV P3,#0EH
ACALL TUNDA
K10: MOV P1,#09H
MOV P3,#09H
ACALL TUNDA
K11: MOV P1,#09H
MOV P3,#21H
ACALL TUNDA
K12: MOV P1,#09H
MOV P3,#31H
ACALL TUNDA
LJMP K1
TUNDA: MOV R7,#00H
ULANG2: MOV R6,#00H
ULANG1: MOV R5,#00H
ULANG: INC R5
CJNE
R5,#02H,ULANG
INC R6
CJNE
R6,#02H,ULANG1
INC R7
CJNE
R7,#02H,ULANG2
RET
END
Untuk lebih luwes dalam penyetingan delay lampu maka program dapat dibuat
seperti contoh berikut. Perhatian posisi port untuk lampu sesui dengan diagram
posisi lampu dalam progam.
;==============================================================;
; PROGRAM SIMULASI LAMPU LALULINTAS ;
; by: ARIF JOHAR TAUFIQ ;
;==============================================================;
; POSOSI LAMPU: ;
; ;
;
BARAT ;
;
H (P1.2) ;
;
K (P1.1) ;
;
M (P1.0) ;
; ;
; SEL H K
M M
K H UTARA ;
; (P3.6) (P3.5) (P3.4)
(P3.0) (P3.1) (P3.2) ;
; ;
;
M (P1.4) ;
;
K (P1.5) ;
;
H (P1.6) ;
;
TIMUR ;
;==============================================================;
TD_RED EQU 03H ;waktu tunda merah 3 dtk //dapat
diubah
TD_GREEN EQU 05H ;waktu tunda hijau 5 dtk
//dapat diubah
TD_YELLOW EQU 02H ;waktu tunda kuning 2 dtk //dapat diubah
ORG 00H
LJMP AWAL
;==================
;LAMPU BARAT
;==================
ORG 100H
AWAL: MOV R2,#00H
BARAT_1: ACALL ALL_RED ; semua MERAH
MOV A,#00H
AA: ACALL TUNDA
INC A
CJNE A,#TD_RED,AA
BARAT_2: MOV P1,#14H ; hijau barat
MOV P3,#11H
MOV A,#00H
BB: ACALL TUNDA
INC A
CJNE A,#TD_GREEN,BB
BARAT_3: MOV P1,#12H ; kuning barat
MOV P3,#11H
MOV A,#00H
CC: ACALL TUNDA
INC A
CJNE A,#TD_YELLOW,CC
;==================
; LAMPU UTARA
;==================
UTARA_1: ACALL ALL_RED ;semua merah
MOV A,#00H
DD: ACALL TUNDA
INC A
CJNE A,#TD_RED,DD
UTARA_2: MOV P1,#11H ;hijau utara
MOV P3,#14H
MOV A,#00H
EE: ACALL TUNDA
INC A
CJNE A,#TD_GREEN,EE
UTATA_3: MOV P1,#11H ;kuning utara
MOV P3,#12H
MOV A,#00H
FF: ACALL TUNDA
INC A
CJNE A,#TD_YELLOW,FF
;=================
; LAMPU TIMUR
;=================
TIMUR_1: ACALL ALL_RED ;semua merah
MOV A,#00H
GG: ACALL TUNDA
INC A
CJNE A,#TD_RED,GG
TIMUR_2: MOV P1,#41H ;hijau timur
MOV P3,#11H
MOV A,#00H
HH: ACALL TUNDA
INC A
CJNE A,#TD_GREEN,HH
TIMUR_3: MOV P1,#21H ;kuning timur
MOV P3,#11H
MOV A,#00H
II: ACALL TUNDA
INC A
CJNE A,#TD_YELLOW,II
;==================
; LAMPU SELATAN
;==================
SELATAN_1: ACALL ALL_RED ;semua merah
MOV A,#00H
JJ: ACALL TUNDA
INC A
CJNE A,#TD_RED,JJ
SELATAN_2: MOV P1,#11H ;hijau selatan
MOV P3,#41H
MOV A,#00H
KK: ACALL TUNDA
INC A
CJNE A,#TD_GREEN,KK
SELATAN_3: MOV P1,#11H ;kuning selatan
MOV P3,#21H
MOV A,#00
LL: ACALL TUNDA
INC A
CJNE A,#TD_YELLOW,LL
INC R2
CJNE R2,#03H,MAJU
SJMP SUS
MAJU: LJMP BARAT_1
SUS: MOV A,#00H
RENE: ACALL ALL_OFF
ACALL TUNDA
ACALL ALL_YL
ACALL TUNDA
INC A
CJNE A,#05,RENE
LJMP AWAL
;======================
; PROSEDUR SEMUA MERAH
;======================
ALL_RED: MOV P1,#11H
MOV P3,#11H
RET
;=======================
; PROSEDUR SEMUA KUNING
;=======================
ALL_YL: MOV P1,#22H
MOV P3,#22H
RET
;=======================
; PROSEDUR SEMUA MATI
;=======================
ALL_OFF: MOV P1,#00H
MOV P3,#00H
RET