Senin, 18 Juli 2011

BAB II TINJAUAN PUSTAKA

BAB II
TINJAUAN PUSTAKA

2.1  Mikrokontroler ATmega8535
AVR atau sebuah kependekan dari Alf and Vegard’s Risc Processor merupakan chip mikrokontroller yang diproduksi oleh Atmel, yang secara umum dapat dikelompokkan ke dalam 4 kelas, salah satunya adalah ATMega
Perbedaan yang terdapat pada masing-masing kelas adalah kapasitas memori, periperal, dan fungsinya. Dalam hal arsitektur maupun instruksinya, hampir tidak ada perbedaan sama sekali. Dalam hal ini ATmega8535 dapat beroperasi pada kecepatan maksimal 16 MHz serta memiliki 6 pilihan mode sleep untuk menghemat penggunaan daya listrik.
ATmega8535 memiliki bagian sebagai berikut :
  • Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C, dan Port D.
  • ADC 10 bit sebanyak 8 saluran.
  • Tiga buah Timer/Counter dengan kemampuan pembandingan.
  • CPU yang terdiri atas 32 buah register.
  • Watchdog Timer dengan osilator internal.
  • SRAM sebesar 512 byte.
  • Memori Flash sebesar 8 kB dengan kemampuan Read While Write.
  • Unit interupsi internal dan eksternal.
  • Port antarmuka SPI.
  • EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
  • Antarmuka komparator analog.
  • Port USART untuk komunikasi serial.
Fitur ATmega8535
Adapun kapabilitas detail dari ATmega8535 adalah sebagai berikut :
  • Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.
  • Kapabilitas memori flash 8 KB, SRAM sebesar 512 byte, dan EEPROM (Electrically Erasable Programmable Read Only Memori) sebesar 512 byte.
  • ADC internal dengan fidelitas 10 bit sebanyak 8 channel.
  • Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps.
  • Enam pilihan mode sleep untuk menghemat penggunaan daya listrik.

Konfigurasi pin ATmega8535
Konfigurasi pin ATmega8535 dilihat pada Gambar 2.1. Dari gambar tersebut maka dapat dijelaskan secara fungsional konfigurasi pin ATmega8535 sebagai berikut :
 









Gambar 2.1.1 Pin ATmega8535

1.      VCC
            Pin–pin ini merupakan pin catu daya dengan level tegangan 2.7 – 5.5 Volt DC untuk VCC.
2.      GND
                        Merupakan ground dari tegangan VCC.
3.      Port A ( PA7 – PA0 )
            Port A merupakan masukan analog untuk ADC, jika ADC tidak digunakan maka port A dapat berfungsi sebagai port I/O dua jalur. Port A merupakan port I/O 8 bit yang dapat menyediakan internal pull up resistors dan buffer pada keluarannya mempunyai symmetrical drive characteristics.
            Jika PA0 - PA7 digunakan sebagai masukan dan internal pull up resistors dalam keadaan aktif maka external pull low port ini akan mengalirkan arus.
            Tabel 2.1 berikut fungsi khusus port A pada Tabel 2.1 selain dapat berfugsi sebagai jalur I/O dua jalur:
Tabel  2.1.2 Fungsi Alternatif dari Pin Port A
Pin
Fungsi Alternatif
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
ADC7 ( ADC Input Channel 7 )
ADC6 ( ADC Input Channel 6 )
ADC5 ( ADC Input Channel 5 )
ADC4 ( ADC Input Channel 4 )
ADC3 ( ADC Input Channel 3 )
ADC2 ( ADC Input Channel 2 )
ADC1 ( ADC Input Channel 1 )
ADC0 ( ADC Input Channel 0 )

4.      Port B ( PB7 – PB0 )
            Port B merupakan bi-directional port I/O 8 bit dengan internal pull up resistors, buffer pada keluaran port ini juga memiliki symmetrical drive characteristics. Jika digunakan sebagai masukan dan jika resistor pull up dalam keadaan aktif, maka external pull low akan mengalirkan arus.                   Selain fungsi diatas, port B juga mempunyai fungsi khusus yang lain seperti yang disebutkan pada Tabel 2.2:

