Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Nokia 6100 LCD with CCS C

Status
Not open for further replies.

Darth.Vader

Member level 2
Joined
Jan 3, 2002
Messages
45
Helped
10
Reputation
20
Reaction score
10
Trophy points
1,288
Location
France
Activity points
281
nokia 6100 lcd

Hi all ;)

I finally made my own driver for the pcf8833 controller.
All i have see on the web was or incomplete or dont have work like i want.
I post 3 examples here :

A 3D rotating cube , a mini breakout game , and the good old pong :)
change the #define from pcf8833.c for set the pin's you use on the CPU.

Enjoy.
 

nokia 6100 display identification

he he ;)

A not valuable code is a useless code ;)
If this one can help you then my job is done :D

cya and enjoy.
 
nokia 6100 lcd ccs

hello;
I have project using GLCD( phillip chipset use for NOKIA 6100)! And I met a big problem when coding with it.I don't know why my code incorrect.Here that code
Code:
Code:
/****************************************************/

// LPC2148    ----->  GLCD(6100 display PCF8833)
// MOSI(P0.6) ------>  DATA(pin 3 )
// SCK(P0.4)  ------>  SCK
// MISO(P0.5) -------  NC
// P0.2         ------>  RS
// P0.7) ------------> CS
//P0.3--------------->Blink

#include "LPC214x.H"    
/* pototype  section */                                  // LPC2148 MPU Register
//define for LCD
/*****************************************************************************
          Command of LCD NOKIA6100(phillips chipset)
*****************************************************************************/
#define NOP       0x00 // nop
#define SWRESET    0x01 // software reset
#define BSTROFF    0x02 // booster voltage OFF
#define BSTRON       0x03 // booster voltage ON
#define RDDIDIF    0x04 // read display identification
#define RDDST       0x09 // read display status
#define SLEEPIN    0x10 // sleep in
#define SLEEPOUT    0x11 // sleep out
#define PTLON       0x12 // partial display mode
#define NORON       0x13 // display normal mode
#define INVOFF      0x20 // inversion OFF
#define INVON       0x21 // inversion ON
#define DALO       0x22 // all pixel OFF
#define DAL       0x23 // all pixel ON
#define SETCON       0x25 // write contrast
#define DISPOFF    0x28 // display OFF
#define DISPON       0x29 // display ON
#define CASET       0x2A // column address set
#define PASET       0x2B // page address set
#define RAMWR       0x2C // memory write
#define RGBSET       0x2D // colour set
#define PTLAR       0x30 // partial area
#define VSCRDEF    0x33 // vertical scrolling definition
#define TEOFF       0x34 // test mode
#define TEON       0x35 // test mode
#define MADCTL       0x36 // memory access control
#define SEP       0x37 // vertical scrolling start address
#define IDMOFF       0x38 // idle mode OFF
#define IDMON       0x39 // idle mode ON
#define COLMOD       0x3A // interface pixel format
#define SETVOP       0xB0 // set Vop
#define BRS       0xB4 // bottom row swap
#define TRS       0xB6 // top row swap
#define DISCTR       0xB9 // display control
#define DOR       0xBA // data order
#define TCDFE       0xBD // enable/disable DF temperature compensation
#define TCVOPE       0xBF // enable/disable Vop temp comp
#define EC          0xC0 // internal or external oscillator
#define SETMUL       0xC2 // set multiplication factor
#define TCVOPAB    0xC3 // set TCVOP slopes A and B
#define TCVOPCD    0xC4 // set TCVOP slopes c and d
#define TCDF       0xC5 // set divider frequency
#define DF8COLOR    0xC6 // set divider frequency 8-color mode
#define SETBS       0xC7 // set bias system
#define RDTEMP       0xC8 // temperature read back
#define NLI       0xC9 // n-line inversion
#define RDID1       0xDA // read ID1
#define RDID2       0xDB // read ID2
#define RDID3       0xDC // read ID3
//define pin
#define RS (1<<2)
#define CS (1<<7)
#define BL (1<<3)
#define SDA       (1<<6) //MOSI
#define CLK       (1<<4) //CLK
//define program
//*****************************************************************************
//          Program definition
//*****************************************************************************/
#define CS0 IOCLR0 = CS
#define CS1 IOSET0 = CS
#define CLK0 IOCLR0 = CLK
#define CLK1 IOSET0 = CLK
#define SDA0 IOCLR0 = SDA
#define SDA1 IOSET0 = SDA
#define RESET0 IOCLR0 = RS
#define RESET1 IOSET0 = RS

/* pototype  section */
//****************************************************************************
//          Program prototype
//****************************************************************************
void lcd_init(void);
void spi_init(void);
void sendData(unsigned char data);
void sendCMD(unsigned char com);
void LCD_put_pixel(unsigned char color, unsigned char x, unsigned char y);

