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

Driver for 96 * 60 KS0713 Family Graphic LCDs

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



Joined: 19 May 2012
Posts: 26
Location: Pakistan

View user's profile Send private message

Driver for 96 * 60 KS0713 Family Graphic LCDs
PostPosted: Thu May 31, 2012 1:21 am     Reply with quote

I already have a driver for this GLCD but it has limited capability.
I want to have options like HIGHLIGHTING , SINGLE PIXEL ON/OFF and LINE Drawing.

Driver that i am using is:

Code:


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
DRIVERS FOR KS0713 Family Graphic LCDs

*/
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#byte pd   =0xF83
#bit dt_cs        =pd.7      // RD5   
#bit dt_rst       =pd.6      // RD4
#bit dt_sclk      =pd.5      // RD3
#bit dt_sid       =pd.4      // RD2
#bit dt_rs        =pd.3      // RD1
#bit dt_bl        =pd.2      // RD1

BYTE const TABLE5[48][5]=           
                  {0x00,0x00,0x00,0x00,0x00,   // 20 space          ASCII table for NOKIA LCD: 96 rows * 5 bytes= 480 bytes
                  0x00,0x00,0x5f,0x00,0x00,   // 21 !
                  0x00,0x07,0x00,0x07,0x00,   // 22 "
                  0x14,0x7f,0x14,0x7f,0x14,   // 23 #
                  0x24,0x2a,0x7f,0x2a,0x12,   // 24 $
                  0x23,0x13,0x08,0x64,0x62,   // 25 %
                  0x36,0x49,0x55,0x22,0x50,   // 26 &
                  0x00,0x05,0x03,0x00,0x00,   // 27 '
                  0x00,0x1c,0x22,0x41,0x00,   // 28 (
                  0x00,0x41,0x22,0x1c,0x00,   // 29 )
                  0x14,0x08,0x3e,0x08,0x14,   // 2a *
                  0x08,0x08,0x3e,0x08,0x08,   // 2b +
                  0x00,0x50,0x30,0x00,0x00,   // 2c ,
                  0x08,0x08,0x08,0x08,0x08,   // 2d -
                  0x00,0x60,0x60,0x00,0x00,   // 2e .
                  0x20,0x10,0x08,0x04,0x02,   // 2f /
                  0x3e,0x51,0x49,0x45,0x3e,   // 30 0
                  0x00,0x42,0x7f,0x40,0x00,   // 31 1
                  0x42,0x61,0x51,0x49,0x46,   // 32 2
                  0x21,0x41,0x45,0x4b,0x31,   // 33 3
                  0x18,0x14,0x12,0x7f,0x10,   // 34 4
                  0x27,0x45,0x45,0x45,0x39,   // 35 5
                  0x3c,0x4a,0x49,0x49,0x30,   // 36 6
                  0x01,0x71,0x09,0x05,0x03,   // 37 7
                  0x36,0x49,0x49,0x49,0x36,   // 38 8
                  0x06,0x49,0x49,0x29,0x1e,   // 39 9
                  0x00,0x36,0x36,0x00,0x00,   // 3a :
                  0x00,0x56,0x36,0x00,0x00,   // 3b ;
                  0x08,0x14,0x22,0x41,0x00,   // 3c <
                  0x14,0x14,0x14,0x14,0x14,   // 3d =
                  0x00,0x41,0x22,0x14,0x08,   // 3e >
                  0x02,0x01,0x51,0x09,0x06,   // 3f ?
                  0x32,0x49,0x79,0x41,0x3e,   // 40 @
                  0x7e,0x11,0x11,0x11,0x7e,   // 41 A
                  0x7f,0x49,0x49,0x49,0x36,   // 42 B
                  0x3e,0x41,0x41,0x41,0x22,   // 43 C
                  0x7f,0x41,0x41,0x22,0x1c,   // 44 D
                  0x7f,0x49,0x49,0x49,0x41,   // 45 E
                  0x7f,0x09,0x09,0x09,0x01,   // 46 F
                  0x3e,0x41,0x49,0x49,0x7a,   // 47 G
                  0x7f,0x08,0x08,0x08,0x7f,   // 48 H
                  0x00,0x41,0x7f,0x41,0x00,   // 49 I
                  0x20,0x40,0x41,0x3f,0x01,   // 4a J
                  0x7f,0x08,0x14,0x22,0x41,   // 4b K
                  0x7f,0x40,0x40,0x40,0x40,   // 4c L
                  0x7f,0x02,0x0c,0x02,0x7f,   // 4d M
                  0x7f,0x04,0x08,0x10,0x7f,   // 4e N
                  0x3E,0x41,0x41,0x41,0x3E,};   // 4f O


