LCD (Liquid Crystal Display) MIKROKONTROLLER 1 SESI 7 LCD (Liquid Crystal Display)
LCD Interface Fungsi: Keuntungan: Menampilkan hasil suatu proses Memastikan input data Menampilkan pesan Monitoring suatu proses Keuntungan: Mampu menampilkan karakter standar ASCII Tidak butuh proses refresh display
Jenis LCD
LCD Memory DDRAM DDRAM mengatur tempat menyimpan karakter Alamat awal karakter 00H dan alamat akhir 39H. Alamat awal di baris kedua dimulai dari 40H. Jika Anda ingin meletakkan suatu karakter pada baris ke-2 kolom pertama, maka harus diset pada alamat 40H. Meskipun LCD 2x16 atau 2x24 atau 2x40, maka penulisan programnya sama saja.
LCD Memory CGRAM merupakan memori untuk menggambarkan pola sebuah karakter
LCD Pin
LCD Pin PIN Nama Fungsi 1 VSS Ground 2 VDD/VCC +5 volt 3 VEE/V0 Contrast Adjust 4 RS (Register Select) 0=instruction input 1= data input 5 R/W 0=tulis ke LCD 1=baca dari LCD 6 E Enable signal 7-14 Data 0 – Data 7 Pin Data (DB 0 – DB7) 15 VB+ Back Light (+5) 16 VB- Back Light (GND)
Mode Data 8-bit Mode 4-bit Mode Menggunakan seluruh pin data (D0 s/d D7) End of Data ditandai dengan Enable 1x 4-bit Mode Menggunakan sebagian dari pin data (D4 s/d D7) EOD menggunakan 2 x Enable Nama lain : nibble
Inisialisasi
Command Set D : Display on (1)/off (0) C : Cursor on(1)/off (0) Data Keterangan Clear Display 0x01 Membersihkan layar Cursor Home 0b0000001x Kursor ke alamat 0x00 Display D : Display on (1)/off (0) C : Cursor on(1)/off (0) B : Cursor blink on(1)/off (0)
Command Set I/D : Increment Decrement Cursor bit S : Shift Display Data Keterangan Entry I/D : Increment Decrement Cursor bit S : Shift Display Shift/Cursor
Coding void LCD_STROBE() { LCD_EN_HI; LCD_EN_LO; }
Coding void lcd_write(unsigned char datalcd) { if(datalcd & 0x80) {LCD_D7_HI;} else {LCD_D7_LO;} if(datalcd & 0x40) {LCD_D6_HI;} else {LCD_D6_LO;} if(datalcd & 0x20) {LCD_D5_HI;} else {LCD_D5_LO;} if(datalcd & 0x10) {LCD_D4_HI;} else {LCD_D4_LO;} if(datalcd & 0x08) {LCD_D3_HI;} else {LCD_D3_LO;} if(datalcd & 0x04) {LCD_D2_HI;} else {LCD_D2_LO;} if(datalcd & 0x02) {LCD_D1_HI;} else {LCD_D1_LO;} if(datalcd & 0x01) {LCD_D0_HI;} else {LCD_D0_LO;} LCD_STROBE(); _delay_ms(5); }
Coding void lcd_putc(unsigned char c) { LCD_RS_HI; lcd_write(c); } void lcd_puts(const char *s) register char c; while ( (c = *s++) ) { lcd_putc(c);
Coding void lcd_clrscr() { LCD_RS_LO; lcd_write(0x01); _delay_ms(2); } void lcd_goto(unsigned char poslcd) lcd_write(0x80 + poslcd);