Sabtu, 08 Juni 2013

Menampilkan data dari mikrokontroler ke LCD 2x16


Adapun keterangan kaki LCD 2x16 yaitu sebagai berikut:




Untuk hubungan ke mikrokontroler, dalam hal ini kita menggunakan mikrokontroler Atmega8535, kita bisa menggunakan semua PORT baik PORT A, PORTB, PORTC maupun PORTD. Sekarang kita akan menghubungkan LCD ini ke PORTC dari mikrokontroler, berikut ini gambar koneksi antara mikro ke LCD 2x16

Disini kita menggunakan koneksi data 4 bit antara LCD dan mikro. Setelah selesai, membuat rangkaian diatas selanjutnya code program. kita terlebih dahulu membuat file header-nya. berikut file headernya. simpan dengan nama file lcd.h

/* ================================================================

 nama file = lcd.h
 pembuat = Bayu Sasongko, teknik elektro 2008
 deskripsi = file header LCD 4 bit

 file header ini digunakan untuk menampilkan karakter
 ke dalam lcd. copykan file lcd.c dan lcd.h ke dalam
 folder tempat proyek anda berada. untuk konektor LCD
 ke mikrokontroler ikuti aturan berikut ini:

  
  PIN LCD   PIN MIKRO

R/W  (5)   - Ground
VEE   (3)   -  Vcc
   
  RS   (4)     - 0
  EN  (6)  - 1  
  D4  (11) - 4  
  D5 (12) - 5  
  D6  (13) - 6 
  D7 (14) - 7  



  pin R/W hubungkan saja ke ground, karena hanya menggunakan mode
  write saja.
================================================================
*/

#define LCD_PORT PORTC // PORT yang digunakan untuk data
#define LCD_DDR DDRC

// bit used (low(D3-D0) or high nibble(D7-D4)
#define HIGH_NIBBLE // uncomment this if low nibble pin used

#define LCD_RS_PORT PORTC // control RS PORT pin

#define LCD_RS_DDR DDRC // control RS DDR pin

#define RS 0 // RS Pin


#define LCD_E_PORT PORTC // control E PORT pin

#define LCD_E_DDR DDRC // control E DDR pin

#define E 1 // E Pin



void lcd_init (void); // inisialisasi LCD

void goto_xy (uint8_t row,uint8_t column); // koordinat tempat karakter

void clrscr (void); // membersihkan display



Setelah itu kita juga perlu membuat file lcd.c, berikut ini codenya: 

#include <avr/io.h>
#include <stdio.h>
#include "lcd.h"

// used for printf operation
static int lcd_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(lcd_putchar, NULL,
                                             _FDEV_SETUP_WRITE);
// delay
void delay_us(uint8_t us);

void clock_e (void)
{
LCD_E_PORT |= (1<<E);
delay_us(5);
LCD_E_PORT &= ~(1<<E);
delay_us(3);
}

void write_command(uint8_t command)
{
// clear RS pin
LCD_RS_PORT &= ~(1<<RS);
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|(command&0xf0);
clock_e();
LCD_PORT = (LCD_PORT&0x0f)|((command&0x0f)<<4);
clock_e();
#else
LCD_PORT = (LCD_PORT&0xf0)|((command&0xf0)>>4);
clock_e();
LCD_PORT = (LCD_PORT&0xf0)|(command&0x0f);
clock_e();
#endif
uint8_t i;
for(i=0;i<20;i++)
delay_us(100);
}

void lcd_init (void)
{
uint8_t i;
// delay 15 ms for LCD to power up
for(i=0;i<150;i++)
delay_us(100);
// set all data and control port as output
#ifdef HIGH_NIBBLE
LCD_DDR |= 0xf0;
#else
LCD_DDR |= 0x0f;
#endif
LCD_RS_DDR |= (1<<RS);
LCD_E_DDR |= (1<<E);
// clear RS pin
LCD_RS_PORT &= ~(1<<RS);

// 4 bit mode write squence
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|0x30;
#else
LCD_PORT = (LCD_PORT&0xf0)|0x03;
#endif
clock_e();
// 4.1 ms delay
for(i=0;i<41;i++)
delay_us(100);
clock_e();
// 100 delay
delay_us(100);
clock_e();
// 40 us delay
delay_us(40);
// 4 bit mode setting
// 4 bit 2 line 5 X 7 dot matrix
write_command(0x28);
// increment cursor after write byte
write_command(0x06);
// display on cursor off
write_command(0x0C);
clrscr ();
// set function for printf
stdout = &mystdout;
}

