Kali ini kita akan membahas tentang LCD matrix
Umumnya LCD matrix yg beredar berbasis chipset HD44780 buatan hitachi
Lcd berbasis HD44780 mempunyai 2 mode interface 4 bit ato 8 bit
kali ini kita akan membahas yg 4bit karena kita pake attiny yg pin nya dikit
menulis ke LCD gampang-gampang susah, ada tricknya tersendiri asal sesuai datasheet
tapi kali ini kita akan bikin paling gampang, dengan memanfaatkan library yg paling banyak dipake buatan si PETER FLEURY linknya disini
sedangkan librarinya dapat download disini
pertama siapkan skematik berikut ini
dari gambar, potensio/trimpot fungsinya untuk mengatur kontras LCD, jika tidak perlu diatur, bisa diganti dengan R 100 ohm
selanjutnya buat project di AVR studio, jangan lupa mengekstrak librarynya si fleury yaitu file lcd.h dan lcd.c
karena file lcd.h nya default, kita bahas bagian2 yg dapat disesuaikan sesuai desain yang kamu bikin. Edit file lcd.h dengan notepad
#define XTAL 1000000 sesuaikan nilai dengan frek clock, default attiny2313 adalah 1Mhz #define LCD_LINES 2 jumlah line LCD #define LCD_DISP_LENGTH 16 jumlah karakter per line #define LCD_IO_MODE 1 mode 0=8bit, 1=4 bit selanjutnya adalah definisi pin yang dipake, berikut ini hasil edit yang sesuai skematik diatas #define LCD_PORT PORTB /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */ #define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */ #define LCD_DATA0_PIN 0 /**< pin for 4bit data bit 0 */ #define LCD_DATA1_PIN 1 /**< pin for 4bit data bit 1 */ #define LCD_DATA2_PIN 2 /**< pin for 4bit data bit 2 */ #define LCD_DATA3_PIN 3 /**< pin for 4bit data bit 3 */ #define LCD_RS_PORT PORTD /**< port for RS line */ #define LCD_RS_PIN 4 /**< pin for RS line */ #define LCD_RW_PORT PORTD /**< port for RW line */ #define LCD_RW_PIN 5 /**< pin for RW line */ #define LCD_E_PORT PORTD /**< port for Enable line */ #define LCD_E_PIN 6 /**< pin for Enable line */ |
selanjutnya jangan lupa untuk menambahkan source lcd.c , seperti pada gambar berikut:
selanjutnya adalah routine/function yg dipake oleh library peter fleury
void lcd_init ( uint8_t dispAttr ) inisialisasi display Parameter yang dipake untuk dispAttr : LCD_DISP_OFF display off LCD_DISP_ON display on, cursor off LCD_DISP_ON_CURSOR display on, cursor on LCD_DISP_ON_CURSOR_BLINK display on, cursor on flashing void lcd_clrscr ( void ) Clear display LCD void lcd_home ( void ) Set cursor ke posisi home void lcd_gotoxy ( uint8_t x, uint8_t y ) Set cursor ke posisi tertentu Parameters: x posisi horizontal , 0 paling kiri y posisi vertikal, 0 baris paling atas void lcd_putc ( char c ) menampilkan sebuah karakter di LCD void lcd_puts ( const char * s ) menampilkan String di LCD void lcd_puts_p ( const char * progmem_s ) Display string jika memakai Progmem void lcd_command ( uint8_t cmd ) Jika mengirim command/perintah setting |
sekarang kita lanjut ke sciptnya yukkk...
kali ini kita akan menulis sesuatu ke LCD :
#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include "lcd.h"
int main(void)
{
DDRD |= (1<<PD4)|(1<<PD5)|(1<<PD6); //Port RS, R/W, En
DDRB |= (1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3); //DATA port 4 bit
lcd_init(LCD_DISP_ON); //inisialisasi
lcd_clrscr(); //bersihkan layar
lcd_puts("=== Test LCD ===\n"); //tulis baris 1 dan geser ke bawah
lcd_puts("1234567890@#$%?+"); //tulis baris 2
while(1)
{
}
return 0;
}
sedangkan yang lebih keren..kita bikin teks LCD nya geser...geserr seperti gambar + video