Selasa, 13 September 2011

Belajar Menulis di LCD Matrix


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

Quote:

#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





0 komentar:

Poskan Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Hosting