1. Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.
    Dismiss Notice

Graphic LCD 96x64 w/ SED1565 Controller

Discussion in 'Microcontrollers' started by AtomSoft, May 23, 2009.

  1. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    Just thought id share this:
    [embed]http://www.youtube.com/v/nUtoQcjFIU8[/embed]
     
    Last edited: Jul 2, 2009
  2. Triode

    Triode Member

    Joined:
    Feb 11, 2009
    Messages:
    925
    Likes:
    22
    Location:
    Bay Area
    I just got mine in the mail. I only have 5 and 12V regulators, do you think it would do ok with 5v?
     
  3. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    if you check my ebay listing it says yes :D I have some for sale too :D

    I have been using it on 5v for a while now and no issue. Im not 100% sure of the long term use but it seems to be fine on 5v.
     
  4. dave

    Dave New Member

    Joined:
    Jan 12, 1997
    Messages:
    -
    Likes:
    0


     
  5. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US

    Hey guys this might be a dumb question but is ROM editable?
    Like if i use :
    Code (text):

    unsigned rom char someVar[20];
     
    Can i edit these values?
     
    Last edited: Jul 5, 2009
  6. 3v0

    3v0 Coop Build Coordinator Forum Supporter

    Joined:
    Jul 14, 2006
    Messages:
    9,404
    Likes:
    227
    Location:
    OKLAHOMA USA
    I am not sure what you mean by editable?

    You can set their value at compile time. (In the source code)
    You can not change their value during run time.

    The values are stored in flash.
     
    Last edited: Jul 5, 2009
  7. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    darn ok cool thanks!

    I guess eeprom or editing the linker is the only way to gain ram(SPACE) :D
     
  8. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    Can someone help me create a 800 byte buffer lol its for a 18F2525

    This is my usage so far:
    [​IMG]
     

    Attached Files:

    Last edited: Jul 5, 2009
  9. DirtyLude

    DirtyLude Well-Known Member

    Joined:
    Aug 5, 2003
    Messages:
    1,904
    Likes:
    56
    Location:
    Toronto, Canada
    You can reflash pages within your program, same way you do with a boot loader or serial programmer, but that's really meant for permanent storing variables that you don't want lost in a power down.

    If you want RAM, you can use SRAM rather than EEPROM, which is faster, but obviously you lose everything on power down.
     
  10. DirtyLude

    DirtyLude Well-Known Member

    Joined:
    Aug 5, 2003
    Messages:
    1,904
    Likes:
    56
    Location:
    Toronto, Canada
    You just want a FIFO buffer? If you search 'ring buffer' and 'C library' and combinations, there's lots of example code for it out there.
     
  11. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    oh man i even forgot about the option for external ram lol thanks!

    Any thoughts of internal (software) type fixes for now?
     
  12. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    I need it to store the entire screen. Like this dude did but on a ARM7. Its a pain in the butt for C18 :)
     
  13. 3v0

    3v0 Coop Build Coordinator Forum Supporter

    Joined:
    Jul 14, 2006
    Messages:
    9,404
    Likes:
    227
    Location:
    OKLAHOMA USA
    If you are getting the error
    Error [1300] stack frame too large

    A simple way to fix it is to make the variable global.
    If you put it inside main or any other function it will allocate memory from the stack. If you make it global it does not.

    Give it a try.

    3v0
     
  14. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    im getting this:
    Code (text):

    MPLINK 4.31, Linker
    Copyright (c) 2009 Microchip Technology Inc.
    Error - section '.udata_nokia7110.o' can not fit the section. Section '.udata_nokia7110.o' length=0x00000304
    Errors    : 1
     
    Im trying to create:
    Code (text):

    unsigned char ScreenBuff[770];
     
     
  15. DirtyLude

    DirtyLude Well-Known Member

    Joined:
    Aug 5, 2003
    Messages:
    1,904
    Likes:
    56
    Location:
    Toronto, Canada
    You could make up a scheme to code everything. It's complex, but since there's mostly blank columns your buffer could be encoded sort of like RLE (run length encoding), but modified. I can envision what it would take, but it would be complicated to maintain. Your buffer would be dynamic and data would need to be moved around a lot. It would also mean that you couldn't have too much data on the screen or your buffer would have the potential to grow larger than a straight dedicated buffer.
     
  16. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    The only fix i know of is :
    Code (text):

    #pragma idata bigdata
        unsigned char ScreenBuff[770];
    #pragma idata
     
    Linker Modification :
    Code (text):

    DATABANK   NAME=gpr10      START=0xA00          END=0xDFF   //END=0xAFF
    //DATABANK   NAME=gpr11      START=0xB00          END=0xBFF
    //DATABANK   NAME=gpr12      START=0xC00          END=0xCFF
    //DATABANK   NAME=gpr13      START=0xD00          END=0xDFF
    ....
    .....
    .......
    SECTION    NAME=bigdata    RAM=gpr10
     
     
    Last edited: Jul 5, 2009
  17. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    Thanks guys here are some of the functions i have working.

    Code (text):

    void LCDCircle(char top, char left, char radius);
    void SetPixel(unsigned char top, unsigned char left);
    void LCDRect(char x0, char y0, char width, char height);
    void LCDImage(rom unsigned char *image,char left, char top);
    void LCDLine(char top0, char left0, char top1, char left1);
    void LCDChar(unsigned char letter,unsigned char font,unsigned char style,unsigned char top, unsigned char left);
    void LCDString(rom unsigned char *str,unsigned char font,unsigned char style,unsigned char top, unsigned char left);

     
    All working 100% so far. Will release in a week or so :D
     
  18. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    heh look :
    [embed]http://www.youtube.com/v/FZmpXWFuLyQ[/embed]

    Main Code:
    Code (text):

    #include <p18f2525.h>
    #include "nokia7110.h"

    #pragma config WDT = OFF, LVP = OFF, OSC = INTIO67, XINST = OFF

    unsigned rom char foot[770] = { 96,64,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  128,  128,  128,  192,  192,  128,  128,  128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  192,  224,  240,  240,  248,  248,  252,  252,  252,  252,  252,  248,  248,  240,  240,  224,  192,  128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  128,  224,  240,  248,  252,  254,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  252,  0,  0,  56,  124,  124,  252,  252,  252,  252,  252,  248,  248,  112,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  31,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  254,  254,  252,  248,  248,  240,  240,  224,  224,  192,  192,  192,  128,  128,  128,  128,  128,  128,  128,  128,  128,  192,  192,  224,  224,  240,  240,  248,  252,  254,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  127,  31,  7,  3,  0,  0,  48,  112,  248,  248,  248,  240,  240,  97,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  3,  3,  7,  7,  15,  15,  15,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,  63,  63,  63,  63,  127,  127,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  255,  127,  15,  0,  128,  128,  196,  142,  158,  158,  30,  62,  30,  28,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  3,  3,  3,  7,  7,  7,  15,  15,  31,  31,  31,  63,  63,  63,  127,  127,  127,  127,  127,  127,  127,  127,  63,  63,  31,  31,  15,  3,  49,  112,  240,  240,  243,  227,  71,  7,  7,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
    };
    void main(void);

    void main(void){
        char a,b,c,d;

        OSCCON = 0x72;                  //8MHz clock
        while(!OSCCONbits.IOFS);        //wait for osc stable

        LCD_Init();
        ClearBuff();

        while(1){
            CLS();
            LCDString((unsigned rom char*)"AtomSoftTech    ",0,None,0,0);
            LCDString((unsigned rom char*)"   .info        ",0,None,1,0);
            LCDString((unsigned rom char*)" Nokia 7110 LCD ",0,None,3,0);
            LCDString((unsigned rom char*)"Author:",1,Underline,5,0);
            LCDString((unsigned rom char*)"Jason Lopez     ",0,None,7,0);
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

            CLS();
            LCDImage(foot,0,0);
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

            CLS();
            for(d=0;d<8;d++){
                b=0;
                for(a=0;a<96;a++){
                    SetPixel(b+(d*8),a);
                    b++;
                    if(b==8)b=0;
                }
            }
            SendBuff();
            ClearBuff();
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

            CLS();
            LCDLine(5,10,5,80);
            SendBuff();
            ClearBuff();
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

            CLS();
            LCDCircle(20,20,10);
            LCDCircle(30,30,10);
            LCDCircle(36,36,10);
            SendBuff();
            ClearBuff();
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

            CLS();
            LCDRect(20,20,40,20);
            SendBuff();
            ClearBuff();
            while(bitchk(LCD_PORT,BTN));
            Delay10KTCYx(10);

        }
    }


     
     
    Last edited: Jul 5, 2009
  19. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
  20. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    New cube function:
    Code (text):

    void LCDCube(char Sq0T,char Sq0L,char Sq1T,char Sq1L,char width, char height) {
    unsigned char x,y;
    unsigned char a,b;

            x = Sq0L + width;
            y = Sq1L + width;
            a = Sq0T + height;
            b = Sq1T + height;

            LCDRect(Sq0T,Sq0L,width,height);
            LCDRect(Sq1T,Sq1L,width,height);
            LCDLine(Sq0T,Sq0L,Sq1T,Sq1L);
            LCDLine(Sq0T,x,Sq1T,y);
            LCDLine(a,Sq0L,b,Sq1L);
            LCDLine(a,x,b,y);
    }
     
    Testing:
    [embed]http://www.youtube.com/v/ndN85VYCu9M[/embed]
     
    Last edited: Jul 6, 2009
  21. 3v0

    3v0 Coop Build Coordinator Forum Supporter

    Joined:
    Jul 14, 2006
    Messages:
    9,404
    Likes:
    227
    Location:
    OKLAHOMA USA
    Is hidden line removal next ???

    Just kidding. Great job, I am looking forward to using your code. :)

    3v0
     

Share This Page