Professional Documents
Culture Documents
INSTRUKSI PROGRAM
/*****************************************************
http://www.hpinfotech.com
Project :
Version :
Date : 27/03/2009
Author : F4CG
Company : F4CG
Comments:
*****************************************************/
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#endasm
#include <lcd.h>
unsigned i,a,b,h,pilih;
unsigned char
led[]={0b11111110,0b11111101,0b11111011,0b11110111,0b11101111,0b1101
1111,0b10111111,0b01111111};
void main(void)
// Port A initialization
PORTA=0x00;
DDRA=0x00;
// Port B initialization
DDRB=0xFF;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
PORTD=0xFF;
DDRD=0x00;
// Timer/Counter 0 initialization
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
while (1)
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){
PORTB=0;
i++;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
state=2;
PORTB=0;
i--;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
state=2;
else if(state==2){
PORTB=0;
i++;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
PORTB=0;
i--;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
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_gotoxy(0,1);
lcd_putsf("Harga Rp 500");
delay_ms(100);
if(PIND.4==0){
pilih=2;
lcd_clear();
lcd_gotoxy(0,0);
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_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_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_gotoxy(0,1);
delay_ms(500);
if(i>5){
lcd_clear();
lcd_gotoxy(0,0);
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_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_gotoxy(0,1);
delay_ms(500);
if(i>6){
lcd_clear();
lcd_gotoxy(0,0);
lcd_gotoxy(0,1);
lcd_putsf("Kurangi Uangnya");
delay_ms(500);
}}
for(b=0;b<=7;b++){
PORTB=led[b];
delay_ms(100);
}
if(i==7){
lcd_clear();
lcd_gotoxy(0,0);
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_gotoxy(0,1);
delay_ms(500);
if(i>7){
lcd_clear();
lcd_gotoxy(0,0);
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.
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){
PORTB=0;
i++;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
state=2;
PORTB=0;
i--;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
state=2;
else if(state==2){
PORTB=0;
i++;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(data);
delay_ms(100);
PORTB=0;
i--;
a=~i;
PORTB=a;
delay_ms(100);
h=i*100;
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_gotoxy(0,1);
lcd_putsf("Harga Rp 500");
delay_ms(100);
if(PIND.4==0){
pilih=2;
lcd_clear();
lcd_gotoxy(0,0);
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_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_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_gotoxy(0,1);
delay_ms(500);
}
if(i>5){
lcd_clear();
lcd_gotoxy(0,0);
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_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_gotoxy(0,1);
if(i>6){
lcd_clear();
lcd_gotoxy(0,0);
lcd_gotoxy(0,1);
lcd_putsf("Kurangi Uangnya");
delay_ms(500);
}}
for(b=0;b<=7;b++){
PORTB=led[b];
delay_ms(100);
if(i==7){
lcd_clear();
lcd_gotoxy(0,0);
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);
delay_ms(500);
if(i>7){
lcd_clear();
lcd_gotoxy(0,0);
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.