Source Code File:"lcdbaslib.bas"

'********************************************************
'*                                                      *
'*      LCD 16x2 LIBRARY FOR USE WITH BOOST BASIC       *
'*                                                      *
'*      WRITTEN BY      :  PUNERJOT SINGH MANGAT        *
'*      COUNTRY         :  INDIA                        *
'*      CITY            :  PATIALA                      *
'*      WEB PAGE        :  www.rackeys.com/punerjot     *
'*      EMAIL           :  punerjot@rackeys.com         *
'*      SOURCEBOOST ID  :  c58_4311                     *
'*      RELEASE DATE    :  March 03, 2006               *
'*      REVISED DATE    :  May 24, 2006                 *
'*                                                      *
'********************************************************
'
'
'
' commandas are
' lcd_putch(ASCII value of char to be printed)
' lcd_clear()
' lcd_line1()
' lcd_line2()
' lcd_init()
'
' any 16x2 alphanumeric lcd can be used as far as it uses hd44780 compatible chipset
' 
' Pin connections of pic16f877A to lcd
' PIC PINS              LCD PINS
' --------              --------
'    RB2                   6
'    RB3                   4
'    RB4                   11
'    RB5                   12
'    RB6                   13
'    RB7                   14
'                          1            gnd
'                          2            +5V
'                          3            contrast (typicaly connected to gnd via 2.2 k resistor)
'                          5            +5V
'
'
' RB0 and RB1 of this PORTB are free
'
'


'******************************* delay routines for the LCD **************************
sub wait_us()
DIM wait_count as byte
asm
{
MOVLW   d'45'
MOVWF   _wait_count
LOOP_LCD:
DECFSZ  _wait_count, F
GOTO    LOOP_LCD
return
}
end sub
'******************************* delay routines for the LCD ends **************************




sub lcd_strobe()
portb.2 = 1
portb.2 = 0
end sub



sub lcd_byte(c as byte)
portb = (portb & 0x0f)
portb = (portb | (c & 0xf0))
call lcd_strobe()
portb = (portb & 0x0f)
portb = (portb | (c << 4))
call lcd_strobe()
call wait_us()
end sub



'************************ Procedure to output char to lcd *****************************
sub lcd_putch(c as byte)
portb.3 = 1               'pin 3 of prt b as high
call lcd_byte(c)
end sub
'************************ Procedure to output char to lcd ends ************************



'************************ Procedure to give commands to lcd *****************************
sub lcd_putcmd(c as byte)
portb.3 = 0
call lcd_byte(c)
end sub
'************************ Procedure to give commands to lcd ends ************************



'************************ LCD Initializing routines *****************************
sub lcd_init()
trisb = ( 00000000b )       'pin(0) and pin(1) of this PORTB are free so it can be used for RS232
portb.3 = 0
call delay_ms(50)
portb = (portb & 0x0f)
portb = (portb | 0x30)
call lcd_strobe()
call delay_ms(5)
call lcd_strobe()
call wait_us()
call lcd_strobe()
call delay_ms(5)
portb = (portb & 0x0f)
portb = (portb | 0x20)
call lcd_strobe()
call wait_us()
call lcd_putcmd(0x28)
call lcd_putcmd(0x08)
call lcd_putcmd(0x0C)
call lcd_putcmd(0x06)
end sub
'************************ LCD Initializing routines ends ************************



'************************ Procedure to clear the lcd *****************************
sub lcd_clear()
call lcd_putcmd(0x01)
call delay_ms(2)
end sub
'************************ Procedure to clear the lcd ends ************************



'******************** Procedure to goto the begning of line1 of the lcd *****************
sub lcd_line1()
call lcd_putcmd(0x02)          'start of first line
end sub
'******************** Procedure to goto the begning of line1 of the lcd ends ************



'******************** Procedure to goto the begning of line2 of the lcd *****************
sub lcd_line2()
call lcd_putcmd(0x80+40)       'start of second line
end sub
'******************** Procedure to goto the begning of line2 of the lcd ends ************

http://www.sourceboost.com

Copyright © 2006 SourceBoost Technologies