Вы находитесь на странице: 1из 10

1.

UVTRON
Konfigurasi Pin :

Teknik Pemrograman Dasar :


1) Buat project baru, atur CodeWizardAVR pada Chip, Ports dan LCD sesuai dengan spesifikasi trainer :
2) Atur CodeWizardAVR untuk pemrograman UV Tron :

3) Untuk konfigurasi output sensor pada CodeWizardAVR sesuaikan dengan trainer


4) List Program :
(LCD dihubungkan ke port A. Untuk praktik silahkan sesuaikan dengan konfigurasi trainer)
#include
#include
#include
unsigned
unsigned

<mega8535.h>
<stdio.h>
<delay.h>
int uvtron;
char data[16];

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x1B ;PORTA
#endasm

#include <lcd.h>

// External Interrupt 0 service routine


interrupt [EXT_INT0] void ext_int0_isr(void)
{
uvtron++;
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;

Rubah sesuai
dengan kebutuhan
atau spesifikasi
trainer

PORTD=0x00;
DDRD=0x00;

// External Interrupt(s) initialization


// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;

// LCD module initialization


lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
lcd_clear();
sprintf(data,"api = %3d",uvtron);
lcd_gotoxy(6,1);lcd_puts(data);
delay_ms(200);
};
}

5) Compile dan download program ke uC.


6) Amati hasil pembacaan uvtron dengan mendekatkan dan menjauhkan api ke arah sensor.

2. Devantech Magnetic Compass


Konfigurasi Pin Compass :

Teknik Pemrograman Dasar :


1) Buat project baru, atur CodeWizardAVR pada Chip, Ports dan LCD sesuai dengan spesifikasi trainer.
2) Atur CodeWizardAVR untuk pemrograman Compass (SDA pada PORTD.1 dan SCL pada PORTD.0)

3) List Program :
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
int kompas;
unsigned char derajat[16];
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTC
#endasm
#include <lcd.h>

// Inisialisasi i2c
int kompas_read()
{
int data;
i2c_start();
//initiate transaction
i2c_write(0xC0);
//0xC0=alamat kompas
delay_us(50);
i2c_write(0x02);
//alamat akses 16bit = 0x02-0x03
delay_us(50);
i2c_start();
//repeated start
i2c_write(0xC1);
//baca alamat 0xC0
delay_us(50);
data=i2c_read(1);
//baca MSB
data=data<<8;
data|=i2c_read(0);
//baca LSB
i2c_stop();
//generate stop
return data;
}
// Declare your global variables here
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// I2C Bus initialization
i2c_init();
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
kompas=kompas_read();
sprintf(derajat,"derajat=%d",kompas);
lcd_gotoxy(0,0);lcd_puts(derajat);
delay_ms(500);
};
}

4) Compile dan download program ke uC.


5) Amati hasil pembacaan Compass pada LCD dengan memutar-mutar arah Compass.

3. PING
Konfigurasi Pin PING Ultrasonik Sensor :

Teknik Pemrograman Dasar :


1) Buat project baru, atur CodeWizardAVR pada Chip, Ports dan LCD sesuai dengan spesifikasi trainer.
2) Pada list program di bawah, LCD ke PORTA dan input PING ke PORTB.0
3) Untuk praktik silahkan sesuaikan dengan sfesifikasi trainer
4) List Program
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
// Declare your global variables here
#define SigOut PORTB.0
#define SigIn PINB.0
#define DirSig DDRB.0
unsigned int counter;
float distance;
unsigned char Baris1[16];
unsigned char Baris2[16];
void main(void)
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

// LCD module initialization


lcd_init(16);
while (1)
{
// Place your code here
counter=0;
//Initial value
DirSig=1;
//Set as output
SigOut=1;
delay_us(5);
SigOut=0;
DirSig=0;
//Set as input
SigOut=1;
//Pullup activated
while (SigIn==0)
{}
while (SigIn==1)
{counter++;}
// V=344.424m/s
distance=(counter*0.034442);

// Untuk clock 4,0000 Mhz

//distance=(counter*0.034442)/2;

// Untuk clock 11,0592 Mhz

sprintf(Baris1,"Counter=%5d uS",counter);
sprintf(Baris2,"Jarak: %3.2f cm",distance);
lcd_gotoxy(0,0);lcd_puts(Baris1);
lcd_gotoxy(0,1);lcd_puts(Baris2);
delay_ms(200);
lcd_clear();
};
}

5)
6)

Compile dan download program ke uC.


Amati hasil pembacaan PING pada LCD dengan memberi halangan di depan sensor, ukur jarak antara
sensor dan penghalang, kemudian bandingkan dengan hasil pembacaan PING di LCD.

4. GP2D12
Konfigurasi Pin GP2D12 :

Teknik Pemrograman Dasar :


1) Buat project baru, atur CodeWizardAVR pada Chip, Ports dan LCD sesuai dengan spesifikasi trainer
2) Pada list program di bawah, LCD ke PORTC dan input GP2D12 ke PORTA.1

3) List Program
#include
#include
#include
unsigned

<mega8535.h>
<delay.h>
<stdio.h>
char data[16];

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);

// Start the AD conversion


ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 691.200 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA4;
SFIOR&=0x0F;
// LCD module initialization
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
sprintf(data,"data=%d",read_adc(1));
lcd_puts(data);
delay_ms(500);
};
}

4) Compile dan download program ke uC.


5) Amati hasil pembacaan GP2D12 pada LCD dengan memberi halangan di depan sensor.

5. Rotary Encoder (Autonic E30S4 Series)


Konfigurasi :

Teknik Dasar Pemrograman :


1) Buat project baru, atur CodeWizardAVR pada Chip, Ports dan LCD sesuai dengan spesifikasi trainer
2) Pada list program di bawah, LCD ke PORTC dan input Rotary Encoder ke PORTB.0 :

3) List Program
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
int putaran;
bit flag;
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
TCNT0=1;
if (!flag) putaran++;
else putaran--;
}

// Declare your global variables here


void main(void)
{
char xdata[4];
PORTA=0x00;
DDRA=0x00;
PORTB=0x01;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: T0 pin Rising Edge
// Mode: CTC top=OCR0
// OC0 output: Disconnected
TCCR0=0x0F;
TCNT0=0x00;
OCR0=0xC8;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
// 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);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
sprintf(xdata,"%3d", TCNT0);
lcd_gotoxy(0,0);
lcd_putsf("counter:");
lcd_puts(xdata);
lcd_gotoxy(13,0);
sprintf(xdata,"%3d", putaran);
lcd_gotoxy(0,1);
lcd_putsf("put:");
lcd_puts(xdata);
lcd_gotoxy(13,1);
};
}

4) Compile dan download program ke uC.


5) Amati hasil pembacaan Rotary Encoder pada LCD dengan memutar-mutar poros/shaft Rotary Encoder

Вам также может понравиться