traffic light berbasis atmega32a
DESCRIPTION
Tugas Matakuliah Mikroprosessor dengan Dosen Bapak Drs. Dahlan Sitompul, M.EngTRANSCRIPT
1
TUGAS MIKROPROSESSOR
Traffic Light Berbasis Mikrocontroller
ATMEGA 32A
Disusun Oleh:
Ammazizzaky Tarigan (131421089)
Syahrial Affandi (131421084)
Yakhdi Perari Pinem (131421088)
Masita (131421071)
Dosen:
Dahlan RP. Sitompul
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATRA UTARA
MEDAN
2013
2
Perkembangan teknologi semakin hari semakin bertambah modern, tidak
terkecuali peralatan electronik. Hampir semua menggunakan peralatan serba otomatis,
misal smart reley/PLC. Smart reley yaitu alat yang dapat di program oleh suatu bahasa
tertentu yang digunakan pada proses otomasi. Alat ini memiliki dua tipe yakni tipe
compact dan modular. Smart reley ini memiliki fungsi yaitu pengontrol berbasis
mokrokontroler yang memanfaatkan memori yang dapat di program untuk menyimpan
instruksi dengan aturan tertentu dan dapat mengimplementasikan fungsi khhusus yakni
seperti fungsi logika, pewaktu, pencacahan. Cara kerja smart reley ini adalah memeriksa
kondisi input.
Perancangan simulasi traffic light ini dirancang secara miniatur. Dalam hal
pemrogramannya, digunakan bahasa pemrograman yaitu dengan Bahasa C, dengan
menggunakan Aplikasi Code Vision. Dari hasil pembahasan dan pengujian ” simulasi
traffic light berbasis mikrokontroler atmega32A”. Program yang dirancang sebelum
dimasukkan ke mikrokontroler terlebih dahulu dilakukan uji simulasi dan telah sesuai
dengan apa yang diperlukan. Berdasarkan uji coba yang telah dilakukan bahwa, alat ini
bekerja sesuai dengan instruksi atau program yang telah di program.
Prinsip kerja alat ini yaitu dimulai dari group satu, dimana lampu penyeberangan
akan hijau dan lampu di grup dua, grup tiga, grup empat merah dan sebaliknya di mana
di grup satu merah maka salah satu dari grup lainnya menjadi hijau.
Pendahuluan
Jumlah kendaraan bermotor dari tahun ke tahun semakin bertambah. Demikian
pula dengan kemacetan kendaraan bermotor juga mengalami kenaikan dan seringnya
terjadi kecelakaan bermotor yang disebabkan lengahnya pemilik kendaraan saat memakai
kendaraannya. Kondisi ini membuat traffic light menjadi sangat penting, maka diperlukan
suatu alat yang dapat membantu pencegah terjadinya kemacetan dan kecelakaan
3
kendaraan bermotor. Salah satunya adalah dengan menggunakan teknologi singlechip
yang sering disebut dengan mikrokontroler. Pada perancangan dan pembuatan proyek
madya alat ini dibuat berupa sistem simulasi.
Di karenakan Dewasa ini pengguna jalan meningkat dengan pesat, baik
pengendara sepeda motor maupun pengendara mobil. Dengan banyaknya kendaraan yang
melintas diperlukan suatu pengaturan di sebuah persimpangan, baik pertigaan,
perempatan dan banyak lagi. Dengan traffic light yang dipasang diharapkan tidak terjadi
kemacetan, dengan sistem yang diatur oleh lampu lalu lintas traffic light. Traffic light ini
juga mencegah terjadinya kecelakaan. Juga keadaan dari jalan tidak menentu, di pagi hari
ramai orang-orang yang berangkat bekerja atau siswa berangkat ke sekolah, saat siang
hari sedikit lengang, kemudian sore harinya mulai ramai kembali. Dengan keadaan
tersebut maka dibutuhkan traffic light untuk mengatur lalu lintas supaya berjalan lancar
Untuk membuat traffic light kita membutuhkan beberapa alat dan software
simulasi untuk perancangannya ,Dimana sistem simulasi ini menggunakan salah satu
software simulasi PROTEUS 7.9. Software yang dapat membuat simulasi dengan
mikrokontroler. Dengan adanya software ini kita bisa membuat rangkaian dengan cara
simulasi sebelum kita membuat rancangan alat hardware dalam suatu bentuk yang nyata.
1.2 Tujuan dan Manfaat
1.2.1 Tujuan
1. Merancang dan membuat alat untuk dapat bisa mengetahui cara kerja traffic light
4
2. Dapat mengetahui pemakaian software simulasi sebelum membuat hardware
sebenarnya
1.2.2 Manfaat
1. Dengan adanya software simulasi ini akan dapat memudahkan pembuatan
hardware
2. Memperoleh pengetahuan tentang software simulasi dan cara kerja traffic light
Alat dan Bahan
1. Mikrokontroller ATMEGA 32A
merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur
AVR RISC.
Secara fungsional konfigurasi pin ATMega32 adalah sebagai berikut:
a. VCC - Tegangan sumber
b. GND (Ground) - Ground
c. Port A (PA7 – PA0)
5
Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
memilki internal pull-up resistor. Output buffer port A dapat mengalirkan
arus sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up
secara langsung, maka port A akan mengeluarkan arus jika internal pull-up
resistor diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat
berfungsi sebagai channel ADC (Analog to Digital Converter) sebesar 10
bit. Fungsi-fungsi khusus pin-pin port A dapat ditabelkan seperti yang
tertera pada tabel ….
Fungsi khusus port A
Port Alternate Function
PA7 ADC7 (ADC input channel 7)
PA6 ADC6 (ADC input channel 6)
PA5 ADC5 (ADC input channel 5)
PA4 ADC4 (ADC input channel 4)
PA3 ADC3 (ADC input channel 3)
PA2 ADC2 (ADC input channel 2)
PA1 ADC1 (ADC input channel 1)
PA0 ADC0 (ADC input channel 0)
d. Port B (PB7 – PB0)
Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
mengandung internal pull-up resistor. Output buffer port B dapat
mengalirkan arus sebesar 20 mA. Ketika port B digunakan sebagai input
dan di pull-down secara external, port B akan mengalirkan arus jika internal
pull-up resistor diaktifkan.
Pin-pin port B memiliki fungsi-fungsi khusus, diantaranya :
· SCK port B, bit 7
Input pin clock untuk up/downloading memory.
· MISO port B, bit 6
Pin output data untuk uploading memory.
· MOSI port B, bit 5
Pin input data untuk downloading memory.
Fungsi-fungsi khusus pin-pin port B dapat ditabelkan seperti pada tabel
Port Alternate Function
PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input/Slave Output)
PB6 MOSI (SPI Bus Master Output/Slave Input)
PB5 SS (SPI Slave Select Input)
PB3 AIN1 (Analog Comparator Negative Input)
OCO (Timer/Counter0 Output Compare Match Output)
PB2 AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 Input)
6
PB1 T1 (Timer/Counter1 External Counter Input)
PB0 T0 (Timer/Counter External Counter Input) XCK (USART External
Clock Input/Output)
e. Port C (PC7 – PC0)
Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan
arus sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-
down secara langsung, maka port C akan mengeluarkan arus jika internal
pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port C dapat
ditabelkan seperti yang tertera pada tabel dibawah ini.
Port Alternate Function
PC7 TOSC2 (Timer Oscillator Pin 2)
PC6 TOSC1 (Timer Oscillator Pin 1)
PC6 TD1 (JTAG Test Data In)
PC5 TD0 (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-wire Serial Bus Data Input/Output Line)
PC0 SCL (Two-wire Serial Bus Clock Line)
f. Port D (PD7 – PD0)
Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan
arus sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-
down secara langsung, maka port D akan mengeluarkan arus jika internal
pull-up resistor diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat
ditabelkan seperti yang tertera pada tabel dibawah ini.
Port Alternate Function
PD7 OC2 (Timer / Counter2 Output Compare Match Output)
PD6 ICP1 (Timer/Counter1 Input Capture Pin)
PD6 OCIB (Timer/Counter1 Output Compare B Match Output)
PD5 TD0 (JTAG Test Data Out)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
2. Crystal
3. Resistor
4. Lampu Led
5. Kabel
6. IC
7. Saklar Button
8. Reset Botton
7
9. Papan PCB
10. Solder, Timah, Multitester, Tespen
11. Capasitor
Skema Desain
8
Program
9
/*******************************************************
This program was created by the
CodeWizardAVR V3.04 Evaluation
Automatic Program Generator
© Copyright 1998-2013 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : LAMPU RAMBU
Version : 1.0
Date : 05/01/2014
Author : IS9
Company :
Comments:
Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
*******************************************************/
#include <mega32a.h> // mengaktifkan library mega32a.h , karena menggunakan
atmega32a.
#include <delay.h> // mengaktifkan library fungsi penundaan
#define M1 PORTC.0 // mendefinisikan PORT C bit ke 0 sebagai M1 (Merah led
ke 1)
#define K1 PORTC.1 // mendefinisikan PORT C bit ke 1 sebagai K1 (Kuning led
ke 1)
#define H1 PORTC.2 // mendefinisikan PORT C bit ke 2 sebagai H1 (Hijau led
ke 1), dst
#define M2 PORTC.3
#define K2 PORTC.4
#define H2 PORTC.5
#define M3 PORTC.6
#define K3 PORTC.7
#define H3 PORTA.7
#define M4 PORTA.6
#define K4 PORTA.5
#define H4 PORTA.4
void a() // membuat fungsi a (lampu pertama)
{ // isi fungsi di mulai dengan buka kurung kurawal "{" , dan
di tutup dengan tutup kurung kurawal "}".
unsigned int t=8500; // mendeklarasikan variabel bernama "t" dan berjenis unsigned
int, dengan nilai awal 8500 (desimal)
unsigned int kedip=500; // mendeklarasikan variabel bernama "t" dan berjenis unsigned
int, dengan nilai awal 500 (desimal)
M1=1; // M1 (atau nama lain dari PORTC.0), di beri nilai logika 1
(biner) atau sinyal high.{karena rangkaian menggunakan active low (saat di beri logika 0,
maka led menyala, dan logika 1 maka led akan padam}
K1=1; // K1 (atau nama lain dari PORTC.1), di beri nilai logika 1
(biner) atau sinyal high.(active low di pilih untuk meringankan kerja microcontroller)
H1=0;
M2=0; //merah
K2=1; //kuning
H2=1; //hijau
M3=0;
K3=1;
H3=1;
M4=0;
K4=1;
H4=1;
delay_ms(t); // beri tunda selama t ms, nilai t telah di definisikan di
10
awal saat pendeklarasian variabel.
K1=0;
K2=1;
K3=0;
K4=1;
delay_ms(kedip); // beri tunda selama kedip ms, nilai kedip telah di
definisikan di awal saat pendeklarasian variabel.
K1=1; // led kuning di padamkan seluruhnya.
K2=1;
K3=1;
K4=1;
delay_ms(kedip);
K1=0; // di nyalakan saja led kuning ke 2 dan ke 4 (karena penyalaan
lampu yang memiliki urutan 1-3-2-4.
K2=1;
K3=0;
K4=1;
delay_ms(kedip);
}
void b()
{
unsigned int t=85000;
unsigned int kedip=500;
M1=0;
K1=1;
H1=1;
M2=1;
K2=1;
H2=0;
M3=0;
K3=1;
H3=1;
M4=0;
K4=1;
H4=1;
delay_ms(t);
K1=1;
K2=0;
K3=1;
K4=0;
delay_ms(kedip);
K1=1;
K2=1;
K3=1;
K4=1;
delay_ms(kedip);
K1=1;
K2=0;
K3=1;
K4=0;
delay_ms(kedip);
}
void c()
{
unsigned int t=85000;
unsigned int kedip=500;
M1=0;
K1=1;
H1=1;
M2=0;
K2=1;
H2=1;
M3=1;
K3=1;
H3=0;
11
M4=0;
K4=1;
H4=1;
delay_ms(t);
K1=1;
K2=0;
K3=0;
K4=1;
delay_ms(kedip);
K1=1;
K2=1;
K3=1;
K4=1;
delay_ms(kedip);
K1=1;
K2=0;
K3=0;
K4=1;
delay_ms(kedip);
}
void d()
{
unsigned int t=85000;
unsigned int kedip=500;
M1=0;
K1=1;
H1=1;
M2=0;
K2=1;
H2=1;
M3=0;
K3=1;
H3=1;
M4=1;
K4=1;
H4=0;
delay_ms(t);
K1=0;
K2=1;
K3=1;
K4=0;
delay_ms(kedip);
K1=1;
K2=1;
K3=1;
K4=1;
delay_ms(kedip);
K1=0;
K2=1;
K3=1;
K4=0;
delay_ms(kedip);
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
//Dalam program INI YANG DI JADIKAN SEBAGAI OUTPUT ADALAH SELURUH PORT C DAN NIBLE ATAS
PORT A.
// Input/Output Ports initialization
// Port A initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In
DDRA=(1<<DDA7) | (1<<DDA6) | (1<<DDA5) | (1<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) |
(0<<DDA0); //port A nibble atas di jadikan output
12
// State: Bit7=1 Bit6=1 Bit5=1 Bit4=1 Bit3=T Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) |
(0<<PORTA1) | (0<<PORTA0); //nilai awal port A adalah 0 (low)
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) |
(0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) |
(0<<PORTB1) | (0<<PORTB0);
// Port C initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) |
(1<<DDC0); //port C seluruhnya dijadikan output
// State: Bit7=1 Bit6=1 Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) |
(0<<PORTC1) | (0<<PORTC0); // nilai awal port C adalah 0 (low)
// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) |
(0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) |
(0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) |
(0<<CS00);
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 46,875 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 1,3981 s
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) |
(0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
13
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) |
(0<<OCIE0) | (0<<TOIE0);
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8)
| (0<<TXB8);
// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) |
(0<<ACIS0);
SFIOR=(0<<ACME);
// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1)
| (0<<ADPS0);
// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) |
(0<<SPR0);
// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
while (1)
{
// Place your code here
a(); // panggil fungsi a.
c(); // panggil fungsi c.
b(); // panggil fungsi b.
d(); // panggil fungsi d.
// urutan pemanggilan fungsi ini sebagai pengurutan nyala trafficlight yang di
inginkan.
}
}
Simulasi
14
(sebelum simulasi dijalankan)
(sesudah simulasi dijalankan)
15
16
17
Referensi http://akbarulhuda.wordpress.com/2010/12/10/membuat-traffict-light-sendiri-
mudah/#more-263
http://eelcorp09.blogspot.com/2009/09/1.html
http://omayib.com/?p=183
Catur Edi, Widodo. 2005. Interfacing KomputerdanMikrokontroler.Jakarta :PTElex
Media Komputindo.
Sudjadi. 2005.TeoriAplikasiMikrokontrolerEdisiPertama.Yogyakarta:GrahaIlmu.
Wasito S, B. Hermanan. 1983.PerancanganSistemdanAplikasiMikrokontroller AT
Mega16K. Bandung: PT Elex Media Komputindo.
18
Biografi Penulis
Ammazizzaky Tarigan, A.Md adalah alumni dari D3
Teknik Informatika USU dari kota Medan, setelah lulus
melanjutkan kuliah untuk mengambil S1 di Ilmu Komputer
USU. Penulis sedang bekerja sebagai Guru Teknologi
Informatika & Komputer di Yayasan Istiqlal Medan.
Syahrial Affandi, A.Md adalah alumni dari D3 Statistika
USU dari kota Medan, setelah lulus melanjutkan kuliah
untuk mengambil S1 di Ilmu Komputer USU. Penulis aktif
di organisasi keagamaan dan bekerja sebagai Perancang
Grafis di Rifandesign.
Yakhdi Perari Pinem, A.Md adalah alumni dari D3
Teknik Informatika USU dari kota Medan, setelah lulus
melanjutkan kuliah untuk mengambil S1 di Ilmu Komputer
USU. Penulis sedang bekerja sebagai pegawai di
perusahaan swasta.
Masita, A.Md adalah alumni dari D3 Teknik Informatika
USU dari kota Medan, setelah lulus melanjutkan kuliah
untuk mengambil S1 di Ilmu Komputer USU. Penulis
sedang bekerja sebagai pegawai di perusahaan swasta.