Laporan Tugas Akhir Kuliah Mikrokontrole
Laporan Tugas Akhir Kuliah Mikrokontroler tahun 2013
“Tik-Tik [D]eVolution”
Disusun oleh :
KELOMPOK SATRIA BAJA HITAM
Salahuddin Muhammad
(11/316882/PA/14002)
Arif Abdul Aziz
(10/300541/PA/13297)
Muhammad Iqbal
(10/297579/PA/13020)
Program Studi Elektronika dan Instumentasi
Jurusan Ilmu Komputer dan Elektronika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Gadjah Mada
Yogyakarta
2013
A. Ringkasan Topik
Tik-Tik [D]eVolution adalah suatu permainan sederhana yang menuntut
keterampilan pemain untuk merespon dengan perintah yang ditunjukkan pada LCD
Graphic. Perintah tersebut adalah menekan tombol pada Keypad Matrix sesuai dengan
tanda panah yang muncul pada layar. Pemain akan diberikan jeda waktu pada saat
keluarnya tanda panah untuk menekan tombol pada Keypad Matrix. Pada jeda waktu
tersebut tombol yang pertama kali ditekanlah yang akan dilihat apakah pemain menekan
tombol dengan benar atau tidak. Pemain diberi batas maksimal menekan tombol dengan
salah sebanyak lima kali. Sehingga setelah pemain salah menekan tombol sebanyak lima
kali maka permainan akan berhenti.
Sistem permainan ini adalah survival, maksudnya tidak ada batasan waktu kapan
permainan akan berhenti. Yang membuat permainan berhenti adalah ketika pemain telah
melakukan lima kali kesalahan. Pada saat permainan dimulai, tanda panah yang muncul
pada LCD Graphic mempunyai jeda yang cukup lama. Akan tetapi semakin lama pemain
berhasil menekan tombol dengan benar, maka jeda pergantian tanda panah akan semakin
cepat.
Sistem penilaian akan dilakukan ketika pemain berhasil menekan tombol dengan
benar. Nilai tersebut akan dicatat pada 7segment yang terdapat pada learning board.
Untuk setiap nilai yang benar bernilai satu poin. Tidak ada pengurangan nilai ketika
pemain salah menekan tobol. Yang membedakan apakah pemain menekan tombol
dengan benar atau tidak adalah bunyi yang dihasilkan oleh Buzzer. Dengan demikian
pemain pemain akan tahu kapan dia berhasil menekan tombol dengan benar dan kapan
pemain salah menekan tombol.
B. Rangakaian Mikrokontroler
C. Rancangan Sistem
LCD Graphic
Seven Segment
Buzzer
Mikrokontroler ( ARM
CORTEX M0)
Keypad Matrix
NUVOTON NUC 140
Pada proyek tugas ini, digunakan berbagai macam perangkat yang sudah terdapat pada
learning board NUVOTON NUC 140. Perangkat yang digunakan adalah :
1. LCD graphic
: sebagai penampil/display utama pada permainan. LCD graphic
akan menampilkan gambar anak panah dengan berbagai macam arah, yang di tampilkan
secara bergantian dalam waktu tertentu. Serta menampilkan jumlah toleransi kesalahan
sebanyak 5 bintang yang akan berkurang satu per satu ketika pemain melakukan
kesalahan dalam bermain. LCD akan menampilkan tiga kondisi permainan saat
berlangsung, yaitu: BENAR, SALAH, dan WAKTU HABIS.
2. Seven segment
: sebagai penampil score / jumlah kebenaran.
3. Tombol keypad
: sebagai inputan utama pada permainan. Keypad yang di gunakan
antara lain nomor 2 untuk mewakili panah atas, nomor 4 mewakili panah kiri, nomor 5
mewakili tengah dengan symbol plus, nomor 6 mewakili panah kanan, dan nomor 8
mewakili panah bawah.
4. Buzzer
: sebagai penanda saat tombol yang ditekan, benar atau salah.
Apabila benar akan ada tanda sebanyak 1 kali, dan apabila salah atau waktu habis maka
akan ada tanda sebanyak 3 kali.
Proses kerja nya adalah, mikrokontroler akan menampilkan melalui LCD, berbagai
macam gambar anak panah dengan berbagai macam arah yang di tampilkan secara bergantian
pada waktu tertentu. Saat salah satu panah keluar, maka pemain akan menekan tombol keypad
sesuai dengan anak panah yang di tekan olehnya. Bila tombol yang di tekan sesuai dengan arah
dari anak panah, maka mikrokontroler akan mengontrol seven segment untuk menambahkan
score dan menyalakan buzzer sebagai tanda jika tombol yang ditekan benar. Tatapi, bila tombol
yang ditekan salah, maka mikrokontroler akan memberikan tanda salah dengan buzzer, serta
menambah kesalahan. Jika jumlah kesalahan yang dilakukan mencapai 5 kali. Maka
mikrokontroler menghentkan permainan dan permainan selesai.
C. FLowChart
mulai
LCD
menampilkan
gambar panah
Keypad matrik
di tekan
TIDAK
Kesalahan
bertambah
TIDAK
Jumlah
kesalahan 5
YA
Selesai
tombol yang
ditekan sesuai
dengan yang di
tampilkan pada
LCD
YA
Score bertambah
D. Listing dan Penjelasan
#include
#include
#include
#include
#include
#include
"NUC1xx.h"
"DrvSYS.h"
"DrvGPIO.h"
"LCD_Driver.h"
"ScanKey.h"
"Seven_Segment.h"
int j, k;
int i, angka, sat, pul, rat, rib;
int angka1, sat1, pul1, rat1, rib1;
int waktu = 300;
int a = 0;
int nilai;
int life = 5;
unsigned char temp;
void panah_kanan(void)
{
for(j=85; j>=55; j--)
{
SetPACA(4,j);
WriteData(255);
}
SetPACA(5,62);
WriteData(255);
SetPACA(5,61);
WriteData(127);
SetPACA(5,60);
WriteData(63);
SetPACA(5,59);
WriteData(31);
SetPACA(5,58);
WriteData(15);
SetPACA(5,57);
WriteData(7);
SetPACA(5,56);
WriteData(3);
SetPACA(5,55);
WriteData(1);
SetPACA(3,62);
WriteData(255);
SetPACA(3,61);
WriteData(254);
SetPACA(3,60);
WriteData(252);
SetPACA(3,59);
WriteData(248);
Program ini menggunakan
library NUC1xxx.h,
DrvSYS.h, dan DrvGPIO.h
sebagai dasar.
LCD_Driver.h sebagai
library untuk mengakses
LCD. Scankey.h berfung
sebagai library untuk
mengakses keypad.
Seven_segment.h sebagai
library untuk mengakses 7
segment.
Terdapat 5 buah fungsi
yaitu panah atas, kanan,
kiri, bawah , dan tengah .
Masing-masing fungsi
tersebut menggambarkan
anak panah sesuai dengan
arahnya masing-masing,
dengan cara membuat
titik-titik pada setiap
kordinat di LCD grafik
sehingga membentuk
gambar arah panah dan
plus. Digunakan fungsi
SetPACA () sebagai
penentu koordinat pada
LCD dan fungsi WriteData
() yang berfungsi
menampilkan titik-titik
tersebut pada LCD. Kedua
fungsi ini mengambil
fungsi di dalam library
LCD_Driver.h
SetPACA(3,58);
WriteData(240);
SetPACA(3,57);
WriteData(224);
SetPACA(3,56);
WriteData(192);
SetPACA(3,55);
WriteData(128);
SetPACA(4,54);
WriteData(255);
SetPACA(4,53);
WriteData(126);
SetPACA(4,52);
WriteData(60);
SetPACA(4,51);
WriteData(24);
}
void panah_kiri(void)
{
for(j=81; j>=51; j--)
{
SetPACA(4,j);
WriteData(255);
}
SetPACA(5,74);
WriteData(255);
SetPACA(5,75);
WriteData(127);
SetPACA(5,76);
WriteData(63);
SetPACA(5,77);
WriteData(31);
SetPACA(5,78);
WriteData(15);
SetPACA(5,79);
WriteData(7);
SetPACA(5,80);
WriteData(3);
SetPACA(5,81);
WriteData(1);
SetPACA(3,74);
WriteData(255);
SetPACA(3,75);
WriteData(254);
SetPACA(3,76);
WriteData(252);
SetPACA(3,77);
WriteData(248);
SetPACA(3,78);
WriteData(240);
SetPACA(3,79);
WriteData(224);
SetPACA(3,80);
WriteData(192);
SetPACA(3,81);
WriteData(128);
SetPACA(4,82);
WriteData(255);
SetPACA(4,83);
WriteData(126);
SetPACA(4,84);
WriteData(60);
SetPACA(4,85);
WriteData(24);
}
void panah_atas(void)
{
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
SetPACA(2,71);
WriteData(128);
SetPACA(2,70);
WriteData(192);
SetPACA(2,69);
WriteData(224);
SetPACA(2,68);
WriteData(240);
SetPACA(2,67);
WriteData(240);
SetPACA(2,66);
WriteData(224);
SetPACA(2,65);
WriteData(192);
SetPACA(2,64);
WriteData(128);
SetPACA(3,72);
WriteData(255);
SetPACA(3,73);
WriteData(254);
SetPACA(3,74);
WriteData(252);
SetPACA(3,75);
WriteData(248);
SetPACA(3,76);
WriteData(240);
SetPACA(3,77);
WriteData(224);
SetPACA(3,78);
WriteData(192);
SetPACA(3,79);
WriteData(128);
SetPACA(3,63);
WriteData(255);
SetPACA(3,62);
WriteData(254);
SetPACA(3,61);
WriteData(252);
SetPACA(3,60);
WriteData(248);
SetPACA(3,59);
WriteData(240);
SetPACA(3,58);
WriteData(224);
SetPACA(3,57);
WriteData(192);
SetPACA(3,56);
WriteData(128);
}
void panah_bawah(void)
{
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
SetPACA(5,72);
WriteData(255);
SetPACA(5,73);
WriteData(127);
SetPACA(5,74);
WriteData(63);
SetPACA(5,75);
WriteData(31);
SetPACA(5,76);
WriteData(15);
SetPACA(5,77);
WriteData(7);
SetPACA(5,78);
WriteData(3);
SetPACA(5,79);
WriteData(1);
SetPACA(5,63);
WriteData(255);
SetPACA(5,62);
WriteData(127);
SetPACA(5,61);
WriteData(63);
SetPACA(5,60);
WriteData(31);
SetPACA(5,59);
WriteData(15);
SetPACA(5,58);
WriteData(7);
SetPACA(5,57);
WriteData(3);
SetPACA(5,56);
WriteData(1);
SetPACA(6,71);
WriteData(1);
SetPACA(6,70);
WriteData(3);
SetPACA(6,69);
WriteData(7);
SetPACA(6,68);
WriteData(15);
SetPACA(6,67);
WriteData(15);
SetPACA(6,66);
WriteData(7);
SetPACA(6,65);
WriteData(3);
SetPACA(6,64);
WriteData(1);
}
void panah_tengah(void)
{
for(j=83; j>=53; j--)
{
SetPACA(4,j);
WriteData(255);
}
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
}
void kanan(void)
{
clr_all_pannal();
panah_kanan();
score();
nyawa();
for(i=0;i
“Tik-Tik [D]eVolution”
Disusun oleh :
KELOMPOK SATRIA BAJA HITAM
Salahuddin Muhammad
(11/316882/PA/14002)
Arif Abdul Aziz
(10/300541/PA/13297)
Muhammad Iqbal
(10/297579/PA/13020)
Program Studi Elektronika dan Instumentasi
Jurusan Ilmu Komputer dan Elektronika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Gadjah Mada
Yogyakarta
2013
A. Ringkasan Topik
Tik-Tik [D]eVolution adalah suatu permainan sederhana yang menuntut
keterampilan pemain untuk merespon dengan perintah yang ditunjukkan pada LCD
Graphic. Perintah tersebut adalah menekan tombol pada Keypad Matrix sesuai dengan
tanda panah yang muncul pada layar. Pemain akan diberikan jeda waktu pada saat
keluarnya tanda panah untuk menekan tombol pada Keypad Matrix. Pada jeda waktu
tersebut tombol yang pertama kali ditekanlah yang akan dilihat apakah pemain menekan
tombol dengan benar atau tidak. Pemain diberi batas maksimal menekan tombol dengan
salah sebanyak lima kali. Sehingga setelah pemain salah menekan tombol sebanyak lima
kali maka permainan akan berhenti.
Sistem permainan ini adalah survival, maksudnya tidak ada batasan waktu kapan
permainan akan berhenti. Yang membuat permainan berhenti adalah ketika pemain telah
melakukan lima kali kesalahan. Pada saat permainan dimulai, tanda panah yang muncul
pada LCD Graphic mempunyai jeda yang cukup lama. Akan tetapi semakin lama pemain
berhasil menekan tombol dengan benar, maka jeda pergantian tanda panah akan semakin
cepat.
Sistem penilaian akan dilakukan ketika pemain berhasil menekan tombol dengan
benar. Nilai tersebut akan dicatat pada 7segment yang terdapat pada learning board.
Untuk setiap nilai yang benar bernilai satu poin. Tidak ada pengurangan nilai ketika
pemain salah menekan tobol. Yang membedakan apakah pemain menekan tombol
dengan benar atau tidak adalah bunyi yang dihasilkan oleh Buzzer. Dengan demikian
pemain pemain akan tahu kapan dia berhasil menekan tombol dengan benar dan kapan
pemain salah menekan tombol.
B. Rangakaian Mikrokontroler
C. Rancangan Sistem
LCD Graphic
Seven Segment
Buzzer
Mikrokontroler ( ARM
CORTEX M0)
Keypad Matrix
NUVOTON NUC 140
Pada proyek tugas ini, digunakan berbagai macam perangkat yang sudah terdapat pada
learning board NUVOTON NUC 140. Perangkat yang digunakan adalah :
1. LCD graphic
: sebagai penampil/display utama pada permainan. LCD graphic
akan menampilkan gambar anak panah dengan berbagai macam arah, yang di tampilkan
secara bergantian dalam waktu tertentu. Serta menampilkan jumlah toleransi kesalahan
sebanyak 5 bintang yang akan berkurang satu per satu ketika pemain melakukan
kesalahan dalam bermain. LCD akan menampilkan tiga kondisi permainan saat
berlangsung, yaitu: BENAR, SALAH, dan WAKTU HABIS.
2. Seven segment
: sebagai penampil score / jumlah kebenaran.
3. Tombol keypad
: sebagai inputan utama pada permainan. Keypad yang di gunakan
antara lain nomor 2 untuk mewakili panah atas, nomor 4 mewakili panah kiri, nomor 5
mewakili tengah dengan symbol plus, nomor 6 mewakili panah kanan, dan nomor 8
mewakili panah bawah.
4. Buzzer
: sebagai penanda saat tombol yang ditekan, benar atau salah.
Apabila benar akan ada tanda sebanyak 1 kali, dan apabila salah atau waktu habis maka
akan ada tanda sebanyak 3 kali.
Proses kerja nya adalah, mikrokontroler akan menampilkan melalui LCD, berbagai
macam gambar anak panah dengan berbagai macam arah yang di tampilkan secara bergantian
pada waktu tertentu. Saat salah satu panah keluar, maka pemain akan menekan tombol keypad
sesuai dengan anak panah yang di tekan olehnya. Bila tombol yang di tekan sesuai dengan arah
dari anak panah, maka mikrokontroler akan mengontrol seven segment untuk menambahkan
score dan menyalakan buzzer sebagai tanda jika tombol yang ditekan benar. Tatapi, bila tombol
yang ditekan salah, maka mikrokontroler akan memberikan tanda salah dengan buzzer, serta
menambah kesalahan. Jika jumlah kesalahan yang dilakukan mencapai 5 kali. Maka
mikrokontroler menghentkan permainan dan permainan selesai.
C. FLowChart
mulai
LCD
menampilkan
gambar panah
Keypad matrik
di tekan
TIDAK
Kesalahan
bertambah
TIDAK
Jumlah
kesalahan 5
YA
Selesai
tombol yang
ditekan sesuai
dengan yang di
tampilkan pada
LCD
YA
Score bertambah
D. Listing dan Penjelasan
#include
#include
#include
#include
#include
#include
"NUC1xx.h"
"DrvSYS.h"
"DrvGPIO.h"
"LCD_Driver.h"
"ScanKey.h"
"Seven_Segment.h"
int j, k;
int i, angka, sat, pul, rat, rib;
int angka1, sat1, pul1, rat1, rib1;
int waktu = 300;
int a = 0;
int nilai;
int life = 5;
unsigned char temp;
void panah_kanan(void)
{
for(j=85; j>=55; j--)
{
SetPACA(4,j);
WriteData(255);
}
SetPACA(5,62);
WriteData(255);
SetPACA(5,61);
WriteData(127);
SetPACA(5,60);
WriteData(63);
SetPACA(5,59);
WriteData(31);
SetPACA(5,58);
WriteData(15);
SetPACA(5,57);
WriteData(7);
SetPACA(5,56);
WriteData(3);
SetPACA(5,55);
WriteData(1);
SetPACA(3,62);
WriteData(255);
SetPACA(3,61);
WriteData(254);
SetPACA(3,60);
WriteData(252);
SetPACA(3,59);
WriteData(248);
Program ini menggunakan
library NUC1xxx.h,
DrvSYS.h, dan DrvGPIO.h
sebagai dasar.
LCD_Driver.h sebagai
library untuk mengakses
LCD. Scankey.h berfung
sebagai library untuk
mengakses keypad.
Seven_segment.h sebagai
library untuk mengakses 7
segment.
Terdapat 5 buah fungsi
yaitu panah atas, kanan,
kiri, bawah , dan tengah .
Masing-masing fungsi
tersebut menggambarkan
anak panah sesuai dengan
arahnya masing-masing,
dengan cara membuat
titik-titik pada setiap
kordinat di LCD grafik
sehingga membentuk
gambar arah panah dan
plus. Digunakan fungsi
SetPACA () sebagai
penentu koordinat pada
LCD dan fungsi WriteData
() yang berfungsi
menampilkan titik-titik
tersebut pada LCD. Kedua
fungsi ini mengambil
fungsi di dalam library
LCD_Driver.h
SetPACA(3,58);
WriteData(240);
SetPACA(3,57);
WriteData(224);
SetPACA(3,56);
WriteData(192);
SetPACA(3,55);
WriteData(128);
SetPACA(4,54);
WriteData(255);
SetPACA(4,53);
WriteData(126);
SetPACA(4,52);
WriteData(60);
SetPACA(4,51);
WriteData(24);
}
void panah_kiri(void)
{
for(j=81; j>=51; j--)
{
SetPACA(4,j);
WriteData(255);
}
SetPACA(5,74);
WriteData(255);
SetPACA(5,75);
WriteData(127);
SetPACA(5,76);
WriteData(63);
SetPACA(5,77);
WriteData(31);
SetPACA(5,78);
WriteData(15);
SetPACA(5,79);
WriteData(7);
SetPACA(5,80);
WriteData(3);
SetPACA(5,81);
WriteData(1);
SetPACA(3,74);
WriteData(255);
SetPACA(3,75);
WriteData(254);
SetPACA(3,76);
WriteData(252);
SetPACA(3,77);
WriteData(248);
SetPACA(3,78);
WriteData(240);
SetPACA(3,79);
WriteData(224);
SetPACA(3,80);
WriteData(192);
SetPACA(3,81);
WriteData(128);
SetPACA(4,82);
WriteData(255);
SetPACA(4,83);
WriteData(126);
SetPACA(4,84);
WriteData(60);
SetPACA(4,85);
WriteData(24);
}
void panah_atas(void)
{
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
SetPACA(2,71);
WriteData(128);
SetPACA(2,70);
WriteData(192);
SetPACA(2,69);
WriteData(224);
SetPACA(2,68);
WriteData(240);
SetPACA(2,67);
WriteData(240);
SetPACA(2,66);
WriteData(224);
SetPACA(2,65);
WriteData(192);
SetPACA(2,64);
WriteData(128);
SetPACA(3,72);
WriteData(255);
SetPACA(3,73);
WriteData(254);
SetPACA(3,74);
WriteData(252);
SetPACA(3,75);
WriteData(248);
SetPACA(3,76);
WriteData(240);
SetPACA(3,77);
WriteData(224);
SetPACA(3,78);
WriteData(192);
SetPACA(3,79);
WriteData(128);
SetPACA(3,63);
WriteData(255);
SetPACA(3,62);
WriteData(254);
SetPACA(3,61);
WriteData(252);
SetPACA(3,60);
WriteData(248);
SetPACA(3,59);
WriteData(240);
SetPACA(3,58);
WriteData(224);
SetPACA(3,57);
WriteData(192);
SetPACA(3,56);
WriteData(128);
}
void panah_bawah(void)
{
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
SetPACA(5,72);
WriteData(255);
SetPACA(5,73);
WriteData(127);
SetPACA(5,74);
WriteData(63);
SetPACA(5,75);
WriteData(31);
SetPACA(5,76);
WriteData(15);
SetPACA(5,77);
WriteData(7);
SetPACA(5,78);
WriteData(3);
SetPACA(5,79);
WriteData(1);
SetPACA(5,63);
WriteData(255);
SetPACA(5,62);
WriteData(127);
SetPACA(5,61);
WriteData(63);
SetPACA(5,60);
WriteData(31);
SetPACA(5,59);
WriteData(15);
SetPACA(5,58);
WriteData(7);
SetPACA(5,57);
WriteData(3);
SetPACA(5,56);
WriteData(1);
SetPACA(6,71);
WriteData(1);
SetPACA(6,70);
WriteData(3);
SetPACA(6,69);
WriteData(7);
SetPACA(6,68);
WriteData(15);
SetPACA(6,67);
WriteData(15);
SetPACA(6,66);
WriteData(7);
SetPACA(6,65);
WriteData(3);
SetPACA(6,64);
WriteData(1);
}
void panah_tengah(void)
{
for(j=83; j>=53; j--)
{
SetPACA(4,j);
WriteData(255);
}
for(k=3;k=64; j--)
{
SetPACA(k,j);
WriteData(255);
}
}
}
void kanan(void)
{
clr_all_pannal();
panah_kanan();
score();
nyawa();
for(i=0;i