Tabel 2.1.3 Fungsi Alternatif dari Pin Port B
Pin
Fungsi Alternatif
PB7
PB6
PB5
PB4
PB3

PB2

PB1
PB0
SCK ( SPI Bus Serial Clock )
MISO ( SPI Bus Master Input / Slave Output )
MOSI ( SPI Bus Master Output / Slave Input )
SS ( SPI Slave Select Input )
AIN1 ( Analog Comparator Negative Input )
OC0 ( Time/Counter 0 Output Compare Match Output )
AIN0 ( Analog Comparator Positive Input )
INT1 ( External Interrupt 2 Input )
T1 ( Timer / Counter 1 External Counter Input )
T0 ( Timer / Counter 0 External Counter Input )
XCK ( USART External Clock Input / Output )

5.      Port C ( PC7 – PC0 )
            Port C merupakan port I/O 8 bit dengan internal pull up resistor. buffer pada keluaran port ini juga memiliki symmetrical drive characteristics. Jika digunakan sebagai masukan, maka external pull low akan mengalirkan arus jika resistor pull up dalam keadaan aktif.
6.      Port D ( PD7 – PD0 )
            Port D merupakan port I/O 8 bit dengan internal pull up resistor. buffer pada keluaran port ini juga memiliki symmetrical drive characteristics. Jika digunakan sebagai masukan, maka external pull low akan mengalirkan arus jika resistor pull up dalam keadaan aktif.
            Selain fungsi diatas, port B juga mempunyai fungsi khusus yang lain seperti pada Tabel 2.3:
Tabel 2.1.4 Fungsi Khusus dari Port D
Pin
Fungsi Alternatif
PD7
PD6
PD5
PD4
PD3
PD2
PD1
PD0
OC2 ( Timer/Counter2 Output Compare Match Output )
ICP1 ( Timer/Counter1 Input Capture pin )
OC1A ( Timer/Counter1 Output Compare A Match Output )
OC1B (Timer/Counter1 Output Compare B Match Output )
INT1 ( External Interrupt 1 Input )
INT0 ( External Interrupt 0 Input )
TXD (  USART Output Pin )
RXD ( USART Input Pin )

  1. RESET
            Pin ini adalah untuk masukan RESET,
  1. XTAL1
            Merupakan masukan untuk oscillator inverting amplifier dan masukan untuk clock internal pada operasi rangkaian.
  1. XTAL2
            Output dari oscillator inverting amplifier.
  1. AVCC
            Merupakan pin tegangan untuk port A dan ADC. Tegangan ini harus berbeda dengan tegangan VCC, jika ADC tidak digunakan. Dan jika ADC digunakan maka tegangan ini harus disambung dengan tegangan VCC melalui sebuah low-pass filter.
  1. AREF
            Merupakan pin referensi untuk ADC



Berikut ini adalah arsitektur dasar dari mikrokontrller ATmega8535 dapat dilihat pada Gambar 2.2 dibawah:
Gambar 2.1.5 Arsitektur ATmega8535

Organisasi memori pada mikrokontroller ATmega8535 dibagi menjadi dua bagian utama yaitu memori program (Flash Memori) dan memori data.    Pembagian tersebut didasarkan atas fungsi dari penyimpangan data maupun program. Mikrokontroller ATmega8535 telah dilengkapi dengan EEPROM yang digunakan sebagai media penyimpanan data.
Gambar 2.3 berikut ini adalah penjelasan memori pada mikrokontroler ATmega8535.
§    Flash Memory
Gambar 2.1.6 Peta Flash Memori

Mikrokontroller ATmega8535 memiliki 8Kb System Reprogrammable Flash Memory untuk penyimpanan data, selama semua instruksi pada MCU ini menggunakan data 16 atau 32 bit maka Flash Memory terorganisasi atas 4K x 16. Untuk pengamanan program, Flash Memory ini terbagi menjadi 2 bagian yaitu Boot Program dan Application Program (lihat Gambar 2.4).
§    Data Memori
 







