Home|Tutorial | ElecProject | KuliahElektro | Download | Link | Rupa2 | Ide| Hidden

 

 

 

 

 

 

 

 

 

 

LAMPU LALU LINTAS DGN AT89C51

Oleh Arif Johar Taufiq

 

 

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


;======================
; PROSEDUR TUNDA           ; 1 detik xtal 12mhz
;======================
TUNDA:  MOV R1,#00H
WIH:    MOV R0,#0h      
LAGI:   MOV TMOD,#01h
        MOV TH0,#0D8h
        MOV TL0,#0EFh
        SETB TR0
ULANG:  JBC TF0,HITUNG
        SJMP ULANG
HITUNG: INC R0
        CJNE R0,#050h,LAGI
        INC R1
        CJNE R1,#02H,WIH
        RET

 

 

 

 

 

 

 

 

 Copyright (C) anekawarna.890m.com 2007
For problems or questions regarding this web contact [admin]
Last updated: Jumat Oktober 23, 2009 16:25:29.