PDA

View Full Version : Lcdout question.



Steve Matson
- 28th June 2007, 12:44
I recently purchased the PBP (Pic basic pro from Micro engineering labs) and I made the circuit on page 96. It's a 16f84 with an LCD display wired to port A. I also included a 'confedence led' to blink to let me know the chip was basicly functioning. The lcd display just printed gibbrish. Does anybody have any tips on this circuit?
Thanks.

skimask
- 28th June 2007, 12:50
I recently purchased the PBP (Pic basic pro from Micro engineering labs) and I made the circuit on page 96. It's a 16f84 with an LCD display wired to port A. I also included a 'confedence led' to blink to let me know the chip was basicly functioning. The lcd display just printed gibbrish. Does anybody have any tips on this circuit?
Thanks.

If you're getting garbage, you're halfway there. If you're seeing just a row of blocks, you're more than halfway there.
What does your program look like? Post it.
Is there a 'startup' pause for the LCD? About a second usually works well, sometimes more, sometimes less.

mister_e
- 29th June 2007, 00:21
assuming you're using a 4MHZ crystal, it shouldn't be that bad, Higher than 4MHz... you'll need to use the according DEFINE and configuration fuses.

Assuming you have a PAUSE 500-2000 at the top of your program, you could still tweak it a little bit and change the value of those DEFINES bellow

DEFINE LCD_COMMANDUS 2000 ' Command delay time in us
DEFINE LCD_DATAUS 50 ' Data delay time in us

HTH

Steve Matson
- 29th June 2007, 17:15
It's working. I was making two mistakes. I had the contrast pin three go to a voltage divider. and I was unpluging the lcd and pluging it back in. After I hard wired the contrast pin to gnd, it worked great.
Here is the code I used. You will notice there are some commented stuff that isnt useful. But this works great with the schematic in the book. Thanks for all of your help.
Steve Matson
***************************************

' PICBASIC PRO program to display "Hello World" on LCD

' Define LOADER_USED to allow use of the boot loader.
' This will not affect normal program operation.
Define LOADER_USED 1

' Define LCD registers and bits

Define LCD_DREG PORTA 'Define LCD_DREG PORTA 'Define LCD_DREG PORTD
Define LCD_DBIT 0 'Define LCD_DBIT 0 'Define LCD_DBIT 4

Define LCD_RSREG PORTA 'Define LCD_RSREG PORTA 'Define LCD_RSREG PORTE
Define LCD_RSBIT 4 'Define LCD_RSBIT 4 'Define LCD_RSBIT 0

Define LCD_EREG PORTB 'Define LCD_EREG PORTB 'Define LCD_EREG PORTE
Define LCD_EBIT 3 'Define LCD_EBIT 3 'Define LCD_EBIT 1


' ADCON1 = 7 ' Set PORTA and PORTE to digital
Low PORTA.2 ' LCD R/W line low (W) 'WAS AN E
Pause 100 ' Wait for LCD to start up


loop: Lcdout $fe, 1 ' Clear screen
Pause 500 ' Wait .5 second

High PORTB.4


Lcdout "Hello" ' Display "Hello"
Pause 500 ' Wait .5 second


low PORTB.4

Lcdout $fe, $c0, "World" ' Move to line 2 and display "World"
Pause 500 ' Wait .5 second

Goto loop ' Do it forever

End

skimask
- 30th June 2007, 05:15
Your initial Pause 100 could stand to be Pause 1000 or sometimes 2000.
The 100 might work with this particular brand of LCD, but generally, most LCDs like a second or two for startup. Might save you some hassle in the future.