View previous topic :: View next topic |
Author |
Message |
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
New CCS user with LCD problem |
Posted: Mon Oct 17, 2005 11:59 am |
|
|
Hello,
I'm trying to write to an LCD using a 16F877A but am having no luck. The LCD does work with a 16F84 using PIcBasic Pro. I've used the simple examples from the forum to try to troubleshoot my problem. Using the following code, the LED lights up in the first instance but doesn't for the second so I would guess that the program doesn't come out of lcd_init(). I've made no changes to lcd.c. Does anybody have any ideas?
Thanks....Harry
Code: | #include <16F877A.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#include <lcd.c>
void main()
{
output_high(PIN_C0);
delay_ms(500);
output_low(PIN_C0);
delay_ms(500);
lcd_init();
output_high(PIN_C0);
delay_ms(500);
output_low(PIN_C0);
delay_ms(500);
printf(lcd_putc,"\fHello");
while(1);
} |
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Oct 17, 2005 12:04 pm |
|
|
What board are you using ? Post the exact name. |
|
|
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Mon Oct 17, 2005 12:10 pm |
|
|
Most likely your LCD is not connected the way the LCD.C driver file is written for. The init function makes a call that waits for the LCD to respond. If it doesn't, then it will hang. |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 12:22 pm |
|
|
PCM Programmer: I've just got the chip and LCD breadboarded...no board, if that's what you mean.
Mark: I've connected the 4 bit data bus from the LCD (last 4 pins) to pins D4 to D7 (pins 27-30) on the 16F877A.
Thanks....Harry |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Oct 17, 2005 12:26 pm |
|
|
What about the other three pins, and power & ground, and contrast ?
Quote: | // As defined in the following structure the pin connection is as follows:
// D0 enable
// D1 rs
// D2 rw
// D4 D4
// D5 D5
// D6 D6
// D7 D7 |
|
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 12:53 pm |
|
|
I think I've got it wired up properly because as I said I have it working perfectly on a 16F84 with PicBasic Pro. What I've done on the 16F877A is:
register select to D1
Enable to D0
I've tried R/W on both pin D2 and ground.
pin 3 on the LCD goes to a 10K pot.
pin 1 to Vdd (gnd)
pin 2 to Vss (5 volts)
Harry |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Oct 17, 2005 1:05 pm |
|
|
Quote: | I've tried R/W on both pin D2 and ground. |
Don't connect R/W to ground. With the CCS driver it must go to the PIC.
Quote: | as I said I have it working perfectly on a 16F84 with PicBasic Pro. | Because you're using a different PIC and new breadboard, the
PBP experience doesn't really apply, or it applies only partially.
I suggest that you get the new breadboard working with PBP.
Then try it with CCS. |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 1:42 pm |
|
|
I don't have any short term access to PBP...that's why I just bought the CCS compiler and programmer. A friend has PBP but he lives about 30 miles from me. I did a lot of soul searching before I settled on a C compiler...I hope I made the right decision.
I guess what you're saying is that if I've done all the things I've said I did it should work. Did I get that right?
I've checked out the code in the init section because I'm quite sure it's hanging up in there but nothing jumps out at me, mainly because I really don't have a good feel for the language yet. Is there anything I could do with a cheap 10MHz scope that might tell me what's happening?
Thanks....Harry |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Oct 17, 2005 1:58 pm |
|
|
Check the contrast voltage on Pin 3 of the LCD. Set it for 0.4 volt.
Carefully check all LCD connections. Make sure you understand
the pin numbering scheme on the LCD. |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 2:04 pm |
|
|
[quote="PCM programmer"] Quote: | Don't connect R/W to ground. With the CCS driver it must go to the PIC. |
I just checked on the R/W pin and it was still connected to ground. When I moved it over to Pin D2 the program ran right through to the end but still nothing showed up on the LCD. I guess that's progress.
Any other ideas?
Thanks....Harry |
|
|
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Mon Oct 17, 2005 2:17 pm |
|
|
[quote="Harry Mueller"] PCM programmer wrote: | Quote: | Don't connect R/W to ground. With the CCS driver it must go to the PIC. |
I just checked on the R/W pin and it was still connected to ground. When I moved it over to Pin D2 the program ran right through to the end but still nothing showed up on the LCD. I guess that's progress.
Any other ideas?
Thanks....Harry |
You mean that you saw the LED blink twice? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Mon Oct 17, 2005 2:17 pm |
|
|
Check the contrast voltage on pin 3. Set it to 0.4 volts. |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 2:18 pm |
|
|
PCM programmer wrote: | Check the contrast voltage on Pin 3 of the LCD. Set it for 0.4 volt.
Carefully check all LCD connections. Make sure you understand
the pin numbering scheme on the LCD. |
I've done what you suggested...contrast voltage was at .7 volts....still nothing. I'm going to get away from this for a bit and come back in an hour or so and start over with a fresh mind....this one's gotten a little stale!
Thanks for the help....Harry |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 2:22 pm |
|
|
[quote="Mark"] Quote: |
You mean that you saw the LED blink twice? |
Yes!! Then I moved the first group of 4 LED statements behind the print statement and the LED blinked twice again but nothing showed up on the LCD.
Harry |
|
|
Harry Mueller
Joined: 17 Oct 2005 Posts: 116
|
|
Posted: Mon Oct 17, 2005 4:35 pm |
|
|
Well, my little bit of respite didn't help and to make matters worse my wife needs my help in the kitchen. But before I go I've got to say that the LCD is wired up properly....I think.
LCD pin 1......gnd
LCD pin 2......5V
LCD pin 3......pot @ .4V
LCD pin 4......D1 (pin 20 on 877)
LCD pin 5......D2 (pin 21)
LCD pin 6......D0 (pin 19)
LCD pins 7-10....empty
LCD pin 11....D4 (pin 27)
LCD pin 12....D5 (pin 28)
LCD pin 13....D6 (pin 29)
LCD pin 14....D7 (pin 30)
The uC was brand new a couple of hours ago, but who knows.
Guess I'm stuck unless any kind soul out there has some insight into what I can try next.
Thanks....Harry |
|
|
|