void delay_ms(unsigned long int);                  // Delay Time Function
//main function

int main(void)
{
unsigned int i;
//int
IODIR0 =  CS|CLK|SDA|RS;
lcd_init();
while(1)
{
for(i=1;i<131;i++)
{
LCD_put_pixel(0xFC,i,50);
}
//test code
}
}    
//=============spi int==================

void spi_init(void)
{
   PINSEL0 |= 0x00001500; // set port0.4-0.6 SPI0
 
 // SPI0 initial function LCD6100
     S0SPCCR = 8;       // SPI0 clk = VPB clk /S0PCCR
                 //  7.5 MHz = 60 MHz /8
 // SPI0 Register control
     S0SPCR = 0x00000924; // 9 bit data
                    // CPHA=0, CPOL=0
                       // MPU master
                      // MSB first   
                     // SPIF interrupts unable
}
//=============end function==============

                     
/*****************************************************************************
          LCD initial Function
*****************************************************************************/
void lcd_init(void)
{
int i = 0;

  spi_init();

  /*** Hardware Reset LCD ***/
  RESET0;
  delay_ms(10);
  RESET1;
  delay_ms(10);
  /*** Initial state ***/
  CS0;               // cho phep LCD
  sendCMD(SWRESET);    // Software Reset LCD
  delay_ms(10);
 
  sendCMD(SLEEPOUT); // Sleep out
  delay_ms(10);
  //sendCMD(INVON);   //seem to be requires for this controller
 
  sendCMD(COLMOD);   // 8 bit color
  sendData(0x02);
  sendCMD(NORON);    // Normal Display
  sendCMD(MADCTL);    //   memory access control
  sendData(0x40);    // Miror X

  sendCMD(SETCON);    // set contrast
  sendData(63);   
  delay_ms(10);

  sendCMD(DISPON);    // Display ON
  delay_ms(10);
   
   /*** Set Black Coulour to Backgound ***/
   sendCMD(CASET);   
   sendData(0);
   sendData(131);
   sendCMD(PASET);   
   sendData(1);     
   sendData(131);
   sendCMD(RAMWR);         
   for(i=0;i<(131*131);i++)
   {
      sendData(0);
    }
}

/*****************************************************************************
          Send command to LCD Function
*****************************************************************************/
void sendCMD(unsigned char com)
{   
       CS0;// chip select enable
     S0SPDR = com & ~0x0100;// For Command MSB "LOW"
     while((S0SPSR & 0x80)!= 0x80){;;}   // Wait SPIF = 1 (SPI Send Complete)
     CS1; //unselect
}

/*****************************************************************************
          Send Data to LCd function
*****************************************************************************/
void sendData(unsigned char data)
{
  CS0;
  S0SPDR  = data | 0x0100;// For Data MSB must "HIGH"
  while((S0SPSR & 0x80)!= 0x80){;;}   // Wait SPIF = 1 (SPI Send Complete)
  CS1;
}

/*****************************************************************************
          LCD plot pixel on LCD Function
*****************************************************************************/

void LCD_put_pixel(unsigned char color, unsigned char x, unsigned char y)
{
  sendCMD(PASET);   // page start/end ram  = Row
  sendData(y);
  sendData(131);
  sendCMD(CASET);   // column start/end ram = Colum
  sendData(x);     
  sendData(131);
  sendCMD(RAMWR);    // write DATA
  sendData(color);
}
/***********************/
/* Delay Time Function */
/***********************/

void delay_ms(unsigned long int count1)
{
unsigned int i,k;
k=count1*2600;
  for(i=0;i<k;i++);                     // Loop Decrease Counter   
}
 
  • Like
Reactions: Koson

    Koson

    Points: 2
    Helpful Answer Positive Rating
pcf8833.c

Hi Darth.Vader
can you please translate ur comments in above codes into English.
Thanks
sadat007
 
nokia 6100 lcd ccs c compiler

Hi ;)

I will do this tomorow ....
be patient or learn French ... hehe ...

cya latter ;)

Added after 27 minutes:

I finaly translate the driver file directly :)

Enjoy ;)

PS : i have use CCS C Compiler for PIC controler ...
 
nokia 6100 lcd contrast

Hi friends.
I want begin project with 6100. does this code complete . who test this code?
Can I use this code for 6100 display?
 

nokia 6100 lcd pinouts

See this file.It 's work for Philips and Epson.
 
proteus nokia 6100

Hi ;)

@ ROBOTICAR : Sure it work , it's for PIC Microcontroller and the sources are in CCS C.
For your question about testing , i'm the writer from the 3D rotating cube , mini breakout game , and pong , and it ... work :)

Cya.
 
glcd_img

Hi Dear Darth.Vader .


thanks a lot . I need it but I have some questions.
where is the <FONT57.c> and <FONT812.c> and <image.c>?
CCS can't include them.

and another:
Can I show image on 6100 with this code? how?
 

