Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Wait 15mS... Send function set ... Wait @10ms send function set again... Wait @10ms send function set again
yes i have seen this but why we send again and again many times?
but when i write this 'A' or 'H' the LCD show something else
Maybe you connected the data wires wrong?
#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define DATA PORTB
#define EN RC4
#define RS RC6
#define RW RC5
#define N 20
#define M 10
main(){
TRISB=0X00;
TRISC=0X00;
__delay_ms(N);
RS=0;
RW=0;
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001100;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001100;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001100;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001100;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00110000;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B10000000;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B01100000;
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00000000;
__delay_ms(M);
EN=0;
__delay_ms(M);
while(1){
RS=1;
RW=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B10100001;
__delay_ms(M);
EN=0;
__delay_ms(M);
RS=1;
RW=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001010;
__delay_ms(M);
EN=0;
__delay_ms(M);
}
}
DATA=0B10100001;
DATA = 'A'; // send character A
#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define DATA PORTB
#define EN RC4
#define RS RC6
#define RW RC5
#define N 20
#define M 10
main(){
TRISB=0X00;
TRISC=0X00;
__delay_ms(N);
RS=0;
RW=0;
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00111000; // 0x38 Init ( we only need the 0x30 )
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00111000; // 0x38 Init ( we only need the 0x30 )
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00111000; // 0x38 8bit 2 lines
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00000110; // Cursor move increase, no display shift
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00001100; // Display on, cursor off, not blinking
__delay_ms(M);
EN=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B00000001; // Clear screen curor to home
__delay_ms(M);
EN=0;
__delay_ms(M);
while(1){
RS=1;
RW=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B01000001; // Print A
__delay_ms(M);
EN=0;
__delay_ms(M);
RS=1;
RW=0;
__delay_ms(M);
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA=0B01000010; // Print B
__delay_ms(M);
EN=0;
__delay_ms(M);
}
}
#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define DATA PORTB
#define EN RC4
#define RS RC6
#define RW RC5
#define N 20
#define M 10
void LCDcmd(char x), LCDdata(char x);
main(){
TRISB=0X00;
TRISC=0X00;
LCDcmd(0x38); // init
LCDcmd(0x38); // init
LCDcmd(0x38); // Function set
LCDcmd(0x06); // Cursor move increase, no display shift
LCDcmd(0x0C); // Display on, cursor off, not blinking
LCDcmd(0x01); // Clear display. goto pos 1
while(1){
LCDdata('A'); // Print A
LCDdata('B'); // Print B
}
}
void LCDcmd(char x)
{
__delay_ms(N);
RS=0;
RW=0;
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA = x; // Command data
__delay_ms(M);
EN=0;
__delay_ms(M);
}
void LCDdata(char x)
{
RS=1;
RW=0;
__delay_ms(M);
EN=1;
__delay_ms(M);
DATA = x; // Print data
__delay_ms(M);
EN=0;
__delay_ms(M);
}