void goto_xy(uint8_t row,uint8_t column)
{
if (row == 1)
write_command (0x80 + column - 1);
else
write_command (0xC0 + column - 1);
}

void clrscr (void)
{
write_command(0x01);
}

static int lcd_putchar(char c, FILE *stream)
{
// set RS pin
LCD_RS_PORT |= (1<<RS);
#ifdef HIGH_NIBBLE
LCD_PORT = (LCD_PORT&0x0f)|(c&0xf0);
clock_e();
LCD_PORT = (LCD_PORT&0x0f)|((c&0x0f)<<4);
clock_e();
#else
LCD_PORT = (LCD_PORT&0xf0)|((c&0xf0)>>4);
clock_e();
LCD_PORT = (LCD_PORT&0xf0)|(c&0x0f);
clock_e();
#endif
// 2 ms delay
uint8_t i;
for(i=0;i<20;i++)
delay_us(100);
return 0;
}

void delay_us(uint8_t us)
{
TCNT0 = 257-us;
TCCR0 |= (1<<CS01);
loop_until_bit_is_set(TIFR,TOV0);
TIFR |= (1<<TOV0);
TCCR0 &= ~(1<<CS01);
}


atau silahkan download file lcd.h dan file lcd.c disini . kalau anda ingin merubah PORT nya misalnya mau ke PORTA ganti saja file lcd.h menjadi PORTA. Setelah file lcd.h dan lcd.c sudah jadi maka selanjutnya kita perlu me-load file tadi ke program avr studio


Selanjutnya di program utama kita perlu meng-include kan file header lcd.h kita ladi. kurang lebih begini tampilan program penampil teks ke LCD

0 komentar:

Posting Komentar

get this widget here

LinkWithin

Related Posts Plugin for WordPress, Blogger...
Total Posts: 49
Total Comments: 0
get this
get this widget here
\
leo candra Puisi
by: leo coolz


SAHABAT

    Sahabat
    Walau kini kita tak slalu bersama
    Aku ingin kita selalu dekat

      Sahabat
      Walau kini kita jauh
      Aku ingin kita saling menghubungi

        Sahabat
        Kau tau betapa berharganya dirimu?
        Kau lebih berharga dari sebongkah emas

    Sahabat
    Kau tau kenapa?
    Karena mencari seorang sahabat seperti kau bukanlah hal yang gampang

      Sahabat
      Kini ku ucapkan “Aku akan selalu menjadi sahabatmu”
      Kini kau ucap juga di sana

By: leo candra situmorang


Read more...
Free Music Online
Free Music Online

free music at divine-music.info
eakNewLine]> Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuatmemasang-burung-twitter.html#ixzz2WGSrkig3
Sumber : http://rahman-ciblog.blogspot.com/2013/05/cara-membuat-komentar-admin-berbeda.html#ixzz2WGTOrIEB
Sumber: http://leo-coolz.blogspot.com/2013/05/cara-membuat-dan-mengubah-halaman-blog.html#ixzz2WFvvNdnz
Catatan: Sumber : http://leo-coolz.blogspot.com/2013/04/cara-membuatmemasang-kotak-like-fb-dan.html#ixzz2WGXaRQWU

Sumber : http://rahman-ciblog.blogspot.com/2013/04/cara-membuat-judul-blog-bergerak-dan.html#ixzz2WGUTweln

Make your own

English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified
Loading TOC. Please wait....


Loading TOC. Please wait....


Sumber : http://rahman-ciblog.blogspot.com/2013/06/cara-memasang-google-translate-di-blog.html#ixzz2WGRpBtI2

apa yang membuat anda terkesan setelah melihat http://leo-coolz.blogspot.com tinggalkan komentar anda !!!!!!

Leo Coolz Gembel © 2008 Template by:
SkinCorner
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
k
t
.
n
a
h
k
i
t
m
I
.
w
w
w
z
l
o
o
c
a
r
d
n
a
c
o
e
l