PAUSE 2000
LCDOUT "Hello World"
PAUSE 2000
LCDOUT "Hello World"
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
TOM
"3. VO (Variable) Operating voltage for LCD -> I have this pinned to 5V "
Try VO = GND
Here is the startup sequence for 4-bits for this LCD display..
I am going to try the POT on the VO line to see if that helps, but it has been at Vss and Vdd and nothing shows there.
I am not sure how to comply with the attached startup sequence however... Where do I send the bit? When?
... Hmmm Now, I've got a POT on the VO which allows me to vary the cells from white to black. Still no data.
Same goes for both of the LDCs I have here, so it must be something with the PIC's treatment of the PortA?
I moved to an 18F2525..
OK, I have been going crazy on the 4-line LCD.. the book makes it look so easy.. I am trying to send it an initialization routine (which apparently I need to do?) This is a Crystalfontz unit which should be really nice... I attached the spec sheet in case an expert out there might be able to take a look. I am sure others will want to use these displays also.
http://www.crystalfontz.com/products...2004LYYBJP.pdf
In any event, I've taken all the advice here, and from the Mfg says I am seeing just what I should before it is initialized.. However I still get nothing on any LCD.. I *MUST* be doing something really stupid.
Here is the initialization routine I sent (which did nothing) - from page 17 of the LDC data sheet...
define LCD_DREG PORTA ' Set data pin of LCD to
define LCD_DBIT 0 ' PORTA.0-PORTA.3
define LCD_RSREG PORTA ' Set RS bit of LCD to
define LCD_RSBIT 5 ' PORTA.5
define LCD_EREG PORTA ' Set E bit of LCD to
define LCD_EBIT 4 ' PORTA.4
DEFINE LCD_LINES 4 ' 4 Lines LCD
define LCD_COMMANDUS 2000 ' Command delay time in uSec
DEFINE LCD_DATAUS 100 ' Data delay time in uSec
pause 20
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
High PortA.1 ' db5
high PortA.0 ' db4
pause 20
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
High PortA.1 ' db5
Low PortA.0 ' db4
pause 10
low PortA.5 ' RS
' RW is held low on board
high PortA.3 ' db7 - says "N" ??
high PortA.2 ' db6 - says "F"??
Low PortA.1 ' db5 - says "*" ??
Low PortA.0 ' db4 - says "*" ??
pause 2
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
Low PortA.1 ' db5
Low PortA.0 ' db4
pause 1
low PortA.5 ' RS
' RW is held low on board
High PortA.3 ' db7
low PortA.2 ' db6
low PortA.1 ' db5
Low PortA.0 ' db4
pause 1
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
low PortA.1 ' db5
Low PortA.0 ' db4
pause 1
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
Low PortA.1 ' db5
High PortA.0 ' db4
pause 1
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
High PortA.1 ' db5 - says "I/D" ??
High PortA.0 ' db4 - says "S" ??
pause 1
low PortA.5 ' RS
' RW is held low on board
low PortA.3 ' db7
low PortA.2 ' db6
low PortA.1 ' db5
Low PortA.0 ' db4
pause 1
for x = 1 to 100
lcdout $fe, 1
lcdout $fe, 2
LCDOUT "Hellow World"
pause 2000
next x
Tom,
according to the datasheet the LCD has en embedded HD44780 (or compatible) controller.
with this controller you don't need to "manually" initialize the LCD.
The first LCDOUT command issued does all the initialisation for you.
assuming you have a 4k7 pull-up on RA4
the following should work on an 16F876(A)
Code:DEFINE OSC 20 ' <-- set your clock speed here ! ADCON1=7 ' All Digital DEFINE LCD_DREG PORTA ' Set data pin of LCD to DEFINE LCD_DBIT 0 ' PORTA.0-PORTA.3 DEFINE LCD_RSREG PORTA ' Set RS bit of LCD to DEFINE LCD_RSBIT 5 ' PORTA.5 DEFINE LCD_EREG PORTA ' Set E bit of LCD to DEFINE LCD_EBIT 4 ' PORTA.4 DEFINE LCD_LINES 4 ' 4 Lines LCD PAUSE 1000 ' wait for LCD controller to start up Loop: LCDOUT $FE,1 ' clear display and move cursor home PAUSE 500 ' wait for "CLEAR" command to complete LCDOUT "HELLO WORLD" ' print "HELLO WORLD" at current cursor position PAUSE 1000 GOTO LOOP END
If there is still no success there is most likely something wrong with your LCD and/or your PIC.
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
Thanks very much!
I am going to assume the LCDs from Crystalfontz don't work then. I ran the program and got nothing. Everything else on the PIC works fine. I have tried both of the LCDs I got from them, and the most I can see is line 1 and line 3 lit up with squares if I vary Vo.
Does anyone have any good sources of 4x20 LCD displays?
Thanks,
Tom
Bookmarks