Gambar 2.1.7 Peta Program Data Memori
Terdapat 608 lokasi data memori yang dialamatkan pada register file, I/O memory dan internal data SRAM, 96 lokasi memori tersebut terletak pada register file dan  I/O memory sedangkan sisanya terdapat pada internal data SRAM.
Mikrokontroller ATmega8535 mempunyai empat sumber reset baik  internal maupun eksternal, berikut ini adalah sumber reset dari ATmega8535:
1.      Eksternal Reset
MCU dalam kondisi reset apabila pin reset pada pin 9 diberikan sebuah masukan berupa pulsa low dalam waktu lama.
2.      Power-On Reset
MCU akan mereset jika tegangan power supply menurun atau berada dibawah tegangan power-on reset.
3.      Watchdog Reset
MCU akan mereset apabila watchdog timer dalam kondisi enable dan periodenya telah habis.
4.      Brown-Out Reset
MCU akan mereset apabila tegangan power supply Vcc berada dibawah atau mendekati tegangan brown-out reset dan ketika detektor brown-out dalam keadaan enable.

Gambar 2.5 berikut ini akan menjelaskan sistem logika pe-reset-an mikrokontroller ATmega8535:














Gambar 2.1.8 Logika Reset Mikrokontroller ATmega8535

Bagian analog komparator akan membandingkan harga masukan pada pin positif AIN0 dan pin negatif AIN1. Keluaran analog komparator (ACO) akan berada dalam kondisi set jika tegangan positif pada pin AIN0 lebih tinggi dari pada tegangan negatif pada pin AIN1.
Keluaran komparator dapat digunakan men-set trigger untuk timer atau counter. Sebagai fungsi tambahan, komparator juga dapat digunakan untuk men-set trigger sebuah interrupt secara terpisah. Pada proses intrrupt triggering, user dapat memilih dua ( 2 ) pilihan yaitu Fall atau Toggle pada setiap kenaikan keluaran dari komparator. Blok diagram analog komparator dapat dilihat pada Gambar 2.6 dibawah ini:
Gambar 2.1.9 Blok Diagram Analog Komparator

2.2  Relay  DC
            Relai adalah saklar elektronik yang dapat membuka atau menutup rangkaian dengan menggunakan kontrol dari rangkaian elektronik lain. Sebuah relai (Gambar 2.7) tersusun atas kumparan, pegas, saklar (terhubung pada pegas) dan 2 kontak elektronik (normally close dan normally open).
  1. Normally close (NC) : saklar terhubung dengan kontak ini saat relai tidak aktif atau dapat dikatakan saklar dalam kondisi tertutup.
  2. Normally open (NO) : saklar terhubung dengan kontak ini saat relai aktif atau dapat dikatakan saklar dalam kondisi terbuka.
 









Gambar 2.1.10 Relay

            Berdasarkan pada prinsip dasar cara kerjanya, relai dapat bekerja karena adanya medan magnet yang digunakan untuk menggerakkan saklar. Saat kumparan diberikan tegangan sebesar tegangan kerja relai maka akan timbul medan magnet pada kumparan karena adanya arus yang mengalir pada lilitan kawat. Kumparan yang bersifat sebagai elektromagnet ini kemudian akan menarik saklar dari kontak NO ke kontak NC. Jika tegangan pada kumparan dimatikan maka medan magnet pada kumparan akan hilang sehingga pegas akan menarik saklar ke kontak NO.
Terdapat 2 macam relai berdasarkan tegangan  penggerak koilnnya yaitu AC dan DC. Beberapa keandalan yang dimiliki relai antara lain:
1.                Dapat mengontrol sendiri arus serta tegangan listrik yang diinginkan.
2.                Dapat memaksimalkan besarnya tegangan listrik hingga mencapai batas maksimalnya.
3.                Dapat menggunakan baik saklar maupun koil lebih dari satu, disesuaikan dengan kebutuhan.


