Epson SED1200 LCD Module

Anda mungkin juga menyukai

Anda di halaman 1dari 12

Epson SED1200 LCD Module

Tampilan LCD dalam dunia elektronika digital termasuk barang mewah, karena harga
tampilan ini cukup mahal tapi karena bisa dipakai untuk menampilkan kalimat, tampilan
LCD tetap menjadi idaman. Berikut ini akan dibahas teknik interface mikrokontroler
dengan tampilan LCD murah.

Jenis tampilan LCD yang beredar di pasar tidaklah banyak, mula-mula beredar ‘LCD
Display Module M1632’ buatan Seiko Instrument Inc., harganya cukup mahal lebih dari
seratus ribu rupiah. Belakangan ini ada jenis yang lain, buatan Epson Corporation dengan
type SED1200, harganya hanya sekitar 20% dari jenis pertama, jadi memang sangat
menarik untuk dipelajari lebih lanjut.

Tampilan LCD murah ini bisa dipakai untuk menampilkan 20 huruf/angka sekali gus,
cukup memadai untuk menampilkan nomor telpon dan pesan pesan pendek lainnya.

Seperti tampilan LCD pada umumnya, SED1200 terdiri dari dua bagian, yakni bagian
panel LCD yang terdiri dari banyak ‘titik-titik’ LCD dan sebuah mikrokontroler yang
menempel di panel dan berfungsi mengatur ‘titik-titik’ LCD tadi menjadi huruf/angka
yang terbaca, serta berfungsi pula untuk komunikasi antara tampilan LCD dengan
mikrokontroler lainnya yang memakai tampilan LCD itu.

Huruf/angka yang akan ditampilkan dikirim ke SED1200 dalam bentuk kode ASCII,
kode ASCII ini diterima dan diolah oleh mikrokontroler di dalam SED1200 menjadi
‘titik-titik’ LCD yang terbaca sebagai huruf/angka. Dengan demikian tugas
mikrokontroler pemakai tampilan LCD hanyalah mengirimkan kode-kode ASCII untuk
ditampilkan.

Sinyal interface SED1200

Dalam lembaran data (data sheet) SED1200 dikatakan tampilan LCD ini kompatible
dengan mikroprosesor 4 bit maupun 8 bit, hal ini disebabkan SED1200 hanya dilengkapi
dengan 4 jalur data (DB0 .. DB3) yang dipakai untuk menyalurkan kode ASCII
maupun perintah untuk mengatur kerjanya SED1200. Pada hal kode ASCII maupun
perintah tersebut semuanya merupakan kode 8 bit, maka kode-kode itu dikirimkan dua
kali, yang pertama dikirimkan adalah 4 bit yang berbobot lebih besar (most significant bit
– D4..D7) baru kemudian 4 bit sisanya (D0..D3). Selain DB0..DB3, SED1200
dilengkapi pula dengan CS, WR dan A0 seperti layaknya komponen yang kompatibel
dengan mikroprosesor, yang agak menyimpang adalah sinyal CLK yang akan dibicarakan
lebih lajut di bawah.

A0 dipakai untuk membedakan data yang dikirimkan ke SED1200, kalau A0=0 data
yang dikirim adalah perintah untuk mengatur kerja SED1200 dan sebaliknya kalau
A0=1 data yang dikirim adalah kode ASCII yang ingin ditampilkan.
Proses pengiriman data ke SED1200 digambarkan dalam Gambar 1 bisa dijabarkan
sebagai berikut :

• sinyal CS dipakai untuk mengaktipkan proses pengiriman data ini, selama proses ini
berlangsung CS diaktipkan dengan level tegangan ‘0’.

• Data yang akan dikirimkan ke SED1200 disiapkan di DB0..DB3, seperti dibicarakan


di atas kode-kode yang dikirimkan ke SED1200 dipecah menjadi 2 kali pengiriman, hal
ini terlihat jelas di gambar 1 yang menggambarkan pengiriman D4..D7 dan selanjutnya
pengiriman D0..D3.

• Setelah data siap, sinyal WR dipakai sebagai sinyal ‘komando’ bagi SED1200 agar
mengambil data di DB0..DB3. Pengambilan data ini tepatnya terjadi pada saat WR
berubah dari ‘0’ menjadi ‘1’.

