Tipe-tipe data disediakan untuk menyimpan data yang akan diproses. Secara umum, program menyimpan data di dalam variables. Jenis data yang dapat dimiliki oleh variables pada program ditentukan oleh tipe data. Tipe data ditempelkan pada variables pada saat deklarasinya dan akan tetap melekat selama siklus hidup program tersebut. Tipe data mengindikasikan suatu variables. Mengindikasikan informasi apa yang disimpan pada variable, jumlah memori (bytes) yang dapat dialokasikan untuk menyimpan data dalam variables, dan operasi-operasi valid yang dapat dijalankan oleh variables tersebut. Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan nilai yang tetap. Variabel menyatakan nilai yang dapat diubah-ubah selama eksekusi berlangsung. Berdasarkan jenis/tipenya, data dapat dibagi menjadi lima kelompok, yang dinamakan sebagai tipe data dasar. y y y y y Bilangan bulat (integer) int (short int, long int, signed int, unsigned int) Bilangan real presisi-tunggal float Bilangan real presisi-ganda Karakter char Tak-bertipe (void), double
Penulisan pendefinisian variable dan konstanta unsigned char data,data1; float data2; int data3; int data_array[5]={0,1,2,3,4}; char data_array2[3];
DEKLARASI ARRAY
Variable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variable array c di atas adalah : int c[7]; Perlu diperhatikan bahwa C secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variable array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya; Int c[7] = {-45, 0, 6, 72, 1543, 43, 4} Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal. Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori: int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31}; Contoh penggunaan array
//prog LED berjalan #include<mega8535.h> #include<delay.h> void main(void) { char urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; char i; DDRC=0xff; //sebagai output dihubungkan dengan led PORTC=0Xff;
while(1) { for(i=0;i<8;i++) { PORTC=urutan[i]; //mengambil data dari array urutan, i sebagai indeks delay_ms(500); } } }
eeprom
unsigned char eeprom ee_Mode; unsigned char eeprom ee_array[5]={0}; EEPROM (Electricaly Erasable Programmable ROM) - Data pada EEPROM dapat diisi, dihapus atau dirubah secara random dan individual dirangkaian, seperti halnya RAM, tetapi data tetap tersimpan meskipun catu padam. Contoh penggunaan eeprom;
#include<mega8535.h> #include<delay.h> unsigned char eeprom ee_data; unsigned char data; void main(void){ DDRB=0xff; //portb sebagai output dihubungkan dengan led
DDRA=0x00; //sebagai input berupa tombol PORTB=0xff; PORTA=0xff; while(1){ PORTB= ee_data; if(PINA.0==0){ delay_ms(100);ee_data =0xf0;}; if(PINA.1==0){ delay_ms(100);ee_data =0x0f;};} //matikan led di portb //pull up
Dari datasheet akan kita peroleh informasi-informasi seperti ini : Fungsi pin yang terdapat pada LCD ditunjukkan seperti pada Tabel 1
Modul LCD memiliki karakteristik sebagai berikut: Terdapat 16 x 2 karakter huruf yang bisa ditampilkan. Setiap huruf terdiri dari 5x7 dot-matrix cursor. Terdapat 192 macam karakter. Terdapat 80 x 8 bit display RAM (maksimal 80 karakter). Memiliki kemampuan penulisan dengan 8 bit maupun dengan 4 bit. Dibangun dengan osilator lokal. Satu sumber tegangan 5 volt. Otomatis reset saat tegangan dihidupkan.
Bekerja pada suhu 0oC sampai 55oC. Dalam codevision avr, lcd 16x2 diakses dengan 4bit.
lcd_putsf("Ngetes LCD"); //menampilkan tulisan Ngetes LCD lcd_gotoxy(0,1); // kebaris ke 2 y=1 lcd_putsf("Program C & AVR"); delay_ms(500); x=1;y=1; ulang: hasil=x+y; lcd_clear(); lcd_gotoxy(0,0); sprintf(lcd_buffer,"hsl:%i",hasil); lcd_puts(lcd_buffer); lcd_gotoxy(8,0); sprintf(lcd_buffer,"hsl-1:%i",hasil_1); lcd_puts(lcd_buffer); lcd_gotoxy(0,1); sprintf(lcd_buffer,"hsl-2:%i",hasil_2); lcd_puts(lcd_buffer); hasil_2=hasil_1; hasil_1=hasil; x++; delay_ms(500); goto ulang; } //======================================================================= //kelabel ulang //label ulang
Pada program diatas, terdapat beberapa perintah.. #include <lcd.h> //meng-include kan fungsi-fungsi lcd
// Alphanumeric LCD Module functions bisa di copy dari codeWizard CAVR // inisialisasi lcd dipasang diport mana #asm .equ __lcd_port=0x15 ;PORTC #endasm lcd_init(16); //inisialisasi lcd, yang digunakan adalah 16 baris
//meng-clear lcd, menulis kosong di lcd //melompat ke kolom x dan baris y (x,y adalah nilai) //menuliskan ke lcd, apa yang tertulis di dalam tanda petik dua, baik itu spasi
sprintf(lcd_buffer,"hsl-1:%i",hasil_1); lcd_puts(lcd_buffer);
perintah-perintah dalam menampilkan di lcd, %i = variable yang ditampilkan berupa integer %c=variable yang ditampilkan berupa caracter Contoh
#include <mega8535.h> #include <lcd.h> #include <stdio.h> #include <delay.h> // Alphanumeric LCD Module functions bisa di copy dari codeWizard CAVR #asm .equ __lcd_port=0x15 ;PORTC #endasm unsigned char tulis[5]={ m , i , c , r , o }; unsigned char i; void main(void){ lcd_init(16); // inisialisasi lcd, kolom modul lcd =16. while(1){ for(i=0;i<5;i++){ lcd_clear(); lcd_gotoxy(i,0); // ke kolom x=0 dan baris y=0 sprintf(lcd_buffer,"%c",tulis[i]); lcd_puts(lcd_buffer); delay_ms(200);}}}
operasi-operasi valid yang dapat dijalankan oleh variables tipe data. Gunakan yang sesuai, pemilihan data memepengaruhi memory yang dipakai dan ketelitian. Contoh kasus
#include <mega8535.h> #include <lcd.h> #include <stdio.h> #include <delay.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm unsigned char data1=9; signed char data2=-10; int data; float data3; void main(void){ data1=data1+data2; lcd_init(16); lcd_clear(); lcd_gotoxy(0,0); sprintf(lcd_buffer,"hasilnya=%i",data1); lcd_puts(lcd_buffer); delay_ms(200); data=data1/2; lcd_clear(); sprintf(lcd_buffer,"9/2=%i",data); lcd_puts(lcd_buffer); delay_ms(200); data=20.4; lcd_clear();
dot matriks
Dot matrik 5 x7 memilki arti bahwa 1 dot matrik berukuran 5 kolom x 7 baris susunan LED. Jadi 1 dot matriki terdapat 35 buah LED. Berikut adalah ilustrasi 3 buah dot matrik yang sudah terpakai untuk menampilkan beberapa karakter.
Setiap karakter antar dot matrik sebaiknya diberi spasi agar karakter yang tampil terlihat jelas dan tidak tampak berdekatan. Dalam setiap display dotmatrik selalu terdapat istilah baris dan kolom. Jumlah baris selalu sama dengan 7. Tapi jumlah kolom tergantung dari banyak nya dot matriks yang di pasang. Prinsip kerja dot matrik sebenarnya menggunakan system Scanning kolom. Scanning kolom adalah pada satu waktu dari sekian banyak kolom pada gambar 1 hanya satu kolom yang menyala merah. Karena proses pengulangan penyalaan kolom dari kolom 1 sampai kolom 15 begitu cepat dan berulang-ulang maka huruf A tampak nyala bersamaan. Proses scanning kolom yang cepat menipu mata atau penglihatan manusia sehingga mata menangkap huruf A seolah-olah menyala
secara bersamaan. Apabila proses scanning kolom dipelankan sampai mata dapat melihat, maka pergeseran penyalaan kolom akan terlihat satu persatu. Contoh program
#include <mega8535.h> #include <delay.h> unsigned char kolom[5]={0b00000001, 0b00000010, 0b00000100, 0b00001000,0b00010000}; unsigned char baris[5]={0b11000000, 0b10110111, 0b10110111, 0b10110111,0b11000000}; char i; void tampil(){ for(i=0;i<5;i++){ PORTB=kolom[i]; PORTD=baris[i]; delay_ms(1);}} void main(void){ DDRB=DDRD=0xff;PORTD=0xff;PORTB=0x00; while(1){ tampil();} }
Tugas untuk di rumah,, Berhubung pada pertemuan ini, banyak temen-temen yang mengikuti TO, diberikan tugas dirumah, jika dapat mengerjakan dengan benar, akan di anggap hadir, tugas di kumpul pertemuan selanjutnya. Untuk yang pada pertemuan ini hadir dan dapat mengerjakan tugas ini, akan mendapat nilai tambah. 1. 2. Buatlah program menjalankan tampilan di lcd 16x2. Tampilannya belajar bareng di Micro club dte Tapi dengan catatan tulisannya bergerak kekanan dan kekiri. Buatlah tulisan di dot matrik, cukup gunakan satu saja, dengan tampilan micro dte , ditampilkan bergantian,, m >>> i >>> c >>> r >>> 0 >>> [spasi] >>> d >>> t >>> e
Tugas bonus,, tugas bonus, jika dikerjakan, nilai ujian akan ditambah dengan 10 (nilai ujian range 100), Buat lah program dot matrik, dengan mengguakan 5 buah dot matriks, dengan menampilkan tulisan berjalan asyiknya belajar bareng di micro club dte
Selamat mengerjakan...