Pemograman mikrokontroler tidak sesulit yang dibayangkan. Ada beberapa bahasa pemograman Diantaranya ada yang menggunakan bahasa Assembly, bahasa C serta bahasa basic. Bahasa Basic (bascom) ini yang paling mudah. Bahasa C setingkat lebih sulit dibandingkan dengan bahasa basic, dan terakhir, Assembly merupakan bahasa pemrogrman yang paling sulit.
Mari kita belajar memporgram mikrokontroler menggunakan bahasa C.
Ada banyak program untuk menuliskan bahasa C ini, diantaranya CodevisionAVR. Kenapa penulis menggunakan CodevisionAVR, karena penulis merasa lebih mudah digunakan terutama untuk pemula. Silakan menginstal Codevision terlebih dahulu, atau unduh disini bagi yang belum punya. Setelah instalasi selesai, jalankan program CodevisionAVR.
- Menjalankan CodevisionAVR
Gambar 1
2. Pilih file – new, kemudian muncul box dialog, pilih project.
Gambar 2
Gambar 3
3. Kita diberi pilihan, apakah menggunakan wizard atau tidak. Jika iya, pilih yes.
Gambar 4
4. Akan mucul box dialog lagi, silakan pilih chip yang akan digunakan. Misalnya ATmega8535.
Gambar 5
5. Buka tab Ports. Pada bagian ini, kita diberi kesempatan untuk mengatur ports-ports yang akan digunakan. Pilih PortC sebagai output.
Gambar 6
6. Jika sudah, klik file-generate,save and Exit
Gambar 7
7. Proses menyimpan file dilakukan sebanyak 3 kali, masing-masing menghasilkan ekstensi *.C , *.prj, dan *.cwp. Simpan dengan nama file ledblink.
Gambar 8
Gambar 9
Gambar 10
8. Setelah proses meyimpan file selesai, mucul seperti dibawah ini. Disinilah kita akan menuliskan program.
Gambar 11
Berikut listing program untuk pengukuran suhu dan kelembaban, boleh dimodifikasi.
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Temp-Humidity
Version : 1.0
Date : 19/01/2011
Author : Mulyaji
Company : Yamamoto Co.
Comments:
Chip type : ATmega8535
Program type : Application
Clock frequency : 4,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
*****************************************************/
#include <mega8535.h>
#include <delay.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
// INT2: Off
GICR|=0xC0;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0xC0;
// I2C Bus initialization
i2c_init();
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf(" YAMAMOTO KEIKI");
lcd_gotoxy(0,1);
lcd_putsf("T: C");
lcd_gotoxy(8,1);
lcd_putsf("H: .%");
delay_ms(100);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
unsigned char temp1,temp2;
unsigned int temperatur,humidity;
i2c_start(); // Start Condition
i2c_write(0xE0); // Tulis ke modul DT-SENSE
i2c_write(0x00); // Perintah baca temperatur dengan resolusi 0,1
i2c_stop(); // Stop Condition
delay_ms(100); // delay 100 ms
i2c_start(); // Start Condition
i2c_write(0xE1); // Baca ke modul DT-SENSE
temp1 = i2c_read(1);
temp2 = i2c_read(0);
i2c_stop(); // Stop Condition
temperatur = (unsigned int)temp1*256 + temp2;
temperatur = temperatur - 400; //lebih 1
lcd_gotoxy(2,1);
// lcd_putchar(temperatur/1000 %10 + 0x30); //5
lcd_putchar(temperatur/100 %10 + 0x30); //1
lcd_putchar(temperatur/10 %10 + 0x30); //3
lcd_putchar('.');
lcd_putchar(temperatur %10 + 0x30); //5
delay_ms(300);
i2c_start(); // Start Condition
i2c_write(0xE0); // Tulis ke modul DT-SENSE
i2c_write(0x02); // Perintah baca kelembaban dengan resolusi 0,1
i2c_stop(); // Stop Condition
delay_ms(100); // delay 100 ms
i2c_start(); // Start Condition
i2c_write(0xE1); // Baca ke modul DT-SENSE
temp1 = i2c_read(1);
temp2 = i2c_read(0);
i2c_stop(); // Stop Condition
humidity = (unsigned int)temp1*256 + temp2; // -12
humidity= humidity - 50;
lcd_gotoxy(10,1);
// lcd_putchar(humidity/1000 %10 + 0x30);
lcd_putchar(humidity/100 %10 + 0x30);
lcd_putchar((humidity/10 %10 - 4) + 0x30);
lcd_putchar('.');
lcd_putchar(humidity %10 + 0x30);
delay_ms(250);
};
}
9. Selesai menuliskan program, selanjutnya kita meng compile untuk menghasilkan extensi *.hex
Gambar 12
10. BIla kita mengcompile, ditempat menyimpan file akan ditemukan banyak file. Yang kita butuhkan untuk diload ke mikrokontroler adalah file berekstensi *.hex . file ini dapat ditemukan didalam folder exe.
Gambar 13
Gambar 14
Berikut ini rangkaian percobaan menggunakan sensor suhu dan kelembaban( DT Sense)
Gambar 15
Demikian tutorial singkat belajar menggunakan CodevisionAVR.
Tidak ada komentar:
Posting Komentar