Gambar 1
Proses pengiriman data ke SED1200

Interface ke AT89C51

Sinyal di Gambar 1 setara dengan sinyal-sinyal MCS51 pada saat AT89C51 mengerjakan
instruksi MOVX @DPTR,A.

Instruksi MOVX hanya bisa dilaksanakan di AT89C51 yang dirangkai dengan memori
eksternal, jadi pada sistem berbasis AT89C51 yang sudah dilengkapi 74HC573 (U2)
sebagai pemisah jalur-alamat (address bus demultiplexer) untuk keperluan pemakaian
memori eksternal, seperti terlihat di Gambar 2 dengan mudah bisa ditambah SED1200.

Seperti layaknya menambah IC memori pada AT89C51, hubungan SED1200 ke ke


AT89C51 dilakukan dengan cara sebagai berikut:

• DB0..DB3 SED1200 dihubungkan ke DB0..DB3 AT89C51,

• WR kedua komponen dihubungkan jadi satu,

• A0 SED1200 didapatkan dari output 74HC573 yang berfungsi sebagai address bus
multiplexer
• CS SED1200 dikendalikan lewat output 74LS138 yang berfungsi sebagai address
decoder

Dalam lembar data SED1200 tidak banyak dibicarakan tentang sinyal CLK, tidak ada
ketentuan berapa frekuensi clock dan tidak ada keterangan bilamana clock tersebut
diperlukan. Setelah dianalisa secara mendalam dan uji coba di laboratorium, ternyata
sinyal CLK hanya diperlukan setelah sinyal WR yang kedua dan cukup 16 pulsa saja
(lihat Gambar 1), meskipun demikian boleh juga clock itu diumpankan secara terus
menerus.

Kaki ALE AT89C51 selalu mengeluarkan clock dengan frekuensi sama dengan seper-
enam frekuensi kristal, clock pada ALE ini bisa dipakai untuk sinyal CLK SED1200,
jadi clock ini tidak perlu dibangkitkan secara khusus.

Selama 16 pulsa clock tersebut di atas, SED1200 melakukan proses internal dalam chip,
dan selama itu pula SED1200 tidak bisa menerima kiriman data. Keadaan ini bisa
dipantau lewat Register Status yang ada di dalam SED1200, untuk keperluan ini
SED1200 dilengkapi kaki RD yang dipakai untuk membaca isi Register Status.

Karena satu-satunya kegunaan kaki RD hanya untuk keperluan di atas, padahal waktu
sibuk SED1200 bisa diperkirakan dengan pasti, yakni 16 pulsa clock setelah sinyal WR
yang kedua, maka kaki RD tapi tidak perlu dipakai cukup dihubungkan ke Vcc.

Gambar 2
Hubungan SED1200 ke AT89C51

Program interface SED1200 terdiri dari sub-rutin KirimPerintah dan sub-rutin


KirimASCII, KirimPerintah dilakukan dengan A0=0 dan KirimASCII dilakukan
dengan A0=1. Sebelum memakai kedua sub-rutin ini, data yang akan dikirim ke
SED1200 sudah harus disiapkan di Akumulator A.

Pada saat melaksanakan instruksi MOVX @DPTR,A di baris 22, AT89C51 akan
membangkitkan sinyal yang diperlukan SED1200 seperti terlihat di Gambar 1.

