KS0108 glcd another look


+ Reply to Thread
Results 1 to 7 of 7
  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    1,511

    Default KS0108 glcd another look

    ks0108 glcd type displays are now so cheap [low as 2 for $5au] these days i thought they might be worth another look.
    previously i have ignored them because the 20pin i/f and the code overhead in having to make your own font made it unappealing.
    but since they can now be cheaper than a 1602_lcd why not have another go?
    i have created an i/f board using two pcf8574a's and now have a 3 wire i2c i/f ,still has a bit of code overhead but it's managable.
    this is the pic16 version it will work with any pic16 that has 2k or more code space and 256 sram , has been tested on pic16f690
    and 16f1825. also can work using the full 20 pin connection if required
    enjoy
    Attached Images Attached Images
    Attached Files Attached Files
    This is more entertaining than Free to Air TV

  2. #2
    Join Date
    May 2013
    Location
    australia
    Posts
    1,511

    Default Re: ks0108 glcd another look

    pic18 version and fonts
    Attached Files Attached Files
    This is more entertaining than Free to Air TV

  3. #3
    Join Date
    Apr 2014
    Location
    Northeast
    Posts
    252

    Default Re: ks0108 glcd another look

    Richard, you may have been 3 years or so ahead of everyone else. I recently explored different touch screen platforms and landed on Nextion because of it's simplicity. I am currently looking into your ks0108 glcd displays. Thanks for sharing your many hours of development. Guys like you are few and far between.

  4. #4
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    991

    Default Re: ks0108 glcd another look

    You’d probably cram these in easy if desired. I did them both the hard way.
    The second is much sexier, but variable width, so a bit of fun.

    Code:
    // fixed width printed character and symbol definitions
    // HD44780 character LCD compatible character glyphs,
    // except "3", "B", and "s" characters are modified.
    const unsigned char charmap[480] = {
    0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // space
    0b00000000, 0b00000000, 0b01001111, 0b00000000, 0b00000000, // !
    0b00000000, 0b00000111, 0b00000000, 0b00000111, 0b00000000, // "
    0b00010100, 0b01111111, 0b00010100, 0b01111111, 0b00010100, // #
    0b00100100, 0b00101010, 0b01111111, 0b00101010, 0b00010010, // $
    0b00100011, 0b00010011, 0b00001000, 0b01100100, 0b01100010, // %
    0b00110110, 0b01001001, 0b01010101, 0b00100010, 0b01010000, // &
    0b00000000, 0b00000101, 0b00000011, 0b00000000, 0b00000000, // '
    0b00000000, 0b00011100, 0b00100010, 0b01000001, 0b00000000, // (
    0b00000000, 0b01000001, 0b00100010, 0b00011100, 0b00000000, // )
    0b00010100, 0b00001000, 0b00111110, 0b00001000, 0b00010100, // *
    0b00001000, 0b00001000, 0b00111110, 0b00001000, 0b00001000, // +
    0b00000000, 0b01010000, 0b00110000, 0b00000000, 0b00000000, // ,
    0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, // -
    0b00000000, 0b01100000, 0b01100000, 0b00000000, 0b00000000, // .
    0b00100000, 0b00010000, 0b00001000, 0b00000100, 0b00000010, // /
    0b00111110, 0b01010001, 0b01001001, 0b01000101, 0b00111110, // 0
    0b00000000, 0b01000010, 0b01111111, 0b01000000, 0b00000000, // 1
    0b01000010, 0b01100001, 0b01010001, 0b01001001, 0b01000110, // 2
    0b00100010, 0b01000001, 0b01001001, 0b01001001, 0b00110110, // 3
    0b00011000, 0b00010100, 0b00010010, 0b01111111, 0b00010000, // 4
    0b00100111, 0b01000101, 0b01000101, 0b01000101, 0b00111001, // 5
    0b00111100, 0b01001010, 0b01001001, 0b01001001, 0b00110000, // 6
    0b00000001, 0b01110001, 0b00001001, 0b00000101, 0b00000011, // 7
    0b00110110, 0b01001001, 0b01001001, 0b01001001, 0b00110110, // 8
    0b00000110, 0b01001001, 0b01001001, 0b00101001, 0b00011110, // 9
    0b00000000, 0b00110110, 0b00110110, 0b00000000, 0b00000000, // :
    0b00000000, 0b01010110, 0b00110110, 0b00000000, 0b00000000, // ;
    0b00001000, 0b00010100, 0b00100010, 0b01000001, 0b00000000, // <
    0b00010100, 0b00010100, 0b00010100, 0b00010100, 0b00010100, // =
    0b00000000, 0b01000001, 0b00100010, 0b00010100, 0b00001000, // >
    0b00000010, 0b00000001, 0b01010001, 0b00001001, 0b00000110, // ?
    0b00110010, 0b01001001, 0b01111001, 0b01000001, 0b00111110, // @
    0b01111110, 0b00010001, 0b00010001, 0b00010001, 0b01111110, // A
    0b01111111, 0b01001001, 0b01001001, 0b01001001, 0b00110110, // B
    0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00100010, // C
    0b01111111, 0b01000001, 0b01000001, 0b00100010, 0b00011100, // D
    0b01111111, 0b01001001, 0b01001001, 0b01001001, 0b01000001, // E
    0b01111111, 0b00001001, 0b00001001, 0b00001001, 0b00000001, // F
    0b00111110, 0b01000001, 0b01001001, 0b01001001, 0b01111010, // G
    0b01111111, 0b00001000, 0b00001000, 0b00001000, 0b01111111, // H
    0b00000000, 0b01000001, 0b01111111, 0b01000001, 0b00000000, // I
    0b00100000, 0b01000000, 0b01000001, 0b00111111, 0b00000001, // J
    0b01111111, 0b00001000, 0b00010100, 0b00100010, 0b01000001, // K
    0b01111111, 0b01000000, 0b01000000, 0b01000000, 0b01000000, // L
    0b01111111, 0b00000010, 0b00001100, 0b00000010, 0b01111111, // M
    0b01111111, 0b00000100, 0b00001000, 0b00010000, 0b01111111, // N
    0b00111110, 0b01000001, 0b01000001, 0b01000001, 0b00111110, // O
    0b01111111, 0b00001001, 0b00001001, 0b00001001, 0b00000110, // P
    0b00111110, 0b01000001, 0b01010001, 0b00100001, 0b01011110, // Q
    0b01111111, 0b00001001, 0b00011001, 0b00101001, 0b01000110, // R
    0b01000110, 0b01001001, 0b01001001, 0b01001001, 0b00110001, // S
    0b00000001, 0b00000001, 0b01111111, 0b00000001, 0b00000001, // T
    0b00111111, 0b01000000, 0b01000000, 0b01000000, 0b00111111, // U
    0b00011111, 0b00100000, 0b01100000, 0b00100000, 0b00011111, // V
    0b00111111, 0b01000000, 0b00111000, 0b01000000, 0b00111111, // W
    0b01100011, 0b00010100, 0b00001000, 0b00010100, 0b01100011, // X
    0b00000111, 0b00001000, 0b01110000, 0b00001000, 0b00000111, // Y
    0b01100001, 0b01010001, 0b01001001, 0b01000101, 0b01000011, // Z
    0b00000000, 0b00000000, 0b01111111, 0b01000001, 0b01000001, // [
    0b00000010, 0b00000100, 0b00001000, 0b00010000, 0b00100000, // /
    0b00000000, 0b00000000, 0b01000001, 0b01000001, 0b01111111, // ]
    0b00000100, 0b00000010, 0b00000001, 0b00000010, 0b00000100, // ^
    0b01000000, 0b01000000, 0b01000000, 0b01000000, 0b01000000, // _
    0b00000000, 0b00000000, 0b00000001, 0b00000010, 0b00000000, // `
    0b00100000, 0b01010100, 0b01010100, 0b01010100, 0b01111000, // a
    0b01111111, 0b01001000, 0b01000100, 0b01000100, 0b00111000, // b
    0b00111000, 0b01000100, 0b01000100, 0b01000100, 0b00100000, // c
    0b00111000, 0b01000100, 0b01000100, 0b01001000, 0b01111111, // d
    0b00111000, 0b01010100, 0b01010100, 0b01010100, 0b00011000, // e
    0b00001000, 0b01111110, 0b00001001, 0b00000001, 0b00000010, // f
    0b00001100, 0b01010010, 0b01010010, 0b01010010, 0b00111110, // g
    0b01111111, 0b00001000, 0b00000100, 0b00000100, 0b01111000, // h
    0b00000000, 0b01000100, 0b01111101, 0b01000000, 0b00000000, // i
    0b00100000, 0b01000000, 0b01000100, 0b00111101, 0b00000000, // j
    0b01111111, 0b00010000, 0b00101000, 0b01000100, 0b00000000, // k
    0b00000000, 0b01000001, 0b01111111, 0b01000000, 0b00000000, // l
    0b01111100, 0b00000100, 0b00011000, 0b00000100, 0b01111000, // m
    0b01111100, 0b00001000, 0b00000100, 0b00000100, 0b01111000, // n
    0b00111000, 0b01000100, 0b01000100, 0b01000100, 0b00111000, // o
    0b01111100, 0b00010100, 0b00010100, 0b00010100, 0b00001000, // p
    0b00001000, 0b00010100, 0b00010100, 0b00011000, 0b01111100, // q
    0b01111100, 0b00001000, 0b00000100, 0b00000100, 0b00001000, // r
    0b00001000, 0b01010100, 0b01010100, 0b01010100, 0b00100000, // s
    0b00000100, 0b00111111, 0b01000100, 0b01000000, 0b00100000, // t
    0b00111100, 0b01000000, 0b01000000, 0b00100000, 0b01111100, // u
    0b00011100, 0b00100000, 0b01000000, 0b00100000, 0b00011100, // v
    0b00111100, 0b01000000, 0b00110000, 0b01000000, 0b00111100, // w
    0b01000100, 0b00101000, 0b00010000, 0b00101000, 0b01000100, // x
    0b00001100, 0b01010000, 0b01010000, 0b01010000, 0b00111100, // y
    0b01000100, 0b01100100, 0b01010100, 0b01001100, 0b01000100, // z
    0b00000000, 0b00001000, 0b00110110, 0b01000001, 0b00000000, // {
    0b00000000, 0b00000000, 0b01111111, 0b00000000, 0b00000000, // |
    0b00000000, 0b01000001, 0b00110110, 0b00001000, 0b00000000, // }
    0b00000000, 0b00000010, 0b00000001, 0b00000010, 0b00000001, // ~
    0b00000000, 0b00000100, 0b00001010, 0b00000100, 0b00000000  // degrees       
    };
    //

  5. #5
    Join Date
    Aug 2003
    Location
    Australia
    Posts
    991

    Default Re: KS0108 glcd another look

    Also depends whether youíre already reading bits horizontally or vertically (which I havenít checked).

    Code:
    // eighties style bold variable width character map
    const unsigned char charmapb[672] = {
    0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // space
    0b00000000, 0b00000000, 0b00000110, 0b01011111, 0b01011111, 0b00000110, 0b00000000, // !
    0b00000000, 0b00000011, 0b00000011, 0b00000000, 0b00000011, 0b00000011, 0b00000000, // "
    0b00010100, 0b01111111, 0b01111111, 0b00010100, 0b01111111, 0b01111111, 0b00010100, // #
    0b00100100, 0b00101110, 0b01101011, 0b01101011, 0b00111010, 0b00010010, 0b00000000, // $
    0b01000110, 0b01100110, 0b00110000, 0b00011000, 0b00001100, 0b01100110, 0b01100010, // %
    0b00110000, 0b01111010, 0b01001111, 0b01011101, 0b00110111, 0b01111010, 0b01001000, // &
    0b00000000, 0b00000100, 0b00000111, 0b00000011, 0b00000000, 0b00000000, 0b00000000, // '
    0b00000000, 0b00011100, 0b00111110, 0b01100011, 0b01000001, 0b00000000, 0b00000000, // (
    0b00000000, 0b01000001, 0b01100011, 0b00111110, 0b00011100, 0b00000000, 0b00000000, // )
    0b00010000, 0b01010100, 0b01111100, 0b00111000, 0b01111100, 0b01010100, 0b00010000, // *
    0b00000000, 0b00010000, 0b00010000, 0b01111100, 0b00010000, 0b00010000, 0b00000000, // +
    0b00000000, 0b01011000, 0b00111000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // ,
    0b00000000, 0b00001000, 0b00001000, 0b00001000, 0b00001000, 0b00000000, 0b00000000, // -
    0b00000000, 0b01100000, 0b01100000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, // .
    0b00000000, 0b00000000, 0b00110000, 0b00011000, 0b00001100, 0b00000000, 0b00000000, // /
    0b00111110, 0b01111111, 0b01000001, 0b01000001, 0b01111111, 0b00111110, 0b00000000, // 0
    0b01000000, 0b01000010, 0b01111111, 0b01111111, 0b01000000, 0b01000000, 0b00000000, // 1
    0b01100010, 0b01110011, 0b01011001, 0b01001001, 0b01101111, 0b01100110, 0b00000000, // 2
    0b00100010, 0b01100011, 0b01001001, 0b01001001, 0b01111111, 0b00110110, 0b00000000, // 3
    0b00011000, 0b00011100, 0b00010110, 0b01010011, 0b01111111, 0b01010000, 0b00000000, // 4
    0b00100111, 0b01100101, 0b01000101, 0b01000101, 0b01111101, 0b00111001, 0b00000000, // 5
    0b00111100, 0b01111110, 0b01001011, 0b01001001, 0b01111001, 0b00110000, 0b00000000, // 6
    0b00000011, 0b00000011, 0b01110001, 0b01111001, 0b00001111, 0b00000111, 0b00000000, // 7
    0b00110110, 0b01111111, 0b01001001, 0b01001001, 0b01111111, 0b00110110, 0b00000000, // 8
    0b00000110, 0b01001111, 0b01001001, 0b01101001, 0b00111111, 0b00011110, 0b00000000, // 9
    0b00000000, 0b00000000, 0b01100110, 0b01100110, 0b00000000, 0b00000000, 0b00000000, // :
    0b00000000, 0b01000000, 0b01110011, 0b00110011, 0b00000000, 0b00000000, 0b00000000, // ;
    0b00000000, 0b00001000, 0b00011100, 0b00110110, 0b01100011, 0b01000001, 0b00000000, // <
    0b01000110, 0b01100110, 0b00110000, 0b00011000, 0b00001100, 0b01100110, 0b01100010, // %
    0b00000000, 0b01000001, 0b01100011, 0b00110110, 0b00011100, 0b00001000, 0b00000000, // >
    0b00000010, 0b00000011, 0b01010001, 0b01011001, 0b00001111, 0b00000110, 0b00000000, // ?
    0b00000000, 0b00010100, 0b00010100, 0b00010100, 0b00010100, 0b00000000, 0b00000000, // =
    0b01111100, 0b01111110, 0b00010011, 0b00010011, 0b01111110, 0b01111100, 0b00000000, // A
    0b01000001, 0b01111111, 0b01111111, 0b01001001, 0b01001001, 0b01111111, 0b00110110, // B
    0b00011100, 0b00111110, 0b01100011, 0b01000001, 0b01000001, 0b01100011, 0b00100010, // C
    0b01000001, 0b01111111, 0b01111111, 0b01000001, 0b01100011, 0b00111110, 0b00011100, // D
    0b01000001, 0b01111111, 0b01111111, 0b01001001, 0b01011101, 0b01000001, 0b01100011, // E
    0b01000001, 0b01111111, 0b01111111, 0b01001001, 0b00011101, 0b00000001, 0b00000011, // F
    0b00011100, 0b00111110, 0b01100011, 0b01000001, 0b01010001, 0b01110011, 0b01110010, // G
    0b01111111, 0b01111111, 0b00001000, 0b00001000, 0b01111111, 0b01111111, 0b00000000, // H
    0b00000000, 0b01000001, 0b01111111, 0b01111111, 0b01000001, 0b00000000, 0b00000000, // I
    0b00110000, 0b01110000, 0b01000000, 0b01000001, 0b01111111, 0b00111111, 0b00000001, // J
    0b01000001, 0b01111111, 0b01111111, 0b00001000, 0b00011100, 0b01110111, 0b01100011, // K
    0b01000001, 0b01111111, 0b01111111, 0b01000001, 0b01000000, 0b01100000, 0b01110000, // L
    0b01111111, 0b01111111, 0b00001110, 0b00011100, 0b00001110, 0b01111111, 0b01111111, // M
    0b01111111, 0b01111111, 0b00000110, 0b00001100, 0b00011000, 0b01111111, 0b01111111, // N
    0b00011100, 0b00111110, 0b01100011, 0b01000001, 0b01100011, 0b00111110, 0b00011100, // O
    0b01000001, 0b01111111, 0b01111111, 0b01001001, 0b00001001, 0b00001111, 0b00000110, // P
    0b00011110, 0b00111111, 0b00100001, 0b01110001, 0b01111111, 0b01011110, 0b00000000, // Q
    0b01000001, 0b01111111, 0b01111111, 0b00001001, 0b00011001, 0b01111111, 0b01100110, // R
    0b00100010, 0b01100111, 0b01001101, 0b01011001, 0b01110011, 0b00100010, 0b00000000, // S
    0b00000011, 0b01000001, 0b01111111, 0b01111111, 0b01000001, 0b00000011, 0b00000000, // T
    0b00111111, 0b01111111, 0b01000000, 0b01000000, 0b01111111, 0b00111111, 0b00000000, // U
    0b00011111, 0b00111111, 0b01100000, 0b01100000, 0b00111111, 0b00011111, 0b00000000, // V
    0b01111111, 0b01111111, 0b00110000, 0b00011000, 0b00110000, 0b01111111, 0b01111111, // W
    0b01100011, 0b00110110, 0b00011100, 0b00011100, 0b00110110, 0b01100011, 0b00000000, // X
    0b00000111, 0b01001111, 0b01111000, 0b01111000, 0b01001111, 0b00000111, 0b00000000, // Y
    0b01000111, 0b01100011, 0b01110001, 0b01011001, 0b01001101, 0b01100111, 0b01110011, // Z
    0b00000000, 0b00000000, 0b01111111, 0b01111111, 0b01000001, 0b00000000, 0b00000000, // [
    0b00000000, 0b00110000, 0b00011000, 0b00001100, 0b00000110, 0b00000000, 0b00000000, // /
    0b00000000, 0b00000000, 0b01000001, 0b01111111, 0b01111111, 0b00000000, 0b00000000, // ]
    0b00000000, 0b00000100, 0b00000010, 0b00000001, 0b00000010, 0b00000100, 0b00000000, // ^
    0b00000000, 0b01000000, 0b01000000, 0b01000000, 0b01000000, 0b01000000, 0b00000000, // _
    0b00000000, 0b00000000, 0b00000011, 0b00000111, 0b00000100, 0b00000000, 0b00000000, // `
    0b00100000, 0b01110100, 0b01010100, 0b01010100, 0b00111100, 0b01111000, 0b01000000, // a
    0b01000001, 0b01111111, 0b00111111, 0b01001000, 0b01001000, 0b01111000, 0b00110000, // b
    0b00111000, 0b01111100, 0b01000100, 0b01000100, 0b01101100, 0b00101000, 0b00000000, // c
    0b00110000, 0b01111000, 0b01001000, 0b01001001, 0b00111111, 0b01111111, 0b01000000, // d
    0b00111000, 0b01111100, 0b01010100, 0b01010100, 0b01011100, 0b00011000, 0b00000000, // e
    0b01001000, 0b01111110, 0b01111111, 0b01001001, 0b00000011, 0b00000010, 0b00000000, // f
    0b10011000, 0b10111100, 0b10100100, 0b10100100, 0b11111000, 0b01111100, 0b00000100, // g
    0b01000001, 0b01111111, 0b01111111, 0b00001000, 0b00000100, 0b01111100, 0b01111000, // h
    0b00000000, 0b01000100, 0b01111101, 0b01111101, 0b01000000, 0b00000000, 0b00000000, // i
    0b01100000, 0b11100000, 0b10000000, 0b10000000, 0b11111101, 0b01111101, 0b00000000, // j
    0b01000001, 0b01111111, 0b01111111, 0b00010000, 0b00111000, 0b01101100, 0b01000100, // k
    0b00000000, 0b01000001, 0b01111111, 0b01111111, 0b01000000, 0b00000000, 0b00000000, // l
    0b01111100, 0b01111100, 0b00011000, 0b00111000, 0b00011100, 0b01111100, 0b01111000, // m
    0b01111100, 0b01111100, 0b00000100, 0b00000100, 0b01111100, 0b01111000, 0b00000000, // n
    0b00111000, 0b01111100, 0b01000100, 0b01000100, 0b01111100, 0b00111000, 0b00000000, // o
    0b10000100, 0b11111100, 0b11111000, 0b10100100, 0b00100100, 0b00111100, 0b00011000, // p
    0b00011000, 0b00111100, 0b00100100, 0b10100100, 0b11111000, 0b11111100, 0b10000100, // q
    0b01000100, 0b01111100, 0b01111000, 0b01001100, 0b00000100, 0b00011100, 0b00011000, // r
    0b01001000, 0b01011100, 0b01010100, 0b01010100, 0b01110100, 0b00100100, 0b00000000, // s
    0b00000000, 0b00000100, 0b00111110, 0b01111111, 0b01000100, 0b00100100, 0b00000000, // t
    0b00111100, 0b01111100, 0b01000000, 0b01000000, 0b00111100, 0b01111100, 0b01000000, // u
    0b00011100, 0b00111100, 0b01100000, 0b01100000, 0b00111100, 0b00011100, 0b00000000, // v
    0b00111100, 0b01111100, 0b01110000, 0b00111000, 0b01110000, 0b01111100, 0b00111100, // w
    0b01000100, 0b01101100, 0b00111000, 0b00010000, 0b00111000, 0b01101100, 0b01000100, // x
    0b10011100, 0b10111100, 0b10100000, 0b10100000, 0b11111100, 0b01111100, 0b00000000, // y
    0b01001100, 0b01100100, 0b01110100, 0b01011100, 0b01001100, 0b01100100, 0b00000000, // z
    0b00000000, 0b00001000, 0b00111110, 0b01110111, 0b01000001, 0b00000000, 0b00000000, // {
    0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b00000000, 0b00000000, 0b00000000, // |
    0b00000000, 0b00000000, 0b01000001, 0b01110111, 0b00111110, 0b00001000, 0b00000000, // }
    0b00000010, 0b00000011, 0b00000001, 0b00000011, 0b00000010, 0b00000011, 0b00000001, // ~
    0b00000000, 0b00000000, 0b00000100, 0b00001010, 0b00000100, 0b00000000, 0b00000000  // degrees
    };
    //

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    2,750

    Default Re: KS0108 glcd another look

    And you typed all that yourself???

    Well done and thank you!

    Ioannis

  7. #7
    Join Date
    May 2013
    Location
    australia
    Posts
    1,511

    Default Re: KS0108 glcd another look

    it would fairly straight forward to use the first offered font in the pic18 version but it would be very inefficient memory wise for a pic16
    my fonts use a packed format for pic16's
    This is more entertaining than Free to Air TV

Similar Threads

  1. KS0108 glcd another look
    By richard in forum PBP3
    Replies: 1
    Last Post: - 2nd September 2016, 11:50
  2. Ks0108 128x64 Glcd
    By HenrikOlsson in forum General
    Replies: 10
    Last Post: - 9th June 2008, 21:58
  3. Glcd
    By Sphere in forum General
    Replies: 0
    Last Post: - 26th August 2006, 17:48
  4. GLCD 128x64 with KS0108 controller
    By Darklakebridge7 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 5th December 2005, 22:06
  5. OT: KS0108 Graphics LCD control question
    By Archilochus in forum General
    Replies: 2
    Last Post: - 18th December 2004, 19:23

Members who have read this thread : 29

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts