CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

LCD Driver

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
doggitz



Joined: 04 Sep 2011
Posts: 9

View user's profile Send private message

LCD Driver
PostPosted: Sun Sep 04, 2011 9:42 am     Reply with quote

A newbie needs some help. I am using an 18F4620 with a PCWH compiler and a PICKIT2 programmer. I am very new to C but have a reasonable amount of experience with BASIC. I have been using the WIZARD in the CCS IDE and find it very helpful for getting started. After compiling my program, I use the PICKIT2 software to import the hex file and program the chip. I have tried a few led flashing programs and it seems to work perfectly.

I can't get the lcd.c to work. My pin connections are:
Enable D5
RS D4
Data4 D0
Data5 D1
Data6 D2
Data7 D3

I am using the wizard to set the pins and when I look at the #define statements they are set correctly. I am using a 10MHz crystals and have set this, also in the wizard. As part of the program, I am flashing an LED, so I know my chip programming steps are working. I have used my BASIC compiler to test the board and the lcd, and it works properly.

Here is my program
Code:

#include <lcdwiz3.h>

#define ENABLE_PIN D5
#define RS_PIN D4
#define Data4 D0
#define Data5 D1
#define Data6 D2
#define Data7 D3
#include <lcd.c>


void main()
{


   setup_adc_ports(NO_ANALOGS);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);

    //Example blinking LED program
    while(true){
      output_low(LED);
      delay_ms(DELAY1);
      output_high(LED);
      delay_ms(DELAY2);
    }
   lcd_init();
   lcd_putc("\f.Testing 1-2-3");

}

The include file is
Code:

#include <18F4620.h>
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES LP                       //Low power osc < 200 khz
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=10000000)

#define LED PIN_C0
#define DELAY1 25
#define DELAY2 50

The screen displays either nothing, or blocks in all spaces. Help !!
I have spent about 10 hrs and can't get this to run.

Thanks
Doggitz
temtronic



Joined: 01 Jul 2010
Posts: 9241
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Sun Sep 04, 2011 9:58 am     Reply with quote

While I don't use that PIC or lcd driver...

... the first thing is that you've got a fuse set for LP option(<200KHz) yet the #use delay(clock=10,000,000) //my commas
and you say you're using a 10MHz xtal.....
So I'd select the correct fuse for that xtal....


I use the flex_lcd driver with no problems...so perhaps maybe you haven't enabled/disabled the RW line or enable LCD control line ??
doggitz



Joined: 04 Sep 2011
Posts: 9

View user's profile Send private message

LCD
PostPosted: Sun Sep 04, 2011 10:44 am     Reply with quote

Thanks for the thought

Tried commenting out the LP line - no effect
I have also tried the flex_lcd driver and get the same result

I look at the comment section for the flex_lcd driver and find comments about grounding the RW line. I'm not sure whether that line on my board is grounded (I know that it is NOT connected to the chip) but will check it. As I mentioned, I tried a little test program using Proton Basic with the exact same set up on my test board, and the display works perfectly.

-D
temtronic



Joined: 01 Jul 2010
Posts: 9241
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Sun Sep 04, 2011 12:17 pm     Reply with quote

Your LCD to PIC wiring is wrong...

According to the LCD.c driver..
// 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


you've got..

Enable D5
RS D4
Data4 D0
Data5 D1
Data6 D2
Data7 D3

So..
you either have to rewire the connections to be compatible with the LCD.c driver

OR
recode the driver to conform to your pinout

OR
use the flex_lcd driver and configure it to be 'pin compatible' with how you want the connections to be made.This is what I do, far easier and simpler.

Any of the above options will work, it all depends on how you want to 'configure' the system.
doggitz



Joined: 04 Sep 2011
Posts: 9

View user's profile Send private message

PostPosted: Sun Sep 04, 2011 12:51 pm     Reply with quote

OK thanks --

I'll look at the flex driver and see how that works.

keep you posted
doggitz



Joined: 04 Sep 2011
Posts: 9

View user's profile Send private message

PostPosted: Mon Sep 05, 2011 9:17 am     Reply with quote

I have studied the flex_lcd driver documentation. It looks like the pin declarations are made in the driver - which I did. I also commented out the RW portion - which I am not using. I also included the stdio driver and made sure that my crystal was set to HS for a 10 MHZ crystal. No luck. All I get is a single (top) row of 5X8 pixel blocks. I also used an ohm meter to be sure all of the connections between the pic and the lcd were correct. any other suggestions?
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group