Show all your code... I get the feeling you don't have a pin set right, or maybe you've got your timing set too fast...
Show all your code... I get the feeling you don't have a pin set right, or maybe you've got your timing set too fast...
skimask,
this is the entire code that reproduces the problem. I even deleted all of the defines...everything but this. Let me see what I need to do to show my configuration settings and I'll post them too.
LCDONOFF VAR PORTB.7
High LCDONOFF
i VAR WORD
For i=0 TO 10000
LCDOut $fe, $80, DEC5 i
Pause 500
Next i
Then try this:
EDIT: Just looked at your config settings. I've always found it helpful to have the powerup timer on, no matter what PIC I've used.Code:DEFINE LCDCOMMAND_US 5000 DEFINE LCDDATA_US 255 i var word : trisb.7 = 0 : portb.7 = 1 pause 1000 : lcdout $fe , 1 : pause 1000 for i = 0 to 10000 : lcdout $fe , $80 , DEC5 i : pause 500 :next i END
And even though you aren't using it, turn off the watchdog timer.
Last edited by skimask; - 15th May 2008 at 00:00.
Still doing the same thing to me. I copied the exact code here and pasted it into an empty program. Tried with the old config settings, and the new one's suggested here. Very strange. Appreciate all of the ideas, so far, I just got a weird one here. Isn't there a file somehwre that has settings in it for different PIC's? Maybe I need to change something in that?
Oh, here are the defines that I've been using in the full program:
DEFINE LCD_DREG PORTA 'Define PIC port used for LCD Data lines
DEFINE LCD_DBIT 0 'Define first pin of portb connected to LCD DB4POTSETTTT
DEFINE LCD_RSREG PORTA 'Define PIC port used for RS line of LCD
DEFINE LCD_RSBIT 4 'Define Portb pin used for RS connection
DEFINE LCD_EREG PORTB 'Define PIC port used for E line of LCD
DEFINE LCD_EBIT 3 'Define PortB pin used for E connection
DEFINE LCD_BITS 4 'Define the 4 bit communication mode to LCD
DEFINE LCD_LINES 2 'Define using a 2 line LCDRefTime
DEFINE LCD_COMMANDUS 2500 'Define delay time between sending LCD commands
DEFINE LCD_DATAUS 1200 'Define delay time between data sent.
Gary
For one thing, the PBP manual doesn't say it specifically, but LCDDATA_US is a byte value. 1200 would actually be 176.
Have you got a pullup on A.4?
Try this then:
Code:DEFINE LCD_DREG PORTA 'Define PIC port used for LCD Data lines DEFINE LCD_DBIT 0 'Define first pin of portb connected to LCD DB4POTSETTTT DEFINE LCD_RSREG PORTA 'Define PIC port used for RS line of LCD DEFINE LCD_RSBIT 4 'Define Portb pin used for RS connection DEFINE LCD_EREG PORTB 'Define PIC port used for E line of LCD DEFINE LCD_EBIT 3 'Define PortB pin used for E connection DEFINE LCD_BITS 4 'Define the 4 bit communication mode to LCD DEFINE LCD_LINES 2 'Define using a 2 line LCDRefTime DEFINE LCD_COMMANDUS 5000 'Define delay time between sending LCD commands DEFINE LCD_DATAUS 200 'Define delay time between data sent. i var word : trisb.7 = 0 : portb.7 = 1 pause 1000 : lcdout $fe , 1 : pause 1000 for i = "a" to "z" : lcdout $fe,$80,i,i+1,i+2,i+3,i+4,i+5,i+6,i+7 pause 500 :next i END
SOLVED!
It's a long story, and I'm a little embarrassed to admit it. I had issues every once in a while with strange characters displaying on the LCD. I sent one of my boards to the LCD company a few months ago and they found that I was running it slightly below the minimum voltage in the spec sheet. I had used the recommended resistor value to power, but also had something else running from the same pin which pulled the voltage something like .3 volts below spec. Replacing that resistor fixed the strange character issue. Well, when I started adding this counter to my code the other day, I grabbed one of my older boards and started testing and was having this "zero" problem.
I just ran your code above and when "p" was the ending character, the LCD went blank. So i made a program to display a bunch of words, with some ending in "p"....went blank on every "p" ending word. In the process of testing, I broke a lead wire to the battery off for the board, and when I went out to solder in back on a few minutes ago, I noticed that this board hadn't had the resistor replaced, so I replaced it and THAT WAS THE PROBLEM!
So, to make a long story short, the voltage for the LCd was too low.
I sure thank you guys for your time and troubles! OK, now let the beatings begin....
Gary
Last edited by g-hoot; - 15th May 2008 at 01:27.
Maybe I have missed it, but I do not see where you have turned off the comparators.
http://www.picbasic.co.uk/forum/showthread.php?t=561
Dave
Always wear safety glasses while programming.
Bookmarks