Subscribe! Follow me! Add me Facebook! Plus me Google!

Sunday, March 18, 2012

Membuat Karakter Sendiri Pada LCD 16X2 Menggunakan CVAVR

LCD adalah suatu display dari bahan cairan Kristal yang pengoperasiannya menggunakan system dot matriks. LCD banyak digunakan sebagai display dari alat – alat elektronik seperti kalkulator, multitester digital, jam digital dan sebagainya.
Dalam pembahasan kali ini bahwa kita dapat membuat karakter sendiri pada LCD 16X2 menggunakan Codevision AVR seperti bentuk Pacman, tampilan seperti pesawat pada Game Watch,dan selanjutnya menurut kreasi kita masing - masing.

Berikut tampilan karakter berbentuk Pesawat Game Watch :




Berikut tampilan karakter berbentuk Pacman :



Berikut videonya :




Dan ini potongan listing programnya :

#include
#include

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include


// Declare your global variables here
typedef unsigned char byte;
/* table for the user defined character
arrow that points to the top right corner */
flash byte char0[8]={
0b0000111,
0b0001110,
0b0011100,
0b1111000,
0b1111000,
0b0011100,
0b0001110,
0b0000111,
};
flash byte char1[8]={
0b0000110,
0b0001111,
0b0011111,
0b1111111,
0b1111111,
0b0011111,
0b0001111,
0b0000110,
};
flash byte char2[8]={
0b1110000,
0b0111000,
0b0001110,
0b1111111,
0b1111111,
0b0001110,
0b0111000,
0b1110000,
};
flash byte char3[8]={
0b0000000,
0b0000000,
0b0000000,
0b0001110,
0b0001110,
0b0000000,
0b0000000,
0b0000000,
};
flash byte char4[8]={
0b0001000,
0b0010010,
0b0000101,
0b0000110,
0b0010010,
0b0001011,
0b0010100,
0b0001001,
};

void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
int x,y;
void menu()
{
lcd_gotoxy(0,0);
lcd_putchar(0);
lcd_gotoxy(1,0);
lcd_putchar(1);
lcd_gotoxy(2,0);
lcd_putchar(2);
lcd_gotoxy(3,0);
lcd_putchar(3);
}
void main(void)
{
lcd_init(16);
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
while (1)
{
menu();
};
}

Saturday, March 17, 2012

Belajar Mikrokontroler AVR AT Mega16 Menggunakan CVAVR



Hal pertama yang harus dilakukan dalam mempelajari mikrokontroler avr adalah kenali bentuk fisik dan fungsinya. banyak tutorial yang membahas fungsi ditiap pin pada mikrokontroler.
Disini yang kita bahas adalah jenis AVR ATMega16. berikut adalah fitur - fitur pada ATMega 16 :

1. Mikrokontroler 8 bit yang memiliki kemampuan tinggi, dengan daya rendah.

2. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16 Mhz.

3. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 byte dan SRAM 1 Kbyte.

4. Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C, dan Port D.

5. CPU yang terdiri atas 32 register.

6. Unit Interupsi internal dan eksternal.

7. Port USART untuk komunikasi serial AVR.


Untuk fungsi selengkapnya bisa dilihat disini :

ATMega16.pdf


Pemrograman Mikrokontroler

Tanpa program, mikrokontroler sesungguhnya tidak dapat berbuat apa-apa. Dengan kata lain, program merupakan salah satu bagian penting yang mengatur mikrokontroler agar melakukan aksi yang sesuai dengan yang dikehendaki oleh pembuatnya (programmer).
Pengembangan sebuah system menggunakan mikrokontroler AVR buatan ATMEL menggunakan software AVR STUDIO dan CodeVision AVR. AVRSTUDIO merupakan software khusus untuk bahasa assembly. Sedangkan CodeVisison AVR merupakan software V-cross compiler, dimana program dapat ditulis dalam bahasa C.
Dibawah ini adalah tahapan untuk memulai pemrograman CVAVR.

1. Buka Codevision AVR.
2. Pilih create a new file or project
3.


4.


5. tertera pada gambar untuk pemilihan chip dan clock yang digunakan.


6. Kemudian pilih menu file - Generate Save and Exit.

Berikut contoh program sederhana dan untuk memulai pemrograman mikrokontroler menggunakan CVAVR :

#include //include untuk jenis mikrokontroler yg kita gunakan
#include //include untuk delay ata jeda waktu yg diinginkan
#include //include untuk standar input output atau biasanya digunakan untuk perintah cetak karakter/kalimat,input karakter/kalimat.
#include //biasanya diikuti dengan pendeklarasian PORT yg digunakan

void main(void)
{
PORTA=0xFF;
DDRA=0x00; //0x00 inisialisasi sebagai PIN input, dipakai pada seleksi kondisi
PORTB=0x00;
DDRB=0xFF; //0xFF
inisialisasi sebagai PORT output
while(1) //secara lisannya,"while tidak akan berhenti selama angka 1 itu tidak berubah"
{
if(PINA.0==1) //untuk seleksi kondisi penulisan menggunakan "PIN" BUKAN PORT
PORTB=0x01; //output bahwa PORTB.1=1;
};