Creative Commons images are CC BY-NC-SA 3.0

69.95

added to your
shopping cart

quantity
Only 12 left! 12 in stock
69.95 1+ units
62.96 10+ units
55.96 100+ units

Description: This is a very large serial graphic LCD. The Serial Graphic LCD backpack is soldered to the 160x128 pixel “Huge” Graphic LCD and provides the user a simple serial interface to a full range of controls.

Besides writing text, this serial graphic LCD allows the user to draw lines, circles and boxes, set or reset individual pixels, erase specific blocks of the display, control the backlight and adjust the baud rate. There's also a reverse mode that allows the screen to operate blue on white instead of white on blue. Additionally, all source code for the ATMega168 processor is compiled using the free WinAVR compiler and is free for downloading.

Features:

  • Voltage: 6V – 7V DC
  • Current: 220mA (backlight at 100%)
  • Input: 0-5V, 115,200bps (adjustable), 8 data bits, 1 stop bit, no parity

Dimensions: 4x5x0.65" (102x129x17mm)

Documents:

Comments 62 comments

  • Hi, I have just stored in Sourceforge.net my version of the wonderful SerialGLCD software, for 160x128 display:

    http://sourceforge.net/projects/serialglcd-huge/

    to make things like this:

    http://img62.imageshack.us/img62/868/pantallahuge.jpg

    Enjoy it..!

    :-)

    • I have just updated this software, with an full Example of using, at the end of main file.

      Code is here:

      http://sourceforge.net/projects/serialglcd-huge/

      The Example screen is:

      ""

    • Do you have an example of same code but with I2C interface for this type of display. Thanks

  • I think it’s pretty cheesy to be selling a “serial backpack” that’s so loaded with bugs as to be unusable. That’s right, I said “bugs”. Not being able to handle a CR or a LF for a terminal-type app is more than a bug, it’s an embarrassment! Save your money and do not buy anything with the “Serial Graphic LCD Backpack” until Sparkfun fixes the product. They’ve known about this problem since last August when I reported it and as far as I know, they’ve yet to fix it. I don’t know what the deal is, Sparkfun is usually pretty good about fixing things.

  • I’m having the same problem as BI00hazzard.
    I can’t seem to decipher the X,Y coordinate Command Flags.
    I’m using an Arduino Duemilanlove.
    Any help would be much appreciated.
    Tnx

    • spranger, do you think you could provide a link to the code you are using with the arduino. are you just using the code supplied, or did you modify it. I have the duemilinove with a 328P and am planning on getting this LCD.

  • All those messages are very old. Is it because today all bugs are gone and this product is strong?

  • Hello,

    I created a serial interface for 128x64 graphic LCD, this reduces the pin requirement from 14 to just 2. Check it out: -

    https://sites.google.com/site/hobbydebraj/home/2-line-interface-for-graphic-lcd

  • I’m an electrical engineer at Purdue. My classmate and I didn’t get this screen working. We blame the software on the backpack. Noticed some others have fixed the software for smaller sized screens, but not this one. When I called Sparkfun to talk about returning it, I was told it at least sorta works. It sounded like he meant that selling it for 2 years proves it works.

  • Got it to print characters. None of the characters I was trying to print. I blame the backpack. (or connections thereto)

    Has anyone used tterm or ttermpro to talk to this thing? Is there something incorrect about the terminal emulation that makes it not work?

    • Ive used it through good old HyperTerminal without any major problems, aside from the command flag 0x7C or the ‘|’ button sometimes does not go through properly or it does when i haven’t pressed it, causing a loop when it trys to receive the next byte for the actual command, and im still typing things. So using a terminal was a little bit buggy, had to reset it a few times but mostly it was alright. You might be using the incorrect baud rate?

  • Dear All,
    I tried to use this display as a user interface to an over molding machine, i spend a month to get it to work more or less functional, but slow, I had to put in a lot of delays to make the display happy. In the end i used a propeller chip as a vga screen driver, the cost are 200 % more but it works like a Ferrari, super fast (115200) and no glitches. Volker

  • Any chance we will get an official SFE update to the firmware?
    I can only send text to LCD from my ATmega, it doesn’t recognize control characters.

  • i´m having problems too, related to the code. Using arduino 328
    In function ‘int main()’: error: invalid conversion from ‘void ()(char)’ to ‘int ()(int)’ In function ‘int main()’:
    erro …. rprintf_devopen(put_char); / init rrprintf /
    Seems like it can convert from char to int.

  • Anyone have a problem with the DrawBox command putting block characters at the top of the screen? I’m using the Draw Box command repeatedly to create a bar graph. Every call to DrawBox draws the box, but I also get a 5 x 7 block in the upper left corner that progresses across the screen like I’m sending an extra character. Note that I’m using softSerial, and yes there is a delay between calls to this function:
    Here’s my function:
    void drawBox(byte x1, byte y1, byte x2, byte y2, boolean draw)
    {
    softSerial.print(0x7C, BYTE;
    softSerial.print(0x0F, BYTE);
    softSrial.print(x1, BYTE);
    softSerial.print(y1, BYTE);
    softSerial.print(x2, BYTE);
    softSerial.print(y2, BYTE);
    if (draw)
    softSerial.print(0x01, BYTE);
    else
    softSerial.print(0x00, BYTE);
    }

    • I was able to get this to work on the Arduino by just using the backpack code and the Datasheet as a ref. I converted Hex to Dec. and it looks to work fine. I also added a clear screen at the end of my code to keep character drifting out. Hooking it up through a Serial to USB cable helped in debugging calls.
      //draw box mid screen
      Serial.print(124, BYTE);//0x7C
      Serial.print(15, BYTE);
      Serial.print(0, BYTE);
      Serial.print(30, BYTE);
      Serial.print(135, BYTE);
      Serial.print(100, BYTE);
      Serial.print(1, BYTE);
      An Arduino .h file is next.

      • shouldn’t this do the same job in WinAVR?
        printf(“%d”,124);
        printf(“%d”,15);
        printf(“%d”,0);
        printf(“%d”,30);
        printf(“%d”,135);
        printf(“%d”,100);
        printf(“%d”,1);

  • Had been working with this model for a few months now. Made a wireless bluetooth display with it and written shaders for displaying grayscale graphics by varying pixel density (will post the Python code and screen grabs later).<br />
    <br />
    The display drains 4AA batteries (regulated down to 5V with a 7805) in about 8 hours with half the backlight intensity (and bluetooth mate operating off the same pack). Refreshing the image at maximum baud rate though a direct serial connection takes about 3 seconds. Serial transmission over bluetooth (using SparkFun’s bluetooth mate) slows down the full refresh to about 12 seconds, even when running on the same baud setting.<br />
    <br />
    The backlight causes shadow cast by darker pixels to bleed resulting in unpleasant visual artifacting, which is a lot less visible woth the “black on green” LCD’s (also sold by SparkFun). I’d recommend those for visual clarity and high contrast.<br />
    <br />
    The reasons to go for this display are: resolution, size and color, if the project you’re working on just has to be blue.<br />
    <br />
    Cons: Slow refresh rate (primarily due to LCD backpack processing of serial data). Low contrast. Bleeding shadows at high backlight settings.<br />
    <br />
    Good product overall.

  • I?ve just start working with the LCD. I?m trying to test it by using an serial emulator: 115,200bps , 8 data bits, 1 stop bit, no parity.
    Unfortunatly what I type is not the same that appears on the LCD. From the comments here, I saw that other people had this problem also. Does anybody know how to fix it?
    Thanks.

  • i just received this display and first of all when i got it it was all ready cut out of its electrostatic bag which is weird. Secondly i cant get this thing to work no matter what i try to do please help.
    thanks for any help

    • Mine came in a opened static bag aswell but worked fine.
      the sGLCD was buggy as hell when i got it but this was solved by upgrading the Atmega. maybe reflasing the Atmega may help you aswell.
      it would be best to contact the Tech support though.
      they have helped me get my picaxe programmer working which didnt work on arrival either. plus they respond within a day.

  • Spec says “Voltage: 6V ? 7V DC"
    I don’t have 6-7V available in the thing I’m building, so I’ve been using the 5V I get from an Arduino, and this seems to work just fine. The A is fed by a 9V wall-wart.
    What are drawbacks of that, if any? I could build in some power gizmo, but do I have to?

  • So…. if I want bigger font AND want to use the serial i/f, I need to update pixel by pixel using the Set/Reset Pixel command sequence. Right?

  • I’ve also added new-line processing, so it is a closer implementation of a glass-TTY. I found that writing strings to the screen was annoying without the backpack handling line endings.
    The algorithm should do something “reasonable” for PC and Linux/Unix line endings. I don’t know the MAC convention.
    Email me at carl dot mikkelsen at gmail dot com for a source distribution.

  • I have rewritten some of the serial communication code for the Graphic LCD Backpack to:
    1) implement a true, IRQ safe, circular buffer
    2) observe proper buffer discipline
    3) remove the “command near the end of buffer” cases
    4) increase the buffer to 512 bytes
    5) send X-OFF (S> when the buffer is ¾ full
    6) send X-ON (Q> when the buffer is back to ½ full
    This now has resolved some of the bugs I saw, and I can drive it much faster since the Arduino driving it need not guess how fast it can send.
    There are still a few random pixels appearing on the bottom line – probably a problem in the line-drawing code, as that is what I am heavily using.
    My question is, how do I release this code back to SparkFun (or anyone else?).
    Anyone wanting the code can email me at carlmikkelsengmailcom.
    I have a dual-Arduino test bench right now :) A Duemilanove as the ISP, and a MEGA as the test engine. Once I wired it up properly, it works quite well. Cudos to the Arduino development team.
    – Carl

  • well the source code is available and the backpack has an avr programmer header so someone could take a look at the firmware and optimize it a bit so it wont have that many bugs.
    i still find this lcd to be fun toying with.
    sure sometimes it does something wrong but its still better then having to control it manually.

  • I can’t get this screen to work correctly. I’m using a USB-to-rs232 cable from Sparkfun, and Termite terminal program to talk to it. When I send characters to the screen, they come out incorrect. For example, a lowercase “s” displays an uppercase “F”. Most characters are illegible/gibberish, though. It does not recognize the pipe “|” character and instead displays illegible pixels. The baudrate is correct, 115,200kbps …
    it gets worse when I try to talk to it with my ATmega128. Has anyone dealt with these kind of issues?

  • I found several bugs in the firmware of this display. For example, it sometimes does not decode the commands properly and prints garbage instead of decoding a coordinate change, or when drawing boxes and placing text in the same screen, it randomly prints characters or erases areas of the screen. Does anyone have any comments on this issue? I would like to know what development tool would be needed to modify the firmware inside the ATMega to fix these bugs or if (hopefully) anyone has already fixed them.
    Cheers!

  • I cobbled together this simple api to talk to the display in C:
    http://pastie.org/768576
    you’ll have to implement serialWrite yourself :-)
    It is true the firmware of the serial backpack is badly implemented and riddled with bugs, but I still find it useful and it’s open source so someone could easily fix it.

  • This display sucks, backpack has a lot of bugs:
    backlight is not adjustable.
    box draw command is not working, erase works fine.
    sometimes the backpack resets back to 115200 baud…

  • I can’t adjust the backlight on mine, it looks like the transistor Q1 arrived DOA (shorted closed). Does anyone know what the spec for this part is so I can try and replace it?

  • im having a little bit of diculties with the serial interface. at random intervals i find that the backpack fails to succesfully receive a byte. whats the best way to control this display with an arduino?
    im currently using Serial.print(var,BYTE) @ 115200.

  • That does not work correctly:
    $regfile = “M8def.dat"
    $crystal = 1000000
    $baud = 4800
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    Declare Sub Ser_cls
    Declare Sub Ser_kreis(byval X As Byte , Byval Y As Byte , Byval Radius As Byte , Byval Farbe As Byte)
    Const Befehl_folgt = &H7C
    Dim Kommando As Byte
    Do
    Call Ser_cls ‘Bildschirm loeschen
    Print "Hallo Welt ”;
    Wait 1
    Call Ser_kreis(80 , 64 , 5 , 1)
    Wait 4
    Loop
    End
    Sub Ser_cls
    Kommando = &H00
    Printbin Befehl_folgt ; Kommando; 'Bildschirm l?schen
    End Sub
    Sub Ser_demo
    Kommando = &H04
    Printbin Befehl_folgt ; Kommando; 'Demo
    End Sub
    Sub Ser_kreis(byval X As Byte , Byval Y As Byte , Byval Radius As Byte , Byval Farbe As Byte)
    Kommando = &H03
    Printbin Befehl_folgt ; Kommando ; X ; Y ; Radius ; Farbe ; 'print passed variables
    End Sub

  • That works:
    $regfile = “M8def.dat"
    $crystal = 1000000
    $baud = 4800
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    Declare Sub Ser_cls
    Const Befehl_folgt = &H7C
    Dim Kommando As Byte
    Do
    Call Ser_cls ‘Bildschirm loeschen
    Print "Hallo Welt ”;
    Wait 1
    'Wait 10
    Loop
    End
    Sub Ser_cls
    Kommando = &H00
    Printbin Befehl_folgt ; Kommando; 'Bildschirm l?schen
    End Sub

  • Hi,
    nice display.
    Does anyone have BASCOM source code for this display?
    I have some success (writing text, Clear Screen, Call Demo Code is working) but drawing circles is only working ‘half the way’ (it draws a circle which is too bif and it prints some strange characters). Setting coordinates does not work yet.
    Thank you
    Stefan

  • Is there a chance that new pieces will arrive soon?

  • I’m trying to run the serial 160x128 graphic lcd with a 16F877. If anyone has accomplished this, could they post some help?

  • Hello, is there a way to re-program the backpack? I think that I must have done something to the code of the Atmega168 by having the board connected to my Arduino Mega while I uploaded programs, the LCD is starting to get glitchy. Thanks, Tom

  • Yes, I’ve a question. I’m using a propeller chip to talk to the serial backpack. I can get everything to work except for two of the most important functions: CR & LF. When I send a 0x0C or 0x0A to the LCD, it prints two garbage characters. What gives? I know it’s not my code because I’m running parallel streams to a terminal debug and a Parallax 4x20 LCD. Both the terminal and Parallax LCD handle the CR & LF correctly, but Sparkfun’s Big Bertha…not so good.
    How are you at Sparkfun central handling carriage returns/linefeeds on this big girl?

    • Richard, how were you able to interface prop with this? I’m writing a spin code but it seems that the backlight duty cycle is only thing that I can change. No letters, nothing. I can’t even put product demo splash screen on the lcd either. Can I see your code?

  • I think I using a sledge hammer approach for connection an Arduino Duemilanova to this display. So far, the only code I’ve gotten working looks like,

    Serial.print(0x7c, BYTE); // Command prefix

    Serial.print(0x00, BYTE); // Clear screen

    The clear screen, run demo, draw box/circle/line, and reverse screen work in this mode, but the code blocks get awfully large with two X/Y co-ords included. Is there a way to concatenate, or otherwise reduce the text length?
    Also, I can’t get the display to change baud rate. It seems to be fixed at 115200. Sending 0x7c/0x07/n has no effect. Is 0x7c/0x07/0x02 the correct sequence for 9600 baud?

    • For question 1, sending x1,y1,x2,y2 commands isn’t really that much code length when you compare it to what you would have to do to generate something pixel by pixel. A lot of the time you end up drawing the same relative shape, simply displaced on the screen–so you can make that a subroutine call. If you can perhaps give me an example where you find the code length to be unduly, I might help you condense it.
      As for your second question, Is 0x7c/0x07/0x02 the correct sequence for 9600 baud?
      The answer is no. I believe if you send 0x7C, 0x07, 0x32, that should set the baud rate correctly. Remember the third byte is the CHARACTER “2” which is 0x32, not 0x02.

  • OK…i am comfused!
    l use the atmega16 to control this screen but i fail to do so.
    So,i have some questions.
    ->Is atmega168(on screen) already programmed?And if not, how am i going to program it?
    ->Is there anything else that i should know except those things included in datasheet?
    ->Has anyone managed to control this screen with a microcontroller?
    Chris
    THX

    • Hi,
      ->Yes the atmega168 is programmed
      ->No, the datasheet should be enough
      ->Check your connections. Make sure that the LCD is getting at least 6V, the GND from your atmega16 is connected to the LCD, and that the RX pin from the atmega16 goes to the TX pin on the serial backpack.
      if you need anymore help, feel free to email tech support :)

  • Any luck driving it with only a 5V or 5.5V supply (presumably at reduced brightness)?

    • AT 5 volts it works, but the contrast when viewed straight-on is too low to be usable (the characters are almost invisible). Viewed at a 45 degree angle, you can read stuff which makes it acceptable for testing at 5v, but not actual deployment.
      The lack of support for newlines (CR/LF) by the backpack is a huge flaw.

  • Anything else, just ask. The 0xff at the end of all my commands are the end of my string since im not using printf, im using my own SendMsg.
    I see what the guys here did, easy mistake, they just left out the a-f count in hex:
    A=0x01, B=0x02, C=0x03, D=0x04, E=0x05, F=0x06, G=0x07, H=0x08, I=0x09, J=0x1a, K=0x1b, L=0x1c, M=0x1d, N=0x1e, O=0x1f, P=0x10, Q=0x11, R=0x12, S=0x13, T=0x14, U=0x15, V=0x16, W=0x17, X=0x18, Y=0x19, Z=0x1a
    sorry that its two comments :-/…have a limit of 1100 characters…haha

  • Ok guys, I worked on this for about two weeks now and had an “duh” moment. I am using an Atmega128 and CodeVision avr fyi.
    spranger, below you will find the commands you need to control both the x, y, square, ect…
    ClearScreen = {0x7C,0x00,0xFF}; //clears off screan
    Backlight Duty = 0x7C,0x02,50,0xFF}; //50% duty cycle
    Baud Rate = 0x7C,0x07,0x32,0xFF}; //baud of 9600
    Demo = {0x7C,0x04,0xFF}; //demo code
    XCoord = {0x7C,0x18,1a,0xFF}; //x location at 26 (1a hex)
    YCoord = {0x7C,0x19,1a,0xFF}; //y location at 26 (1a hex)
    Square = {0x7C, 0x0F, 0, 0, 159, 127, 0xFF}; //border around the screen
    Circle = {0x7C,0x03,0x50,0x40,0x0A,0x01,0xFF}; // draws circle, if the 0x01 changes to 0x00 it erases it
    Pixel = {0x7C,0x10,0x50,0x40,0x01,0xFF}; // draws a pixel at this location, if 0x01 changes to 0x00, it erases
    Line = {0x7C,0x0C,20,100,20,108,1,0xFF}; draws a line from x20 y100 to x20 y108.
    Reverse = {0x7C,0x12,0xFF}; changes blue to white, and vice versa…just gotta call it once.
    SplashScreen = {0x7C,0x13,0xFF}; loads up the AWESOME sparkfun logo :)

  • I noticed when I tried to send the code to reverse the background or to set the x,y coord. it will not work. I am using Codevision AVR with an Atmega128. Everything else seems to work fine for me. Its a great screen, just need to figure out how to reposition text on the screen…

    • Some of the codes that are given as hex in the documentation (e.g. 0x18) are actually decimal (e.g. 18). I forget which, but it might be all of them. It’s easy to verify.

  • I have one of the earlier serial DX-160 serial 160 x 128 displays. How is this different?

    • I…don’t have enough information on that one to answer intelligently, sorry. The data sheet will be posted later today. Hopefully that will answer your questions. If not, you can always shoot us an email and we’ll help you out however we can.

  • Are you planning to provide the backpack alone, without the lcd for the owner of the parallel version ?LCD-08799??


Related Products