Post on 03-Jan-2022
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto 42 D310012
BAB III
PERANCANGAN DAN PEMBUATAN SISTEM
Pada bab III ini membahas bagaimana perancangan dan pembuatan trainer
mikropengendali seri ATMEL ATmega 28 pin dimana menggunakan ATmega8 dimulai
dengan pembuatan perangkat keras (hardware) maupun pembuatan perangkat lunak
(software).
Pembuatan perangkat keras yaitu berupa perancangan catu daya, perancangan sistem
minimum ATMega8, perancangan LCD, perancangan seven segment, perancangan dot
matrix, perancangan buzzer, perancangan LED, perancangan push button, perancangan
sensor suhu LM35, dan perancangan keypad. Sedangkan untuk perangkat lunak meliputi
pembuatan program C sehingga alat dapat difungsikan sebagai media pembelajaran dengan
program-program yang dimasukkan sehingga perangkat dapat berjalan dengan baik.
A. PERANCANGAN SISTEM
Perancangan trainer mikropengendali seri ATMEL ATmega8 berguna sebagai
media pembelajaran dengan berbagai perangkat yang dapat dioperasikan dengan
program yang sesuai perangkat masukan dan keluarannya. Berikut blok diagram
penyusun trainer-nya.
1. Blok Diagram Rangkaian Sensor Suhu LM35 dan LCD
Blok diagram rangkaian sensor suhu LM35 dan LCD dapat dilihat pada gambar
3.1
Sensor Suhu
LM35
Rangkaian
Reset
LCD
Rangkaian
Osilator
A
T
M
E
G
A
8
Gambar 3.1 Blok Diagram Rangkaian Sensor Suhu LM35 dan LCD
43
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
Pada gambar 3.1 blok diagram rangkaian sensor suhu LM35 dan LCD dapat
dilihat bahwa sensor suhu LM35 merupakan komponen masukan yang berfungsi
untuk mendeteksi suhu yang terjadi dan LCD merupakan komponen keluaran
yang berfungsi untuk menampilkan kondisi suhu sehingga setiap perubahan suhu
yang terjadi dapat dilihat pada tampilan LCD.
2. Blok Diagram Rangkaian Keypad dan Seven Segment
Blok diagram rangkaian keypad dan seven segment dapat dilihat pada gambar 3.2.
Keypad
Rangkaian
Reset
Seven Segment
Rangkaian
Osilator
A
T
M
E
G
A
8
Gambar 3.2 Blok Diagram Rangkaian Keypad dan Seven Segment
Pada gambar 3.2 blok diagram rangkaian keypad dan seven segment dapat
dilihat bahwa keypad merupakan komponen keluaran yang berfungsi sebagai
perangkat masukan berupa tombol-tombol angka dan huruf sedangkan seven
segment merupakan komponen keluaran yang berfungsi untuk menampilkan
karakter yang ditekan pada keypad.
3. Blok Diagram Rangkaian LED, Push Button dan Buzzer
Blok diagram rangkaian LED, push button dan buzzer dapat dilihat pada gambar
3.3.
Push Button
Rangkaian
Reset
LED
Rangkaian
Osilator
A
T
M
E
G
A
8Buzzer
Gambar 3.3 Blok Diagram Rangkaian LED, Push Button dan Buzzer
44
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
Pada gambar 3.3 blok diagram rangkaian LED dan buzzer dapat dilihat bahwa
LED terdiri dari 8 buah yang terhubung dengan push button dan buzzer. Push
button merupakan komponen masukan yang berfungsi sebagai tombol start untuk
mengatur penyalaan LED dan buzzer merupakan komponen keluaran yang
berfungsi sebagai penanda dari penekanan push button. Pada programnya, buzzer
akan berbunyi pada saat penekanan ganjil pada push button.
4. Blok Diagram Rangkaian Dot Matrix
Blok diagram rangkaian dot matrix dapat dilihat pada gambar 3.4.
Push Button
Rangkaian
Reset
Dot Matrix
Rangkaian
Osilator
A
T
M
E
G
A
8
Gambar 3.4 Blok Diagram Rangkaian Dot Matrix
Pada gambar 3.4 blok diagram rangkaian dot matrix dapat dilihat bahwa push
button merupakan komponen masukan yang berfungsi menampilkan karakter saat
dilakukan penekanan sedangkan dot matrix merupakan komponen keluaran yang
berfungsi untuk menampilkan karakter-karakter angka dan huruf pada setiap
penekanan push button.
Berdasarkan blok diagram yang telah dipaparkan dapat dilihat bahwa sistem
trainer mikropengendali 28 pin menggunakan mikropengendali ATmega8 yang
terdiri dari rangkaian input sistem dan rangkaian output sistem. Rangkaian
mikropengendali ATmega8 berfungsi sebagai pemroses dan pengendali seluruh
sistem rangkaian. Rangkaian catu daya berfungsi memberikan catuan energi
sehingga semua sistem dapat bekerja. Rangkaian catu daya yang digunakan
sebesar 5 volt sesuai dengan datasheet tegangan kerja dari mikropengendali
ATmega8.
Cara kerja dari trainer ini adalah menampilkan keluaran-keluaran dari
perangkat masukan. Misalnya penekanan karakter pada keypad akan ditampilkan
45
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
pada seven segment, pendeteksian oleh sensor suhu yang akan ditampilkan pada
LCD dan penekanan pada push button yang akan memberikan pengaruh pada
LED untuk menyala atau mati serta memberikan instruksi pada buzzer untuk
berbunyi pada penekanan ganjil.
B. PERANCANGAN RANGKAIAN
Perancangan dan pembuatan hardware meliputi pembuatan rangkaian secara
skematik baik dari rangkaian LCD, seven segment, LED, keypad, buzzer, dot matrix,
sensor suhu LM35, push button dan beberapa komponen pendukung lainnya. Selain
itu terdapat pula perhitungan komponen yang dipergunakan untuk membuat alat ini.
1. Perancangan Rangkaian Sistem Minimum ATmega8
Rangkaian sistem minimum adalah rangkaian yang harus dimiliki sebuah
sistem dengan menggunakan mikropengendali sebagai pengendalinya. Rangkaian
sistem minimum ATmega8 terdiri dari rangkaian reset dan rangkaian osilator.
a. Rangkaian reset
Rangkaian reset pada mikropengendali ATmega8 berfungsi untuk
mengembalikan kondisi mikropengendali ke kondisi awal program/semula.
Rangkaian reset pada mikropengendali ATMega8 akan terhubung ke port C
pin nomor 1. Pada Tugas Akhir ini digunakan reset yang disebut power on
reset yang artinya akan melakukan reset otomatis ketika mikropengendali
dinyalakan. Dikatakan power on reset karena pin 1 dihubungkan dengan
resistor ke Vcc.
Konfigurasi rangkaian reset yang terhubung pada mikropengendali
ATmega8 dapat dilihat pada gambar 3.5.
Gambar 3.5 Rangkaian Reset
+ VCC 5V
+ 5V
RESET
IC2
ATM
EG
A 8
PC6/RST1
PD0/RXD2
PD1/TXD3
PD24
PD35
PD46
VCC7
GND8
PB6 (XTAL1)9
PB7 (XTAL2)10
PD511
PD612
PD713
PC023
GND22
AVCC20
AREF21
PB014
PB317
PB216
PB115
PC124
PB519
PB418
PC427
PC326
PC225
PC528
C3
10Uf
S1
R1
10K
46
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
b. Rangkaian Osilator
Rangkaian osilator adalah rangkaian yang digunakan untuk menentukan
frekuensi clock pada mikropengendali. Setiap mikropengendali memiliki
nilai kristal yang berbeda–beda tergantung pada pemakaian. Pada Tugas
Akhir ini menggunakan kristal sebesar 12 MHz, untuk mempermudah dalam
melakukan perhitungan. Rangkaian osilator pada mikropengendali akan
terhubung ke pin 9 dan pin 10. Konfigurasi rangkaian osilator dapat dilihat
pada gambar 3.6.
Gambar 3.6 Rangkaian Osilator
Berdasarkan pada gambar 3.7 rangkaian osilator terdiri dari dua kapasitor
keramik sebesar 22 pF dan kristal 12 MHz. Waktu yang dibutuhkan untuk
melakukan satu siklus mesin dalam mengeksekusi program pada
mikropengendali dapat dihitung dengan persamaan 3.1.
T= ................................................................(3.1)
T=
T= 1 µs
Sehingga waktu yang dibutuhkan mikropengendali dalam mengeksekusi
program sebesar 1 µs yang artinya setiap satu siklus mesin maka
mikropengendali ATmega8 memerlukan waktu sebanyak 1 µs.
+ 5V
OSILATOR
X2
12 M
hz
C1
22pF
IC2
AT
ME
GA
8
PC6/RST1
PD0/RXD2
PD1/TXD3
PD24
PD35
PD46
VCC7
GND8
PB6 (XTAL1)9
PB7 (XTAL2)10
PD511
PD612
PD713
PC023
GND22
AVCC20
AREF21
PB014
PB317
PB216
PB115
PC124
PB519
PB418
PC427
PC326
PC225
PC528
C2
22pF
47
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
Gambar rangkaian sistem minimum ATmega8 dapat dilihat pada gambar 3.7.
Gambar 3.7 Rangkaian Sistem Minimum ATmega8
c. Rangkaian Catu Daya
Catu daya merupakan energi yang diperlukan oleh trainer agar dapat
bekerja. Catu daya yang digunakan sebesar 5 Volt sesuai dengan tegangan
kerja pada mikropengendali ATmega8. Perancangan catu daya ini terdiri dari
beberapa bagian yaitu blok rectifier berfungsi sebagai penyearah arus, blok
filter sebagai penyaring tegangan yang naik turun sehingga dengan adanya
filter mampu untuk mengurangi tegangan ripple dan blok regulator berfungsi
untuk menghasilkan tegangan 5 Volt yang dibutuhkan oleh sistem kerja
mikropengendali ATmega8. Rangkaian catu daya pada Tugas Akhir ini dapat
dilihat pada gambar 3.8.
Gambar 3.8 Rangkaian Catu Daya
+ VCC 5V
+ 5V
RESET
OSILATOR
IC2
ATM
EG
A 8
PC6/RST1
PD0/RXD2
PD1/TXD3
PD24
PD35
PD46
VCC7
GND8
PB6 (XTAL1)9
PB7 (XTAL2)10
PD511
PD612
PD713
PC023
GND22
AVCC20
AREF21
PB014
PB317
PB216
PB115
PC124
PB519
PB418
PC427
PC326
PC225
PC528
C3
10Uf
R1
10K
C2
22pF
C1
22pF
X2
12 M
hz
S1
48
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
Pada rangkaian catu daya dapat menggunakan tegangan 5V yang berasal
dari USB downloader dan juga dapat menggunakan tegangan 12V yang
berasal dari trafo. Untuk menjalankan trainer hanya dibutuhkan tegangan
sebesar 5V saja sehingga jika menggunakan trafo, tegangan yang diperoleh
dari trafo akan diturunkan tegangannya menjadi 5V menggunakan IC7805.
Rangkaian catu daya pada gambar 3.8 terdiri dari beberapa bagian yaitu :
1) Rectifier
Rectifier atau penyearah berfungsi sebagai komponen yang
mengubah tegangan AC menjadi tegangan DC. Penyearah pada
umumnya dibedakan menjadi 2 yaitu penyearah setengah gelombang dan
penyearah gelombang penuh. Pada Tugas Akhir ini menggunakan
penyearah gelombang penuh dengan sistem jembatan. Dikatakan
demikian karena pada penyearah tersebut digunakan 4 buah dioda yang
mana 2 buah diodanya menghantar diatas setengah periode positif dan 2
buah dioda lainnya menghantar diatas setengah periode negatif sehingga
hasilnya arus beban penyearah mengalir selama diantara setengah
periode. Besarnya nilai tegangan DC dapat dicari dengan persamaan 3.2.
VDC = .......................................................................(3.2)
Dimana Vp dapat dicari terlebih dahulu dengan menggunakan persamaan
3.3.
Vp = ........................................................................(3.3)
Vp =
Vp = 16,97312 Volt
Setelah Vp = 16,97312 Volt dimasukan ke persamaan 3.2 menjadi :
VDC =
VDC =
VDC = 10,81090 Volt
49
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
2) Filter
Merupakan komponen elektronika yang berfungsi untuk mengurangi
tegangan ripple atau tegangan naik turun akibat arus yang tidak stabil
pada output penyearah gelombang penuh. Semakin besar nilai filter yang
digunakan maka nilai tegangan ripple akan semakin menurun. Filter
yang digunakan pada rangkaian adalah filter kapasitor. Besarnya
persentase (%) dari tegangan ripple yang ada pada suatu sistem
merupakan perbandingan antara tegangan ripple dan tegangan DC dari
suatu sistem.
3) IC Regulator
Regulator berfungsi untuk memberikan tegangan keluaran yang
stabil. IC Regulator yang digunakan adalah LM 7805 yang berfungsi
untuk mengubah tegangan 12 Volt menjadi tegangan 5 Volt. Pada
perhitungan nilai tegangan DC diatas diperoleh tegangannya sebesar
10,81090 Volt. Tegangan tersebut merupakan tegangan input bagi
rangkaian filter dan IC Regulator, sesuai dengan datasheet dari LM7805
bahwa tegangan input (Vin) berada pada tegangan 7,5 Volt – 20 Volt
maka tegangan output (Vout) dari IC LM7805 sebesar 4,8 Volt – 5,2
Volt. Sehingga melihat karakteristik dari LM7805 diatas maka tegangan
5 Volt dapat mengalir pada rangkaian dan sesuai yang dibutuhkan oleh
tegangan kerja mikropengendali ATmega8. Komponen kapasitor yang
berada pada output LM7805 berfungsi sebagai filter kembali supaya
tegangan ripple semakin berkurang. Ketika tegangan ripple kecil maka
tegangan output sebesar +5 Volt akan menjadi lebih stabil, tegangan
output tidak cepat berubah-ubah.
2. Rangkaian Antar Muka Mikropengendali
Pada bagian ini akan dijelaskan gambar rangkaian dari tiap komponennya yang
terhubung ke mikropengendali.
50
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
a. Rangkaian Mikropengendali dan LED
Pada bagian ini, Light Emitting Diode (LED) merupakan komponen
keluaran yang menyala secara bergantian antara ganjil dan genap tergantung
pada penekanan yang dilakukan pada push button. Pada penekanan pertama,
LED ganjil yang akan menyala dan pada penekanan yang kedua, LED genap
yang menyala. Gambar rangkaian mikropengendali dan LED dapat dilihat
pada gambar 3.9.
Gambar 3.9 Rangkaian Mikropengendali dan LED
b. Rangkaian Mikropengendali dan Buzzer
Pada bagian ini, buzzer berfungsi sebagai komponen keluaran yang
menandakan bahwa LED ganjil menyala setelah penekanan pertama pada
push button. Pada penekanan kedua pada push button, bunyi tidak akan
berbunyi. Gambar rangkaian mikropengendali dan buzzer dapat dilihat pada
gambar 3.10.
Gambar 3.10 Rangkaian Mikropengendali dan Buzzer
51
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
c. Rangkaian Mikropengendali dan Push button
Pada bagian ini, push button berfungsi sebagai komponen masukan untuk
menyalakan dan mematikan LED sesuai dengan penekanannya. Pada
penekanan pertama pada push button maka akan menyalakan LED ganjil dan
pada penekanan push button yang kedua maka LED genap yang menyala dan
LED ganjil mati. Pada penekanan pertama push button juga mempengaruhi
penyalaan buzzer agar berbunyi sedangkan pada penekanan kedua push
button, buzzer tidak akan berbunyi. Gambar rangkaian mikropengendali dan
push button dapat dilihat pada gambar 3.11.
Gambar 3.11 Rangkaian Mikropengedali dan Push Button
d. Rangkaian Mikropengendali dan Keypad
Pada bagian ini, keypad berfungsi sebagai komponen masukan yang jika
dilakukan penekanan pada tiap tombolnya akan ditampilkan pada seven
segment. Gambar rangkaian mikropengendali dan keypad dapat dilihat pada
gambar 3.12.
Gambar 3.12 Rangkaian Mikropengendali dan Keypad
52
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
e. Rangkaian Mikropengendali dan Seven segment
Pada bagian ini, seven segment merupakan komponen keluaran yang
akan menampilkan karakter yang ditekan pada keypad. Gambar rangkaian
mikropengendali dan seven segment dapat dilihat pada gambar 3.13.
Gambar 3.13 Rangkaian Mikropengendali dan Seven segment
f. Rangkaian Mikropengendali dan LCD
Pada bagian ini, LCD merupakan komponen keluaran yang berfungsi
untuk menampilkan nilai suhu yang terdeteksi pada sensor suhu. Gambar
rangkaian mikropengendali dan LCD dapat dilihat pada gambar 3.14.
Gambar 3.14 Rangkaian Mikropengendali dan LCD
g. Rangkaian Mikropengendali dan Sensor Suhu LM35
Pada bagian ini, sensor suhu LM35 merupakan komponen masukan yang
berfungsi sebagai pendeteksi suhu kemudian hasilnya akan ditampilkan pada
53
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
LCD. Gambar rangkaian mikropengendali dan sensor suhu LM35 dapat
dilihat pada gambar 3.15.
Gambar 3.15 Rangkaian Mikropengendali dan Sensor Suhu LM35
h. Rangkaian Mikropengendali dan Dot matrix
Pada bagian ini, dot matrix merupakan komponen keluaran bekerja
sesuai programnya dengan kabel konektor yang dimanipulasi sebagai push
button. Dot matrix berfungsi sebagai komponen yang menampilkan karakter
setelah konektor ditancapkan lalu dilepas, diibaratkan seperti penekanan
tombol. Gambar rangkaian mikropengendali dan dot matrix dapat dilihat pada
gambar 3.16.
Gambar 3.16 Rangkaian Mikropengendali dan Dot matrix
3. Rangkaian Sistem Keseluruhan
Setelah perancangan tiap rangkaian pada sistem selesai dibuat maka dapat
dibuat rancangan sistem secara keseluruhan. Perancangan rangkaian sistem
keseluruhan pada pembuatan tugas akhir trainer mikropengendali seri ATMEL
ATmega 28 pin menggunakan ATmega8 dapat dilihat pada gambar 3.17.
+ 5 V
DO
T M
AT
RIX
C1
13
B51
B412
B38
B214
B19
C2
3
B67
B72
C5
6
C4
10
C3
4/11
IC2
AT
ME
GA
8
PC6/RST1
PD0/RXD2
PD1/TXD3
PD24
PD35
PD46 VCC
7
GN
D8
PB6 (XTAL1)9
PB7 (XTAL2)10
PD511
PD612
GN
D22
AVCC20
PB
014
PB
115
PB
216
PB
317
PB
418
C3
22pF
X2
12 M
hz
C4
22pF
R1 10K
54
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
Gambar 3.17 Rangkaian Sistem Keseluruhan
+ VCC 5V
+ VCC 5V
+ VCC 5V
1 3
4 5 6
7 8 9
* 0 #
2 3 4
6
11
12
13
KEY_PAD 4X4
2 A
B
C
D
5
DOT MATRIX 5 x 7
7 SEGMEN INDICATORLCD 16 x 2 DISPLAY
POWER SUPPLY
MINIMUM SYSTEM
8 LED INDICATORGnd
+
2 4 6
11
12
13
Gnd
+
23
24
25
26
27
14
+
23456111213+
2
3
4
5
6
11
12
14
15
16
17
18
Gnd
28
3
23
R7
10K
C322pF
X2
12 M
hz
C4 22pF
R14
220
R17 220
R15 220
R11
BZ1BUZZER
Q1
BC547
R9 1K2
US
B A
SP13579
246810
J?
8E D + C Dp
BA+FG
1 2 3 4 5678910
3
2
10
4
15
83
124
27
76
6
5
13
1
14
2
4/11
3
91
D10
LED
R18
330
R25
330
D3
LED
SE
NS
OR
SU
HU
Lm 35
.+
.
.
IC2
AT
ME
GA
8
PC6/RST1
PD0/RXD2
PD1/TXD3
PD24
PD35
PD46
VC
C7
GN
D8
PB6 (XTAL1)9
PB7 (XTAL2)10
PD511
PD612
PD713
PB014
PC528
PC427
PC326
PC225
PC124
PC023
GN
D22
AREF21
AV
CC
20
PB519
PB418
PB317
PB216
PB115
R10
10KVR110k
J?
LCD
1 2 3 4 5 6 7 8 9 10
11
12
13
14
15
16
J?
12 V 1
2
C5
2200Uf R5
330
IC3
7805
1 2 3
D11
LED
D?
BRIDGE
- +
C6
1000Uf
55
Laporan Tugas Akhir BAB III
STT Telematika Telkom Purwokerto D310012
C. Pembuatan dan Penjelasan Program Sistem
Pembuatan program trainer ATmega8 memakai pemrograman bahasa C dan
software bantu yang digunakan CV AVR. Rancangan pembuatan program tersebut
dapat dilihat pada flowchart.
1. Flowchart Program LED dan Buzzer
Flowchart program LED dan buzzer dapat dilihat pada gambar 3.18.
Pin B.1 = 0 ?
Hitung = 1 ?
Port D = 0 x AA
(LED ganjil ON)
Port B.0 = 1
(Buzzer On)
Hitung = 2 ?
Port D = 0 x 55
(LED genap ON)
Port B.0 = 0
(Buzzer Off)
Hitung = 0
Selesai
No
Yes
No
Yes
Mulai
Inisialisasi Port I/O
ATmega 8
Gambar 3.18 Flowchart Program LED dan Buzzer
Berdasarkan flowchart program LED dan buzzer dapat dilihat bahwa ketika
program sudah dimulai melakukan inisialisasi port sistem yaitu pin I/O ATmega8.
Kemudian program akan melakukan proses pada pin B.1. Jika tidak maka akan
kembali ke proses pengecekan pin B.0 dan jika ya akan berlanjut ke proses hitung
(memori). Jika hitung = 1 maka LED ganjil akan menyala dan buzzer berbunyi
tetapi jika tidak maka hitung = 2. Jika hitung = 2 adalah tidak maka akan kembali
56
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
ke proses hitung = 1 tetapi jika ya maka LED genap akan menyala dan buzzer
tidak berbunyi dan selesai
a. Program Inisialisasi Port I/O ATMega 8
Program untuk melakukan inisialisasi sistem port I/O ATMega 8 cukup
dengan memanggil library dari ATMega 8 dan pengaturan Port I/O pada
code vision AVR dengan listing program :
#include <mega8.h> // Memanggil library ATMega 8
#include <delay.h>
// Declare your global variables here
void main(void)
{// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=P
State0=0
PORTB=0x02;
DDRB=0x01;
Dari listing program diatas bahwa PORTB=0x02 artinya buzzer berada pada
port B pin 1. Konfigurasi port B dapat dilihat pada gambar 3.19.
7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 0
Gambar 3.19 Konfigurasi Port B
Dari gambar 3.19 dapat dilihat bahwa pin yang digunakan adalah 1 karena
pada program dikatakan 02. Sedangkan DDRB=0x01 buzzer berada pada
posisi output. Data Direction Register (DDR) akan bernilai 0 jika komponen
merupakan input dan bernilai 1 jika komponen merupakan output.
b. Inti Program
while (1)
if (PINB.1==0)
hitung++;
57
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
if (hitung == 1)
delay_ms(100);
PORTD = 0XAA;
PORTB.0 = 1;
delay_ms(300);
delay_ms(50);
if (hitung == 2)
PORTD=0xFF;
delay_ms(100);
PORTD = 0X55;
PORTB.0 = 0;
hitung = 0;
delay_ms(300); // menentukan delay 300 ms\
Dari listing program diatas bahwa port D pada mikropengendali
terhubung pada LED dan port B0 terhubung pada buzzer. Pada program
PORTD=0xAA artinya adalah LED ganjil menyala. Dapat diketahui bahwa
LED ganjil menyala dengan cara mengubah bilangan heksa AA menjadi
biner. Pada bilangan heksa A berarti 10. Konfigurasi port D dapat dilihat
pada gambar 3.20.
8 4 2 1
1 0 1 0
Gambar 3.20 Konfigurasi Port D
Dari gambar 3.20 dapat dilihat bahwa jika LED ganjil menyala maka
dapat dibinerkan menjadi 10101010. Jika PORTB.0=1 maka buzzer akan
berbunyi. Hal tersebut diketahui dengan cara jika port B.0 bernilai 1 artinya
buzzer berbunyi dan jika port B.0 bernilai 0 berarti buzzer mati.Pada
penyalaan LED genap, program yang digunakan adalah PORTD=0x55. Sama
dengan penyalaan LED ganjil, 55 pada penyalaan LED genap juga diubah
kedalam bentuk biner menjadi 10101010.
8 4 2 1
1 0 1 0
58
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
2. Flowchart Program LCD dan Sensor Suhu LM35
Flowchart program LCD dan sensor suhu LM35 dapat dilihat pada gambar
3.21.
Start
Inisialisasi Port I/O
Atmega8
Tampilkan Identitas
di LCD
Baca Output
ADC
Suhu =
read_adc(0)
Konversi
Suhu ke
Celcius
Tampilkan Suhu
pada LCD
Selesai
Gambar 3.21 Flowchart Program LCD dan Sensor Suhu LM35
Berdasarkan flowchart program LED dan buzzer dapat dilihat bahwa ketika
program sudah dimulai melakukan inisialisasi port sistem yaitu Pin I/O
ATmega8. Kemudian program yang sudah dibuat untuk melakukan inisialisasi
LCD sehingga LCD akan menampilkan karakter yang diinginkan sesuai dengan
perintah program. Pada Tugas Akhir ini LCD akan menampilkan suhu. Sensor
suhu LM35 mendeteksi suhu yang terjadi dan melakukan pembacaan nilai ADC
dengan menggunakan program pembacaan ADC pada sensor LM35. Nilai ADC
tersebut yang kemudian akan ditampilkan pada LCD.
a. Program Inisialisasi Port I/O ATMega 8
Program untuk melakukan inisialisasi sistem port I/O ATMega 8 cukup
dengan memanggil library dari ATMega 8 dan pengaturan Port I/O pada
code vision AVR dengan listing program :
59
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
#include <mega8.h> // Memanggil library ATMega 8
#include <delay.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=P
State0=0
PORTB=0x02;
DDRB=0x00;
Dari listing program diatas bahwa PORTB=0x02 artinya sensor suhu
LM35 dihubungkan pada port B.1 sedangkan DDRB=0x00 artinya sensor
suhu LM35 merupakan komponen input.
b. Program Inisialisasi fungsi LCD
CV AVR memberikan kemudahan dalam menampilkan karakter pada
LCD karena didukung pustaka yang telah disediakan tinggal melakukan
aktifasi LCD yang akan digunakan. Setelah melakukan setting LCD sesuai
dengan gambar 3.19 diatas tentang dialog Port LCD kemudian menyimpan
file tersebut dengan nama file LCD. Membuat program LCD dengan
menampilkan karakter suhu dengan listing program :
#include <mega8.h>// inisialisasi ATMega 8
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
60
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("ARTATY PANJAITAN");
lcd_gotoxy(0,1);
lcd_putsf("SENSOR SUHU LM35");
delay_ms(10000);
Pada Program LCD diatas terdiri dari blok-blok program untuk
melakukan inisialisasi LCD dengan listing program :
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
Artinya bahwa LCD terhubung ke port D
Untuk melakukan inisialisasi LCD cukup dengan melakukan instruksi
dengan listing program :
//LCD module initialization
lcd_init(16);//inisialisasi lcd
Kedua cara diatas harus disertakan sebelum mengakses LCD. Kemudian
program utama dari LCD ini adalah:
lcd_init(16); //inisialisasi lcd 16x2
lcd_gotoxy(0,0); //menempatkan karakter di posisi kolom 0, baris 0
61
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
lcd_putsf("ARTATY PANJAITAN");//menampilkan karakter yang ada di
dalam kurung ( ... )
lcd_gotoxy(0,1); //menempatkan karakter di posisi kolom 0,baris 1
lcd_putsf("SENSOR SUHU LM35");//menampilkan string sensor suhu
c. Program Pengubah Analog ke Digital (ADC)
Penggunaan ADC sangat banyak, terutama dalam bidang pengukuran,
banyak keluaran yang masih berupa tegangan analog yang harus dikonversi
ke digital agar dapat diolah oleh mikropengendali. Program mengaktifkan
ADC dapat dilihat pada listing program :
#include <alcd.h>
#include <stdlib.h>
#define ADC_VREF_TYPE 0x40
Artinya mendefinisikan fungsi ADC tegangan yang digunakan yaitu Pin
Vref (tegangan referensi ADC) yang memiliki alamat heksa 0x40
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;
}
// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AVCC pin
ADMUX=ADC_VREF_TYPE & 0xff; // blok init. ADC
Listing program diatas merupakan program untuk inisialisasi ADC.
Pengaturan terhadap frekuensi clock ADC internal yang terdapat pada chip
62
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
mikropengendali ATMega 8 dengan nilai sebesar 750.000 kHz, setting
dilakukan pada software CodeVision AVR. Register ADC ADMUX yang
berfungsi sebagai register penentuan tegangan referensi ADC ditentukan
dengan pengalamatan heksa sebesar 0xff
ADCSRA=0x83;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
lcd_clear( );
SUHU = read_adc(0); //baca data ADC dari ch.0
suhu_celcius = (float)SUHU*500/1023;//persamaan untuk mengubah
kedalam derajat celcius
Listing program diatas adalah proses untuk pembacaan data suhu dengan
melakukan pengubahan suhu dalam satuan derajat celsius dengan persamaan
yang ditentukan.
Kemudian setelah melakukan pembacaan nilai ADC tersebut akan
ditampilkan pada LCD. Berikut ini listing programnya.
lcd_clear();//menghapus LCD terlebih dahulu sebelum menuliskan karakter
pada LCD
lcd_gotoxy(0,0); //menampilkan karakter pada kolom 0 baris 0 LCD
lcd_putsf("ARTATY PANJAITAN");//menampilkan nama mahasiswa
float(suhu_celcius,1,temp);//mengubah tipe data float ke tipe data array yg
akan ditampilkan di LCD
lcd_gotoxy(0,1);//menampilkan karakter adc pada kolom 0 baris 1
lcd_puts(temp);//menampilkan seluruh program pembacaan adc
lcd_gotoxy(5,1); //menampilkan karakter adc pada kolom 5 baris 1
lcd_putchar(0xdf);//menampilkan karakter derajat
lcd_putsf("C");// menampilkan karakter C (Celcius)
delay_ms(500); //menentukan delay 100 ms
63
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
3. Flowchart Program Keypad dan Seven Segment
Flowchart program keypad dan seven segment dapat dilihat pada gambar
3.22.
Scan Baris
Ke 2
Tombol 4 On
Tampil Angka 4 di
Seven Segment
Tombol 5 On
Tampil Angka 5 di
Seven Segment
Tombol 6 On
Tampil Angka 6 di
Seven Segment
Tombol B On
Tampil Huruf B di
Seven Segment
2
Mulai
Inisialisasi Port I/O
ATmega8
Scan Baris 1
Keypad
Tombol 1 On
Tampil Angka 1 di
Seven Segment
Tombol 2 On
Tampil Angka 2 di
Seven Segment
Tombol 3 On
Tampil Angka 3 di
Seven Segment
Tombol A On
Tampil Huruf A di
Seven Segment
Ya
Tidak
Ya
Ya
Ya
Tidak
Tidak
Tidak
Tidak
Ya
Ya
Ya
Ya
Tidak
Tidak
Tidak
64
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
2
Scan Baris
Ke 3
Tombol 7 On
Tampil Angka 7 di
Seven Segment
Tombol 8 On
Tampil Angka 8 di
Seven Segment
Tombol 9 On
Tampil Angka 9 di
Seven Segment
Tombol C On
Tampil Huruf C di
Seven Segment
Scan Baris
Ke 4
Tombol * On
Tampil Tanda * di
Seven Segment
Tombol 0 On
Tampil Angka 0 di
Seven Segment
Tombol # On
Tampil Tanda # di
Seven Segment
Tombol D On
Tampil Huruf D di
Seven Segment
4
Selesai
Ya
Tidak
Ya
Ya
Ya
Ya
Ya
Ya
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
Ya
Gambar 3.22 Flowchart Program Keypad dan Seven segment
Pada gambar 3.22 dapat dilihat bahwa pada keypad dilakukan sistem scan per
barisnya. Setelah dilakukan scan pada baris pertama maka dilakukan penekanan
tombol keypad yang ada pada baris pertama. Jika tombol angka 1 = ON atau
65
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
dalam posisi ditekan maka akan tampil karakter angka 1 pada seven segment dan
jika tidak maka akan dilakukan penekanan berarti yang muncul adalah karakter
yang disebelahnya. Hal yang sama terjadi pada tiap tombolnya hingga pada baris
yang ke 4. Jika semuanya sudah maka prosesnya sudah selesai.
a. Listing Program
while (1)
{
// Place your code here
detek_key();
PORTC=dtkey;
PORTB=dtkey2;
delay_ms(5) ;
};
}
void detek_key(void) {
PORTD.4=0;
dt=(~PIND & 0x0F);
switch (dt) {
case 1 : dtkey=0xF9; dtkey2=0x01;//1
break;
case 2 : dtkey=0x24; dtkey2=0x02; //2
break;
case 4 : dtkey=0x30; dtkey2=0x02; //3
break;
case 8 : dtkey=0x08;dtkey2=0x02; //A
break;
};
Berdasarkan listing program dapat dilihat bahwa keypad terhubung
dengan port D pada mikropengendali. PORTD.4=0 berarti karakter baris
pertama pada keypad akan bernilai 0 saat dilakukan penekanan. Misalnya
case 1 : dtkey=0xF9; dtkey2=0x01. Program tersebut adalah untuk
menampilkan angka 1. Pada program dtkey=0xF9 artinya port yang
66
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
terhubung diibaratkan bilangan biner dan diubah ke dalam bentuk
heksadesimal. Pada program, dtkey artinya adalah pendeteksian pin berapa
saja yang terhubung saat karakter akan dimunculkan. Pada program ada kata
dtkey2 dikarenakan pin yang digunakan pada port C tidak mencukupi
sehingga meminjam port B.0. Jika pada dtkey2=0x01 berarti port B.0
digunakan dan jika dtkey2=0x02 berarti port B.0 tidak digunakan. Hal yang
sama juga dilakukan untuk penekanan tombol lainnya. Untuk program
penekanan baris selanjutnya hanya merubah PORTD.4 yang semula 0
menjadi 1 dan PORTD.5=0 karena tiap barisnya port yang digunakan menjadi
port selanjutnya dan bernilai 0 karena dilakukan penekanan. Demikian hal
yang sama dilakukan hingga penekanan pada baris keypad ke 4.
4. Flowchart Program Dot matrix
Flowchart program dot matrix dapat dilihat pada gambar 3.23.
Mulai
Inisialisasi Port I/O
ATmega8
Output
Port B “Kolom”
Port D “Baris”
Siapkan Memori
Sebanyak Jumlah
Karakter
Tampilkan
Karakter
Data = 8 Baris
?
Kolom = 5 ?
Data = 1
Data = 0 ?
Selesai
Tidak
Ya
Ya
Ya
Tidak
Tidak
Gambar 3.23 Flowchart Program Dot matrix
67
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
Pada gambar 3.23 dapat dilihat bahwa port B digunakan untuk kolom
dan port D digunakan untuk baris. Setelah itu dot matrix akan menyiapkan
memori sesuai dengan karakter yang akan ditampilkan. Untuk menampilkan 1
karakter dilakukan pengecekan per kolom yang terdiri dari 8 baris dan
tersedia 5 kolom. Jika pada kolom pertama 2 penuh 8 baris maka dilanjutkan
ke kolom kedua. Jika dalam 1 kolom belum 8 baris, maka dilakukan
pengulangan hingga terisi penuh 8 baris. Jika seluruh kolom suhu terisi, maka
akan ditampilkan karakter selanjutnya dengan langkah yang sama.
a. Listing Program
while (1)
{
if(PINC.0 == 0)
{
tombol++;
delay_ms(500);
}
if (tombol == 1)
{
tombol = 0;
angka=35;
kolom[0]=(0xFE);
kolom[1]=(0xFD);
kolom[2]= (0xFB);
kolom[3]=(0xF7);
kolom[4]=(0xEF);
kolom[5]=(0xDF);
kolom[6]=(0xBF);
kolom[7]=~(0x7F);
for (z=0;z<36;++z)
{
//for (x=0;x<10;++x) //untuk menggeser (non aktif)
//{
68
Laporan Tugas Akhir BAB III
STT telematika Telkom Purwokerto D310012
for (i=0;i<100;++i)
{
y=x;
for (j=0;j<8;++j)
{
//angka=0;
PORTB=kolom[j];
urut=y;
nyala_led();
PORTD=urut;
delay_ms(1);
y=y+1;
//PORTC=kolom[j+1];
if (y==8)
{
y=0;
}
}
PORTB=~(0xFE);
}
//}
//PORTB=0xFF;
angka=angka-1;
delay_ms(1000);
Berdasarkan listing program dapat dilihat bahwa jika tombol (pinC.0)
ditekan, maka memori tombol akan bertambah 1 dan delay 500 ms. Lalu akan
dilakukan pengecekan dan jika tombol=1 berarti sedang dalam keadaan
ditekan maka akan menampilkan karakter dari angka 0-1 dan huruf A-Z.