lcd nokia 6100

Hi ,

For example , take the 'Pong' sources ...
They are all file in it.
This fonts and images files are loaded from the pcf8833 driver.

#include <FONT57.c>
#include <FONT812.c>
#include <image.c>

Now for get image on your display ...
You have first to make the array of points from your image and put them in the image.c file under :

STATIC CONST UNSIGNED INT8 img []={0x0000,0x0000,pts color , pts color , pts color ... etc , etc , etc ....};

the two first 0x0000,0x0000 rerpesent the size in X and Y from your image ...
all the next data represent the colors of each point.

the glcd_img(char x, char y) is here for display your picture.
x and y are the coord from the start where the picture will be show in your screen.

Now if you have a sequence of images to show one animation you have to use the
glcd_anim(char x, char y, int8 frame, int16 wait) ... it work like the glcd_img function , the only difference is that it show the animation from many picture , the 'frame' is how much pict you have to show and the 'wait' is how much Ms you wait betwen 2 pictures .
the array to fill in image.c is then :
STATIC CONST UNSIGNED INT8 img_a []={0x0000,0x0000,pts color , pts color , pts color ... etc , etc , etc ....};
the only difference is that the points from ALL of your images have to be present in the array.

Enjoy :D
 

nokia 6100 driver lcd

Hi there!

I´m very happy to found this codes, specially thanks to DartVader!!!

I agree that there´s no complete code on internet, i have to use various codes to implement my own on nokia 3310 bw display!

now i have a full lib for this one (nokia 3310) working good!

if anybody want it, just mail -me!

i´ll go to next step: nokia 6100 experiments with 16F877A Chip!

Thanks for all this sources!

Hamilton
 

write a image on lcd 6100

Thanks for the codes Darth.Vader.

But i have some question for you and the forum members. Please take into account that, even though i have some experience about electronics and c programming, i am completely newbie about microcontroller programming and lcd's.

1. I have a "Nokia 3120" lcd screen. According to **broken link removed**, it is compatible for the "Nokia 6100" lcd screens. My questions is , this two different controller issue will apply to my Nokia 3120 lcd?. If you have any idea about Nokia 3120 lcd controller(philips or epson) or possible source for it, please post.

2. What is the pinouts for PIC18F4680 and the lcd, which microcontroller pin goes which lcd pin.

3. As previous commenter, i am trying to make a compatible driver for pic16f877a or pic16f876a. After cut out font functions from "pcf8833.c "(sorry), i was able to build a hex file. For now it' s seems to be working in ISIS(Proteus) simulations with no problem.

If someone verify that this code can generate a "centred parallel green line" with a black background for pcf8833 controlled lcd by using "pic16f877a", it will be much appreciated.

Code:
#include "picsss.h"
#include <pcf8833.c>

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

 set_tris_c(0x00);

   output_c(0x00);

   delay_ms(1000);

   glcd_init(65);

   glcd_cls(BLACK);

   glcd_line(0,64,128,64,GREEN);
}

Sorry about mess but if i knew the pinouts for PIC18F4680 at the first place, i could verify myself.

I had also uploaded driver source files for "pic16f877a", take a look at for details.
 

Re: nokia 6100 lcd

Hi all ;)

I finally made my own driver for the pcf8833 controller.
All i have see on the web was or incomplete or dont have work like i want.
I post 3 examples here :

A 3D rotating cube , a mini breakout game , and the good old pong :)
change the #define from pcf8833.c for set the pin's you use on the CPU.

Enjoy.

i need simple nokia 6100 lcd initialize code
plz...
help me...
 

Hello Guys...
I am really facing some problem and need your help...

I have successfully interfaced an epson controller LCD but now I have an LCD with philips(I am not sure coz i dont have exact datasheet, i think it is coz my epson driver is not working)...and more interestingly one aitendo interface is with it and it doesnot have any pin out for reset...Is it possible to initialise without that pin and if yes then how ?

---------- Post added at 12:04 ---------- Previous post was at 11:56 ----------

Nice post dear....can u plz tell me is it possible to initializ any LCD without any hardware reset...plz i need ur help....coz i have an LCD with an AITENDO interface board which doesnot have any reset pinout...
 

Hi there!

I have an LCD Nokia 6100 with philips pcf8833. I am trying to find a compatible driver to put it working with a pic16f877a.
The driver made by Darth.Vader, is shown the following error when I try to compile it: In "FONT812.c" <error87: Data item too big>. And I read that acce had problem to make it compatible with pic16f877a.
Could someone help me...
 

Fantatic!!!!!! Thank you a lot!
I test with PIC 18F4520 and works fine!!!

THANK YOU A LOT!!!!!!!!!!!!!!!!!
Now, i have one question, I test the 3D cube. Can I move it more fast???
 

just increment the axis angle for each step with bigger value :wink:
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top