2.3  Transistor sebagai Saklar
Transistor merupakan sebuah komponen semikonduktor yang banyak digunakan pada berbagai rangkaian elektronik baik sebagai penguat, saklar, dan lain-lain. Asas kerja dari transistor adalah akan ada arus yang mengalir diantara terminal kolektor – emitor (IC) (Gambar 2.8) hanya apabila ada arus yang mengalir diantara terminal basis – emitor (IB). Jadi transistor harus dioperasikan pada daerah linier agar diperoleh sinyal keluaran yang tidak cacat (distorsi).
Gambar 2.1.11 Rangkaian Transistor Switching

   Garis beban akan memotong sekelompok kurva arus basis konstan IB (Gambar 2.9) dengan IB tertentu (yang diatur rangkaian bias), garis beban akan memotong kurva IB tersebut dititik Q yang disebut titik kerja transistor. Titik kerja ini menjadi kondisi awal dari pengoperasian transistor kelak dimana transistor tersebut mempunyai tiga daerah kerja yaitu aktif (active), jenuh (saturation), dan tersumbat (cut-off).

Gambar  2.1.12  Karakteristik IC-VCE Transistor Bipolar
   Pada gambar diatas dapat dilihat, titik dimana garis beban memotong kurva IB = 0 disebut sebagai titik sumbat (cut-off). Pada titik ini arus kolektor (IC) sangat kecil (hanya arus bocor) sehingga dapat diabaikan, disini transistor kehilangan kerja normalnya. Disini dapat dikatakan bahwa tegangan kolektor-emitor sama dengan ujung dari garis beban tersebut.
VCE(cut-off)  VCC
   Perpotongan garis beban dengan kurva IB = IB(sat) disebut titik jenuh (saturation). Pada titik ini arus kolektor maksimum atau dapat dikatakan bahwa arus kolektor sama dengan ujung dari garis beban.
                                 IC(sat)
   Jika arus basis IB lebih kecil dari IB(sat) maka transistor akan beroperasi pada daerah aktif, yaitu titik kerjanya terletak disepanjang garis beban.
   Jadi disimpulkan bahwa transistor bipolar (Gambar 2.10) bekerja sebagi suatu sumber arus (penguat) dimana saja sepanjang garis beban, kecuali titik jenuh (saturation) atau titik sumbat (cut-off) dimana transistor tidak lagi bekerja sebagai sumber arus (penguat) melainkan sebagi saklar (switching).
 





Gambar 2.1.13 Simbol Transistor NPN dan PNP

2.4  LCD ( Liquid Crystal Display)
Display LCD (Liquid Crystal Display) adalah penampil kristal cair yang terdiri atas tumpukan tipis atau sel dari dua lembar kaca yang sampingnya tertutup rapat. Antar dua lembar kaca tersebut diberi bahan kristal cair (Liquid Crystal) yang tembus cahaya. Permukaan luar dari masing-masing keping kaca mempunyai lapisan penghantar tembus cahaya. Sel mempunyai ketebalan sekitar 1x10-5 meter dan diisi dengan kristal cair. LCD (Liquid Crystal Display) merupakan suatu bentuk kristal cair yang akan beremulasi jika dikenakan tegangan kepadanya.
Beberapa hal yang perlu diperhatikan untuk pengaksesan LCD yaitu LCD selalu berada pada kondisi tulis (Write) yaitu dengan menghubungkan kaki R/W ke ground. Hal ini dimaksudkan agar LCD tersebut tidak pernah mengeluarkan data (pada kondisi baca) yang mengakibatkan tabrakan data dengan komponen lain di jalur bus. Penampil kristal cair memerlukan satu daya dari power supply sebesar +5 volt.
Penggunaan LCD ini memiliki beberapa keuntungan di antaranya adalah :
1)      Dapat menampilkan data karakter ASCII, sehingga memudahkan untuk membuat program tampilannya.
2)      Mudah dihubungkan dengan port I/O, karena hanya menggunakan 8 bit data dan 3 bit kontrol.
3)      Ukuran dari modul yang proporsional.
LCD yang digunakan kali ini adalah tipe karakter 2x16 baris. LCD ini dapat menampilkan 16 karakter perbaris dan mempunyai ROM pembangkit karakter sebanyak 129 tipe karakter dengan font 5x7 dot matrik.
Kapasitas RAM intemalnya sebanyak 80x8 bit data (40x8 bit perbarisnya). Sedangkan untuk alamat masing – masing barisnya adalah sebagai berikut :
1)      Baris 1, alamat 00h sampai 27h
2)      Baris 2,alamat 40h sampai 67h
Operasi dasar LCD terdiri dari empat kondisi yaitu interaksi mengakses proses intemal, instruksi ini menulis data, instrtuksi membaca kondisi sibuk dan instruksi membaca data. Tabel di bawah menunjukkan operasi dasar LCD.
Tabel 2.1.5 Operasi dasar LCD
RS
RW
OPERASI LCD
0
0
Input instruksi ke LCD
0
1
Baca status flag
1
0
Penulisan data
1
1
Baca data dari LCD

