Code:
' PicBasic program to demonstrate operation of an LCD in 4-bit mode
'
' LCD should be connected as follows:
' LCD PIC
' DB4 PortA.0
' DB5 PortA.1
' DB6 PortA.2
' DB7 PortA.3
' RS PortA.4 (add 4.7K pullup resistor to 5 volts)
' E PortB.3
' RW Ground
' Vdd 5 volts
' Vss Ground
' Vo 20K potentiometer (or ground)
' DB0-3 No connect
@ DEVICE PIC16F88, HS_OSC 'HS oscillator
@ DEVICE PIC16F88, WDT_ON 'Watchdog Time
' (http://www.hobbyprojects.com/pic_tut...utorial13.html)
@ DEVICE PIC16F88, PWRT_ON '15.5 Power-Up Timer: Provides a fixed delay of
' 72 ms (nominal) on power-up only. It is designed to keep the
' part in RESET while the power supply stabilizes.
@ DEVICE PIC16F88, BOD_ON '15.7 Brown-Out Detect
@ DEVICE PIC16F88, MCLR_ON 'Master Clear Options set to Internal. RA5 unavail
@ DEVICE PIC16F88, LVP_OFF '15.18 Low Voltage Programming via ICSP.
@ DEVICE PIC16F88, CPD_OFF '15.1 bit 8 - Data EE Memory Code Protection bit
@ DEVICE PIC16F88, WRT_OFF '15.1 bit 10-9. FLASH Program Memory Write protection off
@ DEVICE PIC16F88, DEBUG_OFF '15.1 bit 11. DEBUG: In-Circuit Debugger Mode bit
' In-Circuit Debugger disabled, RB6 and RB7 are general
' purpose I/O pins
@ DEVICE PIC16F88, CCPMX_OFF '15.1 bit 12. CCPMX: CCP1 Pin Selection bit
' 1 = CCP1 function on RB0
' 0 = CCP1 function on RB3
@ DEVICE PIC16F88, PROTECT_OFF 'Code protection off
'Command Operation
'$FE, 1 Clear display
'$FE, 2 Return home (beginning of first line)
'$FE, $0C Cursor off
'$FE, $0E Underline cursor on
'$FE, $0F Blinking cursor on
'$FE, $10 Move cursor left one position
'$FE, $14 Move cursor right one position
'$FE, $80 Move cursor to position 0 (+offset to precisly posn)
'$FE, $C0 Move cursor to beginning of second line (+offset to precisly posn)
'$FE, $94 Move cursor to beginning of third line
'$FE, $D4 Move cursor to beginning of fourth line
define OSC 20
OSCCON=%01110000 ' pg 41. Setting bit 1-0: 00 = Oscillator mode defined by FOSC<2:0>
TRISB=%00000000 ' all portb to output
TRISA=%00000000 ' all porta to output
ANSEL=%00000000 ' set all analog pins to digital
<font color=red> CMCON=7 ' turn off comparators
ADCON1 = 7 ' or ADCON1 = %00000111 'Disable A/D converter
</font color=red>
pinLED var portb.4 ' blink and stuff to know we're alive
I var word
high pinLED
Pause 1500 ' Wait for LCD to startup
loop:
low pinLED
Lcdout $FE, 1, "Russ was here ..."
pause 1000
lcdout $FE, $C0, " or was he ..."
pause 4000 ' Give that some time to sink in.
lcdout $FE,1 ' Clear screen
lcdout $FE, $C0, "Second line ..."
pause 500
lcdout $FE, 2, "First line ..."
pause 500
lcdout $FE, 1 ' Clear the screen again - we love to clear screens.
pause 500
lcdout $FE, $80, "Dec:"
lcdout $FE, $C0, "Hex:"
for I = 0 to 199
lcdout $FE, $80+5, dec3 I
lcdout $FE, $C0+5, hex3 I
toggle pinLED
pause 200
next I
pause 1500 ' Alone done - take a quick breather.
Goto loop ' Start all over again.
Anyway try this and see if it helps.
Bookmarks