//Project: LCD HD44780 Lesson, LCD 16X2 Example
//Programmer: Shahrulnizam Mat Rejab
//PIC: PIC16F877A, PIC16F887, PIC18F4550
//Crystal Frequency: 20MHz
//Compiler: HI-TECH C for PIC10/12/16 V9.83, PIC18 V9.65
//Last Modified: 31 August 2012
//Website: http://shahrulnizam.com
#define HD44780
#define HD44780_ADVANCE
#define ROW 2
#define COLUMN 16
#include "LibraryHardware.h"
#include "LibraryUniversalDisplay.h"
void pic_init(void);
void horse1(void);
void horse2(void);
main()
{char a;
int i,j;
pic_init(); //initialize PIC
lcd_init(); //initialize LCD
for(;;){
lcd_goto(0,0); //select first line
lcd_string("hello, world! "); //display string
i=0;
while(i<=5000){
lcd_goto(0,1); //select second line
lcd_number(i++,10,4);}
delay(1000);
lcd_goto(0,0); //select first line
lcd_string(" Scrolling Text "); //display string
lcd_goto(0,1);
lcd_speed(250);
lcd_scroll("Hai, nama saya Shahrul Nizam dari Malaysia");
for(i=0;i<COLUMN;i++) lcd_scroll(" ");
lcd_scroll("This is example scrolling text on 16X2 Character LCD");
for(i=0;i<COLUMN;i++) lcd_scroll(" ");
lcd_goto(0,0); //select first line
lcd_string("Custom Character"); //display string
delay(1000);
lcd_goto(0,0); //select first line
lcd_string(" "); //display string
for(i=0;i<COLUMN;i++){
horse1();
lcd_goto(i,0);
for(a=0;a<=3;a++) lcd_write(a);
lcd_goto(i,1);
for(a=4;a<=7;a++) lcd_write(a);
delay(500);
horse2();
lcd_goto(i,0);
for(a=0;a<=3;a++) lcd_write(a);
lcd_goto(i,1);
for(a=4;a<=7;a++) lcd_write(a);
delay(500);
lcd_goto(0,0);
for(j=0;j<COLUMN;j++) lcd_write(' ');
lcd_goto(0,1);
for(j=0;j<COLUMN;j++) lcd_write(' ');}
lcd_goto(0,0); //select first line
lcd_string(" PIC is fun "); //display string
lcd_goto(0,1); //select second line
lcd_string("shahrulnizam.com"); //display string
delay(1000);
lcd_goto(0,0);
lcd_string(" ");
lcd_goto(0,1);
lcd_string(" ");
}}
void pic_init(void)
{
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISE=0b00000000;
set_digital();
PORTA=0b00010000;
PORTB=0b00000000;
PORTC=0b00000000;
PORTD=0b00000000;
PORTE=0b00000000;
}
void horse1(void){
LCD_RS=0;
lcd_write(0x40);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00111);
lcd_write(0b01111);
lcd_write(0b11110);
LCD_RS=0;
lcd_write(0x48);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b01110);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
LCD_RS=0;
lcd_write(0x50);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
LCD_RS=0;
lcd_write(0x58);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00010);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11011);
lcd_write(0b10011);
lcd_write(0b10000);
LCD_RS=0;
lcd_write(0x60);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x68);
LCD_RS=1;
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11011);
lcd_write(0b10010);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b10001);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x70);
LCD_RS=1;
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b00001);
lcd_write(0b00000);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x78);
LCD_RS=1;
lcd_write(0b11000);
lcd_write(0b11100);
lcd_write(0b00100);
lcd_write(0b01000);
lcd_write(0b10000);
lcd_write(0b00000);
lcd_write(0b10000);
lcd_write(0b00000);
}
void horse2(void){
LCD_RS=0;
lcd_write(0x40);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00111);
lcd_write(0b01111);
lcd_write(0b01110);
lcd_write(0b11100);
lcd_write(0b11000);
LCD_RS=0;
lcd_write(0x48);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b01111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
LCD_RS=0;
lcd_write(0x50);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00011);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
LCD_RS=0;
lcd_write(0x58);
LCD_RS=1;
lcd_write(0b00000);
lcd_write(0b00001);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11111);
lcd_write(0b11011);
lcd_write(0b10011);
lcd_write(0b10000);
LCD_RS=0;
lcd_write(0x60);
LCD_RS=1;
lcd_write(0b10011);
lcd_write(0b10011);
lcd_write(0b00010);
lcd_write(0b00010);
lcd_write(0b00100);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x68);
LCD_RS=1;
lcd_write(0b11111);
lcd_write(0b00111);
lcd_write(0b01110);
lcd_write(0b00110);
lcd_write(0b00001);
lcd_write(0b00000);
lcd_write(0b00000);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x70);
LCD_RS=1;
lcd_write(0b01111);
lcd_write(0b00111);
lcd_write(0b10011);
lcd_write(0b01111);
lcd_write(0b00000);
lcd_write(0b10000);
lcd_write(0b00000);
lcd_write(0b00000);
LCD_RS=0;
lcd_write(0x78);
LCD_RS=1;
lcd_write(0b10000);
lcd_write(0b11000);
lcd_write(0b01100);
lcd_write(0b00100);
lcd_write(0b00010);
lcd_write(0b00001);
lcd_write(0b00000);
lcd_write(0b00000);
}