BYTE const TABLE6[48][5]={
                  0x7f,0x09,0x09,0x09,0x06,   // 50 P
                  0x3e,0x41,0x51,0x21,0x5e,   // 51 Q
                  0x7f,0x09,0x19,0x29,0x46,   // 52 R
                  0x46,0x49,0x49,0x49,0x31,   // 53 S
                  0x01,0x01,0x7f,0x01,0x01,   // 54 T
                  0x3f,0x40,0x40,0x40,0x3f,   // 55 U
                  0x1f,0x20,0x40,0x20,0x1f,   // 56 V
                  0x3f,0x40,0x38,0x40,0x3f,   // 57 W
                  0x63,0x14,0x08,0x14,0x63,   // 58 X
                  0x07,0x08,0x70,0x08,0x07,   // 59 Y
                  0x61,0x51,0x49,0x45,0x43,   // 5a Z
                  0x00,0x7f,0x41,0x41,0x00,   // 5b [
                  0x02,0x04,0x08,0x10,0x20,   // 5c
                  0x00,0x41,0x41,0x7f,0x00,   // 5d
                  0x04,0x02,0x01,0x02,0x04,   // 5e
                  0x40,0x40,0x40,0x40,0x40,   // 5f
                  0x00,0x01,0x02,0x04,0x00,   // 60
                  0x20,0x54,0x54,0x54,0x78,   // 61 a
                  0x7f,0x48,0x44,0x44,0x38,   // 62 b
                  0x38,0x44,0x44,0x44,0x20,   // 63 c
                  0x38,0x44,0x44,0x48,0x7f,   // 64 d
                  0x38,0x54,0x54,0x54,0x18,   // 65 e
                  0x08,0x7e,0x09,0x01,0x02,   // 66 f
                  0x0c,0x52,0x52,0x52,0x3e,   // 67 g
                  0x7f,0x08,0x04,0x04,0x78,   // 68 h
                  0x00,0x44,0x7d,0x40,0x00,   // 69 i
                  0x20,0x40,0x44,0x3d,0x00,   // 6a j
                  0x7f,0x10,0x28,0x44,0x00,   // 6b k
                  0x00,0x41,0x7f,0x40,0x00,   // 6c l
                  0x7c,0x04,0x18,0x04,0x78,   // 6d m
                  0x7c,0x08,0x04,0x04,0x78,   // 6e n
                  0x38,0x44,0x44,0x44,0x38,   // 6f o
                  0x7c,0x14,0x14,0x14,0x08,   // 70 p
                  0x08,0x14,0x14,0x18,0x7c,   // 71 q
                  0x7c,0x08,0x04,0x04,0x08,   // 72 r
                  0x48,0x54,0x54,0x54,0x20,   // 73 s
                  0x04,0x3f,0x44,0x40,0x20,   // 74 t
                  0x3c,0x40,0x40,0x20,0x7c,   // 75 u
                  0x1c,0x20,0x40,0x20,0x1c,   // 76 v
                  0x3c,0x40,0x30,0x40,0x3c,   // 77 w
                  0x44,0x28,0x10,0x28,0x44,   // 78 x
                  0x0c,0x50,0x50,0x50,0x3c,   // 79 y
                  0x44,0x64,0x54,0x4c,0x44,   // 7a z
                  0x00,0x08,0x36,0x41,0x00,   // 7b
                  0x00,0x00,0x7f,0x00,0x00,   // 7c
                  0x00,0x41,0x36,0x08,0x00,   // 7d
                  0x10,0x08,0x08,0x10,0x08,   // 7e
                  0x78,0x46,0x41,0x46,0x78};   // 7f
           
