Showing posts with label LCD dan Projek Berkaitan. Show all posts
Showing posts with label LCD dan Projek Berkaitan. Show all posts

Tuesday, January 4, 2011

.:Projek PIC-LCD HD44780 siri 2:.

Ada beberapa email dan pertanyaan lisan saya terima bertanyakan bagaimana caranya untuk menggerakkan character dari kiri ke kanan atau kanan ke kiri. Saya sendiri pun tidak tahu lagi masa tu, so saya terbaca dalam data sheet. satu kaedah yang boleh dilakukan adalah dengan menggunakan shift function, pada pin LCD DB2. Saya telah cuba buat, namun tidak berhasil, mungkin cara atau pun kaedah yang saya gunakan tidak betul, jadi saya telah menggunakkan cara yang lain, iaitu dengan cara memanipulasi address character yang dimasukkan. LCd display JHD162A ini boleh memaparkan maksimum 16 character dalam satu-satu masa. Jadi, apa yang saya buat adalah dengan memanipulasi address, sebagai contoh perkataan SAYA; address pada 0x40 terisi huruf S, address 0x41 terisi huruf A, address 0x42 akan terisi huruf Y dan address 0x43 akan terisi huruf A, kaedahnya huruf A akan overwrite ataupun berpindah ke address 0x40, huruf Y akan overwrite huruf A, dan begitulah seterusnya. Secara mudah untuk menerangkannya ibarat ada 5 kotak, kotak kelima ada sebiji guli, guli itu di pindahkan ke kotak ke 4, kemudian ke 3, ke kotak 2 dan seterusnya. (Harap-harap faham)susah nak terangkan melalui penulisan ni). Hasilnya anda boleh lihat video dibawah :


Modifikasi pada programming perlu dibuat untuk menghasilkan character yang bergerak. Programming projek sebelum ini boleh lihat post saya bertajuk .:Projek PIC-LCD HD44780:.

Modifikasi yang perlu dibuat adalah dengan menambahkan satu lagi funsi/function,  function definition adalah seperti berikut :


  void lcd_puts(const char * s)
  {
  LCD_RS = 1;// write characters
  int i=0;
  while(*s && i <16)
  {
  lcd_write(*s++);
  i++;
  }
  }

Modifikasi pada function main juga perlu di ubah seperti dibawah :



  void main(void)
  {
  const char s[] =" http://robot-geek.blogspot.com;PENYELIA PROJEK : EN. HISYAMSANI; ";
  const char t[] ="PELAJAR:AZHAR;QAYYUM,NAZRI,AFIQ,REBITA & SUNTI";
  //lcd_init(); //initialise the LCD
  pic_init(); //initialize PIC
  lcd_init(); //initialize LCD
  char *b;
  char *c;
  int son=1;
  b=&s;
  c=&t;
  for(;;)
  {
  lcd_goto(0x40);// select first line
  lcd_puts(b);
  lcd_puts(c);
  lcd_goto(0x00);// Select second line
  lcd_puts("<--:ROBO-ROI:-->");
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  __delay_ms(39);
  if(*b)
  {
*b++; //scrolling to next char
  }
  else {
if(son)
   {
b=&s;
c=&t;
son=0;
   }
else
   {
b=&t;
c=&s;
son=1;
   }


}
  lcd_clear();
  }
  }

Disini ingin saya ingatkan, delay adalah untuk mempercepat atau melambatkan pergerakan character. Semakin banyak delay ditambah semakin perlahan pergerakannya. Selamat mencuba. Display kurang jelas, sebab bateri dah nak habis. Heh....heh..



Friday, December 31, 2010

.:Projek PIC-LCD HD44780:.

Liquid Crystal Display (LCD) adalah sebuah alat untuk memaparkan sebarang imej atau pun character (huruf,nombor, simbol dan sebagainya). Projek yang saya hasilkan ini adalah untuk memaparkan perkataan pada paparan LCD HD44780 (16x2). Anda boleh lihat hasilnya pada gambar dibawah :

Hasil Projek

Kepada pelajar-pelajar yang berminat untuk menghasilkan projek ini, saya senaraikan komponen asas yang diperlukan :

Dibawah saya sertakan litar bagi projek ini. Juga sila rujuk post saya bertajuk .:Litar Teras PIC16F877A:. dan .:Litar Alternatif Pengatur Voltan:.


Di sini juga saya sertakan programming untuk PIC16F877A. 

Programming LCD Display (16x2) with PIC16F877A

Selamat mencuba. Sekiranya perlukan sebarang bantuan ataupun pertanyaan, sila berjumpa saya atau email saya hsani2u@gmail.com