You are on page 1of 18

LAPORAN VENDING MACHINE

INSTRUKSI PROGRAM

/*****************************************************

This program was produced by the

CodeWizardAVR V1.25.3 Standard

Automatic Program Generator

© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project :

Version :

Date : 27/03/2009

Author : F4CG

Company : F4CG

Comments:

Chip type : ATmega16

Program type : Application

Clock frequency : 11,059200 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*****************************************************/

#include <mega16.h>

#include <stdio.h>

#include <delay.h>

// Alphanumeric LCD Module functions


#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

// Declare your global variables here

unsigned i,a,b,h,pilih;

unsigned char
led[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b1101
1111,0b10111111,0b01111111};

unsigned char data[100];

void main(void)

// Declare your local variables here

unsigned char state=0;

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In


Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T


State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out


Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0


State0=0
PORTB=0x00;

DDRB=0xFF;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In


Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T


State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In


Func0=In

// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P

PORTD=0xFF;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.


// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

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: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off
// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// LCD module initialization

lcd_init(16);

while (1)

// Place your code here

if(state==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Selamat Datang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang");

delay_ms(100);

state=1;

else if(state==1){

if(PIND.2==0){ //masukkan uang

PORTB=0;
i++;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

if(PIND.7==0){ //masukkan uang

PORTB=0;

i--;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

else if(state==2){

if(PIND.2==0){ //masukkan uang lagi

PORTB=0;
i++;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

if(PIND.7==0){ //masukkan uang

PORTB=0;

i--;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

if(PIND.3==0){

pilih=1;

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Fanta Anda Pilih");

lcd_gotoxy(0,1);
lcd_putsf("Harga Rp 500");

delay_ms(100);

if(PIND.4==0){

pilih=2;

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Sprite Anda Pilih");

lcd_gotoxy(0,1);

lcd_putsf("Harga Rp 600");

delay_ms(100);

if(PIND.5==0){

pilih=3;

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Coca Anda Pilih");

lcd_gotoxy(0,1);

lcd_putsf("Harga Rp 700");

delay_ms(100);

if(PIND.6==0){

if(pilih==1){ //fanta

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);

if(i==5){

lcd_clear();
lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");

delay_ms(500);

if(i>5){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}

if(pilih==2){ //sprite

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);

}
if(i==6){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==5||i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");

delay_ms(500);

if(i>6){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}

if(pilih==3){ //coca cola

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);
}

if(i==7){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==6||i==5||i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");

delay_ms(500);

if(i>7){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}}}

};

ANALISIS PROGRAM
Pada praktikum kali ini kita akan mencoba untuk membuat analogi vending
machine yang diaplikasikan pada minsis ATMega 16. Untuk tampilannya
digunakan LCD untuk menampilkan pilihan menu dan segala aktivitas yang kita
lakukan pada vending machine.

Untuk listing program intinya adalah :

if(state==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Selamat Datang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang");

delay_ms(100);

state=1;

else if(state==1){

if(PIND.2==0){ //masukkan uang

PORTB=0;

i++;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

if(PIND.7==0){ //masukkan uang

PORTB=0;

i--;
a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

else if(state==2){

if(PIND.2==0){ //masukkan uang lagi

PORTB=0;

i++;

a=~i;

PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

if(PIND.7==0){ //masukkan uang

PORTB=0;

i--;

a=~i;
PORTB=a;

delay_ms(100);

h=i*100;

sprintf(data,"Uang Anda = %d",h);

lcd_clear();

lcd_gotoxy(0,0);

lcd_puts(data);

delay_ms(100);

state=2;

if(PIND.3==0){

pilih=1;

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Fanta Anda Pilih");

lcd_gotoxy(0,1);

lcd_putsf("Harga Rp 500");

delay_ms(100);

if(PIND.4==0){

pilih=2;

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Sprite Anda Pilih");

lcd_gotoxy(0,1);

lcd_putsf("Harga Rp 600");

delay_ms(100);

if(PIND.5==0){

pilih=3;

lcd_clear();
lcd_gotoxy(0,0);

lcd_putsf("Coca Anda Pilih");

lcd_gotoxy(0,1);

lcd_putsf("Harga Rp 700");

delay_ms(100);

if(PIND.6==0){

if(pilih==1){ //fanta

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);

if(i==5){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");

delay_ms(500);

}
if(i>5){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}

if(pilih==2){ //sprite

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);

if(i==6){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==5||i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");

lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");


delay_ms(500);

if(i>6){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}

if(pilih==3){ //coca cola

for(b=0;b<=7;b++){

PORTB=led[b];

delay_ms(100);

if(i==7){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Pas");

lcd_gotoxy(0,1);

lcd_putsf("Terima Kasih");

delay_ms(500);

if(i==6||i==5||i==4||i==3||i==2||i==1||i==0){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Kurang");


lcd_gotoxy(0,1);

lcd_putsf("Masukkan Uang Lagi");

delay_ms(500);

if(i>7){

lcd_clear();

lcd_gotoxy(0,0);

lcd_putsf("Uang Anda Lebih");

lcd_gotoxy(0,1);

lcd_putsf("Kurangi Uangnya");

delay_ms(500);

}}}}

};

Pada program inti dapat kita lihat bahwa, program dibagi menjadi tiga bagian
yaitu state 0, state 1 dan state 2. Pada program di atas dapat kita lihat bahwa
state pertama adalah bagian untuk tampilan LCD awal yang jika tidak ada
penekanan Push Button maka tampilan akan berjalan terus. Untuk state kedua
adalah bagian untuk memasukkan uang atau penekanan Push Button dan
pengurangan uang. Sementara pada state ketiga adalah bagian untuk pilihan
menu dan tampilan jika menu dipilih. Menu terdiri dari tiga yaitu fanta, sprite dan
cola. Pada program di atas jika uang kurang dari harga yang ditentukan maka
kita tidak akan bisa membeli dan mesin menyuruh kita untuk menambahkan
uang. Begitu juga bila uang kita lebih maka mesin akan menyuruh kita untuk
mengurangi uang. Setelah uang pas, maka kita bisa untuk membeli minuman.

You might also like