Hi Darrel,
I do not have any Densitron LCDs, The LCDs I am using (I have 3) have data sheets viewable at
https://secure4.vivid-design.com.au/...ed/QP-5515.pdf
They are Chinese as are most things these days. The supplied documentation is pretty sparse. I only mentioned Densitron as they were the first appnotes I found with any discussion of setup lines and handshake timings.
I have tried all three LCDs and they all behave the same. I have tried cable lengths from 35 to 400 mm - no difference. The LCD will work most times after a direct MCLR reset. That is, power up, wait a few seconds then manually ground MCLR.
I tried the following code which sets up the interface with Enable already high, waits a short while then takes Enable low for each of the data states described in the manual. I think I have these correct. This code clears the 'all black' LCD cells shortly after startup but then leaves the LCD bank - as though it is turned off in software despite my having the LCD ON bits enabled (or so I think). I have tried a range of PAUSE times to no avail.
I also tried setting up the interface with Enable low, strobing Enable high for 100 uSecs then moving on to the next setup state. No joy there either.
'attention
for a = 0 to 1 ' call attention mode several times
portd = %00010011 ' attention request
pause 1
portd = %00000011 'drop ENABLE
pause 5
next a
'set 4 bit mode
portd = %00010010 'set 4 bit mode
pause 5
portd = %00000010 ' drop enable
pause 5
'set function
portd = %00010010 'first nibble
pause 5 'allow setup time
portd = %00000010
pause 5
portd = %00011000 'select 2 lines 5x7 character set
pause 5 'allow setup time
portd= %00001000 'low ENABLE
pause 5
'display OFF
portd = %00010000 'first nibble
pause 5 'allow setup time
portd = %00000000 'low ENABLE
pause 5
portd = %00011000 '
pause 5 'allow setup time
portd = %00001000 'low ENABLE
pause 5
'display ON
portd = %00010000 'first nibble
pause 5 'allow setup time
portd = %00000000 'low ENABLE
pause 5
portd = %00010001 '
pause 5 'allow setup time
portd = %00000001 '
pause 5
'set entry mode
portd = %00010000 'first nibble
pause 5 'allow setup time
portd = %00000000
pause 5
portd = %00010110 '
pause 5 'allow setup time
portd = %00000110
pause 5
'display ON
portd = %00010000 'first nibble
pause 5 'allow setup time
portd = %00000000
pause 5
portd = %00010001 '
pause 5 'allow setup time
portd = %00000001
pause 5
I will try with another brand of LCD I have at home tonight.
Driving me crazy.
Brian
Bookmarks