Dosen Pembimbing
HARY OKTAVIANTO, ST
NIP. 132 300 375
PEMANFAATAN MIKROKONTROLER
SEBAGAI PENGATUR PARAMETER
PADA EFEK GITAR DIGITAL
Dosen Pembimbing :
HARY OKTAVIANTO, ST.
NIP. 132.300.375
i
Pemanfaatan Mikrokontroler Sebagai Pengatur
Parameter
Pada Efek Gitar Digital
Oleh :
BAGUS RIJALUL HAQ
7104.030.005
Disetujui oleh
Tim Penguji: Dosen Pembimbing:
1. 1.
Firman Arifin, ST
NIP. 132.296.743
Mengetahui :
Ketua Jurusan Teknik Elektronika
ii
ABSTRAK
Kata kunci: ATmega32, pengiriman data serial, real time, keypad, LCD
grafik.
iii
ABSTRACT
iv
KATA PENGANTAR
Penulis
v
UCAPAN TERIMA KASIH
1. Allah swt, yang atas izin dan kuasa-Nya kami masih diberi
kesempatan untuk dapat menyelesaikan Tugas Akhir ini.
2. Ayah dan Ibu atas kasih sayang dan perhatiannya, yang telah
bekerja keras dan membanting tulang untuk membiayai sehingga
penulis bisa tetap kuliah dan menyelesaikan proyek akhir ini,
serta memberi dorongan serta do’a dalam tugas akhir ini. Semoga
Allah selalu melindungi dan memudahkan jalan mereka.
3. Bapak Dr. Ir. Titon Dutono M.Eng selaku Direktur PENS-ITS.
4. Bapak Mohd. Syafrudin, ST.,M.Eng. selaku ketua jurusan Teknik
Elektronika.
5. Bapak Hary Oktavianto, ST., dan bapak Tri Harsono, Ssi. M.Kom
selaku dosen pembimbing kami yang telah banyak memberikan
ilmu, pengarahan, bimbingan, dan masukan-masukan kepada
penulis sehingga Tugas Akhir ini dapat terselesaikan dengan baik.
6. Partner TA-ku, Ahmad Bahtiar, yang s’lalu kompak bekerja
sama, kerja bareng siang dan malam, tiada kata yang terucap
selain please forgive me and thank you very much.
7. Teman-teman seperjuanganq, yang selalu mengingatkan aq dan
memberikan saran kritik buat kebaikkan semuanya, Thax to all.
Aq berharap dengan selesainya TA-q, aq tetap bersama kalian
dengan karya2-q.
8. Guru programq, Kholid Amrillah, Thax always telah mengajariq
program, sehingga penulis bisa belajar kreatif dalam program. ga’
percuma ngajari Mahasiswa kayak aq, buktinya Juara I, hehe..!
Serta Adex, thax 2 all u’r motivation, with u’r problems and u’r
message - writer always remember to his mission. Jangan
ngambe’kan & muuanja lagi ya! Terus Belajar!!
vi
9. Untuk semua arek2 kelas 3 D3Ea yang satu perjuangan dalam
kondisi apapun, ya ngerjain laporan, garap tugas, nyontek
berjama’ah, belajar bareng. Tanpa kalian poltek ga’ bakalan
RaMe! Hidup D3Ea...!
10. Seluruh penghuni Lab. D4 lantai 1, yang selalu membantu, bisa
diajak kerja sama, diajak guyon, dan bisa dimintain tolong
mbeliin maem ’n pinjem komponen. Sori kalo g’ sengaja ngrusak
barang kalian dan kenapa kalian rusak barangku?!! Thanx 2 all.
vii
DAFTAR ISI
BAB 1 PENDAHULUAN
1.1.LATAR BELAKANG .......................................................... 1
1.2 TUJUAN .............................................................................. 1
1.3 PERMASALAHAN ............................................................. 2
1.4 BATASAN MASALAH ...................................................... 2
1.5 METODOLOGI ................................................................... 2
1.6 SISTEMATIKA PEMBAHASAN ....................................... 3
viii
2.4. LCD GRAFIK ................................................................... 22
2.4.1. Fitur dan Spesifikasi Teknis ............................................ 22
2.4.2. Inisialisasi LCD Grafik ................................................... 23
2.5. KEYPAD MATRIK 4x4 ................................................... 24
2.5.1. Prinsip Dasar Scanning Keypad ............................... 25
2.5.1.1. Metode Polling ........................................... 25
2.5.1.2. Metode Interrupt......................................... 25
ix
BAB 5 PENUTUP
5.1. Kesimpulan ........................................................................ 53
5.2. Saran .................................................................................. 53
DAFTAR PUSTAKA......................................................................... 55
LAMPIRAN
DAFTAR RIWAYAT HIDUP
x
DAFTAR GAMBAR
xi
Gambar 3.5. Program Keypad Beserta Inisialisasi Tombol
Keypad .................................................................... 33
Gambar 3.6. Program Pemilihan Efek.......................................... 38
Gambar 3.7. Program Memasukkan Nilai Parameter................... 39
Gambar 3.8. Program Pengiriman Data. ...................................... 40
Gambar 4.1. Diagram Blok Dari Rangkaian Pengujian
Mikrokontroler ........................................................ 43
Gambar 4.2. Program Pengujian Minimum Sistem dan Port
ATmega32 ............................................................... 43
Gambar 4.3. Port Settings Hyperterminal .................................... 44
Gambar 4.4. Pengujian Komunikasi Serial pada
Hyper Terminal ....................................................... 45
Gambar 4.5. Diagram Blok Pengujian Mikrokontroler ,
LCD, dan Keypad.................................................... 45
Gambar 4.6. Program Pengujian Rangkaian antara Keypad
dengan LCD .Grafik dan Minimum Sistem............ 46
Gambar 4.7. Hasil Pengujian Rangkaian Keypad, Minimum
Sistem, dan LCD Grafik .......................................... 46
Gambar 4.8. Blok Diagram Pengujian Pengubahan Nilai
Parameter Secara Serial dari Mikrokontroler
ke DSP TMS320C5402 Sebanyak 2 byte................ 47
Gambar 4.9. Program Pengujian Pengubahan Parameter............. 48
Gambar 4.10. Hasil Pengujian Pengubahan Nilai Parameter
a. Nilai Parameter 1 byte ......................................... 49
b. Nilai Parameter 2 byte ......................................... 49
Gambar 4.11. Blok Diagram Pengujian Pengubahan Parameter
oleh Mikrokontroler ATmega32 pada DSP
....TMS320C5402........................................................ 51
xii
DAFTAR TABEL
xiii
BAB 1
PENDAHULUAN
1.1 LATAR BELAKANG
Kualitas suara yang dihasilkan pada perangkat digital jauh lebih
unggul dan lebih bervariasi dari pada suara yang dihasilkan pada
perangkat analog. Proyek akhir sebelumnya, telah dibuat dua proyek
efek gitar digital yang menggunakan DSP TMS320C5402. Pertama
pembuatan efek gitar berbasis distorsi, yang terdiri dari 7 efek, dan
pembuatan efek audio berbasis time delay, terdiri dari 6 efek. Pada
proyek akhir tersebut nilai parameter pada masing-masing efek masih
bernilai tetap, dan tidak bisa di ubah-ubah.
Pada dasarnya pada proyek akhir ini terdapat tiga variabel yang
dapat diubah-ubah oleh mikrokontroler, yaitu alamat efek, alamat
parameter, dan nilai parameter. Terdapat 11 alamat efek, yang tiap
alamat efeknya terdapat alamat parameter yang telah ditetapkan
nilainya. Dan tiap alamat parameter mempunyai nilai parameter yang
nilainya dapat diubah-ubah serta diberikan batas nilai minimum dan
maksimal nilai yang dimasukkan.
41
2
1.2 TUJUAN
Tujuan proyek akhir ini adalah :
• Dapat mengkomunikasikan antara mikrokontroler ATmega32
dengan DSP TMS320C5402 menggunakan protokol serial RS-
232
• Dapat mengubah-ubah parameter dan pengabungan efek
melalui keypad.
• Dapat membuat tampilan menu pada LCD sebagai kemudahan
mengakses data.
1.3 PERMASALAHAN
Adapun permasalahan yang akan penulis bahas dalam proyek
akhir ini adalah bagaimana mengkomunikasikan antara mikrokontroler
ATmega32 dengan DSP TMS320C5402 menggunakan protokol serial
RS-232, pengaturan parameter dan pengabungan efek melalui keypad.,
serta pembuatan tampilan menu pada LCD.
1.5 METODOLOGI
Perencanaan dan pembuatan proyek akhir ini memerlukan
langkah-langkah penyelesaian sebagai berikut:
Studi Literatur
Studi pendahuluan mengenai ATmega32, LCD grafik
gm24644, konfigurasi keypad 4x4, serta komunikasi serial RS-
232 dengan DSK TMS320C5402. Yaitu mempelajari prinsip
kerja, karakteristik dari tiap-tiap sistem.
Perancangan sistem
Meliputi pembuatan minimum sistem Mikrokontroler
ATmega32, inisialisasi dan perancangan port dengan LCD
grafik gm24644, serta perancangan tampilan menu untuk
kesesuaian pengiriman data.
3
Bab V Penutup
Berisi tentang kesimpulan dan saran yang berdasarkan analisa
hasil data yang diperoleh.
4
4
5
BAB 2
TEORI PENUNJANG
2.1. MIKROKONTROLER AVR ATmega32
Pada bagian ini akan dibahas lebih dalam mengenai mikrokontroler
AVR ATmega32, meliputi arsitektur AVR ATmega32, konfigurasi PIN
ATmega32, dan port sebagai input dan otput.
5
1
Http://www.atmel.com/dyn/resources/prod_ documents/.pdf
6
1
Http://www.atmel.com/dyn/resources/prod_ documents/.pdf
7
4. PORT B :
Port B adalah 8 bit bi-directional I/O port dengan Internal pull-up
resistor. Buffer output port B ini mempunyai karakteristik symmetrical
drive dengan kapabilitas source dan sink yang tinggi.Sebagai input, pin
port B adalah eksternal pull-low seperti sumber arus jika pull-up
resistor aktif. Pin port B adalah tri-states ketika kondisi sebuah reset
menjadi aktif, sekalipun clocknya tidak jalan.
5. PORT C :
Port C adalah 8 bit bi-directional I/O port dengan Internal pull-up
resistor. Buffer output port B ini mempunyai karakteristik symmetrical
drive dengan kapabilitas source dan sink yang tinggi.Sebagai input, pin
port C adalah eksternal pull-low seperti sumber arus jika pull-up
resistor aktif. Pin port C adalah tri-states ketika kondisi sebuah reset
menjadi aktif, sekalipun clocknya tidak jalan.Jika interface JTAG
enable, pull up resistor di pin PC5(TDI), PC3(TMS), dan PC2(TCK)
akan aktif sekalipun reset terjadi.
6. PORT D :
Port D adalah 8 bit bi-directional I/O port dengan Internal pull-up
resistor.
Buffer output port D ini mempunyai karakteristik symmetrical drive
dengan kapabilitas source dan sink yang tinggi.Sebagai input, pin port
D adalah eksternal pull-low seperti sumber arus jika pull-up resistor
aktif. Pin port D adalah tri-states ketika kondisi sebuah reset menjadi
aktif, sekalipun clocknya tidak jalan.
7. RESET :
Sebuah low level pada pin akan lebih lama dari pada lebar pulsa
minimum akan menghasilkan reset meskipun clock tidak berjalan.
8
8. AVCC :
Pin supply tegangan untuk Port A dan A/D converter. Sebaiknya
eksternalnya dihubungkan ke VCC meskipun ADC tidak digunakan.
Jika ADC digunakan, dihubungkan ke VCC melalui low pas filter.
9. XTAL1 :
Input inverting penguat Oscilator dan input intenal clock operasi
rangkaian.
Bit 2 – PUD : Pull-up Disable Bila bit diset bernilai 1 maka pull-up
pada port I/O akan dimatikan walaupun register DDxn dan PORTxn
dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
Dengan demikian bit-bit data ini dikirimkan dengan periode yang acak
sehingga pada sisi penerima data akan diterima kapan saja. Adapun
sinkronisasi yang terjadi pada transmisi serial asynchronous adalah dengan
memberikan bit-bit pertanda awal dari data dan penanda akhir dari data
pada sisi pengirim maupun dari sisi penerima.
10
Pengirim Penerima
Pengirim Penerima
Penerima Pengirim
Pengirim Penerima
Penerima Pengirim
Pengiriman Pengiriman
awal akhir
DSK ATmega32
TMS320C5402
4
Rizqi Firmansyah, Robot Pengelasan (Hardware). Tugas Akhir PENS-ITS, 2003.
14
Tabel 2.2 Konfigurasi pin dan nama sinyal konektor serial DB-9
(a) (b)
1) Fungsi printf()
Fungsi printf() merupakan fungsi yang paling umum digunakan
dalam menampilkan data. Berbagai jenis data dapat ditampilkan ke
Code Vision AVR dengan memakai fungsi ini.
2) Fungsi putchar()
Fungsi putchar( ) digunakan untuk menampilkan sebuah karakter.
Penampilan karakter disini tidak diakhiri dengan perpindahan baris.
Contoh :
Putchar (‘A’);
3) Fungsi putsf()
Fungsi putsf() digunakan untuk menampilkan karakter dalam
jumlah banyak. Penampilan karakter disini juga tidak diakhiri dengan
perpindahan baris. Penulisan karakter yang dikirim diapit tanda petik
ganda.
Contoh : Putchar (”Politeknik Elektronika Negeri Surabaya!”);
20
Untuk melihat hasil tampilan dari data yang kita kirimkan melalui
fungsi-fungsi diatas, dapat dilihat pada fasilitas terminal yang disediakan
oleh Code Vision AVR. Langkah untuk mengaktifkannya yaitu :
Tampilan layar
Run Terminal
Tx Tx
Mikrokontroler Rx Rx
Gnd Gnd
Mikrokontroler Tx Tx
Rx Rx DSP
Gnd Gnd
Pada Tugas Akhir ini penulis memakai modul LCD grafik GM24644.
Modul LCD ini dapat menampilkan grafik ataupun karakter dengan luas
tampilan 240 x 64, dengan tampilan yang disajikan lebih banyak daripada
LCD Oprex, seperti type DMC24227 yang hanya mempunyai 2 baris dan 24
kolom. LCD grafik GM24644 kompatibel dengan DT-51 MinSys dan
disertai rutin-rutin siap pakai, juga dapat diatur contrast ke kiri (display
makin cerah) atau ke kanan (display makin gelap) untuk mendapatkan
tampilan terbaik, yaitu dengan mengatur potensiometer pada modul LCD
Grafik.
1 2 3 1 2 3
(a) (b)
LCDG_init();LCDG_RAMBlank(TextHomeAddr,0xF0);LCDG_RA
MBlank(TextAttrAddr,0xF0);LCDG_RAMBlank(Grp1HomeAddr,TotalGrp
Byte);SetAttrMode(TxtAttrIntCGROM);DisplayMode(DispMode|TextOn|Gr
aphicOn);
KOLOM BARIS
K1 K2 K3 K4 B1 B2 B3 B4
1 2 3 COR
4 5 6 MEN
7 8 9
CAN 0 ENT
BAB 3
PERENCANAAN DAN PEMBUATAN ALAT
Pada perencanaan dan pembuatan alat pada proyek akhir kami
yang berjudul "Pemanfaatan Mikrokontroler Sebagai Pengatur Parameter
Pada Efek Gitar Digital" secara umum dapat dibagi menjadi dua bagian
pokok, yaitu pembuatan perangkat keras dan perangkat lunak.
Untuk perencanaan dan pembuatan perangkat keras elektronik
terdiri dari pembuatan rangkaian minimum sistem mikrokontroler
ATmega32 serta pembuatan downloadernya, hubungan mikrokontroler
dengan keypad dan lcd grafik. Sedangkan untuk softwarenya, yaitu
perencanaan dan pembuatan program pengiriman efek tunggal, efek
gabung, tampilan pada LCD grafik, serta pengiriman protokol data.
ADC
LCD
2
Pitowarno, Endra. Mikroprosesor dan Interfacing. Penerbit Andi,
Yoyakarta, 2005.
32
3.4.1. Keypad
Fungsi-fungsi aplikasi dari tiap tombol pada keypad adalah:
■ Tombol ENT berfungsi untuk masuk pada menu program yang
dipilih dan untuk mengirimkan data.
■ Tombol angka 0 sampai 9 berfungsi menampilkan data berupa angka
yang akan dikirim ke DSP TMS320C5402
■ Tombol Up dan Down berfungsi untuk berpindah baris
■ Tombol CAN berfungsi sebagai tombol back
■ Tombol COR berfungsi untuk delete ke kiri untuk mengedit data
■ Tombol MEN tidak dipergunakan
33
Program pada gambar 3.5 dapat dibagi menjadi dua bagian utama
yaitu program scanning keypad dan inisialisasi tombol keypad. Scanning
keypad digunakan untuk mengecek apakah ada penekanan tombol, jika ada,
maka data yang diperoleh dari scanning dan penekanan tombol akan
disesuaikan dengan pilihan case, jika data dari scanning dan case sama,
maka data tersebut akan ditampung pada variabel nilai.
Tampilan awal
Pilihan efek tunggal atau gabungan efek
• Tampilan menu efek tunggal dengan pilihan 11 efek
• Tampilan menu gabungan efek, dengan pilihan efek:
- Gabungan 2 Efek
- Gabungan 3 Efek
Tampilan fungsi tiap efek tunggal, dengan ketentuan parameter :
• Bernilai konstan
• Dapat diubah-ubah, yang terdiri atas batas minimal dan maksimal
nilai parameter yang dimasukkan.
Tampilan hasil data yang telah dimasukkan
35
a. Instruksi Start
Pertama pengiriman protokol data berupa instruksi start, dimana
instruksi ini kami tetapkan mengirimkan data yang bernilai nol ”0”.
Nilai ini akan direspon oleh DSP TMS320C5402 yang telah
menyiapkan program interrupt untuk menerima instruksi start ini.
Fungsi pemberian dari instruksi start adalah digunakan untuk
memberikan isyarat pada DSP TMS320C5402 bahwa setelah
pemberian instruksi ini akan ada kiriman-kiriman berikutnya. Hal ini
diperlukan untuk mencegah ketidaksiapan DSP TMS320C5402
untuk menerima data, sehingga terjadi kecacatan data.
36
while(1)
{
pad=keypad();
if(pad==1)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Variable =_____(0-6)");
delay_ms(150);}
Variable=30; =1; y=5; break;
}
else if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Frekwensi =_____(0-60)");
delay_ms(150);}
Frekwensi=31; yy=1; y=6; break;
}
}
duo[0]=pad+0x30;
LCD_Txt(x_ketik,y,duo);
x_ketik++;
delay_ms(300);
}
}
}
• Pengiriman data
Pada gambar 3.8 adalah contoh program untuk mengirimkan data,
dengan pengiriman data sebanyak lima kali.
Pada table 3.3 dapat dilihat bahwa terdapat tiga panggabungan efek
yang telah ditetapkan. Masing – masing efek mempunyai karakter suara
tersendiri, yang apabila pilihan efek tersebut digabungkan akan
menghasilkan karakter suara baru. Penggabungan efek ini berdasarkan
waktu eksekusi real time yang dikerjakan oleh DSP TMS320C5402.
42
BAB 4
PENGUJIAN DAN ANALISA
Dalam Bab ini akan dibahas tentang pengujian berdasarkan
perencanaan dari sistem yang dibuat. Pengujian ini dilaksanakan untuk
mengetahui kehandalan dari suatu sistem yang dibuat. Pengujian ini
dilaksanakan untuk mengetahui apakah sudah sesuai dengan perencanaan
yang dibuat. Pengujian pertama-tama dilakukan secara terpisah, dan
kemudian dilakukan kedalam sistem yang telah terintegrasi.
while (1)
{
PORTA = 0xFF; delay_ms(1000);
PORTA = 0x00; delay_ms(1000);
};
}
43
44
Minimum Sistem
KEYPAD LCD Grafik
Mikrokontroler
while(1)
{
pad=keypad();
if (pad == 0) LCD_TxtF( 1,1, "0");
else if (pad == 1) LCD_TxtF( 3,2, "1");
else if (pad == 2) LCD_TxtF( 5,3, "2");
else if (pad == 3) LCD_TxtF( 7,4, "3");
else if (pad == 4) LCD_TxtF( 9,5, "4");
else if (pad == 5) LCD_TxtF(11,6, "5");
else if (pad == 6) LCD_TxtF(13,7, "6");
else if (pad == 7) LCD_TxtF(15,8, "7");
else if (pad == 8) LCD_TxtF( 5,5, "8");
else if (pad == 9) LCD_TxtF( 7,6, "9");
}
Pada gambar 4.6 dapat dilihat bahwa nilai dari fungsi keypad( )
disimpan dalam variabel pad. Kemudian nilai pad tersebut dibandingkan
dengan nilai pada perintah ”if / else if”, jika sama akan tampilkan pada LCD
grafik. Pada gambar 4.7 menunjukkan tampilan LCD grafik dari hasil
penekanan tombol keypad. Sehingga pengujian fungsi keypad sebagai input,
LCD grafik sebagai output, dan minimum sistem sebagai pemroses data
semuanya dapat bekerja dengan baik.
47
RS-232
Mikrokontroler DSP TMS320C5402 PC
Keypad
Agar nilai input dari keypad dapat dibaca sebagai bilangan bulat
keseluruhan, maka digunakan rumus ”bil=(bil*10)+pad”, dengan pad adalah
input keypad. Nilai yang dimasukkan melalui keypad akan dijadikan
bil_awal (bil paling kiri) dan jika ada penekanan tombol keypad sekali lagi,
nilai bil_awal akan dikalikan 10 kemudian ditambahkan dengan nilai pad
yang baru, sehingga menghasilkan bil_awal kedua sebanyak dua digit
sebagai satu bilangan bulat.
48
while(1)
{
pad=keypad();
if( ((pad>=0) && (pad<=9)) )
{
if ( ((x_ketik-10)<ketik_max) )
{
aa=1; bb=2;
bil=(bil*10)+pad;
LCD_TxtF(23,8,"digit3");
if(bil>255 && bil<=65535)
{bb=1; aa=2; }
else if(bil>65535)
{stop=1;}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
}
}
else if( ((pad==15) && (aa==1||bb==1) ) )
{
putchar(start); delay_ms(300);
putchar(efek); delay_ms(300);
if(aa==1)
{
putchar('z'); delay_ms(200);
putchar(bil & 0xFF);
delay_ms(200);
putchar(parameter); delay_ms(200);
}
else if(bb==1)
{
putchar(bil & 0xFF);
delay_ms(300);
putchar(bil >> 8); delay_ms(300);
putchar(parameter); delay_ms(300);
}
}
}
(a) (b)
RS-232
Mikrokontroler DSP TMS320C5402 PC
LED DSK
Keypad LCD Grafik
Pada tabel hasil percobaan diatas, dapat dilihat bahwa pengiriman data
untuk penggabungan 2 efek dapat dilakukan dengan sempurna, ditunjukkan
pada kolom status terkirim. Dan format protokol untuk pengiriman datanya,
sama dengan cara pengiriman data pada efek tunggal, pembedanya adalah
pengiriman data cukup dilakukan dalam 1 byte, pengirimannya secara
berturut-turut yaitu start, dan efek yang digabung.
52
BAB V
PENUTUP
5.1. KESIMPULAN
Dari beberapa tahap perencanaan dan pengujian data dapat diambil
beberapa kesimpulan yaitu :
5.2. SARAN
Pada pembuatan proyek akhir ini masih banyak kekurangannya,
maka pada waktu yang akan datang perlu dilakukan pengembangan lebih
lanjut untuk hasil yang lebih baik. Adapun saran-saran untuk proyek akhir
ini adalah:
53
54
DAFTAR PUSTAKA
[1]. Http://www.atmel.com/dyn/resources/prod_ documents/pdf
[3]. Http://digilib.itb.ac.id/go.php?id=itb-s2-ik-1999-Agus-posis.
/*********************************************
This program was produced by the
CodeWizardAVR V1.24.0 Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 7/28/2007
Author : bag's.dat
Company :
Comments:
#include <mega32.h>
#include <delay.h>
#include <gm24644.h>
#include <stdio.h>
#define ketik_tunggal 2
#define ketik_max 5
//*********************** ======== INI SIAL ========
**************************
unsigned char
a1=0,a4=0,a3=0,a5=0,a6=0,a2=0,a7=0,a8=0,b,/*x_ketik=7,y=7*/;
unsigned int keypad();
unsigned int stop,aa,bb,jus,buah,back,hop,pad; //
unsigned int start=0,xx=0,yy=0,zz=0,i=0,bil=0;
unsigned char str[4];
//unsigned int digitX, digit3, digit5;
//unsigned char
Decho,Dfuzz,Dreverb,Doverdrive,Ddistorsi,Drobot,Dtremolo;
//unsigned char
Dcompressor,Dslapback,Dflanger,Dvalve,Dmodulasi,Dchorus;
unsigned int
fuzz=1,overdrive=2,distorsi=3,echo=4,tremolo=5,compressor=6;
unsigned int robot=7,valve=8,modulasi=9,chorus=10,flanger=11,posisi=0;
unsigned int
limit=21,multiple_E=25,multiple_F=26,distorsi_A=22,distorsi_B=23,gain=
24,attenuator_4=34;
unsigned int
feedback=35,amplitudo=27,frekwensi_5=28,modulasi_5=29,multiple_P=32
,multiple_Q=33;
unsigned int
variable=30,frekwensi_9=31,buffer10=36,attenuator10=37,buffer11=38,atte
nuator11=39;
void daftar_keypad();
void hapus_layar();
void kirim ();
void efek_tunggal();
void efek_gabung();
void efek_2gabung();
void efek_3gabung();
void efek_tersedia();
void efek_tunggal_distorsi();
void efek_tunggal_overdrive();
void efek_tunggal_flanger();
void efek_tunggal_overdrive();
void efek_tunggal_fuzz();
void efek_tunggal_compressor();
void efek_tunggal_robot();
void efek_tunggal_echo();
void efek_tunggal_chorus();
void efek_tunggal_valve();
void efek_tunggal_modulasi();
void efek_tunggal_tremolo();
void efek_tunggal_distorsi();
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
void main(void)
{
// Declare your local variables here
// Port B initialization
// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out
Func6=Out Func7=Out
// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0
State7=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In
Func7=In
// State0=P State1=P State2=P State3=P State4=P State5=P State6=P
State7=P
PORTC=0xFF;
DDRC=0x00;
// Port D initialization
// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out
Func6=Out Func7=Out
// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0
State7=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
delay_ms(500);
while (1)
{
pad = keypad();
if(pad == 15)
{ efek_tersedia(); }
};
}
void efek_tersedia()
{
unsigned int pad=0;
delay_ms(300);
hapus_layar();
LCD_TxtF(posisi,2,"=");delay_ms(60);
if(posisi==26)
{ delay_ms(200);
for (posisi=26;posisi>=7;posisi--)
{
pad = keypad();
if(pad==1||pad==2)
{
if(pad == 1)
{efek_tunggal(); }
else if(pad == 2)
{ efek_gabung();} }
LCD_TxtF(posisi,2,"%");delay_ms(60);
LCD_TxtF(27,2," ");
}posisi=7;break;
}
}
}
}
}
}break;
}// while
void efek_gabung()
{
unsigned int pad=0;
delay_ms(500);
hapus_layar();
//
======================================================
// =================== * GABUNG 2 EFEK * ================
void efek_2gabung()
{
unsigned char pad=0;
unsigned int
gab2a=12,gab2b=13,gab2c=14,gab2d=15,gab2e=16,gab2f=17;
delay_ms(500);
hapus_layar();
LCD_TxtF(23,7,"COR=Del");
LCD_TxtF(23,8,"CAN=Back");
LCD_AttrF(7,2,"00000000000000000000");
hop=0;
while(1)
{
pad=keypad();
if((pad>=0) && (pad<=6))
{
if(pad==1) //gab2a=12,
{
putchar(start); delay_ms(200);
putchar(gab2a); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1, 2," ");delay_ms(200);
LCD_TxtF(1, 2,"[1]Flanger+Echo");delay_ms(200);}
}
else if(pad==2) //gab2b=13
{
putchar(start); delay_ms(200);
putchar(gab2b); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1, 3," ");delay_ms(200);
LCD_TxtF(1, 3,"[2]Chorus +Robot");delay_ms(200);}
}
else if(pad==3) //,gab2c=14
{
putchar(start); delay_ms(200);
putchar(gab2c); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1, 4," ");delay_ms(200);
LCD_TxtF(1, 4,"[3]Robot +Echo");delay_ms(200);}
}
else if(pad==4) //,gab2d=15
{
putchar(start); delay_ms(200);
putchar(gab2d); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1, 5," ");delay_ms(200);
LCD_TxtF(1, 5,"[4]Flanger+Valve");delay_ms(200);}
}
else if(pad==5) //,gab2e=16
{
putchar(start); delay_ms(200);
putchar(gab2e); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1,6," ");delay_ms(200);
LCD_TxtF(1,6,"[5]Cmpresr+Robot");delay_ms(200);}
}
else if(pad==6) //,gab2f=17
{
putchar(start); delay_ms(200);
putchar(gab2f); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1,7," ");delay_ms(200);
LCD_TxtF(1,7,"[6]Cmpresr+Valve");delay_ms(200);}
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(40);
}delay_ms(150);break;
}
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(23,8,"CAN=Back");
//kirim();
}
else if(pad==14)
{efek_gabung();}
}
}
// ====================================================
// ================== * GABUNG 3 EFEK * ================
void efek_3gabung()
{
unsigned char pad=0;
unsigned int gab3a=18, gab3b=19, gab3c=20;
delay_ms(400);
hapus_layar();
LCD_TxtF(2,8,"CAN=Back");
LCD_AttrF(7,2,"00000000000000000000");
hop=0;
while(1)
{
pad=keypad();
if((pad>=0) && (pad<=3))
{
if(pad==1)
{
putchar(start); delay_ms(200);
putchar(gab3a); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1,3," ");delay_ms(200);
LCD_TxtF(1,3, "[1]Tremolo + Flanger+Echo");
}
else if(pad==2)
{
for(i=0; i<=1; i++){
LCD_TxtF(1,4," ");delay_ms(200);
LCD_TxtF(1,4, "[2]Compresor+ Echo +Robot");
putchar(start); delay_ms(200);
putchar(gab3b); delay_ms(200);
putchar('x'); delay_ms(200);
}
else if(pad==3)
{
putchar(start); delay_ms(200);
putchar(gab3c); delay_ms(200);
putchar('x'); delay_ms(200);
for(i=0; i<=1; i++){
LCD_TxtF(1,5," ");delay_ms(200);
LCD_TxtF(1,5 ,"[3]Chorus + Flanger+Echo ");
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(40);
}break;
}
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(2,8,"CAN=Back");
//kirim();
}
else if(pad==14)
{efek_gabung();}
}
}
void hapus_layar()
{
for(b=1;b<9;b++)
LCD_TxtF(1,b," ");
a1=0,a4=0,a3=0,a5=0,a6=0,a2=0,a7=0,a8=0;
}
void daftar_keypad()
{
//siapkan PORTC untuk keypad
//4MSB input, 4LSB output
//DDRC = 0000 1111
DDRC=0x0f;
// input output
//aktifkan pull-up di 4MSB input 1111 xxxx
//nyalakan scan xxxx
PORTC=0xff;
}
// ====================================================
// ***************** # EFEK TUNGGAL # **********************
void efek_tunggal()
{
unsigned char x_ketik=7, y=7;
unsigned char pad=0;
LCD_AttrF(9,5,"0000000000000");
LCD_AttrF(8,1,"000000000000000000");
hapus_layar();
delay_ms(400);
LCD_TxtF(1,1, " #MENU EFEK TUNGGAL#");
LCD_AttrF(1,1," 3333333333333333333");
LCD_TxtF(1,2, "[1]Fuzz");
LCD_TxtF(1,3, "[2]OverD");
LCD_TxtF(1,4, "[3]Dstrsi");
LCD_TxtF(1,5, "[4]Echo");
LCD_TxtF(10,2,"[5]Tremolo");
LCD_TxtF(10,3,"[6]Cmpresr");
LCD_TxtF(10,4,"[7]Robot");
LCD_TxtF(10,5,"[8]Valve");
LCD_TxtF(20,2,"[9]MdLasi");
LCD_TxtF(20,3,"[10]Chorus");
LCD_TxtF(20,4,"[11]Flanger");
LCD_TxtF(1,7,"Pilih=__");
LCD_TxtF(1,8,"[1-11]");
LCD_TxtF(14,8,"CAN=Back|COR=DeL");
hop=0;
while(1)
{
pad=keypad();
if ((pad>=0)&&(pad<=9)) // input nilai
{
if ((x_ketik-7)<ketik_tunggal)
{
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
if((x_ketik-7)<1)
{jus=str[0];}
else if((x_ketik-7)<2)
{buah=str[0];}
x_ketik++;
delay_ms(300);
LCD_TxtF(x_ketik,7,"[Ent]");
}
}
LCD_TxtF(20,2,"[9]MdLasi");delay_ms(200);}
efek_tunggal_modulasi();}
else if(jus==(0x31) && buah==(0x30) && pad==15)
{ hop=1;
for(i=0; i<=2; i++){
LCD_TxtF(20,3," ");
LCD_TxtF(20,3,"[10]Chorus");delay_ms(200);}
efek_tunggal_chorus();}
else if(jus==(0x31) && buah==(0x31) && pad==15)
{ hop=1;
for(i=0; i<=2; i++){
LCD_TxtF(20,4," ");delay_ms(200);
LCD_TxtF(20,4,"[11]Flanger");delay_ms(200);}
efek_tunggal_flanger();}
if(pad == 14)
{back = 1; break;}
}
if(back == 1)
efek_tersedia();
}
// =================_EFEK FUZZ _========================
void efek_tunggal_fuzz()
{
// unsigned str[3]="";
unsigned char x_ketik=10,y=5;
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1," |Efek FUZZ|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5," >>LIMIT=_____(0-22937)");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"222222222222");
while(1)
{
pad=keypad();
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) // DELETE ke Kiri
{
if ((x_ketik-10)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
if(bil<22937)
{LCD_TxtF(15,5,"(0-22937)");}
delay_ms(300);
}
}
else if( ((pad==15) && (stop!=1) && (aa==1||bb==1)) )
{
//Dflanger=1;
putchar(start); delay_ms(200);
putchar(fuzz); delay_ms(200);
if(aa==1)
{
putchar('z'); delay_ms(200);
putchar(limit);
//LCD_TxtF(19,3,"21");delay_ms(200);
}
else if(bb==1)
{
putchar(bil & 0xFF); delay_ms(200);
putchar(bil >> 8); delay_ms(200);
putchar(limit);
//LCD_TxtF(19,3,"21");delay_ms(200);
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8, " ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
else if(pad==14)
{bil=0; efek_tunggal();}
}// while punya
}// void punya
// ================= OVER DRIVE =====================
void efek_tunggal_overdrive()
{
// unsigned str[4]="";
unsigned char x_ketik=15;
unsigned char y=0,hop;
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(8,1,"|Efek OVERDRIVE|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Multiple E=_____"); // batas 0-32767 // 25
LCD_TxtF(1,6,"[2]Multiple F=_____"); // batas 0-32767 // 26
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(8,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1) // 32767
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Multiple E=_____(0-
32767)"); delay_ms(150);}
xx=1; yy=2; y=5; hop=1; break;}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Multiple F=_____(0-32767)");
delay_ms(150);}
xx=2; yy=1; y=6; hop=1; break;}
if(pad==14)
{ bil=0; efek_tunggal(); }
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) //
COR_DELETE ke Kiri
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
if(xx==1)
{LCD_TxtF(20,5,"(0-32767)");}
else if(yy==1)
{LCD_TxtF(20,6,"(0-32767)");}
delay_ms(300);
}
}
//LCD_TxtF(19,3,"25");delay_ms(200);
}
//LCD_TxtF(19,3,"26");delay_ms(200);
}
else if(yy==1&&bb==1) // F-5 digit
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
D_TxtF(1,8,"Back=CAN");
}
if(pad==14)
{ bil=0; efek_tunggal(); }
}// while punya
}// if (X Y)
}// void punya
// ====================== DISTORSI ====================
void efek_tunggal_distorsi()
{
// unsigned str[2]="";
unsigned char x_ketik=15;
unsigned char y=0,hop;
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(8,1,"|Efek DISTORSI|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Distorsi_A=_____"); // batas 0-32767 // 22
LCD_TxtF(1,6,"[2]Distorsi_B=_____"); // batas 0-32767 // 23
LCD_TxtF(1,7,"[3]Gain =_____"); // batas 0-5 // 24
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(8,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1) // 32767
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," ");
delay_ms(150);
LCD_TxtF(1,5,"[1]Distorsi_A=_____(0-
32767)"); delay_ms(150);}
xx=1; yy=2; y=5;
hop=1; break;
}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," ");
delay_ms(150);
LCD_TxtF(1,6,"[2]Distorsi_B=_____(0-
32767)"); delay_ms(150);}
xx=2; yy=1; y=6;
hop=1; break;
}
if(pad==3)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,7," ");
delay_ms(150);
LCD_TxtF(1,7,"[3]Gain =_____(0-5)");
delay_ms(150);}
xx=2; yy=2; zz=1;
y=7; hop=1; break;
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
}
if ( ((x_ketik-15)<ketik_max) )
{
if(xx==1) // Amplitudo
{
bil=(bil*10)+pad;
if(bil<255)
{ aa=1; bb=2; }
if(bil>255&&bil<=32767)
{ bb=1; aa=2; }
else if(bil>32767)
{stop=1;
LCD_TxtF(20,5,"(>>32767)");}
}
else if(yy==1) // frekwensi
{
bil=(bil*10)+pad;
if(bil<255)
{ aa=1; bb=2; }
if(bil>255&&bil<=32767)
{ bb=1; aa=2; }
else if(bil>32767)
{stop=1;
LCD_TxtF(20,5,"(>>32767)");}
}
else if(zz==1) // Modulasi
{ bil=(bil*10)+pad;
if(bil<=5)
{ aa=1; }
if(bil>5)
{stop=1;
LCD_TxtF(20,7,"(>>5)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10)
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
if(bil==1)
{LCD_TxtF(20,5,"(0-32767)");}
else if(yy==1)
{LCD_TxtF(20,6,"(0-32767)");}
else if(zz==1)
{LCD_TxtF(20,7,"(0-5)");}
delay_ms(300);
}
}
else if(pad==14)
{bil=0; efek_tunggal(); }
else if(
((pad==15)&&(xx==1||yy==1||zz==1)&&(aa==1||bb==1)&&(stop!=1)) )
{
//Dflanger=1;
putchar(start); delay_ms(200);
putchar(distorsi); delay_ms(200);
if(xx==1&&aa==1)
{
putchar('z'); delay_ms(200);//122
putchar(bil & 0xFF); delay_ms(200);
// digit3 :(0-255)
putchar(distorsi_A);
//LCD_TxtF(19,3,"22");
}
//LCD_TxtF(19,3,"23");delay_ms(200);
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
D_TxtF(1,8,"Back=CAN");
//kirim();
}
}// while punya
}// if (X Y)
}// void punya
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1," |Efek ECHO|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Attenuator=_____"); // batas 0-100 // 34
LCD_TxtF(1,6,"[2]Feedback =_____"); // batas 0-9 // 35
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Attenuator=_____(0-100 )
xx=1; yy=2; y=5; hop=1; break;
}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Feedback =_____(0-9)");
xx=2; yy=1; y=6; hop=1; break;
}
else if(pad==14)
{ efek_tunggal(); }
}
{stop=1; LCD_TxtF(20,6,"(>>9)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) {
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
}// while punya
}// if (X Y)
}// void punya
// =============== TREMOLO ========================
void efek_tunggal_tremolo()
{// unsigned str[2]="";
unsigned char x_ketik=15;
unsigned char y=0,hop;
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1,"|Efek TREMOLO|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Amplitudo =_____"); // batas 0-5 ;// 27
LCD_TxtF(1,6,"[2]Frekwensi =_____"); // batas 0-150 // 28
LCD_TxtF(1,7,"[3]Modulasi =_____"); // batas 0-10 // 29
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1) // 32767
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Amplitudo =_____(0-5)");
delay_ms(150);}
xx=1; yy=2; y=5; hop=1; break;
}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," ");
LCD_TxtF(1,6,"[2]Frekwensi =_____(0-150)");
delay_ms(150);}
xx=2; yy=1; y=6; hop=1; break;
}
if(pad==3)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,7," ");
delay_ms(150);
LCD_TxtF(1,7,"[3]Modulasi =_____(0-10)");
delay_ms(150);}
xx=2; yy=2; zz=1; y=7; hop=1; break;
}
else if(pad==14)
{ efek_tunggal(); }
}
{stop=1; LCD_TxtF(20,5,"(>>5)");}
}
else if(yy==1) // frekwensi
{
bil=(bil*10)+pad;
if(bil<=150)
{ aa=1; bb=2; }
if(bil>150)
{stop=1; LCD_TxtF(20,6,"(>>150)");}
}
else if(zz==1) // Modulasi
{
bil=(bil*10)+pad;
if(bil<=10)
{ aa=1; bb=2; }
if(bil>10)
{stop=1; LCD_TxtF(20,7,"(>>10)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10)
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
//if(xx==1||yy==1)
//{LCD_TxtF(20,5,"(0-32767)");}
delay_ms(300);
}
}
else if( ((pad==15)&& (xx==1||yy==1||zz==1) && (aa==1||bb==1)
&&(stop!=1)) )
{
//Dflanger=1;
putchar(start); delay_ms(200); //
putchar(tremolo); delay_ms(200); // send efek
if(xx==1&&aa==1)
{
putchar('z'); delay_ms(500);//122 //
putchar(bil & 0xFF); delay_ms(200);
putchar(amplitudo); delay_ms(200);
}
else if(yy==1&&aa==1)
{
putchar('z'); delay_ms(500);//122 //
putchar(bil & 0xFF); delay_ms(200);
putchar(frekwensi_5); delay_ms(200);
}
else if(zz==1&&aa==1)
{
putchar('z'); delay_ms(500);//122 //
putchar(bil & 0xFF); delay_ms(200);
putchar(modulasi_5); delay_ms(200);
//LCD_TxtF(19,3,"29");
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
while(1)
{
pad=keypad();
if( pad==15 )
{
//Dflanger=1;
putchar(start); delay_ms(300);
// send start:1
putchar(compressor); delay_ms(300); //
putchar('x'); delay_ms(300);
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
}
else if(pad==14)
{ efek_tunggal(); }
while(1)
{
pad=keypad();
if( pad==15 )
{
putchar(start); delay_ms(300);
putchar(robot); delay_ms(300);
putchar('x'); delay_ms(300);
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
//LCD_TxtF(10,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1,"|Efek VALVE|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Multiple P=_____"); // batas 0-32767 // 32
LCD_TxtF(1,6,"[2]Multiple Q=_____"); // batas 0-16383 // 33
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1) // 32767
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Multiple P=_____(0-
32767)"); delay_ms(150);}
xx=1; yy=2; y=5;
hop=1; break;
}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Multiple Q=_____(0-
16383)"); delay_ms(150);}
xx=2; yy=1; y=6;
hop=1; break;
}
else if(pad==14)
{ efek_tunggal(); }
if(xx==1)
{ // aa1=digit3 bb1=digit5
bil=(bil*10)+pad;
if(bil<255)
{ aa=1; bb=2; }
if(bil>255&&bil<=32767)
{ bb=1; aa=2; }
else if(bil>32767)
{stop=1;
LCD_TxtF(20,5,"(>>32767)");}
}
else if(yy==1)
{
bil=(bil*10)+pad;
if(bil<255)
{ aa=1; bb=2; }
if(bil>255&&bil<=16383)
{ bb=1; aa=2; }
else if(bil>16383)
{stop=1;
LCD_TxtF(20,6,"(>>16383)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) //
COR_DELETE ke Kiri
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
//if(xx==1||yy==1)
//{LCD_TxtF(20,5,"(0-32767)");}
delay_ms(300);
}
}
{
putchar(bil & 0xFF); delay_ms(300);
// digit3 :_ _
putchar(bil >> 8); delay_ms(300); //
ptchar(multiple_Q); delay_ms(300);
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
}// while punya
}// if (X Y)
}// void punya
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1,"|Efek MODULASI|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Variable =_____"); // batas 0-6 // 30
LCD_TxtF(1,6,"[2]Frekwensi =_____"); // batas 0-60 // 31
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1)
{
for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
else if(pad==2)
{
for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
if(xx==1) // variable
{ bil=(bil*10)+pad;
if(bil<=6)
{ aa=1; }
else if(bil>6)
{stop=1;
LCD_TxtF(20,5,"(>>6)");}
}
else if(yy==1) // frekwensi
{ bil=(bil*10)+pad;
if(bil<=60)
{ aa=1; }
if(bil>60)
{stop=1;
LCD_TxtF(20,6,"(>>60)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) //
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
//if(xx==1||yy==1)
//{LCD_TxtF(20,5,"(0-32767)");}
delay_ms(300);
}
}
if(xx==1&&aa==1)
{
putchar('z'); delay_ms(300);//122 //
putchar(bil & 0xFF); delay_ms(200);
putchar(variable); delay_ms(200);
//LCD_TxtF(19,3,"30");
else if(yy==1&&aa==1)
{
putchar('z'); delay_ms(300);//122 //
putchar(bil & 0xFF); delay_ms(200);
putchar(frekwensi_9); delay_ms(200);
//LCD_TxtF(19,3,"31");
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
hapus_layar();
delay_ms(150);
LCD_AttrF(1,1," 0000000000000000000");
LCD_TxtF(9,1,"|Efek CHORUS|");
LCD_TxtF(1,3,"Pilih Parameter");
LCD_TxtF(1,5,"[1]Attenuator=_____"); // batas 0-9 // 34
LCD_TxtF(1,6,"[2]Buffer =_____"); // batas 0-480 // 35
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
LCD_AttrF(9,1,"2222222222222222");
while(1)
{
pad=keypad();
if(pad==1)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Attenuator=_____(0-9)");
xx=1; yy=2; y=5; hop=1; break;
}
if(pad==2)
{ for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Buffer =_____(0-480)");
xx=2; yy=1; y=6; hop=1; break;
}
else if(pad==14)
{ efek_tunggal(); }
if(xx==1) //Attenuator
{ bil=(bil*10)+pad;
if(bil<=9)
{ aa=1; bb=2; }
if(bil>9)
{stop=1; LCD_TxtF(20,5,"(>>9)");}
}
else if(yy==1) //Buffer
{
bil=(bil*10)+pad;
if(bil<=255)
{ aa=1; bb=2; }
else if(bil>255 && bil<=480)
{ bb=1; aa=2; }
else if(bil>480)
{stop=1; LCD_TxtF(20,6,"(>>480)");}
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
//LCD_TxtF(20,5,"[Ent]");
}
}
else if (pad==10) //
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10); stop=2;
LCD_TxtF(x_ketik,y," ");
//if(xx==1||yy==1)
//{LCD_TxtF(20,5,"(0-9)");}
delay_ms(300);
}
}
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150);
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
delay_ms(1500);
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
LCD_TxtF(1,8,"Back=CAN");
//kirim();
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
}// while punya
}// if (X Y)
}// void punya
while(1)
{
pad=keypad();
if(pad==1) // 32767
{
] (i=0; i<=2; i++){
LCD_TxtF(1,5," "); delay_ms(150);
LCD_TxtF(1,5,"[1]Buffers =_____(0-160)");
xx=1; yy=2; y=5; hop=1; break;
}
if(pad==2)
{
for(i=0; i<=2; i++){
LCD_TxtF(1,6," "); delay_ms(150);
LCD_TxtF(1,6,"[2]Attenuator=_____(0-9)");
x=2; yy=1; y=6; hop=1; break;
}
else if(pad==14)
{ efek_tunggal(); }
}
if( ((xx==1) || (yy==1)) )
{
while(1)
{
pad=keypad();
if(pad>=0 && pad<=9 && hop==1)
{
if ((x_ketik-15)<ketik_max)
{
if(xx==1)
{ bil=(bil*10)+pad;
if(bil<=160)
{ aa=1; }
else if(bil>160)
{stop=1;
}
else if(yy==1)
{ bil=(bil*10)+pad;
if(bil<=9)
{ aa=1; }
else if(bil>9)
{stop=1;
}
str[0]=pad+0x30;
LCD_Txt(x_ketik,y,str);
x_ketik++;
delay_ms(300);
}
}
else if (pad==10) //
{
if ((x_ketik-15)>0)
{ x_ketik--;
bil=(bil/10);
LCD_TxtF(x_ketik,y," ");
delay_ms(300);
}
}
else if( ((pad==15)&& (xx==1 || yy==1) && (aa==1 ||
bb==1)&&(stop!=1)&&(bil!=0)) )
{
putchar(start); delay_ms(300);
putchar(flanger); delay_ms(300);
if( ((xx==1)||(yy==1))&& (aa==1 || bb==1) )
{
if(xx==1 && aa==1)
{
putchar('z'); delay_ms(200);//0x34
putchar(bil & 0xFF);delay_ms(200);
putchar(buffer11); delay_ms(200);
}
LCD_TxtF(1,8," ");
LCD_TxtF(1,8,"SENDING:");
while(1)
{
for (posisi=9;posisi<30;posisi++)
{
LCD_AttrF(posisi,8,"1");
delay_ms(50);
}break;
}delay_ms(150); 1
LCD_AttrF(9,8,"0000000000000000000000000");
LCD_TxtF(1,8," ");
LCD_TxtF(6,8,"DATA TELAH TERKIRIM");
LCD_TxtF(1,8," ");
LCD_TxtF(24,8,"DEL=COR");
D_TxtF(1,8,"Back=CAN");
}
}
else if(pad==14)
{ bil=0; efek_tunggal(); }
}
}
}
RIWAYAT HIDUP PENULIS
Riwayat Pendidikan:
• SDN Japanan II mojowarno, tahun 1992-1998
• SMPN I Mojojejer, Mojowarno, tahun 1998-2001
• SMAN I Mojoagung, tahun 2001-2004
• Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopomber Surabaya,
Jurusan Teknik Elektronika, tahun 2004-2007