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
    These are very cool. And cheap. And work! lol

    i have yet to test the temp sensor. It has a button also. The speaker isnt there tho. It has the 2 cirlcles in the middle tho as the connection. Remember this was from a CELL PHONE so im sure the speaker for it would be too small anyway. But you can use the connection as a button if you have a old cell phone and take out the little buttons with that tape on it and place it there. Ill take a picture on how to tomorrow.
     
  2. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    dude bad news!!!

    I tried to make a set pixel command and noticed along the way that since im setting 1 byte at a time and not indiviual pixels that i need to read the old value on the GLCD then OR it with new value to make it look like its setting pixels. Because if i dont i might mistakenly clear a black/on pixel.


    EDIT:
    More bad news. I need to trace these pinout If i wish to read the GLCD.

    A0 = PIN 4 (D/C)(display or control) aka (data or command)(user controlled)
    RD = No PIN (data bus is in an output status when this signal is “L”. H = input)(i think pulled high)
    WR = No PIN (When R/W = “H”: Read. L = Write)(I think pulled low)
     
    Last edited: May 24, 2009
  3. Sceadwian

    Sceadwian Banned

    Joined:
    Oct 27, 2006
    Messages:
    14,047
    Likes:
    141
    Location:
    Rochester, US
    Where's the IC for the display? You never posted a picture of the other side of the board.
     
  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

    Heh here is the back:
     

    Attached Files:

  6. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    I made altered the text function to underline and strike through text. Of course you can do both at the same time if you wish :D
    Here is the code... also it can now take different font sizes. I have 2-8x8 fonts and 1-5x7 font.
    Code (text):

    void LCDString(rom unsigned char *str, unsigned char myFont, unsigned char fade, unsigned char typed, unsigned char style){
        char x;
        char y;
        char fontSize,orWith;
        char MyData;

        switch(myFont){
            case 1:
                fontSize = 8;
                break;
            case 2:
                fontSize = 8;
                break;
            case 3:
                fontSize = 5;
                break;
        }
        switch(style){
            case 'u':       //underline
                orWith = 0x80;
                break;
            case 's':       //strikes
                orWith = 0x10;
                break;
            case 0x00:
                orWith = 0x00;
                break;
        }

        while(*str != 0){
            y = *str++;
            y -= 0x20;

            for(x=0;x<fontSize;x++){
                if(myFont == 1)
                        MyData = FontA[y][x] | orWith;
                if(myFont == 2)
                        MyData = FontB[y][x] | orWith;
                if(myFont == 3)
                        MyData = Atom5x8[y][x] | orWith;

                LCD_Send(MyData,1);

                if(fade > 0)
                    Delay1KTCYx(fade);
            }
            if(typed > 0)
                Delay10KTCYx(typed);

        }
    }
     
    Here it how it looks:
     

    Attached Files:

  7. Mr RB

    Mr RB Well-Known Member

    Joined:
    Jul 22, 2008
    Messages:
    4,716
    Likes:
    194
    Location:
    Out there
    Cool. Your 5x7 font needs an extra horizontal pixel between letters. :)
     
  8. VISN

    VISN Member

    Joined:
    Jan 11, 2008
    Messages:
    55
    Likes:
    1
    Location:
    Durban,SOUTH AFRICA
    I see hot glue melted over the connecting wires to hold them in place. How did you connect the wires - soldered to the lcd connector, or did you plug a breakout board with the matching connector?
     
  9. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    VISN:
    soldered :D nice observation. I wish i had a breakout :D

    Mr RB:
    Yeah i know :D i was trying to create my own but as you can see im not that good at font creation :)

    you know of a good 5x7 Font already made?

    The issue is i scan fonts from top to bottom and left to right like ad would be:
    11111100
    10000010
    10000001
    10000001
    10000010
    10000100
    11111000

    The first hex is 0xFF and a total of 5 Bytes for me, most fonts are from LEFT to RIGHT then TOP to BOTTOM so most would have a 0xFC instead and be 7 bytes long.
     
  10. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    heh was bored:
    (This video is still being processed. Video quality may improve once processing is complete. )
    [embed]http://www.youtube.com/v/hv3LRuQ0Qkw[/embed]
     
    Last edited: May 26, 2009
  11. Sceadwian

    Sceadwian Banned

    Joined:
    Oct 27, 2006
    Messages:
    14,047
    Likes:
    141
    Location:
    Rochester, US
    Alrighty smarty. Lets see a program which lets you vary all three values with at least 8 levels per colour =)

    By the way, if there's a user of the year award ever given away here, I think your in the running. Between the code, the excellent schematics and the video results it's all top notch posted right there for everyone to see. Good stuff.
     
  12. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    heh Thanks a bunch! i would be happy just to be in the running :D

    I dont do PWM lol hate trying to do 3 at a time arg.. i get lost.. maybe because all my pics have 2 hardware only and the third would have to be in software

    Im going to clean up the code for the menu. Its a mess :D
     
    Last edited: May 26, 2009
  13. exdwh

    exdwh New Member

    Joined:
    May 26, 2009
    Messages:
    4
    Likes:
    0
    Jason,

    1) The photos might look a little clearer if you removed the protective film.

    2) Have you confirmed the resolution?

    --David
     
  14. Sceadwian

    Sceadwian Banned

    Joined:
    Oct 27, 2006
    Messages:
    14,047
    Likes:
    141
    Location:
    Rochester, US
    I wouldn't touch that protective film until it's in a unit to be used. Mike2545 sent me a butterlfy a ways back, the protective cover is still on it.
     
  15. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    I would never remove the protective film. I might be smart but im a messy guy lol
    it would be unreadable if i had removed it lol

    Yes I can fit :
    12 (x 8 bits = 96 pixels) letters on screen from left to right and
    8 (x 8 bits = 64 pixels ) down from top so thats 96x64.

    The only wierd thing is the pixels on the left start at 18 aka 0x12. But its still 96 pixels from there on.

    Here is my code for the menu. Its not the best coding but works like a charm. Even include a last menu to turn off leds and hide arrow on screen. Ill take a picture of the 4 stages.

    Code (text):

    void UpdateMenu(void){
        unsigned char leftL, leftH, topV,x;
    /*
        char left = 104;        //88 + 18 = 104 //I add 18 becuase the LCD starts on pixel 18 not 1

        leftH = left >> 4;      //Calculate The Left Pixel
        leftH |= 0x10;          //Get upper byte in LeftH OR with 0x10 to prodcuce a valid command
        leftL = left & 0x0F;    //Get lower byte in LeftL
    //  Older Code remove with next 2 lines
    */
        leftH = 22;                 //Since this is a constant value i did the math
        leftL = 8;                  //to save some time and placed it here
       
        topV = 0xB0 + Top_POS;      //Get the Top position and add 0xB0 to set the row (TOP)

        if(Menu_POS > 3) {          //If in Item 4 aka 0 erase arrow on 3
            LCD_Send((topV-1),0);   //Send Top Position - 1 this way we get the arrow on 3
            LCD_Send(leftH,0);      //Send Upper Left Position
            LCD_Send(leftL,0);      //Send Lower Left Position

            for(x=0;x<8;x++)        //Clear the arrow by setting to all 0's
                LCD_Send(0x00,1);

            Menu_POS = 0;           //Clear the Menu Position
            Top_POS = Top_STA;      //Reset the Top Start
        }
       
        if(Menu_POS > 0){               //If item is greater than 0 do below
            if(Menu_POS > 1){           //If in Item 2 erase arrow on 1 or 3 erase arrow on 2
                LCD_Send((topV-1),0);   //Send Top Position
                LCD_Send(leftH,0);      //Send Upper Left Position
                LCD_Send(leftL,0);      //Send Lower Left Position

                for(x=0;x<8;x++)        //clear the old arrow
                    LCD_Send(0x00,1);
            }

            LCD_Send(topV,0);       //Send New Top Position
            LCD_Send(leftH,0);      //Send Upper Left Position
            LCD_Send(leftL,0);      //Send Lower Left Position

            for(x=0;x<8;x++)        //Send out our arrow which is added to the FontA and FontB
                LCD_Send(FontB[96][x],1);
        }

        switch(Menu_POS){           //This is the actual command to set the LEDs
            case 0:
                LATB = 0b00000111;  //Common Anode so to turn on i need Logic Low to turn on led.
                break;
            case 1:
                LATB = 0b00000110;
                break;
            case 2:
                LATB = 0b00000101;
                break;
            case 3:
                LATB = 0b00000011;
                break;
        }
    }
     
    Im calling it like:
    Code (text):

        while(1){
            if(button == 0){
                Menu_POS++;
                Top_POS++;
                UpdateMenu();
                Delay10KTCYx(100);
            }
        }
     
     
    Last edited: May 26, 2009
  16. exdwh

    exdwh New Member

    Joined:
    May 26, 2009
    Messages:
    4
    Likes:
    0
    Jason,

    I thought maybe there were actually 65 pixels.

    The pixels are offset to simplify the controller/LCD connection. I've seen that before.

    --David
     
  17. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    Just noticed pictures wont show my LED Color. So i took off the flash lol and here ya go from left to right is Menu items 0-3:
     

    Attached Files:

    • 1.jpg
      1.jpg
      File size:
      26.4 KB
      Views:
      196
    • 2.jpg
      2.jpg
      File size:
      25.4 KB
      Views:
      184
    • 3.jpg
      3.jpg
      File size:
      29.3 KB
      Views:
      165
    • 4.jpg
      4.jpg
      File size:
      25.8 KB
      Views:
      165
  18. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    New top banner! lol bored:
     

    Attached Files:

    • a.jpg
      a.jpg
      File size:
      47.1 KB
      Views:
      199
    • b.jpg
      b.jpg
      File size:
      43 KB
      Views:
      162
    • c.jpg
      c.jpg
      File size:
      43.4 KB
      Views:
      152
    • d.jpg
      d.jpg
      File size:
      41 KB
      Views:
      150
  19. geraldes

    geraldes New Member

    Joined:
    Apr 28, 2009
    Messages:
    4
    Likes:
    0
    Graphic LCD 96x64 w/ SED1565 Controller connector

    Hi everybody,
    Does anyone know where to find the connector for these LCD's.
    Thank you.

    Geraldes
     
  20. AtomSoft

    AtomSoft Well-Known Member

    Joined:
    Feb 7, 2008
    Messages:
    5,670
    Likes:
    41
    Location:
    Brooklyn, NY US
    heh would you believe there isnt one ? i dont but i doubt there is one. I think it was pushed against the PCB and held there.

    Im designing a board and holder right now in 3d studio max (3D CAD software) to hopefully get it produced as a board so i can stock em and sell em.

    Im make a rough draft drawing now.
     
  21. DirtyLude

    DirtyLude Well-Known Member

    Joined:
    Aug 5, 2003
    Messages:
    1,904
    Likes:
    56
    Location:
    Toronto, Canada
    Looking at the pictures, it's an FPC connector of some kind. It doesn't look standard though, since the FPC seems to extend to the left and right even when the contacts stop.

    I ordered a few of the E-Bay $1 ones. I really don't have a specific use right now, but I'm thinking maybe add it to an RF remote with an MSP430 and a CC1100 low power RF transceiver. It'll give much better visual feedback on controlled devices and use very little power for a battery operated device.
     

Share This Page