CS dari SED1200 dihubungkan ke kaki Y7 dari 74LS138 (Gambar 2), kaki ini akan
menjadi ‘0’ jika kaki A (tehubung ke A13 AT89C51), kaki BA14) dan kaki C
(terhubung ke A15) semuanya bernilai ‘1’. Keadaan ini terpenuhi kalau pada saat
instruksi MOVX@DPTR,A dilaksanakan nilai DPTR berkisar antara 111
(terhubung ke 0 0000 0000 0000 (E000 heksadesimal) dan 1111 1111 1111
1111 (FFFFalamat dasar$E000 (awalan $ artinya bilangan heksadesimal).
heksadesimal). Dalam hal ini dikatakan SED1200 mempunyai

• Nilai $E000 di baris 2 akan mengakibatkan A12, A13 dan A14 dirangkaian
Gambar 2 bernilai ‘1’ sehingga CS akan bernilai ‘0’, dan A0 (kaki Q1 dari 74HC573)
menjadi ‘0’, data yang dikirim AT89C51 diterima SED1200 sebagai perintah untuk
mengatur kerja SED1200

• Sedangkan nilai $E001 di baris 6 akan mengakibatkan CS akan bernilai ‘0’, dan A0
(kaki Q1 dari 74HC573) menjadi ‘1’, data yang dikirim AT89C51 diterima SED1200
sebagai kode ASCII yang akan ditampilkan.

SED1200 hanya mempunyai 4 jalur data, sehingga data 8 bit yang sudah disimpan di
Acc dikirim dua kali, pertama dikirim 4 bit yang berbobot lebih besar (A4..A7, baris
10) setelah itu dikirim 4 bit berikutnya (A0..A3, baris 11)

Setelah pengiriman data yang kedua (baris 12), SED1200 memerlukan paling sedikit 16
pulsa clock untuk memproses data yang baru saja diterima. Selama AT89C51
mengerjakan instruksi di baris 15..17, ALE yang menjadi sumber clock bagi SED1200
sudah mengeluarkan lebih dari 16 pulsa, sehingga saat keluar dari sub-rutin SED1200
sudah siap menerima data lagi. (1 instruksi DJNZ = 4 pulsa ALE)

Potongan Program 1 Sub-rutin dasar untuk mengirim data ke SED1200

01: KirimPerintah:

02: MOV DPTR,#$E000 ; A0=0 : Command mode

03: SJMP OutByte

04: ;

05: KirimASCII:

06: MOV DPTR,#$E001 ; A0=1 : Character mode


07: OutByte:

08: PUSH A ; simpan dulu

09: SWAP A ; A0..A3 dan A4..A7 tukar tempat

10: ACALL OutNibble ; outputkan A4..A7

11: POP A ; ambil kembali simpanan

12: ACALL OutNibble ; outputkan A0..A3

13:

14: ***** Tunggu selama minimal 16 pulsa ALE

15: MOV R6,#4

16: Tunggu16ALE:

17: DJNZ R6,Tunggu16ALE ; 4 ALE setiap instruksi DJNZ

18: RET

19: ; Nibble adalah setengah Byte

20: OutNibble:

21: MOVX @DPTR,A ; kirim ke SED1200

22: RET

Interface ke AT89C2051

AT89C2051 adalah AT89C51 yang disederhanakan menjadi mikrokontroler yang hanya


berkaki 20, penyederhanaan itu mengakibatkan AT89C2051 tidak punya kaki-kaki
DB0..DB7, P2.0..P27, WR, RD dan ALE dan berapa kaki lainnya, selain itu
instruksi MOVX @DPTR,A tidak bisa dipakai, dengan demikian rangkaian Gambar 2
sama sekali tidak bisa dipakai untuk AT89C2051, sebagai gantinya dibuat rangkaian
Gambar 3, dalam rangkaian ini DB0..DB3 dan WR digantikan dengan Port 1 dan
fungsi kerjanya disimulasikan lewat program.

Kaki CLK SED1200 dihubungkan dengan kaki P1.7 AT89C2051, pulsa yang
diperlukan SED1200 untuk memproses data yang diterima dibangkitkan dengan program,
tidak perlu disediakan rangkaian khusus untuk membangkitkan clock.
Gambar 3
Hubungan SED1200 ke AT89C2051

Potongan Program 2 merupakan sub-rutin untuk mengendalikan SED1200 yang


dihubungkan ke AT89C2051 seperti terlihat di Gambar 3, sebelum memakai kedua sub-
rutin ini, data yang akan dikirim ke SED1200 sudah harus disiapkan di Akumulator A.

• Perbedaan sub-rutin KirimPerintah dan KirimASCII terletak pada nilai A0 pada saat
sub-rutin itu bekerja. Sub-rutin KirimPerintah bekerja dengan A0=‘0’ (baris 7), data
yang dikirim AT89C2051 diterima SED1200 sebagai perintah untuk mengatur kerja
SED1200. Sub-rutin KirimASCII bekerja dengan A0=‘1’ (baris 11), data yang dikirim
AT89C2051 diterima SED1200 sebagai kode ASCII yang akan ditampilkan

• Sepanjang proses pengiriman data CS diaktipkan dengan level tegangan ‘0’ yang
dilakukan di baris 13 dan di-nonaktip-kan kembali di baris 19.

• Data di Akumulator A dikirimkan setengah byte demi setengah byte sebanyak dua kali,
pertama dikirim A4..A7 (baris 15 dan 16) kemudian dikirim A0..A3 (baris 17 dan 18).

• Mengingat AT89C2051 tidak punya sinyal ALE, sebagai gantinya dibaris 22 sampai
dengan 25 dibangkitkan 16 pulsa clock yang dibutuhkan oleh CLK SED1200. 16 pulsa ini
dibangkitkan setelah A.0..A.3 dikirimkan ke SED1200, keluar dari sub-rutin ini
SED1200 sudah siap menerima data lagi.

• Baris 29 sampai 36 Potongan Program 2 mensimulasikan baris 21 Potongan Program 1,


di baris 29 kaki WR SED1200 di-nol-kan, baris 30 sampai 35 mengirimkan A0..A3 ke
DB0..DB3 (P1.0..P1.3) tanpa merubah sinyal-sinyal lain yang sudah berada di Port 1.
Di baris 36 WR dikembalikan ke ‘1’, saat itulah informasi di DB0..DB3 diambil oleh
SED1200.
Potongan Program 2 AT89C2051 dengan SED1200

01: Write bit P1.4

02: A0 bit P1.5

03: CS bit P1.6

04: CLK bit P1.7

05:

06: KirimPerintah:

07: CLR A0 ; A0=0 : Command mode

08: SJMP OutByte

09: ;

10: KirimASCII:

11: SETB A0 ; A0=1 : Character mode

12: OutByte:

13: CLR CS ; selama proses ini CS=’0’

14: PUSH A ; simpan dulu

15: SWAP A ; A0..A3 dan A4..A7 tukar tempat

16: ACALL OutNibble ; outputkan A4..A7

17: POP A ; ambil kembali simpanan

18: ACALL OutNibble ; outputkan A0..A3

19: SETB CS ; proses selesai, CS kembali = ‘1’

20:

21: ***** Membuat 16 pulsa CLK

22: MOV R6,#32


23: Buat16CLK:

24: CPL CLK ; CLK dibalik, ‘0’->’1’ dan ‘1’->’0’

25: DJNZ R6,Buat16CLK ;sebanyak 32 kali

26: RET

27: ;

28: OutNibble:

29: CLR Write ; ‘0’-kan dulu kaki WR SEED1200

30: ANL A,#$0F ; hanya A.0..A3 yang dipakai

31: MOV R6,A ; simpan dulu

32: MOV A,P1 ; ambil nilai yang sudah ada di P1

33: ANL A,#$F0 ; pertahankan nilai A.4..A.7

34: ORL A,R6 ; gabungkan dengan simpanan A.0..A.3

35: MOV P1,A ; siapkan ke SED1200

36: SETB Write ; data diambil SED1200

37: RET

Mengatur tampilan SED1200

SED1200 mempunyai seperangkat perintah untuk mengatur tata kerjanya, perangkat


perintah tersebut terlihat dalam Tabel 1.

SED1200 merupakan tampilan LCD 1 baris yang bisa menampilkan 20 huruf, meskipun
demikian dalam chip SED1200 tampilan ini disusun sebagai tampilan LCD 2 baris dan
masing-masing baris terdiri dari 10 huruf. Tampilan ini bisa di-nyala/padamkan dengan
kelompok perintah Display On/Off.

Kelompok perintah Line Select dipakai untuk menentukan banyaknya baris yang akan
dipakai. Sedangkan kelompok perintah Cursor Address dipakai untuk memilih baris
tampilan yang dipakai.

Perintah-perintah pengaturan cursor terdiri atas Cursor On/Off, Cursor Font yang dipakai
untuk menentukan bentuk cursor, bisa berupa garis bawah atau satu blok titik. Cursor
Blink dipakai untuk menentukan apakah cursor ber-kedip sedangkan Cursor Direction
dipakai untuk menentukan arah gerak cursor, ke kanan atau ke kiri.

Tabel 1
Daftar Perintah Pengatur SED1200

Keterangan
Input pertama Input kedua
Jenis Perintah
D3 D2 D1 D0 D3 D2 D1 D0
System Reset 0 0 0 1 0 0 0 0
0 0 0 1 0 0 1 0 Tampilan 1 baris
Line Select
0 0 0 1 0 0 1 1 Tampilan 2 baris
0 0 0 0 1 1 0 0 Tampilan aktip
Display On/Off
0 0 0 0 1 1 0 1 Tampilan padam
0 0 0 0 1 1 1 0 Tidak pakai cursor
Cursor On/Off
0 0 0 0 1 1 1 1 Pakai Cursor
0 0 0 0 1 0 0 0 Cursor : Garis bawah
Cursor Font
0 0 0 0 1 0 0 1 Cursor : semua titik nyala
0 0 0 0 1 0 1 0 Cursor berkedip
Cursor Blink
0 0 0 0 1 0 1 1 Cursor tak berkedip
0 0 0 0 0 1 0 0 Cursor bergerak ke kanan
Cursor Direction
0 0 0 0 0 1 0 1 Cursor bergerak ke kiri
1 0 0 0 0 0 0 0 Pindah ke baris pertama
Cursor Address
1 1 0 0 0 0 0 0 Pindah ke baris kedua

Untuk memudahkan pembuatan program, Tabel 1 ditulis dalam format assembler seperti
terlihat dalam Potongan Program 3. Dengan adanya tabel dalam Potongan Program 3
tersebut, selanjutnya untuk mengatur SED1200 tidak perlu lagi menulis kombinasi 0 dan
1 seperti terlihat di Tabel 1, tapi cukup menulis sebagai berikut:

MOV A,#ResetSED1200

LCALL KirimPerintah

.. .. ..

Potongan Program dibentuk dengan Assembler Directive EQU, artinya hanya sekedar
‘pemberitahuan’ pada assembler bahwa selanjutnya kalau menjumpai kata SystemRest
anggaplah sebagai bilangan biner 00010000 dan lain sebagainya. Susunan program
seperti ini, sama sekali tidak menempati memori microcontroller.

Potongan Program 3 Daftar Perintah Pengatur SED1200


01: ResetSED1200 EQU 010000

02: ;

03: Tampilan1Baris EQU 010010

04: Tampilan2Baris EQU 010011

05: ;

06: DisplayOff EQU 001100

07: DisplayOn EQU 001101

08: ;

09: TanpaCursor EQU 001110

10: PakaiCursor EQU 001111

11: ;

12: GarisBawah EQU 001000

13: Blok EQU 001001

14: ;

15: TidakKedip EQU 001010

16: Berkedip EQU 001011

17: ;

18: CursorKeKanan EQU 000100

19: CursorKeKiri EQU 000101

20: ;

21: KeBarisSatu EQU %10000000

22: KeBarisDua EQU %11000000

Tata kerja SED1200 harus ditentukan terlebih dulu sebelum tampilan itu dipakai,
Potongan Program 4 merupakan contoh persiapan pemakaian SED1200.
Baris 3 dan 4 adalah baris yang harus ditambahkan jika SED1200 dirangkai dengan
AT89C2051 seperti Gambar 2 dan dikendalikan dengan Potongan Program 2. Kedua
baris ini menentukan keadaan awal sinyal Write dan CS, harus =’1’.

Perintah pertama yang harus diberikan adalah ResetSED1200 (baris 6 dan 7), perintah-
perintah lain diberikan sesuai dengan kebutuhan, tapi perintah DisplayOn pada baris 19
dan 20 harus ada.

Potongan Program 4 Mempersiapkan tata kerja SED1200

01: ; ***** Initialize EPSON SED1200 LCD Module

02: SiapkanSED1200:

03: SETB Write level tegangan baku

04: SETB CS

05:

06: MOV A,#ResetSED1200

07: ACALL KirimPerintah

08: MOV A,#Tampilan2Baris

09: ACALL KirimPerintah

10:

11: MOV A,#KeBarisSatu

12: ACALL KirimPerintah

13: MOV A,#GarisBawah

14: ACALL KirimPerintah

15: MOV A,#PakaiCursor

16: ACALL KirimPerintah

17: MOV A,#Berkedip

18: ACALL KirimPerintah


19: MOV A,#DisplayOn

20: ACALL KirimPerintah

21: RET

Anda mungkin juga menyukai