BYTE const font_bold1 [48][8]={
      0,   0,   0,   0,   0,   0,   0,   0, //' '
          0,   6,  95,  95,   6,   0,   0,   0, //'!'
          0,   7,   7,   0,   7,   7,   0,   0, //'"'
         20, 127, 127,  20, 127, 127,  20,   0, //'#'
         36,  46, 107, 107,  58,  18,   0,   0, //'$'
         70, 102,  48,  24,  12, 102,  98,   0, //'%'
         48, 122,  79,  93,  55, 122,  72,   0, //'&'
          4,   7,   3,   0,   0,   0,   0,   0, //'''
          0,  28,  62,  99,  65,   0,   0,   0, //'('
          0,  65,  99,  62,  28,   0,   0,   0, //')'
          8,  42,  62,  28,  28,  62,  42,   8, //'*'
          8,   8,  62,  62,   8,   8,   0,   0, //'+'
          0, 128, 224,  96,   0,   0,   0,   0, //','
          8,   8,   8,   8,   8,   8,   0,   0, //'-'
          0,   0,  96,  96,   0,   0,   0,   0, //'.'
         96,  48,  24,  12,   6,   3,   1,   0, //'/'
         62, 127, 113,  89,  77, 127,  62,   0, //'0'
         64,  66, 127, 127,  64,  64,   0,   0, //'1'
         98, 115,  89,  73, 111, 102,   0,   0, //'2'
         34,  99,  73,  73, 127,  54,   0,   0, //'3'
         24,  28,  22,  83, 127, 127,  80,   0, //'4'
         39, 103,  69,  69, 125,  57,   0,   0, //'5'
         60, 126,  75,  73, 121,  48,   0,   0, //'6'
          3,   3, 113, 121,  15,   7,   0,   0, //'7'
         54, 127,  73,  73, 127,  54,   0,   0, //'8'
          6,  79,  73, 105,  63,  30,   0,   0, //'9'
          0,   0, 102, 102,   0,   0,   0,   0, //':'
          0, 128, 230, 102,   0,   0,   0,   0, //';'
          8,  28,  54,  99,  65,   0,   0,   0, //'<'
         36,  36,  36,  36,  36,  36,   0,   0, //'='
          0,  65,  99,  54,  28,   8,   0,   0, //'>'
          2,   3,  81,  89,  15,   6,   0,   0, //'?'
         62, 127,  65,  93,  93,  31,  30,   0, //'@'
        124, 126,  19,  19, 126, 124,   0,   0, //'A'
         65, 127, 127,  73,  73, 127,  54,   0, //'B'
         28,  62,  99,  65,  65,  99,  34,   0, //'C'
         65, 127, 127,  65,  99,  62,  28,   0, //'D'
         65, 127, 127,  73,  93,  65,  99,   0, //'E'
         65, 127, 127,  73,  29,   1,   3,   0, //'F'
         28,  62,  99,  65,  81, 115, 114,   0, //'G'
        127, 127,   8,   8, 127, 127,   0,   0, //'H'
          0,  65, 127, 127,  65,   0,   0,   0, //'I'
         48, 112,  64,  65, 127,  63,   1,   0, //'J'
         65, 127, 127,   8,  28, 119,  99,   0, //'K'
         65, 127, 127,  65,  64,  96, 112,   0, //'L'
        127, 127,  14,  28,  14, 127, 127,   0, //'M'
        127, 127,   6,  12,  24, 127, 127,   0, //'N'
         28,  62,  99,  65,  99,  62,  28,   0, //'O'
};
BYTE const font_bold2 [48][8]={
         65, 127, 127,  73,   9,  15,   6,   0, //'P'
         30,  63,  33, 113, 127,  94,   0,   0, //'Q'
         65, 127, 127,   9,  25, 127, 102,   0, //'R'
   38, 111,  77,  89, 115,  50,   0,   0, //'S'
          3,  65, 127, 127,  65,   3,   0,   0, //'T'
        127, 127,  64,  64, 127, 127,   0,   0, //'U'
         31,  63,  96,  96,  63,  31,   0,   0, //'V'
        127, 127,  48,  24,  48, 127, 127,   0, //'W'
         67, 103,  60,  24,  60, 103,  67,   0, //'X'
          7,  79, 120, 120,  79,   7,   0,   0, //'Y'
         71,  99, 113,  89,  77, 103, 115,   0, //'Z'
          0, 127, 127,  65,  65,   0,   0,   0, //'['
          1,   3,   6,  12,  24,  48,  96,   0, //'\'
          0,  65,  65, 127, 127,   0,   0,   0, //']'
          8,  12,   6,   3,   6,  12,   8,   0, //'^'
        128, 128, 128, 128, 128, 128, 128, 128, //'_'
          0,   0,   3,   7,   4,   0,   0,   0, //'`'
         32, 116,  84,  84,  60, 120,  64,   0, //'a'
         65, 127,  63,  72,  72, 120,  48,   0, //'b'
         56, 124,  68,  68, 108,  40,   0,   0, //'c'
         48, 120,  72,  73,  63, 127,  64,   0, //'d'
         56, 124,  84,  84,  92,  24,   0,   0, //'e'
         72, 126, 127,  73,   3,   2,   0,   0, //'f'
        152, 188, 164, 164, 248, 124,   4,   0, //'g'
         65, 127, 127,   8,   4, 124, 120,   0, //'h'
          0,  68, 125, 125,  64,   0,   0,   0, //'i'
         96, 224, 128, 128, 253, 125,   0,   0, //'j'
         65, 127, 127,  16,  56, 108,  68,   0, //'k'
          0,  65, 127, 127,  64,   0,   0,   0, //'l'
        124, 124,  24,  56,  28, 124, 120,   0, //'m'
        124, 124,   4,   4, 124, 120,   0,   0, //'n'
         56, 124,  68,  68, 124,  56,   0,   0, //'o'
        132, 252, 248, 164,  36,  60,  24,   0, //'p'
         24,  60,  36, 164, 248, 252, 132,   0, //'q'
         68, 124, 120,  76,   4,  28,  24,   0, //'r'
         72,  92,  84,  84, 116,  36,   0,   0, //'s'
          0,   4,  62, 127,  68,  36,   0,   0, //'t'
         60, 124,  64,  64,  60, 124,  64,   0, //'u'
         28,  60,  96,  96,  60,  28,   0,   0, //'v'
         60, 124, 112,  56, 112, 124,  60,   0, //'w'
         68, 108,  56,  16,  56, 108,  68,   0, //'x'
        156, 188, 160, 160, 252, 124,   0,   0, //'y'
         76, 100, 116,  92,  76, 100,   0,   0, //'z'
          8,   8,  62, 119,  65,  65,   0,   0, //'{'
          0,   0,   0, 119, 119,   0,   0,   0, //'|'
};
char charsel; 
void    dt_lcd_init(void);
void    dt_lcd_clear_screen(void);
void    dt_lcd_write_command(char bytefor_command);
void    dt_lcd_write_data(char bytefor_data);
void    dt_lcd_write_dorc(char bytefor);
void    dt_lcd_gotoxy(byte x_col, byte y_row);
void    dt_lcd_printchar(byte cvar);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void dt_lcd_init(void)
{
dt_cs=1;
dt_sclk=1;

dt_rst = 0;
delay_ms(10);
dt_rst = 1;
delay_ms(1);

dt_lcd_write_command(0xe2);   // reset
   
dt_lcd_write_command(0xa0);   // ADC select: normal
dt_lcd_write_command(0xFF);   // SHL select:
dt_lcd_write_command(0xb2);   // LCD bias select:

dt_lcd_write_command(0x2c);   // Voltage converter ON
delay_ms(1);
dt_lcd_write_command(0x2e);   // Voltage regulator ON
delay_ms(1);
dt_lcd_write_command(0x2f);   // Voltage follower ON

dt_lcd_write_command(0x25);   // Regulator resistor select 0x20..0x27
dt_lcd_write_command(0x81);   // Reference voltage register set
dt_lcd_write_command(0x18);   // Reference voltage 0..63


dt_lcd_write_command(0x40);   // initial display line 0x40..0x7f
dt_lcd_write_command(0xaf);   // display ON
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void dt_lcd_clear_screen(void)
{
char xx,yy;


// RAM set to zero
for (yy=0;yy!=8;yy++){
            dt_lcd_gotoxy(0,yy);
            printf(dt_lcd_printchar,"                        ");
            //printf("yy=%u ",yy);
                  }



}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void dt_lcd_write_command(char bytefor_command)
{
dt_cs=0;
//nop;nop;nop;nop;

dt_rs=0;
dt_lcd_write_dorc(bytefor_command);

dt_cs=1;
}
/////////////////////////////////////////////////////////////////////////////////
void dt_lcd_write_data(char bytefor_data)
{
dt_cs=0;
//nop;nop;nop;nop;

dt_rs=1;
dt_lcd_write_dorc(bytefor_data);   // write display data


dt_cs=1;
}
//////////////////////////////////////////////////////////////////////////////////
void dt_lcd_write_dorc(char bytefor)         // serial write data or command subroutine
{
char caa;
for (caa=8;caa>0;caa--) {
      dt_sclk=0;
      // delay_us(2);
      if ((bytefor&0x80)==0){dt_sid=0;}
      else {dt_sid=1;}
      //nop;nop;
      dt_sclk=1;
      bytefor=bytefor<<1;
      //nop;nop;
               }
}
//////////////////////////////////////////////////////////////////////////////////
void dt_lcd_gotoxy(byte x_col, byte y_row)      // Position cursor
{
char hi_col,lo_col;

//x_col+=0x24;

lo_col= (x_col&0x0f);
//printf(" lo_col=%u ",lo_col);
hi_col= ((x_col>>4)&0x0f)|0x10;
//printf(" hi_col=%u ",hi_col);

dt_lcd_write_command(hi_col);      // set higher column address
dt_lcd_write_command(lo_col);      // set lower column address   


dt_lcd_write_command(0xb0|(y_row&0x0f));   // set GDDRAM page address 0..7 (for 8 rows)
//printf(" y_row=%u ",y_row);

}
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

void dt_lcd_printchar(byte cvar)               // Write 1 character to LCD
{
charsel=cvar;
int i;
for ( i = 0; i < 5; i++ ){
           if(charsel<0x50) dt_Lcd_Write_data(TABLE5[charsel - 0x20][i] << 1);
           else if(charsel>0x4f) dt_Lcd_Write_data(TABLE6[charsel - 0x50][i] << 1);
        }          // send data to nokia   
                             

  dt_lcd_write_data(0x00);               //    1 byte (always blank)
}
void lcd_printchar(byte cvar)               // Write 1 character to LCD
{
charsel=cvar;
int i;
for ( i = 0; i < 8; i++ ){
           if(charsel<0x50) dt_Lcd_Write_data(font_bold1[charsel - 0x20][i] << 1);
           else if(charsel>0x4f) dt_Lcd_Write_data(font_bold2[charsel - 0x50][i] << 1);
        }          // send data to nokia   
               

  dt_lcd_write_data(0x00);               //    1 byte (always blank)
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Thu Jun 07, 2012 4:16 am     Reply with quote

You've had no response for a week.

Maybe you should look at doing it yourself.

It looks like you lifted the code from this forum.

Others have shown how to do the extras you want for different parts.

With the data sheet in one hand, you should be able to get there.

How about sharing it with the rest of us, when it's done?

Mike
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