Avr Kontri Db a5
-
Upload
ferly-s-atmaja -
Category
Documents
-
view
211 -
download
0
Transcript of Avr Kontri Db a5
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 1/53
1
Apa Isi Buku ini?
Pendahuluan................................................................................................... ...............2
Memperkenalkan AVR Kodebo.....................................................................................3
Keunggulan KODEBO..................................................................................................3
Konfigurasi hardware KODEBO...................................................................................4
Fitur KODEBO..............................................................................................................6
Sekilas bahasa CAVR....................................................................................................7
Bermain dan Belajar Menggunakan Kodebo...............................................................18
DAFTAR PUSTAKA..................................................................................................44
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 2/53
2
Memperkenalkan AVR Kodebo
Pendahuluan
Sudah lama teknologi digital muncul di bumi. Setelah teknologi digital hadir,
menyusul juga teknologi mikroprosesor, mikrokomputer, PLC, DCS, SCADA, dll. Di antara
perangkat embedded tersebut masih ada suatu perangkat yang sangat popular. Perangkat ini
biasanya digunakan untuk pengatur perangakat elektronika lain. Sangat cocok digunakan untuk
pembuatan prototipe suatu alat elektronik karena penggunaannya yang mudah, harganya yang
relatif murah, dan bentuknya yang simple dan praktis. Nah, mungkin untuk alasan tersebut
hadirlah teknologi mikrokontroler.
Mikrokontroler, nama yang mungkin sering kita dengar. Apalagi bagi mereka yang
sedang menggeluti bidang elektronika atau pemrograman. Sekarang apa sih mikrokontroler
itu? Apa gunanya? Kapan perlu digunakan? Dan bagaimana menggunakannya?
Mikrokontroler merupakan perangkat elektronika yang dapat digunakan untuk
mengendalikan perangkat elektronika lain dengan cara diprogram. Pemrograman ini dapat
dilakukan dengan banyak pemrogaman yang telah mendukungnya. Misalnya, Assembly, Basic,
C/C++, Pascal dsb.
Mikrokontroler type CISC clan RISC saat ini berkembang pesat. Hal ini didasarkan
pada arsitektur processor dan set instruksinya. Tipe AVR (Alfand Vegard's Risc processor)
merupakan jenis RISC, yang hampir semua instruksi dikerjakan 1 siklus, sehingga lebih cepat
waktu eksekusinya.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 3/53
3
Memperkenalkan AVR Kodebo
AVR Kodebo merupakan Development board dengan CPU Mikrokontroler
ATMega16/32/8535. Development board ini terdiri dari 32 PORT I/O bebas, dengan beberapa
perangkat I/O yang langsung terintegrasi dengan PORT Mikrokontroler. Dengan demikian user
dapat menggunakan perangkat I/O langsung dengan cara mengatur DIP Switch ke Posisi ON.
Kodebo didesain sedemikian rupa menarik dengan komponen berkualitas dan
tentunya sesuai kebutuhan para pengguna mikrokontroler. Mereka yang suka robotik, atau
yang senang bereksperimen dengan mikrokontroler. Mungkin anda yang sedang riset atau
mengerjakan sebuah prototipe sistem otomasi. Untuk beginner yang sedang belajar, atau untuk
master yang sedang melakukan pelatihan. Untuk alasan-alasan inilah hadir Kodebo yang
sungguh istimewa.
Lalu Apa Keunggulan Kodebo
1. Menggunakan Mikrokontroler jenis RISC (AVR)
2. Mendukung Mikrokontroler Atmega16/32/8535
3. Terdapat 32 saluran/channel I/O
4. Mempunyai 8 Channel ADC
5. Mendukung Banyak Bahasa Pemrograman
(Assembly/BASCOM/CVAVR/WinAVR)
6. 3 buah timer / counter
7. Osilator internal
8. Flash PEROM 16 Kb
9. EEPROM 512 byte
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 4/53
4
10. SRAM 512 byte
11. Interupsi Eksternal dan Internal
12. Port USART untuk komunikasi serial
13. Terdapat perangkat I/O terintegrasi seperti,
a. push button sebagai input
b. LCD 16x2 karakter
c. 8 LED indikator
d. L298N Driver Motor
e. Relay output
f. TSOP sebagai receiver infrared communication
g. dan sebagainya
Konfigurasi Hardware Kodebo
Kodebo dengan ATMega16 sebagai otaknya memiliki konfigurasi pin 40 kaki yang
terdiri dari masing-masing pin I/O (32 pin) serta mempunyai fungsi khusus tergantung
penggunaannya.
Tabel 1. Konfigurasi Pin ATMega16
No Nama Fungsi
1 PBO XCK/TO) Port B0 / Counter 0 / clock eksternal untuk USART
(XCK)
2 PB1 (T1) Port B1 / Counter 1
3 PB2 (INT2/AIN0) Port B2 / Input (+) Analog Komparator (AIN0) daninterupsi eksternal2 INT2
4 PB3 (OC0/AIN1) Port B3 / Input (-) Analog Komparator (AIN1) dan
output PWM0
5 PB4 (SS) Port B4 / SPI Slave Select Input (SS)
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 5/53
5
6 PB5 (MOSl) Port BS / SPI bus Master Out Slave In
7 PB6 (MISO) Port B6 / SPI bus Master In Slave Out
8 PB7 (SCK) Port B7 / sinyal clock serial SPI
9 RESET Reset mikrokontroler
10 VCC Catu daya (+)
11 GND Sinyal ground terhadap catu daya
13-
Dec
XTAL2-XTAL1 Sinyal input clock eksternal (kristal)
14 PD0 (RXD) Port D0 / Penerima data serial
15 PD1 (TXD) Port D1 / Pengirim data serial
16 PD2 (INT0) Port D2 / Interupsi eksternal 0
17 PD3 (INT1) Port D3 / Interupsi eksternal 1
18 PD4 (OC1B) Port D4 / Pembanding Timer-Counter 1 (Output PWM
19 PD5 (OC1A) Port D5 / Output PWM 1A
20 PD6 (ICP1) Port D6 / Timer-Counter 1 input
21 PD7 (OC2) Port D7 / Output PWM 2
22 PC0 (SCL) Port C0 / Serial bus clock line
23 PC1 (SDA) Port C1 / Serial bus data input-output
24-27 PC2 – PC5 Port C2 – C5
28 PC6 (TOSC1) Port C6 / Timer osilator 1
29 PC7 (TOSC2) Port C7 / Timer osilator 2
30 AVCC Tegangan ADC
31 GND Sinyal ground ADC
32 AREFF Tegangan referensi ADC
33-40 PA0 – PA7 Port A0-PortA7 à input untuk ADC (8 channel :
ADCO-ADC7)
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 6/53
6
Inilah fitur Kodebo,
1. Support ATMega16/32/8535 (ATMega16 Included)
2. External Crystal 12Mhz
3. LCD 16x2
4. 8 LED indicator
5. 1x8 Pin header (support as servo connector)
6. L298 Motor Driver
7. Relay 5V
8. TSOP (for remote Control)
9. LM35 Temperature Sensor
10. LDR Light Sensor
11. Potensiometer (for ADC Test)
12. 1 reset button
13. 4 button
14. 3 Dipswitch
15. DC connector for Adaptor
16. Tblock connector
17. 2x8 Pin header
18. ISP Connector
Sekilas tentang CVAVR
CVAVR adalah bahasa pemrograman yang menggunakan compiler C dilengkapi
lingkungan IDE (Integrated Development Environment) dan pemrogram otomatis yang
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 7/53
7
didesain untuk mikrokontroller keluarga AVR. CVAVR berjalan pada sistem operasi windows
95,98,NT 4, 2000 dan windows XP.
Lingkungan IDE dilengkapi dengan programmer untuk AVR lewat ISP yang
otomatis akan mentransfer file *.hex ke memori mikrokontroller setelah proses kompilasi file
*.c berhasil dilakukan. Programmer ISP pada CVAVR ini didesain support untuk : kit modul
STK500, Kanda System STK200+/300, Dontronics DT006, Vogel Elektronik VTEC-ISP,
Futurlec JRAVR dan MicroTronics ATCPU /Mega2000 Development Board. Selain itu juga
dilengkapi program terminal serial untuk mendebug/melihat hasil kompilasi program lewat
serial port microcontroller.
Fasilitas lain adalah library pada CVAVR didedikasikan untuk:
1. Modul LCD alpha numerik
2. I2C bus Philips
3. Sensor suhu LM75 National Semiconductor
4. SPI
5. Power Management
6. Delay
7. MMC
8. dll
Fasilitas menarik lainnya adalah dilengkapi CodeWizardAVR Automatic Program
Generator yang membimbing kita dalam menulis sintaks program. Fungsi-fungsi yang
didukung oleh codeWizardAVR ini adalah:
1. setup akses memori eksternal
2. identifikasi sumber reset pada chip
3. inisialisasi port input/output
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 8/53
8
4. inisialisasi interrupt eksternal
5. inisialisasi timer/counter
6. inisialisasi watchdog timer
7. inisialisasi UART dan interrupt serial
8. inisialisasi komparator analog
9. inisialisasi ADC
10. inisialisasi interfacing SPI
11. inisialisasi bus I2C
12. inisialisasi bus 1Wire dan sensor suhu DS1820/DS18S20
13. inisialisasi modul LCD.
Kaidah-kaidah penulisan bahasa C pada CVAVR
Penulisan program menggunakan CVAVR harus mengikuti kaidah-kaidah yang
diterapkan oleh bahasa pemrograman C karena compiler CVAVR dikembangkan
menggunakan bahasa C. Kaidah-kaidah pemrograman secara garis besar dapat diuraikan
sebagai berikut:
a. Struktur penulisan program
#include < [library1.h] > // Opsional
#include < [library2.h] > // Opsional
#define [nama1] [nilai] ; // Opsional
#define [nama2] [nilai] ; // Opsional
[global variables] // Opsional
[functions] // Opsional
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 9/53
9
void main(void) // Program Utama
{
[Deklarasi local variable/constant]
[Isi Program Utama]
}
b. Tipe data
char : 1 byte ( -128 s/d 127 )
unsigned char : 1 byte ( 0 s/d 255 )
int : 2 byte ( -32768 s/d 32767 )
unsigned int : 2 byte ( 0 s/d 65535 )
long : 4 byte ( -2147483648 s/d 2147483647 )
unsigned long : 4 byte ( 0 s/d 4294967295 )
float : bilangan desimal
array : kumpulan data-data yang sama tipenya.
c. Deklarasi variabel & konstanta
Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
Penulisan : [tipe data] [nama] = [nilai] ;
Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Penulisan : const [nama] = [nilai] ;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 10/53
10
Tambahan:
Global variabel/konstanta yang dapat diakses di seluruh bagian program.
Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.
d. Statement
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ].
Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih
dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut
juga comments / komentar.
Contoh:
suhu=adc/255*100; //contoh rumus perhitungan suhu
e. Function
Function adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])
{
[statement] ;
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 11/53
11
f. Conditional statement dan looping
if else : digunakan untuk penyeleksian kondisi
if ( [persyaratan] ) {
[statement1];
[statement2];
}
else {
[statement3];
[statement4];
}
for : digunakan untuk looping dengan jumlah yang sudah diketahui
for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) {
[statement1];
[statement2];
}
while : digunakan untuk looping jika dan salama memenuhi syarat tertentu
while ( [persyaratan] ) {
[statement1];
[statement2];
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 12/53
12
do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun
min 1 kali
do {
[statement1];
[statement2];
}
while ( [persyaratan] )
switch case : digunakan untuk seleksi dengan banyak kondisi
switch ( [nama variabel] ) {
case [nilai1]: [statement];
break;
case [nilai2]: [statement];
break;
}
g. Operasi logika dan biner
Logika
AND :&&
NOT : !
OR : ||
Biner
AND : &
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 13/53
13
OR : |
XOR : ^
Shift right: >>
Shift left : <<
Komplemen : ~
h. Operasi relasional (perbandingan)
Sama dengan : ==
Tidak sama dengan : !=
Lebih besar : >
Lebih besar sama dengan : >=
Lebih kecil : <
Lebih kecil sama dengan : <=
i. Operasi aritmatika
+ , - , * , / : tambah,kurang,kali,bagi
+= , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di
sebelah kanan operator
% : sisa bagi
++ , -- : tambah satu (increment) , kurang satu (decrement)
Contoh :
a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30
a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30x5 = 150.
a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 14/53
14
a++ ; jika nilai awal a adalah 5 maka nilai a = a+1 = 6.
a-- ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4.
Memulai CodeVisionAVR
Untuk memulai suatu projek maka pilih saja pada menu file-> New maka akan muncul gambar
berikut,
Pilihlah Project dan klik tombol OK
Selajutnya Anda dapat memilih apakah ingin menggunakan CodeWizardAVR atau
tidak. CodeWizardAVR ini berfungsi untuk membuat atau menghasilkan listing program
sesuai settingan yang Anda inginkan.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 15/53
15
Jika Anda memilih menggunakan CodeWizardAVR maka akan muncul tampilan seperti
berikut:
Nah, pada gambar tersebut ditunjukkan bahwa chip yang digunakan adalah
ATMega16, dan clock 12MHz sesuai dengan fitur yang terdapat pada Kodebo. Settingan
selanjutnya juga dapat diatur dengan menggunakan CodeWizardAVR ini. Misalnya USART,
Analog Comparator, ADC, SPI, I2C dan masih banyak lagi.
Setelah selesai melakukan pengaturan dengan CodeWizarAVR maka klik menu
“generate file, save and exit”. Kemudian beri nama file dan simpan.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 16/53
16
Setelah melakukan beberapa langkah tadi akhirnya file yang dibuat dengan
CodeWizardAVR tadi siap juga untuk di-compile, tentunya dengan penambahan program yang
anda inginkan. Berikut tampilan CVAVR yang menampilkan file ekstensi .c , library yang
digunakan, fungsi yang ada pada program dan tentunya juga menampilkan menu serta seluruh
fitur CodeVisionAVR.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 17/53
17
Jika program sudah selesai Anda dapat mencoba meng-compile nya dengan
menekan tombol compile atau shift+f9. Jika tidak ada kesalahan maka akan tampil pesan “no
error” seperti gambar berikut:
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 18/53
18
Bermain dan Belajar Menggunakan Kodebo
Menghidupkan LED
Berikut ini merupakan listing untuk menghidupkan LED sistem flip-flop. LED
dihubungkan dengan PORTC Modul Kodebo. Saklar / dip switch dibiarkan pada kondisi OFF
saja.
#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 19/53
19
while (1)
{
PORTC=0xff;
delay_ms(500);
PORTC=0x00;
delay_ms(500);
};
}
Contoh lain,
#include <mega16.h>
#include <delay.h>
void main(void)
{
DDRC = 0xFF; // PORTC digunakan sebagai output (DDR dibuat high)
while (1)
{
for (x=1;x<128;x*=2)
{
PORTC = x; // Nilai x dikeluarkan ke PORTC
delay_ms(500);
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 20/53
20
for (i=256; i>=1;i=i/2)
{
PORTC= i; // Nilai i dikeluarkan ke PORTC
delay_ms(500);
}
}
}
Menghidupkan LED dengan tombol pengaturan
Tombol pengaturan yang digunakan pada kali ini adalah menggunakan tombol push
button (micro switch). Tombol yang dimaksud adalah 4 buah tombol yang ada di samping lcd
pada Modul Kodebo. Tidak perlu susah-susah, program pada contoh ini berfungsi untuk
menghidupkan LED dengan Pola tertentu sesuai tombol yang ditekan.
#include <mega16.h>
#include <delay.h>
#define PINA.0 tombol1
#define PINA.1 tombol2
#define PINA.2 tombol3
#define PINA.3 tombol4
Void pola1(void)
{
PORTC=0xFF;
delay_ms(500);
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 21/53
21
PORTC=0x00;
delay_ms(500);
}
Void pola2(void)
{
PORTC=0b10101010;
delay_ms(500);
PORTC=0b01010101;
delay_ms(500);
}
Void pola3(void)
{
PORTC=0b11100111;
delay_ms(500);
PORTC=0b11011011;
delay_ms(500);
PORTC=0b10111101;
delay_ms(500);
PORTC=0b01111110;
delay_ms(500);
PORTC=0b10111101;
delay_ms(500);
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 22/53
22
PORTC=0b11011011;
delay_ms(500);
PORTC=0b11100111;
}
Void pola4(void)
{
for (x=1;x<128;x*=2)
{
PORTC = x; // Nilai x dikeluarkan ke PORTC
delay_ms(500);
}
for (i=256; i>=1;i=i/2)
{
PORTC= i; // Nilai i dikeluarkan ke PORTC
delay_ms(500);
}
}
void main(void)
{
DDRC = 0xFF; // PORTC digunakan sebagai output (DDR dibuat high)
PORTC=0xFF;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 23/53
23
DDRA=0x00;
PORTA=0x0F;
while (1)
{
if (tombol1==0) pola=1;
else if (tombol2==0) pola=2;
else if (tombol3==0) pola=3;
else if (tombol4==0) pola=4;
switch (pola)
{
case 1; pola1();
case 2; pola2();
case 3; pola3();
case 4; pola4();
}
}
}
Pada program tersebut LED akan menyala sesuai dengan tombol yang ditekan.
Tetapi pola LED tidak akan langsung berganti saat mikrokontroler sedang menjalankan
program pada pola yang dipilih. Untuk itu penekanan tombol mungkin butuh waktu yang agak
lama dengan tujuan menunggu saat mikrokontroler keluar dari fungsi pola yang sedang
dijalankan, kemudian mikrokontroler mengecek tombol yang sedang ditekan tadi. Pada contoh
selanjutnya akan dijelaskan interupsi yang dapat memberikan solusi terhadap hal ini.
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 24/53
24
Menampilkan karakter LCD
Menampilkan sebuah karakter, string atau kalimat bukanlah hal yang susah. Dengan
menggunakan bahasa C akan terasa lebih mudah, intruksi-intruksinya lebih mudah dipahami
dari bahasa mesin (assembly). Pada Software CodeVisionAVR juga sudah disediakan sebuah
library yang memudahkan kita untuk berkreasi dengan sebuah LCD.
Pada Board Kodebo sudah tersedia LCD 16x2, Anda tinggal mengubah posisi dip
switch yang ada pada PORTC. Untuk memulai projek Anda, pastikan dip switch PORTC pada
posisi ON.
#include <mega16.h>
#include <lcd.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
void main(void)
{
lcd_init(16);
while (1)
{
lcd_clear();
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 25/53
25
lcd_gotoxy(0,0);
lcd_putchar(" KONTRI ");
lcd_gotoxy(0,1);
lcd_putchar("ELECTRONICS");
delay_ms(100);
}
}
Menampilkan Nilai pada LCD
Untuk menampilkan suatu nilai ke LCD digunakan library stdio.h. Sebelum
ditampilkan ke LCD nilai yang akan ditampilkan perlu diubah ke string (character) dan
ditampung dalam buffer. Perintah yang digunakan adalah sprintf yang penggunaannya dapat
dilihat langsung pada listing berikut:
#include <mega16.h>
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
//Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 26/53
26
void main(void)
{
char buff[20];
unsigned char a=10, b=101;
lcd_init(16);
while (1)
{
lcd_clear();
sprintf(buff,”nilai a=%d ”,a);
lcd_gotoxy(0,0);
lcd_puts(buff);
sprintf(buff,”nilai b=%d ”,b);
lcd_gotoxy(0,1);
lcd_puts(buff);
delay_ms(100);
}
}
Aplikasi ADC dengan Kodebo
ADC (Analog to Digital Converter) merupakan alat yang berfungsi mengubah
sinyal analog menjadi sinyal digital. Dalam akuisisi data ADC biasanya berperan penting.
Banyak sensor yang outputnya masih berupa sinyal analog untuk itu perlu diubah ke dalam
bentuk digital, agar sinyal tersebut dapat diproses secara digital oleh mikrokontroler. Pada seri
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 27/53
27
AVR mikrokontroler sudah terdapat fitur ADC. Jadi Anda tidak perlu susah-susah
menambahkan ADC.
Pada AVR Kodebo sudah terdapat input analog berupa tegangan dari potensiometer,
sensor suhu LM35, dan sensor cahaya yaitu LDR. Untuk memahami konsep ADC dapat dilihat
listing berikut ini. Jangan lupa untuk memposisikan dip switch PINA pada posisi ON.
Kemudian aturlah PORTC sebagaimana pada pengaturan penggunaan LCD yang telah
dijelaskan sebelumnya.
Mengkonversi Nilai ADC sensor suhu LM35 ke Celcius
Nilai suhu yang didapat dari sensor LM35 pastinya dapat bernilai pecahan. Untuk
itu diperlukan variabel yang dapat menampun nilai pecahan yaitu float. Tidak cukup di situ,
untuk menampilkan nilai pecahan tersebut ke LCD juga diperlukan pengaturan pada menu
“Configure the Project”. Pengaturannya adalah seperti ditampilkan pada gambar berikut:
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 28/53
28
#include <mega16.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x40
char buff[20];
float suhu=0;
typedef unsigned char byte;
flash byte char0[8]={
0b0000111,
0b0000101,
0b0000111,
0b0000000,
0b0000000,
0b0000000,
0b0000000,
0b0000000};
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 29/53
29
/* function used to define user characters */
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++);
}
// Read the AD conversion result
unsigned int 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 ADCW;
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 30/53
30
float baca_suhu(void)
{
int data_adc=0;
float data_suhu=0;
data_adc=read_adc(1);
data_suhu=(data_adc*5.0/1023)*100;
return data_suhu;
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
// LCD module initialization
lcd_init(16);
// ADC initialization
// ADC Clock frequency: 187,500 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 31/53
31
define_char(char0,0);
while (1)
{
suhu=baca_suhu();
hitung_pid();
sprintf(buff,"suhu=%0.2f",suhu);
lcd_gotoxy(0,0);
lcd_puts(buff); lcd_putchar(0); lcd_putsf("C");
};
}
Mengenal Driver Motor L298D
L298D merupakan IC driver motor yang di dalamnya terdapat dua kanal. Setiap
kanalnya mempunyai 2 input logic, 1 input enable (dapat digunakan untuk input pwm), dan
output yang perlu dirangkai dengan dioda (H-Bridge) sebelum masuk ke beban/motor. Adapun
tabel kebenaran IC L298D adalah sebagai berikut:
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#define dir1 PORTD.6
#define dir2 PORTD.7
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 32/53
32
#define tbl_run PINA.0
#define tbl_cw PINA.1
#define tbl_ccw PINA.2
#define tbl_stop PINA.3
void kanan(void)
{
dir1=0;
dir2=1;
PORTD.4=1;
}
void kiri(void)
{
dir1=1;
dir2=0;
PORTD.4=1;
}
void jalan(void)
{
PORTD.4=1;
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 33/53
33
void berhenti(void)
{
PORTD.4=0;
}
void main(void)
{
DDRA=0x00;
PORTA=0x0F;
DDRD=0xF0;
PORTD=0x00;
delay_ms(100);
while (1)
{
if (!tbl_run) jalan();
else if (!tbl_cw) kanan();
else if (!tbl_ccw) kiri();
else if (!tbl_stop) berhenti();
}
}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 34/53
34
Mengendalikan Relay 5V
Dalam dunia elektronika, relay dikenal sebagai komponen yang dapat
mengimplementasikan logika switching. Sebelum tahun 70an, relay merupakan “otak” dari
rangkaian pengendali. Baru setelah itu muncul PLC yang mulai menggantikan posisi relay.
Relay yang paling sederhana ialah relay elektromekanis yang memberikan pergerakan mekanis
saat mendapatkan energi listrik. Secara sederhana relay elektromekanis ini didefinisikan
sebagai berikut :
-Alat yang menggunakan gaya elektromagnetik untuk menutup (atau membuka) kontak saklar.
-Saklar yang digerakkan (secara mekanis) oleh daya/energi listrik.
Nah, melihat pentingnya sebuah relay dalam dunia elektronika maka AVR Kodebo
menghadirkan sebuah relay 5V. Relay tersebut dikendalikan oleh sebuah transistor NPN
C9013. Jadi untuk mengaktifkan relay diperlukan tegangan 5V atau logika 1 pada
mikrokontroler. Berikut ini diberikan contoh pengendalian relay dengan 2 buah tombol yang
berfungsi menghidupkan dan mematikan relay.
Mengenal Interupsi
Interupsi adalah kondisi yang memaksa mikrokontroler menghentikan sementara
eksekusi program utama untuk mengeksekusi rutin interrupt tertentu / Interrupt Service
Routine (ISR) Setelah melaksanakan ISR secara lengkap, maka mikrokontroler akan kembali
melanjutkan eksekusi program utama yang tadi ditinggalkan. Pada mikrokontroler jenis AVR
terdapat 21 sumber interupsi, di antaranya seperti ditunjukkan tabel berikut:
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 35/53
35
Pada contoh sederhana, akan diperagakan bagaimana mengaktifkan interupsi
eksternal. dapat diamati listing berikut.
-Membuat Pewaktu berbasis timer 1 detik
Mengambil data remote TV
Perlu diketahui remote TV mempunyai protocol yang berbeda. Misalnya Philips
dengan sony akan saling berbeda protokolnya. Remote yang digunakan pada aplikasi ini adalah
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 36/53
36
jenis Sony. Jadi jika Anda menggunakan remote Philips, program tidak akan bekerja. Sebagai
penerima telah tersedia TSOP1738 pada Modul AVR Kodebo. Sensor tersebut bekerja pada
frekuensi 38Khz.
Pulsa yang digunakan pada protocol sony (SIRF) dapat dijelaskan pada gambar di bawah ini:
Dengan melihat gambar tersebut kita tahu satu frame data yang dikirim oleh remot
terdiri dari 1 bit start, 7 bit command, dan 5 bit address. Command menjelaskan tombol yang
ditekan, sedangkan address menerangkan device yang digunakan. Adapun untuk kejelasan
dapat dilihat pada tabel berikut:
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 37/53
37
Tabel Address Remot Sony
Address Device
1 TV
2 VCR 1
3 VCR 2
6 Laser Disc Unit
12 Surround Sound
16 Cassette deck / Tuner
17 CD Player
18 Equalizer
Tabel Command Remot Sony
Command Function
0 Digit key 1
1 Digit key 2
2 Digit key 3
3 Digit key 4
4 Digit key 5
5 Digit key 6
6 Digit key 7
7 Digit key 88 Digit key 9
9 Digit key 0
16 Channel +
17 Channel -
18 Volume +
19 Volume -
20 Mute
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 38/53
38
21 Power
22 Reset
23 Audio Mode
24 Contrast +
25 Contrast -
26 Colour +
27 Colour -
30 Brightness +
31 Brightness -
38 Balance Left
39 Balance Right
47 Standby
Listing Program Aplikasi Remot Sony
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
char lcd_buffer[30];
#define ENABLE_INT0 GICR |= 0x40
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 39/53
39
#define DISABLE_INT0 GICR &= ~0x40
#define INPUT DDRD.2=0
unsigned int read_IR (void);
unsigned char count, code, address;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
unsigned int IR_input;
DISABLE_INT0; //matikan interupt
INPUT; //sebagai input
TCNT0=0; //kosongkan nilai timer/counter0
while(PIND.2==1); //ulangi terus sampai PIND.2=0
count = TCNT0; //ambil nilai Timer
if(count < 24) //to verify start pulse (2.4 ms long)
{
delay_ms(20);
ENABLE_INT0;
return; //kembali keprogram utama
}
IR_input = read_IR (); //ke fungsi read_IR
code = (unsigned char) ((IR_input & 0xff00) >> 8);
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 40/53
40
address = (unsigned char) (IR_input & 0x00ff);
ENABLE_INT0; //sebagai interupt lagi
}
unsigned int read_IR (void)
{
unsigned char pulseCount=0, codeIR = 0, addressIR = 0, timerCount;
unsigned int IR_input;
while(pulseCount < 6)
{
while(PIND.2==0); //stay here until PIND.2!=0
TCNT0 = 0;
while(PIND.2==1); //stay here if PIND.2=1
pulseCount++;
timerCount = TCNT0;
if(timerCount > 8) //8*0.0853=0.6824ms
codeIR = codeIR | (1 << (pulseCount-1));
else
codeIR = codeIR & ~(1 << (pulseCount-1));
}
pulseCount = 0;
while(pulseCount < 5)
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 41/53
41
{
while(PIND.2==0); //stay here until PIND.2!=0
TCNT0 = 0;
while(PIND.2==1); //stay here if PIND.2=1
pulseCount++;
timerCount = TCNT0;
if(timerCount > 8)
addressIR = addressIR | (1 << (pulseCount-1));
else
addressIR = addressIR & ~(1 << (pulseCount-1));
}
IR_input = (((unsigned int)codeIR) << 8) | addressIR;
return(IR_input);
}
void port_init()
{
DDRD = 0x00;
}
//timer0 init
void timer0_init()
{
//8-bit timer for measuring delay between IR pulses
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 42/53
42
TCCR0 = 0x05; //CLK / 1024 0.0853ms
TCNT0 = 0; //reset the timer
}
void int0_init()
{
MCUCR=0x03; //transisi naik
ENABLE_INT0;
}
void main(void)
{
port_init();
timer0_init();
int0_init();
// Global enable interrupts
#asm("sei")
// LCD module initialization
lcd_init(16);
while(1)
{
lcd_clear();
sprintf(lcd_buffer,"code%i address%i",code,address);
lcd_puts(lcd_buffer);
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 43/53
43
delay_ms(50);
};
}
Mengakses Keypad Matrix 4x4
Pada bab ini Anda harus menggabungkan listing berikut dengan program yang
sudah anda sebelumnya. Karena program berikut hanya berisi fungsi yang dapat digunakan
untuk mengakses fungsi keypad. Ada baiknya jika Anda menggabungkan fungsi keypad ini
dengan progarm yang berfungsi untuk menampilkan nilai keypad yang sedang ditekan.
#define kolom PORTA
#define baris PINA
unsigned char get_keypad()
{
unsigned char data, i, j;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 44/53
44
data=16;
for (j=0; j<4; j++)
{
kolom=0xff;
kolom&=~(1<<j);
delay_ms(5);
for (i=0; i<4; i++)
{
if(baris &(1<<i+4))
{
data=i+(4*j)
delay_ms(50);
return data;
}
}
}
return data;
}
Aplikasi Seven Segment dan RTC DS1307
DS1307 merupakan chip atau ic RTC (Real Time Clock) yang dapat difungsikan sebagai jam
digital. Untuk megakses informasi jam, menit, detik, tanggal, bulan, dansebagainya perlu
digunakan sistem komunikasi i2c. Sistem komunikasi ini mengijinkan perangkat
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 45/53
45
master(mikrokontroler) untuk mengakses slave (DS1307) melalui dua jalur bus yaitu SDA dan
SCL.
Seven Segment yaitu papan yang terdiri dari 7 segmen membentuk angka dan dapat menyala
dengan adanya beberapa buah LED di dalamnya. Kali ini Anda dapat membuat jam digital
sendiri dengan adanya modul AVR KODEBO. Hanya dengan mengatur koneksi shift register
IC 4094 yang ada di blok seven segmen modul AVR KODEBO. Di samping itu Anda juga
harus mengatur koneksi modul RTC dengan port mikrokontroler. Untuk contoh program dapat
dilihat pada tulisan berikut:
Program Jam Digital
#include <mega16.h>
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=6
.equ __scl_bit=7
#endasm
#include <i2c.h>
#include <ds1307.h>
#include <delay.h>
#define on 1
#define posisi_alarm 1
#define posisi_jam 0
#define sw_setting PIND.2
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 46/53
46
#define sw_alarm PIND.3
#define tombol_set PIND.4
#define tombol_down PIND.5
#define tombol_up PIND.6
#define shift_register_hi PORTB|=(1<<2)
#define shift_register_lo PORTB&=~(1<<2)
#define clock_register_hi PORTB|=(1<<1)
#define clock_register_lo PORTB&=~(1<<1)
#define serial_register_hi PORTB|=(1<<0)
#define serial_register_lo PORTB&=~(1<<0)
unsigned char jam, menit, detik;
signed char jam_alarm,menit_alarm;
eeprom unsigned char eep_jam_alarm, eep_menit_alarm;
flash unsigned char font[]={
0b11000000,//0
0b11111001,//1
0b10100100,//2
0b10110000,//3
0b10011001,//4
0b10010010,//5
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 47/53
47
0b10000010,//6
0b11111000,//7
0b10000000,
0b10010000,
};
void clock_4094()
{
clock_register_hi;
clock_register_lo;
}
void kirimbyte4094(unsigned char dataled)
{
if (dataled & (1<<7)) serial_register_hi;else serial_register_lo;
clock_4094();
if (dataled & (1<<6)) serial_register_hi; else serial_register_lo;
clock_4094();
if (dataled & (1<<5)) serial_register_hi; else serial_register_lo;
clock_4094();
if (dataled & (1<<4)) serial_register_hi; else serial_register_lo;
clock_4094();
if (dataled & (1<<3)) serial_register_hi; else serial_register_lo;
clock_4094();
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 48/53
48
if (dataled & (1<<2)) serial_register_hi; else serial_register_lo;
clock_4094();
if (dataled & (1<<1)) serial_register_hi; else serial_register_lo;
clock_4094();
if (dataled & (1<<0)) serial_register_hi; else serial_register_lo;
clock_4094();
}
void tampil(unsigned char data0, unsigned char data1)
{
if (data0==255)
{
kirimbyte4094(255);
kirimbyte4094(255);
}
else
{
kirimbyte4094(font[data0/10]);
kirimbyte4094(font[data0%10]);
}
if (data1==255)
{
kirimbyte4094(255);
kirimbyte4094(255);
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 49/53
49
}
else
{
kirimbyte4094(font[data1/10]);
kirimbyte4094(font[data1%10]);
}
shift_register_hi;
delay_ms(10);
shift_register_lo;
}
void setting_alarm(void)
{
rtc_get_time(&jam,&menit,&detik);
jam_alarm=eep_jam_alarm;
menit_alarm=eep_menit_alarm;
while(1)
{
tampil(255,menit_alarm);
delay_ms(500);
tampil(255,menit_alarm);
delay_ms(400);
if (tombol_up==0) {delay_ms(100); jam_alarm++;}
if (tombol_down==0) {delay_ms(100); jam_alarm--;}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 50/53
50
if (jam_alarm>23) jam_alarm=0;
else if (jam_alarm<0)jam_alarm=23;
if (tombol_set==0) {delay_ms(100); break;}
}
while(1)
{
tampil(jam_alarm,menit_alarm);
delay_ms(500);
tampil(jam_alarm,255);
delay_ms(400);
if (tombol_up==0) {delay_ms(100); menit_alarm++;}
if (tombol_down==0) {delay_ms(100); menit_alarm--;}
if (menit_alarm>59) menit_alarm=0;
else if (menit_alarm<0)menit_alarm=59;
if (tombol_set==0) {delay_ms(100); break;}
}
}
void setting_rtc(void)
{
signed char jam_set,menit_set;
rtc_get_time(&jam,&menit,&detik);
jam_set=jam;
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 51/53
51
menit_set=menit;
while(1)
{
tampil(jam_set,menit_set);
delay_ms(500);
tampil(255,menit_set);
delay_ms(400);
if (tombol_up==0) {delay_ms(100); jam_set++;}
if (tombol_down==0) {delay_ms(100); jam_set--;}
if (jam_set>23) jam_set=0;
else if (jam_set<0)jam_set=23;
if (tombol_set==0) {delay_ms(500); break;}
}
while(1)
{
tampil(jam_set,menit_set);
delay_ms(500);
tampil(jam_set,255);
delay_ms(400);
if (tombol_up==0) {delay_ms(100); menit_set++;}
if (tombol_down==0) {delay_ms(100); menit_set--;}
if (menit_set>59) menit_set=0;
else if (menit_set<0)menit_set=59;
if (tombol_set==0) {delay_ms(500); break;}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 52/53
52
}
rtc_set_time(jam_set, menit_set, 0);
}
void main(void)
{
unsigned char detik_now;
DDRB=0xFF;
PORTB=0x00;
DDRD=0x01;
PORTD=0xFE;
i2c_init();
//rtc_init(0,0,0);
while (1)
{
// Place your code here
rtc_get_time(&jam,&menit,&detik);
if (detik_now!=detik) {PORTB.3=0; delay_ms(400);} else PORTB.3=1;
detik_now=detik;
tampil(jam,menit);
delay_ms(100);
if (sw_alarm==on)
{
if (jam==jam_alarm && menit==menit_alarm && detik==0) {}
5/17/2018 Avr Kontri Db a5 - slidepdf.com
http://slidepdf.com/reader/full/avr-kontri-db-a5 53/53
53
}
if (tombol_set==0 && sw_setting==posisi_alarm) {delay_ms(500); setting_alarm();}
if (tombol_set==0 && sw_setting==posisi_jam) {delay_ms(500); setting_rtc();}
};
}
DAFTAR PUSTAKA
http://kontri-electronics.com/