OLEH
1
JOB 1
PENGAKTIFAN LED DENGAN PROTEUS
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan LED dengan berbagai variasi ini, mahasiswa
dapat :
1. memahami cara pengoperasian system mikrokontroler AVR Atmega 8535
menggunakan Proteus Isis
2. mengoperasikan system mikrokontroler AVR Atmega 8535
3. mengoperasikan Proteus Isis sebagai media simulasi program
Landasan Teori
D1
R1
Gambar 1. Rangkaian tampilan deret LED menggunakan Proteus 330R
LDE2
D-GREEN
U1 R2
1 40
PB0/T0/XCK PA0/ADC0 330R
2 39 LDE3
D-GREEN
PB1/T1 PA1/ADC1
3 38 R3
PB2/AIN0/INT2 PA2/ADC2
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4 330R
6 35 LDE4
D-GREEN
PB5/MOSI PA5/ADC5
7 34 R4
PB6/MISO PA6/ADC6
8 33
PB7/SCK PA7/ADC7
330R
14 22 LDE5
D-GREEN
PD0/RXD PC0/SCL
15 23
16
PD1/TXD PC1/SDA
24
R5
PD2/INT0 PC2
17 25
PD3/INT1 PC3 330R
18 26 LED-GREEN
PD4/OC1B PC4
19 27
C1 20
PD5/OC1A PC5
28
D6
PD6/ICP1 PC6/TOSC1 R6
21 29
PD7/OC2 PC7/TOSC2
VCC 330R
22pF 13 LDE7
D-GREEN
XTAL1
X1 12 32
XTAL2 AREF R7
CRYSTAL 9 30
C2 RESET AVCC
330R
ATMEGA8535 LDE8
D-GREEN
VCC R8
22pF
330R
LED-GREEN
R9
GND
330
RESET BUTTON
GND
2
Langkah Kerja
Cara Membuat Proyek Baru
Buka program Codevision AVR dengan cara klik ganda ikon CVAVR pada
desktop atau dengan cara klik Start Programs CodeVisionAVR Evaluation
CodeVision AVR C Compiler. Pada menu File pilih New, kemudian pada jendela Create
New File pilih Project dan kilik OK. Untuk membuat proyek baru tanpa bantuan
CodeWizardAVR klik No pada Jendela yang muncul berikutnya.
Setelah itu pilih direktori untuk menyimpan proyek yang akan dibuat, misalnya pada
direktori.”D\CobaCAVR\”, kemudian isi nama proyek tersebut, sebagai contoh “test
led.prj”. Lalu kilik Save.
Pada jendela Configure Project test led.prj, tab C Compiler, pilih mikrokontroler yang
digunakan misalnya ATMEGA8535 dan pilih frekuensi Clock (kristal) yang digunakan
oleh mikrokontroler, misalnya 4 MHz. Kemudian klik OK
3
Gambar1. 4 Konfigurasi Project
Langkah pembuatan proyek baru selesai tetapi belum dapat digunakan untuk membuat
program C. Agar dapat digunakan untuk membuat program C diperlukan pembuatan file c
yaitu klik menu File pilih New kemudian pada jendela Create New File pilih Source dan
klik OK. Akan terdapat file c dengan nama “untitled.c”. Pada menu File pilih Save As...,
kemudian isi nama file c yang akan dibuat, sebagai contoh “program 1.c”.
4
Untuk menggabungkan “Program 1.c” dengan proyek “test led prj” yaitu klik pada menu
Project, pilih Configure. Pada label Files, pilih add.
Kemudian pilih “program 1.c” dan klik Open. Program C tersebut ditambahkan dalam
proyek “test led prj”, kemudian klik OK pada jendela Configure Project test led.prj.
5
Proyek “test led.prj telah siap digunakan untuk membuat suatu program C. Misalnya
program sederhana untuk menyalakan LED berkedip pada semua Port C selama satu detik.
Contoh programnya yaitu:
#include <mega8535.h>
#include <delay.h>
Setelah selesai membuat suatu program C, perlu dilakukan apakah syntax (sintaksis)
program yang dibuat benar atau salah yaitu dengan menekan tombol F9 (Compile) atau
melalui menu Project kemudian pilih Compile. Jika terjadi kesalahan sintaksis akan
terdapat pesan error dimana letak kesalahan terjadi. Untuk lebih jelasnya lihat pada
gambar berikut ini dengan adanya kesalahan (error) pada program yang dibuat.
6
Data tampilan
1. Tampilan 1
L7 L6 L5 L4 L3 L2 L1 L0 LED yang mati
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0
2. Tampilan 2
L7 L6 L5 L4 L3 L2 L1 L0 LED yang mati
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
3. Tampilan 3
L7 L6 L5 L4 L3 L2 L1 L0 LED yang mati
0 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
4. Tampilan 4
L7 L6 L5 L4 L3 L2 L1 L0 LED yang mati
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
7
PROGRAM PERCOBAAN
PERCOBAAN 1 PERCOBAAN 2
PERCOBAAN 3 PERCOBAAN 4
8
JOB 2
PENGAKTIFAN LED DENGAN MODUL
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan LED dengan berbagai variasi ini, mahasiswa
dapat :
1. memahami cara pengoperasian system mikrokontroler AVR Atmega 8535
mengoperasikan system mikrokontroler AVR Atmega 8535
2. menampilkan output program dengan menggunakan system mikrokontroler AVR
Atmega 8535
Landasan Teori
D1
R1
330R
LDE2
D-GREEN
U1 R2
1 40
PB0/T0/XCK PA0/ADC0 330R
2 39 LDE3
D-GREEN
PB1/T1 PA1/ADC1
3 38 R3
PB2/AIN0/INT2 PA2/ADC2
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4 330R
6 35 LDE4
D-GREEN
PB5/MOSI PA5/ADC5
7 34 R4
PB6/MISO PA6/ADC6
8 33
PB7/SCK PA7/ADC7
330R
14 22 LDE5
D-GREEN
PD0/RXD PC0/SCL
15 23 R5
PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2
17 25
PD3/INT1 PC3 330R
18 26 LED-GREEN
PD4/OC1B PC4
19 27
C1 20
PD5/OC1A PC5
28 D6
21
PD6/ICP1 PC6/TOSC1
29
R6
PD7/OC2 PC7/TOSC2
VCC 330R
22pF 13 LDE7
D-GREEN
XTAL1
X1 12
XTAL2 AREF
32
R7
CRYSTAL 9 30
C2 RESET AVCC
330R
ATMEGA8535 LDE8
D-GREEN
VCC R8
22pF
330R
R9 LED-GREEN
GND
330
RESET BUTTON
GND
Langkah Kerja
1. Membuat program
1. Buatlah program pada CodeVision AVR
2. Ketiklah program pada Editor.c, kemudian simpan.
3. Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile.
4. Cek jumper pada system mikrocontroler yang akan digunakan dengan
menempatkan jumper yang telah ditentukan (dapat dilihat pada lampiran)
8
2. Download program ke modul
1. Cek jumper pada system mikrocontroler yang akan digunakan dengan
menempatkan jumper yang telah ditentukan (dapat dilihat pada lampiran)
2. Koneksikan DT-HiQ AVR In System Programmer dengan AVR ISP Header ke
Modul System mikrocontroler AVR
Buka proyek “test led.prj” melalui menu File kemudian pilih Open. Pilih file
“test led.prj” dan klik open.
4. Selanjutnya untuk membuat file hex dari proyek “test led.prj” yaitu melalui menu
Project kemudian pilih Make atau dengan tombol Shift + F9. Agar proyek “test
led.prj” dapat membuat file hex dan sekaligus memprogram mikrokontroler AVR
maka perlu dilakukan pengaturan pada proyek tersebut yaitu melalui menu Project
pilih Configure
9
Gambar 2.4 Proses Konfigurasi Proyek
Pada Jendela Configure Project test led.prj, label After Make, beri tanda
centang pada Program the chip kemudian klik OK
10
Gambar 2.6 Tampilan Setelah Compiling Selesai
Contoh program
#include<mega8535.h>
#include<delay.h>
int i;
void kanan ()
{ DDRC=0xFF;
PORTC=0xFF;
PORTC=0b10000000;
delay_ms(200);
for (i=0;i<7;i++)
{PORTC>>=1;
delay_ms(200);
}}
void kiri ()
{ DDRC=0xFF;
PORTC=0xFF;
PORTC=0b00000001;
delay_ms(200);
for (i=7;i>0;i--)
{PORTC<<=1;
delay_ms(200);
}}
11
void main(void)
{
while(1)
{
kanan();
kiri();
}
}
Data tampilan
1. Tampilan 1
L7 L6 L5 L4 L3 L2 L1 L0 LED yang mati
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
Berulang kembali ke – awal
2. Tampilan 2
L7 L6 L5 L4 L3 L2 L1 L0
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0
1 1 1 1 1 0 0 0
1 1 1 1 1 1 0 0
1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
3. Tampilan 3
L7 L6 L5 L4 L3 L2 L1 L0
1 1 1 1 0 0 0 0
0 1 1 1 1 0 0 0
0 0 1 1 1 1 0 0
0 0 0 1 1 1 1 0
0 0 0 0 1 1 1 1
12
Program Tampilan 1 Program Tampilan 2 Program Tampilan 3
13
JOB 3
INPUT PUSH BUTTON DENGAN OUTPUT LED
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan seven segment ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler AVR ATMEGA8535
2. mengoperasikan system mikrokontroler AVR ATMEGA8535.
3. mengambil data input program dari push button dan menampilkannya pada LED
dengan menggunakan system mikrokontroler AVR ATMEGA8535
Landasan Teori
D1
R1
330R
LDE2D-GREEN
U1 R2
1 40
PB0/T0/XCK PA0/ADC0 330R
2 39 LDE3D-GREEN
PB1/T1 PA1/ADC1
3 38
4
PB2/AIN0/INT2 PA2/ADC2
37
R3
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4 330R
6 35 LDE4D-GREEN
PB5/MOSI PA5/ADC5
7 34
8
PB6/MISO PA6/ADC6
33
R4
PB7/SCK PA7/ADC7
330R
14 22 LDE5D-GREEN
PD0/RXD PC0/SCL
15 23
16
PD1/TXD PC1/SDA
24
R5
PD2/INT0 PC2
17 25
PD3/INT1 PC3 330R
18 26
PD4/OC1B PC4 LED-GREEN
19 27
C1 20
PD5/OC1A PC5
28 D6
21
PD6/ICP1 PC6/TOSC1
29
R6
PD7/OC2 PC7/TOSC2
VCC 330R
22pF 13 LDE7D-GREEN
XTAL1
X1 12 32
9
XTAL2 AREF
30
R7
CRYSTAL
C2 RESET AVCC
330R
ATMEGA8535 LDE8D-GREEN
VCC R8
22pF
330R
R9 LED-GREEN
GND
330
(b)
RESET BUTTON
(b)
GND
(a)
Gambar rangkaian untuk menghubungkan saklar push-button dengan pinI/O AVR dapat
dilihat pada gambar 5.1(b). Resistor 10K berfungsi sebagai externall pull-up resistor.
Dengan adanya pull-up resistor, mikrokontroler akan membaca logika ‘1’ saat tidak ada
penekanan saklar. Tanpa adanya pull-up resistor, pin I/O akan mengambang dan
mikrokontroler dapat membacanya sebagai logika ‘1’ ataupun ‘0’. Pada gambar rangkaian
5.1 (a)(b) saklar push-button terhubung dengan PC0, kemudian hasil pembacaan
dikeluarkan ke PortB. Jika saklar push-button pada PC0 ditekan maka mikrokontroler
membaca logika ‘0’, setelah itu dikeluarkan ke PortB terhubung dengan LED sehingga
LED akan menyala. Begitu sebaliknya jika saklar dilepas LED akan padam.
14
Langkah Kerja
Contoh Program
#include <mega8535.h>
void main(void)
{
DDRB=0xFF;
PORTB=0xFF;
DDRC=0x00;
PORTC=0x00;
#asm("nop")
while (1)
{
PORTB.0=PINC.0;
//Membaca penekanan push-button di
//PC0 kemudian hasil pembacaan
//dikeluarkan ke PB0
};
15
JOB 4
PENGAKTIFAN SEVEN SEGMENT
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan seven segment ini, mahasiswa dapat :
1. Mampu memahami teknik scanning untuk menghemat penggunaan pin I/O AVR
Atmega 8535
2. Mampu membuat program untuk menyalakan 7 segment dan dapat menampilkan
suatu angka pada 7 segment menggunakan pin I/O AVR Atmega 8535
3. menampilkan output program pada seven segment dengan menggunakan system
mikrokontroler AVR Atmega 8535
Teori
Dari gambar diatas terlihat bahwa untuk menghidupkan sebuah 7 segment dibutuhkan 8
pin I/O mikrokontroler untuk membentuk suatu angka atau huruf, masing-masing untuk
segment a, segment b, segment c,..., segment f, segment g, dan segment dot. Kalau sebuah
7 segment dihubungkan ke mikrokontroler maka dibutuhkan 8 pin I/O (satu port
mikrokontroler) untuk menyalakan/memadamkan segment. Seandainya dibutuhkan
penampil 7 segment sebanyak 8 buah, maka port mikrokontroler tidak akan mencukupi
untuk 8 buah 7 segment. Untuk bisa menggunakan 8 buah 7 segment (atau lebih dari 8
buah) digunakan cara scanning. Teknik scanning digunakan apabila terdapat minimal 2
buah 7 segment (kalau 7 segment hanya ada satu port maka semua pin a,b,c,d,e,f,g dan dot
langsung dihubungkan ke port mikrokontroler melalui resistor pembatas arus, dengan
common anode dihubungkan ke VCC).
Untuk latihan teknik scanning digunakan 2 buah 7 segment commom anode, dimana
segment a,b,c,...,f,g dan dot dihubungkan ke PB0, PB1, PB2,..,PB5, PB6, PB7. Driver 7
segment pertama dihubungkan ke pin PC0 dan driver 7 segment kedua dihubungkan ke pin
PC1. Driver yang digunakan adalah sebuah transistor yang difungsikan sebagai saklar.
Dari gambar diatas terlihat jelas bahwa pin I/O mikrokontroler yang dibutuhkan sebanyak
8 pin (untuk memudahkan pengiriman data, sebaiknya menggunakan satu port) ditambah 2
pin untuk driver 7 segment (jumlah 7 segment yang digunakan).
16
Berikut tabel data 7 segment untuk menampilkan angka 0 sampai 9 (dot pada 7 segment
tidak menyala ) :
Tabel 4.1 Data Tampilan Seven Segment
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
Angka Hex
dot (g) (f) (e) (d) (c) (b) (a)
1 1 0 0 0 0 0 0 “0” 0xC0
1 1 1 1 1 0 0 1 “1” 0xF9
1 0 1 0 0 0 1 0 “2” 0xA4
1 0 1 1 0 0 0 0 “3” 0xB0
1 0 0 1 1 0 0 1 “4” 0x99
1 0 0 1 0 0 1 0 “5” 0x92
1 0 0 0 0 0 1 0 “6” 0x82
1 1 1 1 1 0 0 0 “7” 0xF8
1 0 0 0 0 0 0 0 “8” 0x80
1 0 0 1 0 0 0 0 “9” 0x90
Jika ingin ditampilkan secara bersamaan, maka harus diatur hidup matinya display secara
bergantian. Walaupun sebenarnya display tersebut mati secara bergantian tapi mata
manusia akan melihat kedua display tersebut hidup secara bersamaan karena delay antara
hidup dan mati sangat singkat.
Langkah Kerja
1. Buatlah program pada CodeVision AVR
2. Ketiklah program pada Editor.c, kemudian simpan.
3. Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile.
4. Buatlah rangkaian pada papan proyek modul system mikrokontroler seperti
gambar berikut ini :
5. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
17
Tampilan Seven Segment
Untuk tampilan pada seven segment, program dapat dibuat dengan menampilkan data
seven segment.
1. Buatlah program untuk menampilkan angka “53” pada 7 segment
2. Buatlah sebuah program penghitung naik (Down counter) dengan delay satu
detik menggunakan dua buah 7 segment dari “09” s/d “00”
3. Buatlah program dengan menampilkan angka 90 sampai 00 setelah itu kembali dari
00 sampai 90
Contoh program
#include <mega8535.h>
#include <delay.h>
while (1)
{
PORTC=0xFF; //Matikan semua 7 segment
PORTB=0xF9; //Untuk menampilkan angka "1"
PORTC=0xFE; //7 segment pertama nyala
//dan 7 segment kedua mati
delay_ms(15);
18
Data tampilan
19
JOB 5
INPUT PUSH BUTTON DENGAN TAMPILAN SEVEN SEGMENT
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan seven segment ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler AVR ATMEGA8535
2. mengoperasikan system mikrokontroler AVR ATMEGA8535.
3. mengambil data input program dari push button dan menampilkannya pada dengan
seven segment menggunakan system mikrokontroler AVR ATMEGA8535
Teori
(B)
(A)
Pada gambar rangkaian 5.1 (a)(b) saklar push-button terhubung dengan PC0, kemudian
hasil pembacaan dikeluarkan pada rangkaian 7 segment. Pada rangkaian 7 segment ini
digunakan 2 buah 7 segment commom anode, dimana segment a,b,c,...,f,g dan dot
dihubungkan ke PB0, PB1, PB2,..,PB5, PB6, PB7. Driver 7 segment pertama dihubungkan
ke pin PD0 dan driver 7 segment kedua dihubungkan ke pin PD1. Driver yang digunakan
adalah sebuah transistor yang difungsikan sebagai saklar. Dari gambar diatas terlihat jelas
bahwa pin I/O mikrokontroler yang dibutuhkan sebanyak 8 pin (untuk memudahkan
pengiriman data, sebaiknya menggunakan satu port) ditambah 2 pin untuk driver 7
segment (jumlah 7 segment yang digunakan).
20
Langkah Kerja
1. Buatlah program pada CodeVision AVR
2. Ketiklah program pada Editor.c, kemudian simpan.
3. Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile.
4. Buatlah rangkaian pada papan proyek modul system mikrokontroler seperti
gambar berikut ini :
TUGAS
1. Tampilkanlah variasi seven segment 9-0 dengan mengaktifkan push-button Bt1
2. Tampilkanlah variasi seven segment 99-00 dengan mengaktifkan push-button Bt3
Dan kemudian variasi seven segment 00-99 dengan mengaktifkan push-button Bt6
Program Tampilan
21
22
JOB 6
APLIKASI ANTARMUKA DENGAN LCD
Tujuan pratikum:
Setelah melakukan pratikum scanning keypad dengan output LCD ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler AVR ATMEGA 8535
2. mengoperasikan system mikrokontroler AVR ATMEGA 8535.
3. menampilkan output program pada LCD menggunakan system mikrokontroler
AVR ATMEGA 8535
Teori
LCD1
LM016L
+5V
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
1
2
3
4
5
6
7
8
9
10
11
12
13
14
U1
R/W
RS
D0
D1
D2
D3
D4
D5
D6
D7
1 40
PB0/T0/XCK PA0/ADC0 D0
2 39
PB1/T1 PA1/ADC1 D1
3 38
PB2/AIN0/INT2 PA2/ADC2 D2
4 37
PB3/AIN1/OC0 PA3/ADC3 D3
5 36
PB4/SS PA4/ADC4 D4
6 35
PB5/MOSI PA5/ADC5 D5
7 34
PB6/MISO PA6/ADC6 D6
8 33
PB7/SCK PA7/ADC7 D7
14 22
PD0/RXD PC0/SCL
15 23
PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2
17 25
PD3/INT1 PC3
18 26
PD4/OC1B PC4
19 27
PD5/OC1A PC5
20 28
PD6/ICP1 PC6/TOSC1
21 29
PD7/OC2 PC7/TOSC2
12
XTAL1
13 32
XTAL2 AREF
9 30
RESET AVCC
ATMEGA8535
Modul LCD mempunyai controller untuk menampilkan karakter (angka, huruf, atau
simbol) pada display. Modul LCD yang digunakan berukuran 8 karakter x 2 baris dengan
controller HD44780 atau persamaanya. Modul LCD membutuhkan inisialisasi terlebih
dahulu sebelum digunakan. Inisialisasi pada modul LCD digunakan untuk menentukan
antarmuka (interface) 4 bit atau 8 bit, jumlah baris display (1 baris atau 2 baris), ukuran
karakter 5x7 dots atau 5x10 dots, display on atau off, mode set dan seterusnya. Karakter
yang ditampilkan ke display disimpan di memori DDRAM (Display Data RAM). Lokasi
karakter yang ditampilkan ke display mempunyai alamat tertentu pada memori DDRAM
Lokasi Karakter 1 2 3 4 5 6 7 8
Alamat DDRAM 80 81 82 83 84 85 86 87 Baris 1
Alamat DDRAM C0 C1 C2 C3 C4 C5 C6 C7 Baris 2
Controller LCD mempunyai dua 8 bit register yaitu instruction register (IR) dan data
register (DR). Instruction register digunakan untuk menyimpan kode instruksi (seperti
display clear, display on/off, cursor shift, dan sebagainya) dan informasi alamat untuk
DDRAM dan CGRAM. Register ini hanya dapat dituls oleh mikrokontroler. Data register
digunakan untuk menulis data atau membaca data dari DDRAM atau CGRAM.
23
Langkah Kerja
5 Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
Contoh Program
#include <mega8535.h>
#include <delay.h>
port_data=datalcd;
E=0;
}
port_data=datalcd;
E=0;
}
24
//Inisialisasi LCD
void init_lcd(void)
{
delay_ms(20); //wait for more than 15 ms
datalcd=0x30; //function set (interface 8 bit)
kirim_perintah_lcd();
delay_ms(5); //wait for more than 4.1 ms
datalcd=0x30; //function set (interface 8 bit)
kirim_perintah_lcd();
delay_us(150);//wait for more than 100us
datalcd=0x30; //function set (interface 8 bit)
kirim_perintah_lcd();
delay_us(50); //execution time 39 us
datalcd=0x38; //function set: interface 8 bit
kirim_perintah_lcd();
delay_us(50);
datalcd=0x04; //display off
kirim_perintah_lcd();
delay_us(50);
datalcd=0x01; //display clear
kirim_perintah_lcd();
delay_ms(2);
datalcd=0x06; //entry mode set
kirim_perintah_lcd();
delay_us(50);
datalcd=0x0C; //display on, cursor off
kirim_perintah_lcd();
delay_us(50);
}
void main(void)
{ DDRD=0xFF;
PORTD=0x1C;
datalcd='L';
tulis_data_ram_lcd();
delay_us(50);
datalcd='C';
tulis_data_ram_lcd();
delay_us(50);
datalcd='D';
tulis_data_ram_lcd();
delay_us(50);
}
25
TUGAS
1. Buatlah Program untuk menampilkan kata PNP PDG pada baris 1 kolom 4
(tengah- tengah baris 1) dan kata 2015 pada baris 2 kolom 4.
Program tampilan
26
JOB 7
INPUT KEYPAD DENGAN TAMPILAN LED
Tujuan pratikum:
Setelah melakukan pratikum input keypad dengan tampilan LED ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler AVR ATMEGA 8535
2. mengoperasikan system mikrokontroler AVR ATMEGA 8535.
3. mengambil data input program dari keypad dan menampilkannya pada LED dengan
menggunakan system mikrokontroler AVR ATMEGA 8535
Teori
RN1 D1
1 16
2 15
3 14 L
U1
4 13
DE2D-RED 40 1
PA0/ADC0 PB0/T0/XCK
5 12 39 2
PA1/ADC1 PB1/T1
6 11 38 3
7 10 D3 37
PA2/ADC2 PB2/AIN0/INT2
4
LED-RED PA3/ADC3 PB3/AIN1/OC0
8 9 36 5
PA4/ADC4 PB4/SS
35 6
RX8
D4 34
PA5/ADC5 PB5/MOSI
7
LED-RED PA6/ADC6 PB6/MISO
33 8
PA7/ADC7 PB7/SCK
L 22 14
DE5D-RED 23
PC0/SCL PD0/RXD
15
R0
PC1/SDA PD1/TXD R1
24 16
PC2 PD2/INT0 R2
25 17
D6 26
PC3 PD3/INT1
18
R3
LED-RED PC4 PD4/OC1B C0
27 19
PC5 PD5/OC1A C1
28 20
D7 29
PC6/TOSC1 PD6/ICP1
21
C2
LED-RED +5V PC7/TOSC2 PD7/OC2 C3
12
D8 32
XTAL1
13
LED-RED AREF XTAL2
30 9
AVCC RESET
LED-RED ATMEGA8535
C3
C2
C1
C0
R0 1 2 3 A
R1 4 5 6 B
R2 7 8 9 C
R3 * 0 # D
Keypad merupakan susunan saklar push-button menurut baris dan kolom. Bentuk dan
susunan keypad dapat dilihat pada gambar 7.1 Dari gambar 7.1, cara untuk mengetahui
saklar yang mana ditekan adalah dengan memeriksa baris dan kolom. Contohnya saklar
SW10 (pada keypad merupakan angka 8) maka baris 3 (PD2) terhubung singkat dengan
kolom 2 (PD5). Agar mikrokontroler mengetahui baris dan kolom mana yang terhubung,
maka sebagian port mikrokontroler difungsikan sebagai output dan sebagian lagi
difungsikan sebagai input. Pada gambar 7, PD4-PD7 (high order nibble port)
difungsikan sebagai output dan PD0-PD3 (low order nibble port) difungsikan sebagai
input, memastikan bila tidak ada tombol yang ditekan, mikrokontroler membaca logika
‘1’. Hasil penekanan tombol keypad akan dikeluarkan pada LED sehingga LED menyala
yang terhubung pada PORTA
27
Langkah Kerja
1. Buatlah program pada CodeVision AVR
2. Ketiklah program pada Editor.c, kemudian simpan.
3. Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile.
4. Hubungkan pin keypad dengan pin mikrokontroler yaitu R1 dengan PD0, R2
dengan PD1, R3 dengan PD2,.., C2 dengan PD5, C3 dengan PD6 dan C4 dengan
PD7.
5 Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
6 Hubungkanlah kabel pita /flat ribbon cable ke header switch ke “PORTA” untuk
tampilan LED.
Contoh program
#include <mega8535.h>
#include <delay.h>
while(1)
{ PORTA=0xff;
key=scan_keypad();
if (key=='1')
{
PORTA=0b11111110;
delay_ms(500);
}
if (key=='2')
{
PORTA=0b11111101;
delay_ms(500);
}
if (key=='3')
{
PORTA=0b11111100;
delay_ms(500);
}
if (key=='4')
{
PORTA=0b11111011;
delay_ms(500);
dst...
}
};
}
unsigned char scan_keypad()
{
PORTD=0b11101111;
if (PIND.0==0) return ('1');
if (PIND.1==0) return ('4');
if (PIND.2==0) return ('7');
28
if (PIND.3==0) return ('*');
PORTD=0b11011111;
if (PIND.0==0) return ('2');
if (PIND.1==0) return ('5');
if (PIND.2==0) return ('8');
if (PIND.3==0) return ('0');
PORTD=0b10111111;
if (PIND.0==0) return ('3');
if (PIND.1==0) return ('6');
if (PIND.2==0) return ('9');
if (PIND.3==0) return ('#');
PORTD=0b01111111;
if (PIND.0==0) return ('A');
if (PIND.1==0) return ('B');
if (PIND.2==0) return ('C');
if (PIND.3==0) return ('D');
}
TUGAS
1. Tampilkanlah data yang bersesuaian dengan input yang diberikan menggunakan
keypad dengan output LED
2. Tampilkanlah variasi led dari 4 LED On, 4 LED off dengan mengaktifkan
keypad yaitu tombol 5
3. Tampilkanlah variasi led dari tepi ke tengah dengan mengaktifkan keypad yaitu
tombol 5 dan tombol 3
Program Tampilan
29
JOB 8
INPUT KEYPAD DENGAN TAMPILAN SEVEN SEGMENT
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan seven segment ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler AVR ATMEGA 8535
2. mengoperasikan system mikrokontroler AVR ATMEGA 8535.
3. mengambil data input program dari keypad dan menampilkannya pada SEVEN
SEGMENT dengan menggunakan system mikrokontroler AVR ATMEGA 8535
Teori
U1
1 40
D0 PB0/T0/XCK PA0/ADC0
2 39
D1 PB1/T1 PA1/ADC1
3 38
PB2/AIN0/INT2 PA2/ADC2
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
PB4/SS PA4/ADC4
6 35
PB5/MOSI PA5/ADC5
7 34
PB6/MISO PA6/ADC6
8 33
PB7/SCK PA7/ADC7
14 22
R0 PD0/RXD PC0/SCL
15 23
R1 PD1/TXD PC1/SDA
16 24
R2 PD2/INT0 PC2 +5V
17 25
R3 PD3/INT1 PC3
18 26
C0 PD4/OC1B PC4
19 27
C1 PD5/OC1A PC5
20 28
C2 PD6/ICP1 PC6/TOSC1
21 29
C3 PD7/OC2 PC7/TOSC2 +5V
12
XTAL1 D0 D1
13
XTAL2 AREF
32 Q2
9 30 2N3702
RESET AVCC
ATMEGA8535
Q1
C3 2N3702
C2
C1
C0
R0 1 2 3 A
R1 4 5 6 B
R2 7 8 9 C
R3 * 0 # D
30
Langkah Kerja
1 Buatlah program pada CodeVision AVR
2 Ketiklah program pada Editor.c, kemudian simpan.
3 Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile
Contoh Program
#include <mega8535.h>
#include <delay.h>
while(1)
{
key=scan_keypad();
if (key=='4')
{
PORTC=0XFF; //Matikan semua 7 segment
PORTB=0X99; //Untuk menampilkan angka "1"
PORTC=0XFE; //7 segment pertama nyala
//dan 7 segment kedua mati
delay_ms(15);
}
if (key=='5')
{
PORTC=0XFF; //Matikan semua 7 segment
PORTB=0X92; //Untuk menampilkan angka "1"
PORTC=0XFE; //7 segment pertama nyala
//dan 7 segment kedua mati
delay_ms(15);
}
};
}
31
if (PIND.1==0) return ('4');
if (PIND.2==0) return ('7');
if (PIND.3==0) return ('*');
PORTD=0b11011111;
if (PIND.0==0) return ('2');
if (PIND.1==0) return ('5');
if (PIND.2==0) return ('8');
if (PIND.3==0) return ('0');
PORTD=0b10111111;
if (PIND.0==0) return ('3');
if (PIND.1==0) return ('6');
if (PIND.2==0) return ('9');
if (PIND.3==0) return ('#');
PORTD=0b01111111;
if (PIND.0==0) return ('A');
if (PIND.1==0) return ('B');
if (PIND.2==0) return ('C');
if (PIND.3==0) return ('D');
}
TUGAS
1. Tampilkanlah data yang bersesuaian dengan input yang diberikan menggunakan
keypad dengan output seven segment
2. Tampilkanlah variasi seven segment 88-00 dengan mengaktifkan keypad tombol
8 dan 2
Program tampilan
32
JOB 9
INPUT KEYPAD DENGAN TAMPILAN LCD
Tujuan pratikum:
Setelah melakukan pratikum Input keypad dengan tampilan lcd ini, mahasiswa dapat :
1. memahami cara pengoperasian system mikrokontroler Atmega8535
2. mengoperasikan system mikrokontroler Atmega8535.
3. menampilkan input keypad dengan output LCD dengan menggunakan system
mikrokontroler Atmega8535
Teori
LCD1
LM016L
U1
1 40
R0 PB0/T0/XCK PA0/ADC0 D0 +5V
2 39
R1 PB1/T1 PA1/ADC1 D1
3 38
R2 PB2/AIN0/INT2 PA2/ADC2 D2
VDD
VSS
VEE
RS
4 37
D0
D1
D2
D3
D4
D5
D6
D7
W
R3 PB3/AIN1/OC0 PA3/ADC3 D3
E
5 36
C0 PB4/SS PA4/ADC4 D4
6 35
C1 PB5/MOSI PA5/ADC5 D5
10
11
12
13
14
1
2
3
4
5
6
7
8
9
7 34
C2 PB6/MISO PA6/ADC6 D6
8 33
C3 PB7/SCK PA7/ADC7 D7
14 22
PD0/RXD PC0/SCL
15 23
PD1/TXD PC1/SDA
16 24
D0
D1
D2
D3
D4
D5
D6
D7
RS
E
R/W
PD2/INT0 PC2
17 25
PD3/INT1 PC3
18 26
PD4/OC1B PC4
19 27
RS PD5/OC1A PC5
20 28
R/W PD6/ICP1 PC6/TOSC1
21 29
E PD7/OC2 PC7/TOSC2
12
XTAL1
13 32
XTAL2 AREF
9 30
RESET AVCC
ATMEGA8535
C3
C2
C1
C0
R0 1 2 3 A
R1 4 5 6 B
R2 7 8 9 C
R3 * 0 # D
Langkah Kerja
1. Buatlah program pada CodeVision AVR
2. Ketiklah program pada Editor.c, kemudian simpan.
3. Compile program dengan menekan tombol F9 (Compile) atau melalui menu
Project kemudian pilih Compile.
33
4 Hubungkan pin keypad dengan pin mikrokontroler yaitu R1 dengan PB0, R2
dengan PB1, R3 dengan PB2,.., C2 dengan PB5, C3 dengan PB6 dan C4 dengan
PB7.
5 Buatlah rangkaian pada papan proyek modul system mikrokontroler seperti
gambar berikut ini :
6 Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
Contoh program
#include <mega8535.h>
#include <delay.h>
#define RS PORTD.5 //setiap kata RS akan diganti dengan PORTD.5
#define RW PORTD.6
#define E PORTD.7
#define port_data PORTA //PORTA sebagai port bidirectional
#define ddr_data DDRA //konfigurasi sebagai input/output
unsigned char key;
unsigned char datalcd;
unsigned char scan_keypad();
port_data=datalcd;
E=0;
}
34
RS=1;
RW=0;
E=1;
port_data=datalcd;
E=0;
}
//Inisialisasi LCD
void init_lcd(void)
{
delay_ms(20); //wait for more than 15 ms
datalcd=0x30; //function set (interface 8 bit)
kirim_perintah_lcd();
delay_ms(5); //wait for more than 4.1 ms
datalcd=0x30; //
kirim_perintah_lcd();
delay_us(150);
datalcd=0x30;
kirim_perintah_lcd();
delay_us(50);
datalcd=0x38;
kirim_perintah_lcd();
delay_us(50);
datalcd=0x04;
kirim_perintah_lcd();
delay_us(50);
datalcd=0x01;
kirim_perintah_lcd();
delay_ms(2);
datalcd=0x06;
kirim_perintah_lcd();
delay_us(50);
datalcd=0x0C;
kirim_perintah_lcd();
delay_us(50);
35
}
void main(void)
{ DDRD=0xFF;
PORTD=0x1C;
PORTB=0xFF;
DDRB=0xF0;
while(1)
{
key=scan_keypad();
if (key=='5')
{ init_lcd();
datalcd='5';
tulis_data_ram_lcd();
delay_us(50);
datalcd=0xC0;
kirim_perintah_lcd();
delay_us(50);
}
if (key=='6')
{ init_lcd();
datalcd='6';
tulis_data_ram_lcd();
delay_us(50);
datalcd=0xC0;
kirim_perintah_lcd();
delay_us(50);
}
};
}
36
PORTB=0b11011111;
if (PINB.0==0) return ('2');
if (PINB.1==0) return ('5');
if (PINB.2==0) return ('8');
if (PINB.3==0) return ('0');
PORTB=0b10111111;
if (PINB.0==0) return ('3');
if (PINB.1==0) return ('6');
if (PINB.2==0) return ('9');
if (PINB.3==0) return ('#');
PORTB=0b10111111;
if (PINB.0==0) return ('A');
if (PINB.1==0) return ('B');
if (PINB.2==0) return ('C');
if (PINB.3==0) return ('D');
}
TUGAS
1. Tampilkanlah data yang bersesuaian dengan input yang diberikan menggunakan
keypad dengan output LCD
2. Buatlah program dengan menampilkan tulisan JTE pada LCD dengan
mengaktifkan keypad tombol 9
Program tampilan
37
JOB 10
APLIKASI TIMER DAN COUNTER
Tujuan pratikum:
Setelah melakukan pratikum aplikasi timer dan counter, mahasiswa dapat :
1. memahami cara pengoperasian sistem timer eksternal mikrokontroler AVR Atmega
8535
2. mengoperasikan sistem timer eksternal mikrokontroler AVR Atmega 8535
3. menampilkan INPUT timer/counter dan OUTPUT LED program dengan
menggunakan sistem mikrokontroler AVR Atmega 8535
Landasan Teori
Timer dan Counter merupakan sarana input yang kurang dapat perhatian pemakai
mikrokontroler, dengan sarana input ini mikrokontroler dengan mudah bisa dipakai untuk
mengukur lebar pulsa, membangkitkan pulsa dengan lebar yang pasti. AVR ATMEGA8535
memiliki tiga buah timer, yaitu Timer/Counter0 (8 bit), Timer/Counter1 (16 bit), dan
Timer/Counter3 (16 bit).
Rangkaian minimum untuk counter melalui Port B.0 ditunjukan pada Gambar 4.1. Rangkaian
tersebut menggunakan penampil led. Konfigurasi rangkaian LED yaitu Common Anode (CA)
artinya untuk menghidupkan LED pada Port D, port D harus dikirim atau diberi logika ‘0’.
LANGKAH KERJA
1. Buat rangkaian pada modul praktikum seperti yang terlihat pada gambar percobaan
2. Buat program berikut pada codevision avr
Program 1 Mengaktifkan LED jika Counter Aktif
38
// Program COUNTER TIMER 0
//------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
DDRD = 0xff;
led=0x00;
InisialisasiTIMER();
while(1)
a = TCNT0;
if (a == 0x06)
led = PIND;
PORTD=~led;
TCNT0=0x00;
void InisialisasiTIMER ()
TCNT0=0x00;
TCCR0=0x07;
}
39
3. Compile dan download program ke modul
4. Hubungkanlah kabel pita /flat ribbon cable ke header switch ke “PORTB” dan ke
header LED ke “PORTD”.
DATA PERCOBAAN
TUGAS
40
JOB 11
APLIKASI PIN I/O SEBAGAI OUTPUT
UNTUK MENGENDALIKAN RELAY
Tujuan pratikum:
Setelah melakukan pratikum pengaktifan Dot Matrix ini, mahasiswa dapat :
1. memahami fungsi pin I/O pada mikrokontroler AVR ATMEGA 8535 sebagai input
dan output
2. mengoperasikan system mikrokontroler AVR ATMEGA 8535.
Teori
Fungsi relay hampir sama dengan saklar. Untuk memindahkan posisi saklar pada relay
dengan cara mengalirkan arus pada lilitan relay agar saklar berpindah posisi. Perpindahan
posisi saklar pada relay dilakukan dengan medan magnet, yaitu pada saat lilitan
memperoleh arus yang cukup sehingga pada lilitan akan timbul medan magnet untuk
menarik kontaktor (saklar). Jika arus pada lilitan kurang atau tidak ada arus maka posisi
kontaktor kembali pada posisi semula. Arus dapat dihasilkan jika terdapat selisih tegangan
pada lilitan relay. Gambar 11.1 adalah sebuah relay SPDT ( Single Pole Dual Through).
Gambar 11.2. Hubungkan Pin I/O AVR Untuk Menyalakan / Memadamkan Relay
41
Langkah Kerja
Contoh program
#include <mega8535.h>
PORTA=0x00;
#asm("nop")
while (1)
{
PORTA.0=~PINC.0;
//Logika PORTA.0 kebalikan dari logika PINC.0
PORTA.1=~PINC.1;
//Logika PORTA.1 kebalikan dari logika PINC.1
};
42
Program Tampilan
Program Tampilan 1 Program tampilan 2
43
JOB 12
ANALOG TO DIGITAL CONVERTER (ADC) MIKROKONTROLER
Dasar Teori
ATMEGA8535 merupakan tipe AVR yang dilengkapi dengan 8 saluran ADC internal
dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATMEGA8535 dapat dikonfigurasi,
baik sebagai single ended input maupun pewaktuan, tegangan referensi, mode operasi, dan
kemampuan filter derau yang amat fleksibel sehingga dapat dengan mudah disesuaikan dengan
kebutuhan dari ADC itu sendiri.
B. ADLAR merupakan bit pemilih mode data keluaran ADC. Bernilai awal 0,sehingga 2
bit tertinggi data hasil konversinya berada di register ADCH dan 8 bit sisanya berada
di register ADCL, seperti dalam gambar 12.2 Apabila bernilai 1, maka hasilnya pada
gambar 12.3
44
Gambar 12.3 Format Data ADC dengan ADLAR=1
ADCSRA merupakan register 8 bit yang berfungsi melakukan manajemen sinyal kontrol dan
status dari ADC.
a. ADEN merupakan bit pengatur aktivasi ADC. Bernilai awal 0. Jika bernilai 1,
maka ADC aktif.
b. ADSC merupakan bit penanda mulainya konversi ADC. Bernilai awal 0 selama
konversi ADC akan bernilai 1, sedangkan jika konversi selesai, akan bernilai 0.
c. ADATE merupakan bit pengatur aktivasi picu otomatis operasi ADC. Bernilai
awal 0, jika bernilai1 maka konversi ADC akan dimulai pada saat transisi positif
dari sinyal picu yang diplih. Pemiliha sinyal picu menggunakan bit ADTS pada
register SFIOR.
d. ADIF merupakan bit penanda akhir suatu konversi ADC. Bernilai awal 0. Jika
bernilai 1, maka konversi ADC pada saluran telah selesai dan data siap diakses.
e. ADIE merupakan bit pengatur aktivasi interupsi yang berhubungan dengan akhir
konversi ADC. Bernilai awal 0. Jika berniali 1 dan jika konversi ADC telah
selesai, sebuah interupsi akan dieksekusi.
f. ADPS[2..0] merupakan bit pengatur clock ADC. Bernilai awal 000.
45
SFIOR merupakan register 8 bit pengatur sumber picu konversi ADC, apakah dari picu
eksternal atau dari picu internal. Susunannya sebagai berikut :
ADTS[2..0] merupakan bit pengatur picu eksternal operasi ADC. Hanya berfungsi jika
bit ADATE pada register ADCSRA bernilai 1. Bernilai awal 000 sehingga ADC
bekerja pada mode free running dan tidak ada interupsi yang akan dihasilkan. Untuk
Operasi ADC, bit ACME, PUD, PSR2, dan PSR10 tidak diaktifkan.
Dalam proses pembacaan hasil konversi ADC, dilakukan pengecekan terhadap bit ADIF
(ADC Interupt Flag) pada register ADCSRA. ADIF akan benilai satu jika konversi sebuah
saluran ADC telah selesai dilakukan dan data hasil konversi siap untuk diambil, dan demikian
sebaliknya. Data disimpan dalam dua buah register, yaitu ADCH dan ADCL.
VCC
U1
1 40
PB0/T0/XCK PA0/ADC0
2 39
PB1/T1 PA1/ADC1
3 38
VCC PB2/AIN0/INT2 PA2/ADC2
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36
D1 6
PB4/SS PA4/ADC4
35
R1 7
PB5/MOSI PA5/ADC5
34
PB6/MISO PA6/ADC6
8 33 +88.8
D2 330R PB7/SCK PA7/ADC7
LED-RED R2 14 22
Volts
PD0/RXD PC0/SCL
15 23
D3 330R
16
PD1/TXD PC1/SDA
24
LED-RED R3 PD2/INT0 PC2
17 25
PD3/INT1 PC3
18 26
D4 330R
19
PD4/OC1B PC4
27
LED-RED R4 PD5/OC1A PC5
20 28
PD6/ICP1 PC6/TOSC1 VCC
330R 21 29
PD7/OC2 PC7/TOSC2
LED-RED
D5
R5 13
XTAL1
12 32
XTAL2 AREF
330R 9 30
RESET AVCC
LED-RED
D6
R6 ATMEGA8535
330R
LED-RED
D7
R7
D8 330R
LED-RED R8
330R
LED-RED
Langkah Kerja
6. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex tersebut
ke modul system mikrokontroler
//-------------------------------------------------------
//Program ADC LED
//-------------------------------------------------------
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
unsigned int data_adc;
int suhu;
#define ADC_VREF_TYPE 0x60
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void)
{
DDRD = 0xFF;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
SFIOR&=0xEF;
while (1) 47
{
data_adc=read_adc(0);
suhu=~data_adc;
PORTD = suhu;
}
}
LCD1
LM016L
VDD
VSS
VEE
RW
1
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
U2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
27.0 LM35
U1
+5V
1 40 2
PB0/T0/XCK PA0/ADC0 VOUT
2 39
PB1/T1 PA1/ADC1
3 38
RS
EN
RW
PB2/AIN0/INT2 PA2/ADC2
4 37
PB3/AIN1/OC0 PA3/ADC3
5 36 3
PB4/SS PA4/ADC4
6 35
PB5/MOSI PA5/ADC5
7 34
PB6/MISO PA6/ADC6
8 33
PB7/SCK PA7/ADC7
14 22
PD0/RXD PC0/SCL
15 23
PD1/TXD PC1/SDA
16 24
PD2/INT0 PC2
17 25
PD3/INT1 PC3
18 26
PD4/OC1B PC4
19 27
RS PD5/OC1A PC5
20 28
RW PD6/ICP1 PC6/TOSC1
21 29
EN PD7/OC2 PC7/TOSC2
13
XTAL1
12 32
XTAL2 AREF
9 30
RESET AVCC
VCC
ATMEGA8535
Rangkaian minimum untuk membaca ADC dengan tempilan LCD ditunjukan pada
Gambar 11.6, sensor suhu LM35 terhubung pada PORTA.0, output data digital dari sensor
suhu LM35 ditampilkan ke LCD menggunakan PORTB
Sensor LM35 merupakan sensor suhu dengan tegangan output yang linier sebesar 10 mv/ oC.
Tegangan yang dibutuhkan oleh LM35 antara 4 sampai 30 volt dengan suhu pengukuran
antara 0oC sampai +100oC. Misalnya suhu yang diukur sebesar 26oC maka tegangan output
sensor :
5. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
//-------------------------------------------------------
//Program LM35 LCD
//-------------------------------------------------------
#include <mega8535.h>
#include <delay.h>
#define RW PORTD.6
#define E PORTD.7
hasil= ((input/10000)*65536)+
49
(((input%10000)/1000)*4096) +
((((input%10000)%1000)/100)*256)+
(((((input%10000)%1000)%100)/10)*16)+
((((input%10000)%1000)%100)%10);
return(hasil);
//ADC)
ADMUX=adc_input|ADC_VREF_TYPE;
// (ADSCRA=ADSCRA|0X40)
data_adc=0x0000;
port_data=datalcd;
E=0;
{ ddr_data=0xff; RS=1;
RW=0; E=1;
port_data=datalcd; E=0;
void baca_alamat_ram_lcd(void)
ddr_data=0x00;
port_data=0x00;
RS=0;
RW=1;
E=1;
#asm ("nop");
datalcd=pin_data;
E=0;
baca_alamat_ram_lcd();
baca_alamat_ram_lcd();
//Inisialisasi LCD
void init_lcd(void)
{
51
delay_ms(20); //wait for more than 15 ms datalcd=0x30; //function set
(interface 8 bit) kirim_perintah_lcd();
kirim_perintah_lcd();
datalcd=0x30;
kirim_perintah_lcd();
datalcd=0x30;
kirim_perintah_lcd();
delay_us(50);
kirim_perintah_lcd();
lcd_ready();
datalcd=0x04;
kirim_perintah_lcd();
lcd_ready();
datalcd=0x01;
kirim_perintah_lcd();
lcd_ready();
datalcd=0x06;
kirim_perintah_lcd();
lcd_ready();
datalcd=0x0C;
kirim_perintah_lcd();
lcd_ready();
# include <string.h>
void main(void)
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
DDRC=0XFF;
DDRD=0XFF;
PORTD=0X1C;
init_lcd();
for (i=0;i<=strlenf(string1)-1;i++)
datalcd=string1[i];
tulis_data_ram_lcd();
lcd_ready() ;
while (1)
datalcd=0xC0;
kirim_perintah_lcd();
lcd_ready();
PORTC=hasil;
tulis_data_ram_lcd();
lcd_ready();
lcd_ready();
datalcd=',';
tulis_data_ram_lcd();
lcd_ready();
tulis_data_ram_lcd();
lcd_ready();
tulis_data_ram_lcd();
lcd_ready();
datalcd='C';
tulis_data_ram_lcd();
lcd_ready();
};
54
JOB 13
APLIKASI MOTOR
Tujuan pratikum:
A. PENGONTROLAN MOTOR DC
Landasan Teori
PWM (Pulse Width Modulation) dapat digunakan untuk mengatur kecepatan motor, yaitu
dengan cara mengatur lebar pulsa (waktu ON) dari tegangan sumbernya (tegangan DC).
Perbandingan antara waktu ON dan waktu OFF disebut duty cycle (siklus kerja). Semakin
besar siklus kerjanya, akan semakin besar pula keluaran yang dihasilkan, sehingga kecepatan
motor akan semakin besar. Pembangkitan sinyal PWM dengan mikrokontroler memiliki
beberapa keuntungan, seperti teknik pemrograman yang sederhana, dan rangkaian listrik
menjadi sederhana. Mikrokontroler AVR ATMEGA8535 dapat digunakan sebagai
pembangkit gelombang PWM. Mikrokontroler AVR ATMEGA8535 mempunyai PWM yang
telah terintegrasi dalam chip. Keluaran dari PWM tersebut terdapat pada pin 15 (OC1). Untuk
menjalankan program PWM, diperlukan 3 unit register timer, yaitu:
Dalam mikrokontroler ATMEGA8535, terdapat beberapa mode PWM. Mode PWM yang
akan dibahas adalah mode Phase Correct PWM. Pada resolusi untuk mode phase correct pwm
dapat dipilih 8,9,10 bit, atau ditentukan nilai ICR1 atau OCR1A. Resolusi minimum yang
diperbolehkan sebesar 2 bit ( ICR1 atau ICR1A=0x0003) dan resolusi maksimum sebesar 16
bit (ICR1 atau ICR1A=0xffff). Resolusi PWM dapat dihitung dengan menggunakan
persamaan :
log(𝑇𝑂𝑃+1)
R PCPWM = log(2)
Diagram waktu untuk mode Phase Correct PWM ditunjukkan pada gambar 13.1. Keterangan
yang lebih lengkap terdapat pada datasheet ATMEGA8535 pada bagian 16 bit Timer/Counter
(Modes of Operation).
55
Gambar 13.1 Diagram waktu Timer/Counter1 untuk Mode Phase Correct PWM
Frekuensi output PWM ketika menggunakan Phase Correct PWM dapat dihitung dengan
menggunakan persamaan:
𝑓 𝑐𝑙𝑘_𝐼/𝑂
F OC1xPCPWM = 2.𝑁.𝑇𝑂𝑃
Untuk menggerakkan motor DC seperti pada gambar 13.3. yaitu dengan memberikan logika 1
pada PD4 dan logika 0 pada PD5. Untuk membalik arah putaran motor dengan memberikan
logika 0 pada PD4 dan logika 1 pda PD5. Agar motor berhenti berputar dengan memberikan
nilai logika yang sama pada PD4 dan PD5.
Langkah Kerja
5. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
#include <mega8535.h>
#include <delay.h>
PORTC=0x00;
PORTD=0x00;
TCNT1=0x0000;
// 4.8165 / 0.301
// = 16 bit
OCR1A=0x0000;
while (1)
temp-=0xff;
if (temp==0xff01) temp=0x0000;
}
59
if (PINC.1==0) //jika tombol yang terhubung dengan PC1 ditekan
temp+=0xff;
if (temp==0x00fe) temp=0xffff;
OCR1A=temp;
};
#include <mega8535.h>
#include <delay.h>
bit i;
void main(void)
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30;
TCCR1A=0x82;
TCCR1B=0x12;
TCNT1=0x0000;
ICR1H=0xff;
60
ICR1L=0xff;
OCR1A=0x0000;
OCR1B=0x0000;
i=0;
temp=0x0ff0;
while (1)
if (PINC.0==0)
delay_ms(100);
temp-=0xff;
if (temp==0xff01) temp=0x0000;
if (PINC.1==0)
delay_ms(100);
temp+=0xff;
if (temp==0x00fe) temp=0xffff;
//OC1B:normal
//OC1A:normal,
//OC1B:output
61
else TCCR1A=0x22;
OCR1A=temp;
OCR1B=temp;
};
Tugas
Buatlah program seperti contoh program 2 dengan tambahan 2 push button. Push button
pertama (terhubung dengan pin PC6) digunakan untuk menggerakkan motor DC berputar
cepat, sedangkan push button kedua (terhubung dengan PC5) digunakan untuk menghentikan
putaran motor DC. Push button yang lain (push button yang terhubung dengan PC0, PC1 dan
PC2) mempunyai fungsi yang sama dengan contoh program 2.
Landasan Teori
Stepper motor adalah salah satu tipe motor yang sangat populer digunakan sebagai peralatan
penggerak/pemutar (movement unit/ actuator) dalam sistem kontrol otomasi diindustri,
instrumentasi bahkan printer yang sering kita pakai sehari-hari. Untuk mengerakkan suatu
motor stepper menggunakan mikrokontroler diperlukan suatu rangkaian driver motor.
Beberapa motor stepper mempunyai tegangan kerja yang sama atau berbeda dengan rangkaian
mikrokontroler (5 volt) misalnya motor stepper 5 volt, 24 volt, dan sebagainya. Driver yang
digunakan untuk menggerakkan motor stepper sama dengan yang digunakan pada aplikasi
motor DC yaitu L293D. Sedangkan motor stepper yang digunakan pada pratikum bertipe
bipolar dengan tegangan kerja sebesar 5 volt
Untuk menggerakkan motor stepper bipolar, seperti pada gambar 13.4, diperlukan beberapa
langkah agar motor stepper dapat berputar searah jarum jam (CW) maupun berlawanan arah
jarum jam (CCW). Langkah-langkah yang dimaksud adalah urutan pemberian nilai logika
pada kaki A, B, C, dan D seperti ditunjukan pada tabel 13.2. Untuk menggerakkan motor
stepper bipolar berlawanan arah jarum jam (CCW) secara full step maka pemberian nilai
logika dimulai dari nomor 2, nomor 4, nomor 6, nomor 8, kemudian kembali lagi ke nomor 2,
nomor 4 dan seterusnya. Sedangkan untuk mengerakkan motor stepper bipolar berlawanan
arah jarum jam (CCW) secara half step maka pemberian nilai logika dimulai dari nomor 1,
nomor 2, ..., nomor 7, nomor 8 kemudian kembali lagi ke nomor 1, nomor 2, dan seterusnya.
Agar motor stepper bipolar bergerak searah jarum jam (CW) secara full step atau half step
yaitu dengan membalik urutan pemberian nilai logika. Untuk lebih jelasnya dapat dilihat pada
tabel 13.2.
Langkah Kerja
63
Komponen yang dibutuhkan :
5. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
Contoh Program1 motor stepper yang berputar CCW secara full step
#include <mega8535.h>
#include <delay.h>
void main(void)
unsigned char i;
PORTD=0x00;
64
i=0;
while (1)
i++;
if(i==4) i=0;
PORTD=string[i];
};
Contoh Program2 motor stepper yang berputar secara full step atau half step
#include <mega8535.h>
#include <delay.h>
0x30,0x10,0x90};
bit j;
void main(void)
unsigned char i;
PORTC=0x00;
PORTD=0x00;
i=1;
j=0;
while (1)
{
65
if (PINC.0==0) //Jika tombol yang terhubung
if(j==0)
if (i==0xff) i=7;
PORTD=string[i];
if (i==0xff) i=7;
PORTD=string[i];
delay_ms(50);
if(i==9) i=1;
66
PORTD=string[i];
i++;
if (i==8) i=0;
PORTD=string[i];
delay_ms(100);
PORTD=0;
delay_ms(100);
i=1;
};
#include <mega8535.h>
#include <delay.h>
0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};
bit j;
67
void main(void)
PORTC=0x00;
PORTD=0x00;
temp=0xB2;
i=0;
while (1)
{
68
if (j==0)
i++;
if (i==8) i=0;
PORTD=string[i];
else
i--;
if (i==0xff) i=7;
PORTD=string[i];
delay_ms(100);
temp--;
//delay=65, 5ms
{
69
delay_ms(100);
temp++;
if (temp==0xf9) temp=0xf8;
delay_ms(100);
TCNT0=temp;
};
Tugas
Buatlah program seperti pada contoh program 3 dengan tambahan 2 push button. Push button
pertama terhubung dengan pin PC7 digunakan untuk menggerakkan motor stepper berputar
cepat secara half step, sedangkan push button kedua terhubung dengan pin PC6 digunakan
untuk menghentikan putaran motor stepper. Push button yang lain yang terhubung dengan pin
PC0, PC1, dan PC2 mempunyai fungsi yang sama dengan program 3.
70
C. PENGONTROLAN MOTOR SERVO
Landasan Teori
Terdapat dua macam motor servo yaitu standart servo dan continuous servo. Standard servo
hanya dapat berputar pada possi 00 sampai 1800 (setengah putaran) sedangkan continous servo
dapat berputar terus-menerus (3600) . Kelebihan standart servo yaitu posisi putaran yang dapat
di atur dengan memberikan pulsa ke motor servo dengan frekuensi tertentu. Sehingga dengan
memberikan pulsa dengan frekuensi tertentu yang sama, posisi putaran akan tetap pada titik
tertentu (pada derajat tertentu). Kelemahan countinous servo yaitu posisi putaran tidak dapat
diatur, pemberian pulsa dengan frekuensi tertentu hanya digunakan untuk memilih arah
putaran (CW, CCW, atau berhenti). Motor servo yang digunakan pada contoh ini adalah
standard servo.
Gambar 13.5 menunjukkan bentuk pulsa yang diberikan ke standard servo untuk mengubah
posisi putaran motor. Lebar pulsa yang diberikan ke motor servo harus akurat jika tidak maka
putaran motor servo tidak tepat pada posisinya. Jarak antar pulsa yang diberikan ke motor
servo adalah 20 ms
Catatan : Lebar pulsa yang diberikan ke standard servo tidak boleh kurang dari 920 µs untuk
full counterclockwise dan tidak boleh lebih dari 2120 µs untuk full clockwise sebab dapat
menyebabkan kerusakan pada motor servo. Kerusakan terjadi karena motor berputar melebihi
dari batas putaran (00 – 1800) yang mana pada batas tersebut motor tidak bisa berputar
sehingga dapat menyebabkan motor servo terbakar.
71
Gambar 13.6. Gambar Rangkaian Motor Servo
Langkah Kerja
5. Selanjutnya buatlah file hex dari proyek yang dibuat yaitu melalui menu Project
kemudian pilih Make atau dengan tombol Shift + F9. Kemudian isikan file hex
tersebut ke modul system mikrokontroler
72
Contoh Program 1. Program untuk menggerakkan motor servo
#include <mega8535.h>
#include <delay.h>
for(k=1;k<=75; k++)
PORTA.0=1;
delay_us(10);
PORTA.0=0;
//delay 20ms
TCNT2=0xB1;
73
while(!(TIFR&0x40)); //tunggu sampai flag TOV2 (overflow)
PORTC=0x00;
DDRC=0x00;
DDRA=0x01;
// 20ms(50Hz)
TCCR2=0x07;
ASSR=0x00;
while(1)
if (PINC.0==0)
i=45;
putar_servo();
if (PINC.1==0)
i=125;
putar_servo();
74
}
if (PINC.2==0)
i=205;
putar_servo();
Tugas
Buatlah program seperti contoh program 1 dengan menggunakan 5 push button untuk memilih
posisi motor servo. Setiap push button mewakili posisi servo berada pada 00, 450,900, 1350, dan
1800. Push button pertama (terhubung pada pin PC0) digunakan untuk posisi motor servo pada
full CW (1800), push button kedua (terhubung pada pin PC1) untuk posisi 1350, …, dan
seterusnya sampai push button kelima (terhubung pada pin PC4) untuk posisi pada full CCW
(00).
75
JOB 14
APLIKASI USART
Tujuan pratikum:
Landasan Teori
Pada Mikrokontroler AVR ATmega8535 mempunyai pinI/O (PD0,PD1,da, PB0) untuk
komunikasi serial USART (Universal Syncronous Asyncronous Receiver and Transmitter).
Pada AVR mendukung komunikasi serial secara full duplex yang berarti dapat dilakukan
komunikasi searah yaitu menerima dan mengirimkan data pada waktu bersamaan.
Keterangan:
- St=Start Bit. Sinyal start bit (selalu berlogika 0) digunakan untuk memulai
komunikasi serial USART.
- [n]: data bit (0 s/d 8). Setelah sinyal start, dikirimkan data secara bit per-bit mulai
dari LSB data bit sampai MSB data bit
- P : Parity bit (dapat parity ganjil atau genap). Parity bit dapat digunakan untuk
mengetahui bahwa data yang dikirimkan benar/salah
- Sp : Stop Bit (selalu berlogika 1)
- IDLE : Tidak ada pengiriman data pada saluran komunikasi (TXD atau RXD).
Logika untuk IDLE harus 1
76
Pada gambar 11.2 menampilkan contoh pengiriman data 41H melalui USART dengan
format frame : satu start bit, 8 data bit, parity dan satu stop bit.
Pada Mikrokontroler ini untuk proses mengirimkan atau membaca karakter terlebih
dahulu disimpan di register I/O UDR.
Pada komunikasi serial asyncronous yang perlu diperhatikan adalah baudrate yang
digunakan untuk mesampling bit data yang dikirim atau diterima, sehingga besar
baudrate antara kedua modul (mikrokontroler dan komputer) harus sama karena jika
berbeda akan mengakibatkan kesalahan penerimaan data. Baudrate yang sering
digunakan dalam komunikasi ini adalah sebesar 9600 bps.
77
Langkah Kerja
#include <mega8535.h>
#include <stdio.h>
// Inisialisasi USART
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
78
5. Ketikkan Program2 berikut pada Editor.c, kemudian simpan.
Program2 mengirimkan kata dengan 3 metode yang berbeda
#include <mega8535.h>
#include <string.h>
#include <stdio.h>
flash unsigned char string1[]={"Komunikasi serial USART"};
flash unsigned char string2[]={"Menggunakan Mikrokontroler"};
flash unsigned char string3[]={"AVR ATMEGA8535"};
putsf(string3);
}
6. Compile dan download program ke modul. Amati pada layar Komputer
7. Tulis Program berikut
79
Program3 Menampilkan Kiriman Karakter dari Komputer ke LCD
#include <mega8535.h>
#include <delay.h>
#define RW PORTD.6
#define E PORTD.7
RS=0;
RW=0;
PORT_DATA =dataLCD;
E=0;
DDR_DATA=0xFF;
RS=1;
RW=0;
80
E=1;
PORT_DATA=dataLCD;
E=0;
dataLCD=0x80;
RS=0;
RW=1;
E=1;
dataLCD=PIN_DATA;
E=0;
//Inisialisasi LCD
dataLCD=0x30;
81
kirim_perintah_lcd();
delay_ms(5);
dataLCD=0x30;
kirim_perintah_lcd();
delay_us(150);
dataLCD=0x30;
kirim_perintah_lcd();
lcd_ready();
delay_us(50);
kirim_perintah_lcd();
lcd_ready();
kirim_perintah_lcd();
lcd_ready();
kirim_perintah_lcd();
lcd_ready();
//display shift
kirim_perintah_lcd();
lcd_ready();
82
//OFF
kirim_perintah_lcd();
lcd_ready();
unsigned char i;
DDRD=0xFF;
PORTD=0x1C;
init_lcd();
//Inisialisasi USART
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
i=0;
while (1)
//terbaca
dataLCD=UDR;
83
tulis_data_ram_lcd();
lcd_ready();
i++;
dataLCD=0x80;
kirim_perintah_lcd();
lcd_ready();
i=0;
Tugas
Buat program untuk menampilkan nama dan no BP anda di komputer!
84