Ciri – ciri LCD tipe M1632
1) LCD ini terdiri dari 32 karakter dengan 2 baris masing – masing 16 karakter.
2) Karakter ROM dengan 192 tipe karakter.
3) Karakter RAM dengan 8 tipe karakter.
4) 80 x 8 bit display data RAM.
5) Dapat diinterfacekan ke MCU 8 bit atau 4 bit.
6) Dilengkapi fungsi dengan : display dear, cursor home, display On/Off,cursor On/Off, display character blink, cursor shift, dan display shift.
7) Reset otomatis pada saat power on.
8) +5V PSU tunggal.
dot matrik
Gambar 2.1.14 LCD
Fungsi dari masing-masing penyemat LCD (Liquid Crystal Display) M1632 ditunjukkan sebagai berikut:
1)  D0.......D7            :Merupakan saluran data, berisi perintah dan data yang akan ditampilkan pada LCD.
2)   Enable (E)          :Sinyal operasi awal. Sinyal ini untuk mengaktifkan data tulis atau baca.
3)   R/W                    :Sinyal seleksi tulis dan baca : 0 = tulis    1 = baca
4)   RS                       :Sinyal pemilih register intemal (0 = instruksi register (tulis); 1 = data register(tulis dan baca)).
5)   VEE                    :Untuk mengendalikan kecerahan LCD dengan mengubah-ubah nilai resistor variabel yang dihubungkan padanya.
6)   VCC                   : Catu daya + 5 volt
7)   VSS                     : Terminal ground.
Interfacing ini menggunakan mode antarmuka 8 bit dengan metode bus. Metode bus ini digunakan karena untuk menghemat jumlah port microcontroller yang digunakan untuk kontrol LCD. Selain itu juga mempermudah pembuatan layout PCB.  

2.5   Real - Time Clock  Typical Operating Circuit
            Gambaran umum seri real-time clock (RTC) adalah sebuah lowpower, penuh kode biner-desimal (BCD) jam / kalender ditambah 56 byte SRAM NV. Alamat dan data berturut ditransfer melalui bus I2C, dua arah. Jam / calendar menyediakan detik, menit, jam, hari, tanggal, bulan, dan informasi tahun. Akhir tanggal bulan secara otomatis disesuaikan untuk bulan dengan kurang dari 31 hari, termasuk koreksi untuk lompatan tahun. Jam beroperasi baik di dalam jam 24 atau 12 –jam dengan format AM / indikator PM. The DS1307 memiliki built-in rangkaian daya-rasa yang mendeteksi gangguan listrik dan secara otomatis beralih ke pasokan cadangan. Ketepatan waktu operasi terus sedangkan bagian beroperasi Description: Click for Larger 

Image - DS1307 Real-Time Clock Mini Boarddari pasokan cadangan.
DS1307-circuits
Gambar 2.1.15 Real-Time Clock
PART                  TEMP          RANGE VOLTAGE (V)      PIN-PACKAGE           TOP MARK
DS1307+              0°C to +70°C             5.0                               8 PDIP (300 mils)                                   DS1307
DS1307N+           -40°C to +85°C          5.0                               8 PDIP (300 mils)                                  DS1307N
DS1307Z+            0°C to +70°C             5.0                               8 SO (150 mils)                                      DS1307
DS1307ZN+         -40°C to +85°C          5.0                                8 SO (150 mils)                                     DS1307N
DS1307Z+T&R        0°C to +70°C          5.0                             8 SO (150 mils)Tape and Ree                   DS1307
DS1307ZN+T&R     -40°C to +85°C         5 .0                         8 SO (150 mils)Tape and Reel                DS1307N

