LCD (Liquid Crystal Display) adalah satu alat untuk display pelbagai character. Antaranya LCD yang mempunyai dot matrix controller HD44780. HD44780 boleh beroperasi pada 5X8 atau 5X10 dot matrix. LCD ini mempunyai beberapa saiz mengikut bilangan character. Antaranya 16X2 atau 20X4 character. 16X2 character bermakna LCD itu mempunyai 16 character pada line dengan 2 lines. LCD ini mempunyai 16 pins.
Di bawah adalah skematik untuk LCD HD44780.
Transistor di pasang pada sambungan backlight adalah supaya boleh ‘ON’ dan ‘OFF’ LCD backlight. Lihat document di bawah untuk instruction LCD.
Berikut adalah videonya.
PIC Source Code
/*
Programmer: Shahrulnizam Mat Rejab
PIC (Crystal Frequency):
PIC16F877A (20MHz), PIC16F887 (20MHz), PIC16F1939 (Internal 32MHz)
PIC18F4520 (10MHz), PIC18F4550 (10MHz), PIC18F46K22 (Internal 16MHz)
Compiler: HI-TECH C for PIC10/12/16 V9.83, PIC18 V9.80
Last Modified: 14 November 2013
Website: http://shahrulnizam.com
*/
#if defined (_16F877A) || (_16F887)
#define A0 PORTAbits.RA0
#define D0 PORTAbits.RA1
#elif defined (_16F1939) || (_18F4520) || (_18F4550) || (_18F46K22)
#define A0 LATAbits.LATA0
#define D0 LATAbits.LATA1
#endif
#define ADC
#define HD44780
#include "LibraryHardware.h"
#include "LibraryPeripheral.h"
#include "LibraryUniversalDisplay.h"
void setup()
{
initialize();
TRISA=0b00000011;
TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISE=0b00000000;
BUZZER=1;
adc_init(0);
lcd_init();
lcd_goto(0,0);
lcd_string(" TILT SENSOR EX ");
}
void loop()
{
int value;
value=(int)(4.888*adc_read(0));
BUZZER=D0;
lcd_goto(0,1);
lcd_string(" D0:");
lcd_number(D0,DEC,1);
lcd_string(" A0:");
lcd_number(value/1000,DEC,1);
lcd_string(".");
lcd_number(value%1000,DEC,3);
lcd_string("V ");
delay(100);
}
bro nak tnya..capacitor tu pki jnis apa ek?
man, schematic tu mana ada capacitor.
sory bro..transistor bkn capacitor…hehe
sebarang transistor NPN, yg aku selalu guna 2N2222.
tudia..terus jem kepala aku baca entry ni. baca tapi tak faham.hehe…
Ini utk budak elektrik je. Tiru schematic, tiru program, tgk gambar sudah. haha
salam.bro kalo nk msukkan input analog voltage mcm termocuple cmne bro?
Hamka:
salam. untuk masukkan input analog voltage, hamka perlu gune port analog yg tersedia ade dlm PIC tu. utk PIC16F877a mcm yang shahrul guna, port analog terletak dekat port A. make sure voltage output yang dihasilkan boleh dibaca oleh PIC tersebut. semua ni boleh baca dalam datasheet.
salam. shahrul kalo aku nk msukkn 2 o/p dr adc ke 16×2 lcd display, kt bhgn programming ko tnjk kt ats yg ak kne msukkn 2 value adc tu?
Zaffan, utk membaca ADC dan display value, boleh rujuk http://shahrulnizam.com/pic-lesson-adc-module
Shahrul,
Bagaimana kalau saya nak tulis program guna BasicPro. apakah perbezaan source code yang ditulis menggunakan HI-TECH ANSI C dengan BasicPro?
Sy x pernah guna BasicPro. Boleh guna program Hi-Tech sebagai rujukan, mungkin berbeza include file dan port declaration.
nk tye.leh wt program utk pic x?bantu sye..hehe
Shahrul,
Saya dah cuba on off LED guna PIC Basic Pro.OK.
Soalan sy, kalau sy gunakan MPLab, programming guna C dan Compiler HI-TECH ANSI C ni, compile instruction guna Build kan? step ni akan convert C language tu kepada hex code kan?
Boleh tak saya gunakan PICKit 2 Programmer untuk loadkan hex code ke PIC? bukan in circuit programmer tu?
TQ
cza, ok boleh. Hi-Tech compile file .c kpd .hex. Kemudian gunakan file .hex untuk download ke PIC.
salam bro, nak tanya skit bro, camne nak bagi perkataan tu bergerak dari kiri ke kanan bro? Ble bagi tunjuk ajar?
Cuba gunakan shift function, x tahulah mcm mana jadi. Klu x, tulis satu per satu.
nk tnye….klu….kte gne pic16f873a….n nk display bcaan dr 4 sensor kt LCD…time nk bt programing kte just ambik value dr sensor or kte kne declair rmus dlm program 2?
karen, mesti kene masukkan rumus untuk tunjukkan nilai sebenar sensor dan untuk calibrate nilainya.
Shahrul,
sy dh try buat program ni..testing dlm mplab ok.
tp bile buat simulation x jadi.sy dh buat u untuk 8bit n ok..tp untuk 4 bit ni x jadi..ada solution x..?…
car-tok, untuk simulation saya x tahu.
bolehkah contrast n backlight dsambungkan dekat ground? akan ada effect thadap display x?
lynx, backlight boleh sambung terus ke ground. Contrast sepatutnya tidak boleh sambung ke ground, tulisannya tidak dapat dipaparkan tetapi kadang2 ada LCD yg boleh di ground kan contrast nya.
pin 15 dan pin 16 pada LCD mmemang kena buat connection mcm dalam gmbr rajah 2 ke? kalau pin 15 dan pin 16 xbuat apa2 connection blh x? ada effect apa2 x pd LCD 2? sbb ada datasheet hanya tunjuk connection/ penerangan untuk pin 1-14 shj
Ja, pin 15 dan pin 16 adalah LED backlight saja. X pasang pun, cuma lampu nya tidak menyala, LCD masih berfungsi.
Sir,
Where I can get htc.h header file ?
Linspire, the htc.h is already exist with the Hi-Tech installer. No need to add or create this file.
Well, I’m confused with SK40c from cytron website,which provided video demo.
I’m confused with pic.h and p18f4520.h
Which type of compiler should I actually use ?
I’m new to this microcontroller.
That initialize using different compiler. That is C18 compiler.
I have the PIC18 using Hi-Tech in Lesson PIC18F4550.
So, you saying I should set the compiler to Hi-Tech Universal Toolsuite instead Microchip C18 Toolsuite ?
I’m involved these due to project.
Yes, for this code you should set as Hi-Tech compiler, that is I put comment in the program.
I have build error :
No valid installed HI-TECH compiler drivers
I’m using MPLABIDE v8.66.
Any idea how to solve it ?
See this Lesson MPLab.
I’m still dealing same problem same error, Sir.
I have follow your below link how to setup for MPLABIDE.
Salaams
Please can you make available the delay.c and delay.h file that is used with the lcd project.
Jazakallah,
WSLM
ws, no. Do your own.
Salam,
Kalau gunakan LCD yg mengunakan driver KS0066 jadi tak?
ws, Hairul. KS0066 compatible dgn HD44780.
salam sharulnizam, nak tanya sket. saya da try cari pic16f887 dalam library isis proteus 7.1 tapi tiada. saya menggantikannya dengan menggunakan pic16f877a. boleh tak coding dari pic16f887 berfungsi seperti biasa dalam pic berbeza ?
ws, simulate dalam Proteus saya x tahu jadi ke x. Dalam actual, x boleh guna, kena edit2 skit.
salam saudara shahrul….sy menggunakan lcd JHD162A(16×2) dr sk40c kit from cytron….sy ingin transfer data guna 4 bit mcm yg saudara buat…tp sy x dapat display dgn betul menggunakan code saudara…yg kluar dr lcd adalah char yg papetah….boleh tolong sy x??
ws, taufiq. Program memang tak display dgn board Cytron kerana berbeza pin. Kena tukarkan pin sama ada tukarkan dalam program ataupun tukar schematic pada hardware.
tmkasih saudara,
sy da tukar da pin kat hardware spt dlm code saudara…cuma pin yg ade kat lcd cy gune ni 14 saje…so jd led light tu sy x gune la(sy x connect ape2 ke kaki RD3)…tp tu x jd masalahkan…skrg ni sy masih lg x dapat nak display string…setahu sy 4 bit ni kite kene hantar 2 kali command data ke lcd kan…? ade idea x??
Setting LCD semua dah ada dalam function lcd_init. Sending 4bit dah ada dalam function lcd_write. Kalau x jadi, x tahu lah. Ada masalah lain.
salam…untuk function delay spt __delay_ms(x),
boleh x klau sy buat variable x itu adalah rumus matematik…cthnya period of pulse(in milisec)….krn sy cdg selepas kira pediod tu sy hendak delay sbyk 3/4 drpd period yg telah dikira….cthnya __delay_ms(3*x/4)…ape pendapat saudara @ ase idea lain yg boleh digunakan…
ws, saya x pernah try. Boleh rasanya.
Hello,
Can you published the LibraryHD44780.h file ?
Thanks a lot for your work
Justinien, the library file here.
askm. Tuan, bagaimana jika saya gunakan displaytech 162A sebagai output lcd, perlukah driver? mana nak cari driver? atau hanya letak #include
#include “lcd.h” dalam programming?
ws, pd. Sebarang character LCD 16X2 tak perlukan driver, terus program dan include kan file “LibraryHD44780.h”
hai…tq reply jwp. saya ada cuba coding saudara ni >>project character lcd & header LibraryHD44780.h tetapi
bila compile guna hi-tech c ada error iaitu :
1. undefined ANSEL & ANSELH dan juga
2. undefine symbol __delay_ms
kenapa ya? saya check semua follow contoh saja.tq
pd, untuk masalah no. 1, setkan PIC kepada PIC16F887 bukannya PIC16F877A. Untuk masalah no. 2, mungkin tertinggal #include htc.h . Sepatutnya kalau copy program tu 100%, patut tiada masalah.
saudara betul, saya guna pic16f877, saudara ada sample coding pic ni untuk interface dgn lcd? htc tu wajib? saya tak letak…tak da error pun, ia untuk apa? tqvm sebab banyak bantu.
Baca lg sekali, PIC16F887 bukan PIC16F877. Kat atas ni dah sample coding interface dgn LCD. htc tu penting, x de error x semestinya jadi. Compile file kosong pun x de error gak.
tq saudara. saya perlukan coding untuk pic16f877 (lama) ..pic16f887 yg saudara buat kat atas tu saya xda. jika saudara ada coding, mohon upload ya. tqvm. banyak info saya dpt dari web ni. tq
Saya x de coding PIC lama, cari di website lain.
I did as directed, and written in your code. But still no LCD display, I’ve inserted into the file header. Thanks to explain LCD header file.
This is file :http://www.mediafire.com/?n4awhdq9pa413pk
cont get any header file .
pl give us that link
where its
#include “LibraryHardware.h”
#include “LibraryUniversalDisplay.h”
?
sahu, the library file need to pay.
terima kasih bnyk2,,perkongsian ilmu ni..moga menjadi amal kebajikan tuan..
sy bnyk belajar dri blog tuan..
assalamualaikum.
Hi Shahrul, if your source code success after compiled it means how do u link it with lcd above to display your required character in lcd???
rahman, connect circuit regarding to the schematic above.
Salam.
you have library to lcd display model JHD629_204A .
this display is 20×4.
this not compatible with hd 44780.
please send to me the library.
thank you so much
w/salam, change your LCD model.