WhyWhy
Member level 4
- Joined
- Mar 18, 2013
- Messages
- 68
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,286
- Activity points
- 1,779
Hi Guys,
I Trying to compile this program but it got error..
Main.h
lcd.h
I Trying to compile this program but it got error..
HTML:
Warning [359] C:\Users\WhyWhy\Desktop\Interfacing LCD with PIC Microcontroller - Hi Tech C\8 Bit\code.c; 30.48 illegal conversion between pointer types
Executing: "C:\Program Files (x86)\HI-TECH Software\PICC\9.70\bin\picc.exe" "-olcd pic.cof" "-mlcd pic.map" --summary=default --output=default code.p1 --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
(1273) Omniscient Code Generation not available in Lite mode (warning)
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.70
Copyright (C) 2009 Microchip Technology Inc.
Warning [1355] C:\Users\WhyWhy\Desktop\Interfacing LCD with PIC Microcontroller - Hi Tech C\8 Bit\code.c; 33. inline delay argument too large
Warning [1355] C:\Users\WhyWhy\Desktop\Interfacing LCD with PIC Microcontroller - Hi Tech C\8 Bit\code.c; 39. inline delay argument too large
Warning [1355] C:\Users\WhyWhy\Desktop\Interfacing LCD with PIC Microcontroller - Hi Tech C\8 Bit\code.c; 46. inline delay argument too large
Error [800] lcd pic.as; 998. undefined symbol "__delay"
Main.h
Code:
#include<htc.h>
#include<pic.h>
#define RS RB6
#define EN RB7
#define D0 RC0
#define D1 RC1
#define D2 RC2
#define D3 RC3
#define D4 RC4
#define D5 RC5
#define D6 RC6
#define D7 RC7
#define _XTAL_FREQ 8000000
#include "lcd.h"
void main()
{
int i;
TRISB = 0x00;
TRISC = 0x00;
Lcd4_Init();
while(1)
{
Lcd4_Set_Cursor(1,1);
Lcd4_Write_String("LCD Hello World");
for(i=0;i<15;i++)
{
__delay_ms(1000);
Lcd4_Shift_Left();
}
for(i=0;i<15;i++)
{
__delay_ms(1000);
Lcd4_Shift_Right();
}
Lcd4_Clear();
Lcd4_Set_Cursor(2,1);
Lcd4_Write_Char('e');
Lcd4_Write_Char('S');
__delay_ms(2000);
}
}
lcd.h
Code:
//LCD Functions
#include <htc.h>
#ifndef D0
#define D0 RB0
#define D1 RB1
#define D2 RB2
#define D3 RB3
#endif
//LCD 8 Bit Interfacing Functions
void Lcd8_Port(char a)
{
if(a & 1)
D0 = 1;
else
D0 = 0;
if(a & 2)
D1 = 1;
else
D1 = 0;
if(a & 4)
D2 = 1;
else
D2 = 0;
if(a & 8)
D3 = 1;
else
D3 = 0;
if(a & 16)
D4 = 1;
else
D4 = 0;
if(a & 32)
D5 = 1;
else
D5 = 0;
if(a & 64)
D6 = 1;
else
D6 = 0;
if(a & 128)
D7 = 1;
else
D7 = 0;
}
void Lcd8_Cmd(char a)
{
RS = 0; // => RS = 0
Lcd8_Port(a); //Data transfer
EN = 1; // => E = 1
__delay_ms(5);
EN = 0; // => E = 0
}
Lcd8_Clear()
{
Lcd8_Cmd(1);
}
void Lcd8_Set_Cursor(char a, char b)
{
if(a == 1)
Lcd8_Cmd(0x80 + b);
else if(a == 2)
Lcd8_Cmd(0xC0 + b);
}
void Lcd8_Init()
{
Lcd8_Port(0x00);
RS = 0;
__delay_ms(25);
///////////// Reset process from datasheet /////////
Lcd8_Cmd(0x30);
__delay_ms(5);
Lcd8_Cmd(0x30);
__delay_ms(15);
Lcd8_Cmd(0x30);
/////////////////////////////////////////////////////
Lcd8_Cmd(0x38); //function set
Lcd8_Cmd(0x0C); //display on,cursor off,blink off
Lcd8_Cmd(0x01); //clear display
Lcd8_Cmd(0x06); //entry mode, set increment
}
void Lcd8_Write_Char(char a)
{
RS = 1; // => RS = 1
Lcd8_Port(a); //Data transfer
EN = 1; // => E = 1
__delay_ms(4);
EN = 0; // => E = 04
}
void Lcd8_Write_String(char *a)
{
int i;
for(i=0;a[i]!='\0';i++)
Lcd8_Write_Char(a[i]);
}
void Lcd8_Shift_Right()
{
Lcd8_Cmd(0x1C);
}
void Lcd8_Shift_Left()
{
Lcd8_Cmd(0x18);
}
//End LCD 8 Bit Interfacing Functions
//LCD 4 Bit Interfacing Functions
void Lcd4_Port(char a)
{
if(a & 1)
D4 = 1;
else
D4 = 0;
if(a & 2)
D5 = 1;
else
D5 = 0;
if(a & 4)
D6 = 1;
else
D6 = 0;
if(a & 8)
D7 = 1;
else
D7 = 0;
}
void Lcd4_Cmd(char a)
{
RS = 0; // => RS = 0
Lcd4_Port(a);
EN = 1; // => E = 1
__delay_ms(4);
EN = 0; // => E = 0
}
Lcd4_Clear()
{
Lcd4_Cmd(0);
Lcd4_Cmd(1);
}
void Lcd4_Set_Cursor(char a, char b)
{
char temp,z,y;
if(a == 1)
{
temp = 0x80 + b;
z = temp>>4;
y = (0x80+b) & 0x0F;
Lcd4_Cmd(z);
Lcd4_Cmd(y);
}
else if(a == 2)
{
temp = 0xC0 + b;
z = temp>>4;
y = (0xC0+b) & 0x0F;
Lcd4_Cmd(z);
Lcd4_Cmd(y);
}
}
void Lcd4_Init()
{
Lcd4_Port(0x00);
__delay_ms(20);
Lcd4_Cmd(0x03);
__delay_ms(5);
Lcd4_Cmd(0x03);
__delay_ms(11);
Lcd4_Cmd(0x03);
/////////////////////////////////////////////////////
Lcd4_Cmd(0x02);
Lcd4_Cmd(0x02);
Lcd4_Cmd(0x08);
Lcd4_Cmd(0x00);
Lcd4_Cmd(0x0C);
Lcd4_Cmd(0x00);
Lcd4_Cmd(0x06);
}
void Lcd4_Write_Char(char a)
{
char temp,y;
temp = a&0x0F;
y = a&0xF0;
RS = 1; // => RS = 1
Lcd4_Port(y>>4); //Data transfer
EN = 1;
__delay_ms(5);
EN = 0;
Lcd4_Port(temp);
EN = 1;
__delay_ms(5);
EN = 0;
}
void Lcd4_Write_String(char *a)
{
int i;
for(i=0;a[i]!='\0';i++)
Lcd4_Write_Char(a[i]);
}
void Lcd4_Shift_Right()
{
Lcd4_Cmd(0x01);
Lcd4_Cmd(0x0C);
}
void Lcd4_Shift_Left()
{
Lcd4_Cmd(0x01);
Lcd4_Cmd(0x08);
}
//End LCD 4 Bit Interfacing Functions