#include<pic.h>
#include<htc.h>
#include<stdio.h>
#define __PIC16F1518_H
#define _XTAL_FREQ 16000000
#define RS LATB2
#define EN LATB4
void cmd(unsigned char c);
__CONFIG( FOSC_INTOSC & WDTE_OFF & PWRTE_ON & CP_OFF & BOREN_ON & LVP_OFF);
void msdelay(unsigned int time)
{
unsigned int i=0,j=0;
for(i=0;i<=time;i++)
for(j=0;j<=3000;j++);
}
/* function of simple delay*/
void delay(unsigned int i)
{
while(i)
i--;
}
/*to blink cursor*/
void lcd_cursorblink(void)
{
cmd(0x0D);
}
/*to off cursorblinking*/
void lcd_cursorOff(void)
{
cmd(0x0C);
}
void lcd_init()
{
cmd(0x03); //lcd reset cmds
msdelay(1);
cmd(0x02); //lcd reset cmds
msdelay(1);
cmd(0x28); //2 lines 5x7 matrix
msdelay(1);
cmd(0x0C); //display on,cursor off,blink off
msdelay(1);
cmd(0x01); //clear display
msdelay(1);
cmd(0x06); //entry mode, set increment
msdelay(1);
}
void dat (unsigned char data1)
{
data1=~data1;
unsigned char l,h;
h = data1 & 0xF0;
l = data1 << 4;
delay(4);
RS=0;
delay(4);
PORTC = 0XF0;
delay(4);
PORTC = h; // Write Upper nibble of data
delay(4);
EN=0;
delay(4000);
EN=1;
delay(4);
PORTC = 0XF0; // Make Data pins zero
delay(4);
PORTC = l; // Write Lower nibble of data
delay(4);
EN=0;
delay(4000);
EN=1;
}
void cmd(unsigned char command)
{
command =~ command;
unsigned char l,h;
delay(4);
RS=1;
delay(4);
h = command&0xF0;
l=command<<4;
PORTC=0xf0;
delay(4);
PORTC=h;
delay(4);
EN=0;
delay(4000);
EN=1;
delay(4);
PORTC=0xf0;
delay(4);
PORTC=l;
delay(4);
EN=0;
delay(4000);
EN=1;
}
void string(unsigned char *p)
{
while(*p!='\0')
{
//delay(20000);
dat(*p);
p++;
}
}
int main()
{
TRISB = 0x00;
TRISC = 0x00;
lcd_init();
string ("EMBEDDED_LAB");
while(1)
{
LATB6 = 1;
delay(4);
LATB6 = 0;
delay(4);
}
}
No comments:
Post a Comment