2.1.6 Tabel Informsi Pemesanan TRC DS1307
Catatan 1:        Semua tegangan direferensikan ke tanahatau grond.
Catatan 2:        Batas pada -40 ° C dijamin oleh desain dan tidak produksi diuji.
Catatan 3:        ICCS ditentukan dengan VCC = 5.0V dan SDA, SCL = 5.0V.
Catatan 4:        Setelah periode ini, pulsa clock pertama dihasilkan.
Catatan 5:       Sebuah perangkat internal harus menyediakan waktu memegang                  setidaknya 300ns untuk sinyal SDA (mengacu pada VIH (MIN) dari SCL sinyal) untuk menjembatani daerah yang tidak ditentukan tepi jatuh SCL.
Catatan 5:       THD maksimum: DAT hanya harus dipenuhi jika perangkat tidak meregang periode LOW.
Catatan 6:       kapasitansi total CB-satu baris bus di pF.

2.6  Aplikasi Jam Digital pada LCD

Pada Artikel Berikut akan dibahas pembuatan Aplikasi jam digital menggunakan bahasa C. Modul-modul yang diperlukan:
  • DST-51
  • LCD Hitachi
  • Modul RTC-1307

Modul DST-51 sebagai central pemroses, LCD Hitachi digunakan untuk menampilkan
data waktu yang berupa jam, menit, detik, hari, tanggal, bulan dan tahun. Modul RTC-
1287 sebagai sumber data waktu yang akan ditampilkan, dan Key-44 sebagai inputan
untuk menset waktu. Sistem yan akan kita buat bisa dilihat pada gambar-1.

Add caption
 










Gambar 2.1.16 : Diagram blok sistem
Diharapkan setelah mempraktikkan aplikasi ini kita mampu:
  •  Memahami cara pengaksesan LCD Hitachi menggunakan bahasa C
  • Memahami proses pembacaan dan penulisan data waktu ke Modul RTC-1307
Kita akan membahas satu-persatu bagian-bagian sistem diatas dengan dimulai dari bagian LCD, kemudian RTC. Akhirnya kita akan menggabungkan semuanya menjadi sistem yang kita harapkan.
A. Bagian LCD
LCD yang kita gunakan adalah Character LCD keluarannya HITACHI. Gambar Skematikuntuk hubungan ke DST-51 bisa dilihat pada gambar2.








Gambar 2.1.17 LCD Hitachi dengan modul DST-51
Kaki no 1 dan 2 (VCC dan GND) adalah kaki power LCD. Keduanya dihubungkan dengan Ground dan VCC sistem. Kaki 3 (VEE) untuk mengatur kontras LCD. Kalau kita ingin kontas LCD bisa diatur, maka kaki ini dihubungkan dengan Potensio, tapi jika tidak perlu pengaturan maka kaki ini diground. Pada modul DST51 kaki VEE dihubungkan dengan ground. Kaki 4 (RS) digunakan untuk memilih register LCD yang akan dibaca/tulis.. Logic “0” pada kaki ini membuat command baca/tulis akan mengakses Register perintah, dan logic “1” command Baca/tulis Akan mengakses LCD Register Data. Pada Modul DST-51 kaki ini dihubungkan ke P2.1/A9. Kaki 5 (R/W) digunakan ?? untuk menegeluarkan sinyal command baca/tu;is. Logic “0” pada kaki ini merupakan command tulis, sedangkan logic “1” merupakan command baca. Pada modul DST-51.
Kaki ini dihubungkan dengan ground sehingga LCD yang terhubung hanya khusus untuk ditulisi saja. Kaki 6 (E) merupakan clock pengaktifan LCD. Pada prose penulisan, setelah data dan command disiapkan, kaki E diberi pulsa high sesaat. Pada DST-51 kaki ini dihubungkan ke CS5. Kaki 7 sampai 14 (D0 .. D7) merupakan kaki data. Data yanga akan dituliskan maupun data hasil pembacaan akan muncul pada kaki ini. Pada DST-51 Kaki-kaki ini dihubungkan ke P0 (Data Bus).

