Displaying and scrolling large amount of text on 8x14 led dot matrix display?


Closed Thread
Results 1 to 12 of 12

Hybrid View

  1. #1
    Join Date
    Feb 2013
    Posts
    1,122

    Default Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    Hello!

    I'm building a custom stereo spectrum analyzer for home system. It will have 8x14 led dot matrix display. Having such nice display inspired me to use it for showing additional data, such as name of input selected, show volume level while adjusting and so on. The problem is that EPROM space of chip I want to use PIC16F887 is quite limited, so having whole font in memory is not possible.

    My approach is as follows:

    1. Attach an external eeprom chip, where letter graphics and other symbols will be stored
    2. create a lookup table, so we know that say data for "B" starts at address F940 and data for "X" starts say at FFCD.
    3. Alocate a virtual "frame buffer" in chip eeprom, which will be read by separate routine in interrupt, which will update the display.
    4. As needed, transfer data from external eeprom to internal.

    The question is, to have smooth display, I will need to update it at least 30 times per second. Reading internal eeprom so much times will cause it to fail quite fast, I guess? The possible workaround is to use SRAM chip, but maybe I'm making things too complicated and there are simpler ways to solve it? I don't want to use external IC like MAX7219 or similar, I want to do everything purely my MCU powers.

  2. #2
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    For 8x14 bits it’s far from unreasonable to store the frame buffer in the pic’s RAM as 14 bytes.
    It may take time to write from EEPROM to the frame buffer in RAM, but at least when it comes time
    to update the display frame, that can be fast so you don’t see the display being drawn.

  3. #3
    Join Date
    May 2013
    Location
    australia
    Posts
    2,631


    Did you find this post helpful? Yes | No

    Default Re: Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    a 14x8 font would be nicely accommodated in a pic16's flash pgm memory (its 14 bits wide) if you have the space

  4. #4
    Join Date
    Feb 2013
    Posts
    1,122


    Did you find this post helpful? Yes | No

    Default Re: Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    14x8 is the display dimensions. Actual "font" and graphics will be smaller, say 5x8.

  5. #5
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default Re: Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    CouriousOne, the question:" I will need to update it at least 30 times per second. Reading internal eeprom so much times will cause it to fail quite fast, I guess? " NO reading the eeprom from the particular processor will not wear it out BUT, Writing to the same locations of PROGRAM MEMORY more than 1000 or so times will. Also writing to internal EEPROM MEMORY more than 100,000 times will.
    Dave Purola,
    N8NTA
    EN82fn

  6. #6
    Join Date
    Aug 2003
    Posts
    985


    Did you find this post helpful? Yes | No

    Default Re: Displaying and scrolling large amount of text on 8x14 led dot matrix display?

    A 5x8 font with uppercase characters, digits and basic punctuation is 472 bytes,
    but if you only need to use several words and omit characters you don’t need,
    it may fit on the 256 bytes on chip EEPROM, or a combination of on-chip EEPROM and program memory.

    Here is the 5x8 font used by the hitachi LCD controllers (if the forum fits it in the post)
    It’s in a C array, but the data is the same.

    You’ll notice the bottom value is always zero because the character display is actually only 5x7,
    so that’s a decent head start

    Code:
    unsigned char charmap[472]={
    	0b00000, // Space _ 0x20
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000, //
    	0b00100, // Exclamation ! 0x21
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00000,
    	0b00000,
    	0b00100,
    	0b00000, //
    	0b01010, // Inverted Commas " 0x22
    	0b01010,
    	0b01010,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000, //
    	0b01010, // Hash # 0x23
    	0b01010,
    	0b11111,
    	0b01010,
    	0b11111,
    	0b01010,
    	0b01010,
    	0b00000, //
    	0b00100, // Dollar Sign $ 0x24
    	0b01111,
    	0b10100,
    	0b01110,
    	0b00101,
    	0b11110,
    	0b00100,
    	0b00000, //
    	0b11000, // Percent Sign % 0x25
    	0b11001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b10011,
    	0b00011,
    	0b00000, //
    	0b01100, // And Sign & 0x26
    	0b10010,
    	0b10100,
    	0b01000,
    	0b10101,
    	0b10010,
    	0b01101,
    	0b00000, //
    	0b01100, // Inverted Comma ' 0x27
    	0b00100,
    	0b01000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000, //
    	0b00010, // Open Bracket ( 0x28
    	0b00100,
    	0b01000,
    	0b01000,
    	0b01000,
    	0b00100,
    	0b00010,
    	0b00000, //
    	0b01000, // Close Bracket ) 0x29
    	0b00100,
    	0b00010,
    	0b00010,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b00000, //
    	0b00000, // Asterisk * 0x2A
    	0b00100,
    	0b10101,
    	0b01110,
    	0b10101,
    	0b00100,
    	0b00000,
    	0b00000, //
    	0b00000, // Plus Sign + 0x2B
    	0b00100,
    	0b00100,
    	0b11111,
    	0b00100,
    	0b00100,
    	0b00000,
    	0b00000, // Comma , 0x2C
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b01100,
    	0b00100,
    	0b01000,
    	0b00000, //
    	0b00000, // Dash/Minus Sign - 0x2D
    	0b00000,
    	0b00000,
    	0b11111,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000, //
    	0b00000, // Period/Decimal Point . 0x2E
    	0b00000,
    	0b00000,
    	0b00000,
    	0b00000,
    	0b01100,
    	0b01100,
    	0b00000, //
    	0b00000, // Forward Slash / 0x2F
    	0b00001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b10000,
    	0b00000,
    	0b00000, //
    	0b01110, // 0 0x30
    	0b10001,
    	0b10011,
    	0b10101,
    	0b11001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b00100, // 1 0x31
    	0b01100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b01110,
    	0b00000, //
    	0b01110, // 2 0x32
    	0b10001,
    	0b00001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b11111,
    	0b00000, //
    	0b11111, // 3 0x33
    	0b00010,
    	0b00100,
    	0b00010,
    	0b00001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b00010, // 4 0x34
    	0b00110,
    	0b01010,
    	0b10010,
    	0b11111,
    	0b00010,
    	0b00010,
    	0b00000, //
    	0b11111, // 5 0x35
    	0b10000,
    	0b11110,
    	0b00001,
    	0b00001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b00110, // 6 0x36
    	0b01000,
    	0b10000,
    	0b11110,
    	0b10001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b11111, // 7 0x37
    	0b00001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b01000,
    	0b01000,
    	0b00000, //
    	0b01110, // 8 0x38
    	0b10001,
    	0b10001,
    	0b01110,
    	0b10001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b01110, // 9 0x39
    	0b10001,
    	0b10001,
    	0b01111,
    	0b00001,
    	0b00010,
    	0b01100,
    	0b00000, //
    	0b00000, // Colon : 0x3A
    	0b01100,
    	0b01100,
    	0b00000,
    	0b01100,
    	0b01100,
    	0b00000,
    	0b00000, //
    	0b00000, // Semi Colon ; 0x3B
    	0b01100,
    	0b01100,
    	0b00000,
    	0b01100,
    	0b00100,
    	0b01000,
    	0b00000, //
    	0b00010, // Less Than Sign < 0x3C
    	0b00100,
    	0b01000,
    	0b10000,
    	0b01000,
    	0b00100,
    	0b00010,
    	0b00000, //
    	0b00000, // Equals Sign = 0x3D
    	0b00000,
    	0b11111,
    	0b00000,
    	0b11111,
    	0b00000,
    	0b00000,
    	0b00000, //
    	0b01000, // Greater Than Sign > 0x3E
    	0b00100,
    	0b00010,
    	0b00001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b00000, //
    	0b01110, // Question Mark ? 0x3F
    	0b10001,
    	0b00001,
    	0b00010,
    	0b00100,
    	0b00000,
    	0b00100,
    	0b00000, //
    	0b01110, // Ampersand @ 0x40
    	0b10001,
    	0b00001,
    	0b01101,
    	0b10101,
    	0b10101,
    	0b01110,
    	0b00000, //
    	0b01110, // A 0x41
    	0b10001,
    	0b10001,
    	0b10001,
    	0b11111,
    	0b10001,
    	0b10001,
    	0b00000, //
    	0b11110, // B 0x42
    	0b10001,
    	0b10001,
    	0b11111,
    	0b10001,
    	0b10001,
    	0b11110,
    	0b00000, //
    	0b01110, // C 0x43
    	0b10001,
    	0b10000,
    	0b10000,
    	0b10000,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b11100, // D 0x44
    	0b10010,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10010,
    	0b11100,
    	0b00000, //
    	0b11111, // E 0x45
    	0b10000,
    	0b10000,
    	0b11110,
    	0b10000,
    	0b10000,
    	0b11111,
    	0b00000, //
    	0b11111, // F 0x46
    	0b10000,
    	0b10000,
    	0b11110,
    	0b10000,
    	0b10000,
    	0b10000,
    	0b00000, //
    	0b01110, // G 0x47
    	0b10001,
    	0b10000,
    	0b10111,
    	0b10001,
    	0b10001,
    	0b01111,
    	0b00000, //
    	0b10001, // H 0x48
    	0b10001,
    	0b10001,
    	0b11111,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b00000, //
    	0b01110, // I 0x49
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b01110,
    	0b00000, //
    	0b00111, // J 0x4A
    	0b00010,
    	0b00010,
    	0b00010,
    	0b00010,
    	0b10010,
    	0b01100,
    	0b00000, //
    	0b10001, // K 0x4B
    	0b10010,
    	0b10100,
    	0b11000,
    	0b10100,
    	0b10010,
    	0b10001,
    	0b00000, //
    	0b10000, // L 0x4C
    	0b10000,
    	0b10000,
    	0b10000,
    	0b10000,
    	0b10000,
    	0b11111,
    	0b00000, //
    	0b10001, // M 0x4D
    	0b11011,
    	0b10101,
    	0b10101,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b00000, //
    	0b10001, // N 0x4E
    	0b10001,
    	0b11001,
    	0b10101,
    	0b10011,
    	0b10001,
    	0b10001,
    	0b00000, //
    	0b01110, // O 0x4F
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b11110, // P 0x50
    	0b10001,
    	0b10001,
    	0b11110,
    	0b10000,
    	0b10000,
    	0b10000,
    	0b00000, //
    	0b01110, // Q 0x51
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10101,
    	0b10010,
    	0b01101,
    	0b00000, //
    	0b11110, // R 0x52
    	0b10001,
    	0b10001,
    	0b11110,
    	0b10100,
    	0b10010,
    	0b10001,
    	0b00000, //
    	0b01111, // S 0x53
    	0b10000,
    	0b10000,
    	0b01110,
    	0b00001,
    	0b00001,
    	0b11110,
    	0b00000, //
    	0b11111, // T 0x54
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00000, //
    	0b10001, // U 0x55
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b01110,
    	0b00000, //
    	0b10001, // V 0x56
    	0b10001,
    	0b10001,
    	0b10001,
    	0b10001,
    	0b01110,
    	0b00100,
    	0b00000, //
    	0b10001, // W 0x57
    	0b10001,
    	0b10001,
    	0b10101,
    	0b10101,
    	0b10101,
    	0b01010,
    	0b00000, //
    	0b10001, // X 0x58
    	0b10001,
    	0b01010,
    	0b00100,
    	0b01010,
    	0b10001,
    	0b10001,
    	0b00000, //
    	0b10001, // Y 0x59
    	0b10001,
    	0b10001,
    	0b01010,
    	0b00100,
    	0b00100,
    	0b00100,
    	0b00000, //
    	0b11111, // Z 0x5A
    	0b00001,
    	0b00010,
    	0b00100,
    	0b01000,
    	0b10000,
    	0b11111,
    	0b00000,};
    //
    Last edited by Art; - 2nd December 2015 at 05:46.

Similar Threads

  1. Sure Electronics 0832 Dot Matrix Display
    By wellyboot in forum Code Examples
    Replies: 10
    Last Post: - 2nd January 2013, 19:50
  2. Sure Electronics Dot Matrix Display
    By Bill Legge in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 6th May 2010, 13:30
  3. SureElectronics LED Dot Matrix Display
    By DanPBP in forum Off Topic
    Replies: 4
    Last Post: - 4th October 2009, 20:10
  4. 5x7 LED Matrix Scrolling Display
    By roycarlson in forum mel PIC BASIC Pro
    Replies: 18
    Last Post: - 4th August 2008, 23:50
  5. Scrolling text on display
    By Srigopal007 in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 6th August 2005, 15:13

Members who have read this thread : 1

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