#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);
}