01: void KirimData_LCD(unsigned char x){
02: P0 = x;
03: P2 = P2 | 0xA0;
04: P2 = P2 & 0x0F;
05: }



Baris ke-2 pada potongan program diatas merupakan instruksi untuk mengeluarkan data pada P0 atau data bus (ke kaki data LCD). Data diinputkan ke rutin melalui variable parameter x. Baris 3 dan 4 untuk membangkitkan pulsa high pada Kaki CS5. Untuk mengirimkan perintah maka pertama kaki RS (P2.1) di-“0”-kan, kemudian dikirim 4 nibble atsa lalu disusul 4 nibble bawah. Agar 4 nibble bawah bisa muncul dikaki P0.4 sampai P0.7 maka perlu digeser 4 bit kekiri. Potongan program berikut merupakan rutin untuk mengirimkan data ke register perintah LCD:

01: void KirimData_LCD(unsigned char x){
02: P0 = x;
03: P2 = P2 | 0xA0;
04: P2 = P2 & 0x0F;
05: }

Baris ke-2 pada potongan program diatas merupakan instruksi untuk mengeluarkan data pada P0 atau data bus (ke kaki data LCD). Data diinputkan ke rutin melalui variable parameter x. Baris 3 dan 4 untuk membangkitkan pulsa high pada Kaki CS5. Untuk mengirimkan perintah maka pertama kaki RS (P2.1) di-“0”-kan, kemudian dikirim 4 nibble atsa lalu disusul 4 nibble bawah. Agar 4 nibble bawah bisa muncul dikaki P0.4 sampai P0.7 maka perlu digeser 4 bit kekiri. Potongan program berikut merupakan rutin untuk mengirimkan data ke register perintah LCD:

01: void Kirim_Perintah(unsigned char x){
02: P2 = 0x00;
03: KirimData_LCD(x);
04: x = x << 4;
05: KirimData_LCD(x);
06: Delay_LCD();
07: }


Baris 2 pada potongan program diatas untuk me-“0”-kan kaki RS. Baris 3 untuk mengirimkan 4 nibble atas. Baris 4 untuk menggeser 4 nibble bawah kekiri 4 kali, sehingga menempati nibble atas. Baris 5 untuk mengeluarkan 4 nibble bawah yang telah digeser tadi, dan baris 6 memanggil rutin Delay. Perlunya diberi delay disini adalah untuk menyesuaikan dengan karakteristik LCD. Berikut Rutin Delay_LCD:

01: void Delay_LCD(){
02: unsigned int i;
03: for (i=0;i<300;i++);
04: }

Sedangkan untuk mengirimkan karakter, prosesnya sama dengan prosedur untuk
mengirimkan perintah, hanya kaki RS dibuat “1”. Berikut Rutin untuk mengirimkan karakter:

01: void Kirim_Karakter(unsigned char x){
02: P2 = 0x02;
03: KirimData_LCD(x);
04: x = x << 4;
05: KirimData_LCD(x);
06: Delay_LCD();
07: }

Yang perlu diperhatikan disini adalah bahwa variabel yang dimasukkan ke rutin ini harus sudah dalam bentuk ASCII. Keempat rutin diatas sudah mencukupi untuk pengaksesan LCD. Hanya perlu diperhatikan bahwa sebelum digunakan LCD harus diinisialisasi dulu. Berikut rutin untuk menginisialisasi LCD mode 4 bit berdasarkan datasheet.

void Init_LCD(){
KirimData_LCD(0x30); Delay_LCD();
KirimData_LCD(0x30); Delay_LCD();
KirimData_LCD(0x30); Delay_LCD();
KirimData_LCD(0x20); Delay_LCD();
Kirim_Perintah(0x28); Delay_LCD();
Kirim_Perintah(0x06); Delay_LCD();
Kirim_Perintah(0x0e); Delay_LCD();
Kirim_Perintah(0x01); Delay_LCD();
Kirim_Perintah(0x80); Delay_LCD();
}]


Tidak ada komentar:

Posting Komentar