Similar topics
Pencarian
translator
User Yang Sedang Online
Total 4 uses online :: 0 Terdaftar, 0 Tersembunyi dan 4 Tamu Tidak ada
User online terbanyak adalah 224 pada Sat Aug 21, 2010 12:24 pm
ANTAR MUKA M1632 LCD DENGAN MODUL DST-52 MENGGUNAKAN BAHASA C
Halaman 1 dari 1
ANTAR MUKA M1632 LCD DENGAN MODUL DST-52 MENGGUNAKAN BAHASA C
Waduh ,,,, Ni tugas GW bat besok ni ,,,
do akan supaya nilainya bagus .
hauhuahuah
do akan supaya nilainya bagus .
hauhuahuah
Re: ANTAR MUKA M1632 LCD DENGAN MODUL DST-52 MENGGUNAKAN BAHASA C
ANTAR MUKA M1632 LCD DENGAN MODUL DST-52
MENGGUNAKAN BAHASA C
Aplikasi berikut adalah antarmuka Modul DST-52 dengan LCD matriks 2x16.
LCD ini bisa diakses dengan mode antarmuka 8 bit atau mode antarmuka 4 bit. Pada
aplikasi kali ini akan digunakan mode antarmuka 4 bit.
Mode antarmuka 4 bit mempunyai keuntungan dibandingkan dengan antarmuka 8
bit, terutama sekali bisa dirasakan dalam proses pembuatan PCB. Jika kita mendesain
sebuah PCB dengan sistem yang rumit, maka berkurangnya 4 jalur akan cukup
berpengaruh pada tingkat kesulitan layout-nya. Selain itu menggunakan 4 jalur akan
menghemat port, dan bila terjadi gangguan, troubleshooting terhadap rangkaian lebih
mudah.
Antarmuka LCD matriks 2x16 bisa dilihat pada gambar 1. Potensio 10K
digunakan untuk mengatur tegangan pada kaki VLCD, dimana tegangan pada kaki ini
akan mempengaruhi ketajaman karakter yang tampak pada LCD.
VCC
Antar Muka M1632 LCD dengan Modul DST-52
Pada aplikasi ini, data LCD dihubungkan ke data bus development system, tetapi
cara pengaksesannya tetap menggunakan mode I/O biasa. Karena data bus dipakai oleh
Development system untuk membaca program dari memori eksternal, maka program
pengaksesan LCD tidak bisa diletakkan pada memori eksternal, karena jika terjadi
perubahan data pada port-port ini, program yang sedang dibaca dari memori eksernal
akan kacau. Karena itu, program-program ini harus diletakkan dalam Flash PEROM
AT89C51, dan dipanggil dari memori eksternal dengan menggunakan perintah LCALL.
Dengan digunakannya data bus untuk mengakses LCD, maka port 1 dan PPI
8255 dari DST-52 tetap bebas untuk digunakan keperluan lain. Pada DST-52 telah
dibuat rutin-rutin internal untuk mengakses LCD. Rutin-rutin tsb antara lain:
· GeserDisplay_Kanan pada Flash PEROM alamat 05BDH: untuk menggeser
tampilan LCD HD44780 ke kanan
· GeserDisplay_Kiri pada Flash PEROM alamat 05C4H: untuk menggeser
tampilan LCD HD44780 ke kiri
· · Posisi_Awal pada Flash PEROM alamat 05CBH: untuk mengatur posisi cursor LCD
ke posisi awal
· · GeserCursor_Kiri pada Flash PEROM alamat 05D2H: untuk menggeser Cursor LCD
kekiri
· GeserCursor_Kanan pada Flash PEROM alamat 05D9H: untuk menggeser
Cursor LCD kekanan
· KirimPesan_LCD pada Flash PEROM alamat 05E0H: untuk Mengirim data di
alamat yang ditunjuk oleh DPTR ke LCD
· Init_LCD pada Flash PEROM alamat 05ECH: untuk Inisialisasi LCD
· Kirim_Perintah pada Flash PEROM alamat 062BH: untuk mengirimkan data
ke register perintah LCD
· Kirim_Karakter pada Flash PEROM alamat 064AH: untuk mengirimkan data
ke register data LCD
· Baris2 pada Flash PEROM alamat 0654H: untuk ;Memindah posisi cursor ke
baris 2
Jika kita menggunakan bahasa C, dan ingin mengakses rutin-rutin tersebut, maka kita
perli mengkonversikannya menjadi rutin-2 C. Berikut ini pengkonversian rutin-rutin
tersebut dalam C:
void initlcd(void){
_asm
lcall 0x05EC
_endasm;
}
void Kirim_Karakter(void){
_asm
lcall 0x064A
_endasm;
}
void Posisi_Awal(void){
_asm
lcall 0x05CB
_endasm;
}
void GeserCursor_Kiri(void){
_asm
lcall 0x05D2
_endasm;
}
void GeserCursor_Kanan(void){
_asm
lcall 0x05D9
_endasm;
}
void GeserDisplay_Kiri(void){
_asm
lcall 0x05C4
_endasm;
}
void KirimPesan_LCD(unsigned char* massage){
unsigned int x = *massage; //untuk megarahkan DPTR ke
alamat awal pesan
_asm
lcall 0x05E0
_endasm;
}
void GeserDisplay_Kanan(void){
_asm
lcall 0x05BD
_endasm;
}
void Baris2(void){
_asm
lcall 0x0654
_endasm;
}
Yang perlu diperhatikan pada rutin-rutin diatas adalah, pada rutin Kirim_Karakter dan
Kirim Perintah, data diletakkan pada Akumulator. Sedangkan pada rutin
KirimPesan_LCD, Alamat Awal pesan yang ditampilkan diletakkan pada DPTR.
Dengan demikian jika kita ingin menampilkan karakter ‘A’ pada baris 1 kolom 1
LCD, kita tuliskan programnya sbb:
Potongan program 1: menampilkan karakter ‘A’ pada baris 1 kolom 1 LCD
01: Initlcd();
02: Posisi_Awal();
03: ACC = 0x41;
04: Kirim_Karakter();
Sebenarnya diantara rutin-rutin tersebut, yang wajib berada di Flash PEROM
adalah rutin Kirim_Karakter, sedangkan yang lainnya boleh ditulis di memori eksternal.
Berikut ini kita coba menuliskan rutin KirimPesan_LCD dalam memori eksternal
menggunakan bahasa C.
Pada rutin internal DST, Akhir karakter pesan ditandai dengan adanya data 0xff.
Tetapi kali ini kita akan memanfaatkan built-in rutin yang telah disediakan oleh SDCC
untuk mendetekasi panjang pesan, yaitu function strlen(const char *s) yang terdapat pada
library string.h. Berikut ini rutinnya:
Potongan program 1: Mengirim pesan ke LCD
01: void KirimPesan_LCD(unsigned char *massage){
02: unsigned char i = 0;
03: while(i<strlen(massage)){
04: ACC = massage[i];
05: Kirim_Karakter();
06: i++;
07: }
08: }
Pada rutin diatas, parameter yang diinputkan ke function adalah pointer yang
menunjukkan alamat awal dari pesan yang akan ditampilkan. Mulai dari alamat yang
ditunjuk oleh pointer tersebut sampai sebanyak karakter yang akan ditampilkan
(sepanjang pesan) dilakukan:
1. 1. Ambil karakter dari memori, masukkan ke Akumulator dengan perintah:
ACC = massage[i];
2. 2. Kirimkan karakter tersebut ke LCD dengan perintah:
Kirim_Karakter();
Contoh pemakaian program diatas bisa dilihat pada program berikut:
Potongan program 3: Menampilkan 2 baris pesan ke LCD
#include <8051.h>
#include <string.h>
#define USE_ASSEMBLY (1)
code unsigned char Pesan1[] = “Delta Electronic”;
code unsigned char Pesan2[] = “ Surabaya ”
void main(void){
initlcd();
Posisi_Awal();
KirimPesan_LCD(Pesan1);
Baris2();
KirimPesan_LCD(Pesan2);
}
void initlcd(void){
_asm
lcall 0x05EC
_endasm;
}
DOWNLOAD AJA NIH PDF NYA ..
Download DIsini
MENGGUNAKAN BAHASA C
Aplikasi berikut adalah antarmuka Modul DST-52 dengan LCD matriks 2x16.
LCD ini bisa diakses dengan mode antarmuka 8 bit atau mode antarmuka 4 bit. Pada
aplikasi kali ini akan digunakan mode antarmuka 4 bit.
Mode antarmuka 4 bit mempunyai keuntungan dibandingkan dengan antarmuka 8
bit, terutama sekali bisa dirasakan dalam proses pembuatan PCB. Jika kita mendesain
sebuah PCB dengan sistem yang rumit, maka berkurangnya 4 jalur akan cukup
berpengaruh pada tingkat kesulitan layout-nya. Selain itu menggunakan 4 jalur akan
menghemat port, dan bila terjadi gangguan, troubleshooting terhadap rangkaian lebih
mudah.
Antarmuka LCD matriks 2x16 bisa dilihat pada gambar 1. Potensio 10K
digunakan untuk mengatur tegangan pada kaki VLCD, dimana tegangan pada kaki ini
akan mempengaruhi ketajaman karakter yang tampak pada LCD.
VCC
Antar Muka M1632 LCD dengan Modul DST-52
Pada aplikasi ini, data LCD dihubungkan ke data bus development system, tetapi
cara pengaksesannya tetap menggunakan mode I/O biasa. Karena data bus dipakai oleh
Development system untuk membaca program dari memori eksternal, maka program
pengaksesan LCD tidak bisa diletakkan pada memori eksternal, karena jika terjadi
perubahan data pada port-port ini, program yang sedang dibaca dari memori eksernal
akan kacau. Karena itu, program-program ini harus diletakkan dalam Flash PEROM
AT89C51, dan dipanggil dari memori eksternal dengan menggunakan perintah LCALL.
Dengan digunakannya data bus untuk mengakses LCD, maka port 1 dan PPI
8255 dari DST-52 tetap bebas untuk digunakan keperluan lain. Pada DST-52 telah
dibuat rutin-rutin internal untuk mengakses LCD. Rutin-rutin tsb antara lain:
· GeserDisplay_Kanan pada Flash PEROM alamat 05BDH: untuk menggeser
tampilan LCD HD44780 ke kanan
· GeserDisplay_Kiri pada Flash PEROM alamat 05C4H: untuk menggeser
tampilan LCD HD44780 ke kiri
· · Posisi_Awal pada Flash PEROM alamat 05CBH: untuk mengatur posisi cursor LCD
ke posisi awal
· · GeserCursor_Kiri pada Flash PEROM alamat 05D2H: untuk menggeser Cursor LCD
kekiri
· GeserCursor_Kanan pada Flash PEROM alamat 05D9H: untuk menggeser
Cursor LCD kekanan
· KirimPesan_LCD pada Flash PEROM alamat 05E0H: untuk Mengirim data di
alamat yang ditunjuk oleh DPTR ke LCD
· Init_LCD pada Flash PEROM alamat 05ECH: untuk Inisialisasi LCD
· Kirim_Perintah pada Flash PEROM alamat 062BH: untuk mengirimkan data
ke register perintah LCD
· Kirim_Karakter pada Flash PEROM alamat 064AH: untuk mengirimkan data
ke register data LCD
· Baris2 pada Flash PEROM alamat 0654H: untuk ;Memindah posisi cursor ke
baris 2
Jika kita menggunakan bahasa C, dan ingin mengakses rutin-rutin tersebut, maka kita
perli mengkonversikannya menjadi rutin-2 C. Berikut ini pengkonversian rutin-rutin
tersebut dalam C:
void initlcd(void){
_asm
lcall 0x05EC
_endasm;
}
void Kirim_Karakter(void){
_asm
lcall 0x064A
_endasm;
}
void Posisi_Awal(void){
_asm
lcall 0x05CB
_endasm;
}
void GeserCursor_Kiri(void){
_asm
lcall 0x05D2
_endasm;
}
void GeserCursor_Kanan(void){
_asm
lcall 0x05D9
_endasm;
}
void GeserDisplay_Kiri(void){
_asm
lcall 0x05C4
_endasm;
}
void KirimPesan_LCD(unsigned char* massage){
unsigned int x = *massage; //untuk megarahkan DPTR ke
alamat awal pesan
_asm
lcall 0x05E0
_endasm;
}
void GeserDisplay_Kanan(void){
_asm
lcall 0x05BD
_endasm;
}
void Baris2(void){
_asm
lcall 0x0654
_endasm;
}
Yang perlu diperhatikan pada rutin-rutin diatas adalah, pada rutin Kirim_Karakter dan
Kirim Perintah, data diletakkan pada Akumulator. Sedangkan pada rutin
KirimPesan_LCD, Alamat Awal pesan yang ditampilkan diletakkan pada DPTR.
Dengan demikian jika kita ingin menampilkan karakter ‘A’ pada baris 1 kolom 1
LCD, kita tuliskan programnya sbb:
Potongan program 1: menampilkan karakter ‘A’ pada baris 1 kolom 1 LCD
01: Initlcd();
02: Posisi_Awal();
03: ACC = 0x41;
04: Kirim_Karakter();
Sebenarnya diantara rutin-rutin tersebut, yang wajib berada di Flash PEROM
adalah rutin Kirim_Karakter, sedangkan yang lainnya boleh ditulis di memori eksternal.
Berikut ini kita coba menuliskan rutin KirimPesan_LCD dalam memori eksternal
menggunakan bahasa C.
Pada rutin internal DST, Akhir karakter pesan ditandai dengan adanya data 0xff.
Tetapi kali ini kita akan memanfaatkan built-in rutin yang telah disediakan oleh SDCC
untuk mendetekasi panjang pesan, yaitu function strlen(const char *s) yang terdapat pada
library string.h. Berikut ini rutinnya:
Potongan program 1: Mengirim pesan ke LCD
01: void KirimPesan_LCD(unsigned char *massage){
02: unsigned char i = 0;
03: while(i<strlen(massage)){
04: ACC = massage[i];
05: Kirim_Karakter();
06: i++;
07: }
08: }
Pada rutin diatas, parameter yang diinputkan ke function adalah pointer yang
menunjukkan alamat awal dari pesan yang akan ditampilkan. Mulai dari alamat yang
ditunjuk oleh pointer tersebut sampai sebanyak karakter yang akan ditampilkan
(sepanjang pesan) dilakukan:
1. 1. Ambil karakter dari memori, masukkan ke Akumulator dengan perintah:
ACC = massage[i];
2. 2. Kirimkan karakter tersebut ke LCD dengan perintah:
Kirim_Karakter();
Contoh pemakaian program diatas bisa dilihat pada program berikut:
Potongan program 3: Menampilkan 2 baris pesan ke LCD
#include <8051.h>
#include <string.h>
#define USE_ASSEMBLY (1)
code unsigned char Pesan1[] = “Delta Electronic”;
code unsigned char Pesan2[] = “ Surabaya ”
void main(void){
initlcd();
Posisi_Awal();
KirimPesan_LCD(Pesan1);
Baris2();
KirimPesan_LCD(Pesan2);
}
void initlcd(void){
_asm
lcall 0x05EC
_endasm;
}
DOWNLOAD AJA NIH PDF NYA ..
Download DIsini
Similar topics
» diajar bahasa inggris yu ah
» TUTORIAL MENGGUNAKAN "squid"
» [Script Code] Membuat Jam menggunakan Java
» TUTORIAL MENGGUNAKAN "squid"
» [Script Code] Membuat Jam menggunakan Java
Halaman 1 dari 1
Permissions in this forum:
Anda tidak dapat menjawab topik
|
|