sku: LCD-09352
Description: This is the serial backpack for graphic LCDs. The Graphic LCD Serial Backpack interfaces to either our 160x128 pixel “Huge” Graphic LCD, or the smaller 128x64 pixel display, and provides a simple serial interface to a full range of controls.
This backpack will allow you to write text, draw lines, circles and boxes, set or reset individual pixels, and erase specific blocks of the display. The backlight and baud rate can also be controlled via serial communication. 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.
There is a solder jumper on the backpack that determines which display is used. When the solder jumper is closed, code for the 128x64 display will run. If the jumper is open, code for the 160x128 display will run.
Check out this tutorial!
Features:
Dimensions: 2.02x1.11"
(51x28mm)
Documents:
LCD-08884
Serial Graphic LCD 160x128PRT-08430
Jumper Wires Premium 6" F/F Pack of 10LCD-08799
Graphic LCD 160x128 HugePRT-00115
Break Away Female HeadersLCD-09351
Serial Graphic LCD 128x64BOB-00718
Breakout Board for FT232RL USB to SerialPRT-00449
RS232 Shifter SMDPRT-09140
Jumper Wires Premium 6" M/F Pack of 10
Comments 50 comments
Hello, I bought this adapter with the HUGE 160x128 screen. I cant seem to find the Solder bridge. That is my last hope that the adapter comes set for the smaller screen. I have it hooked up to the screen right and triple checked the code going to the backpack.
Using a logic probe the backpack is reciving. I see the lcd screen dim for a split second when I send the code but nothing happends. Sending the demo code.
Found it and that was the problem. I am talking to the screen now but when I generate a vertical line above the value of 59 I get a weird horizontal line at 60. Using an arduino to send the serial.
I’d like to see some source code that uses this backpack…
I guess my problem (random symbols) is the solder jumper for the 128x64 lcd.
Do I really have to unsolder that piece of solder close to the resistor on the left of the “Graphic LCD Backpack” text?
Don’t waste your time, guys. The Graphic Serial LCD Backback’s firmware is quite buggy (to the point it won’t handle carriage returns (CR) or linefeeds (LF). Additionally, there are other, even stranger bugs (like you can only draw a line from, say, 23, 35 to 39, 48; but if you try drawing the same line 39, 48 to 23, 35, you get crap—caused by a missing absolute value expression in the firmware)
The long and short of it is, do not buy this backpack until Sparkfun fixes their code. You’ll only be throwing your time, peace of mind, and money away.
Hi, does anyone know if you can use this for the “Graphic LCD CFAX” found here?
http://www.sparkfun.com/commerce/product_info.php?products_id=463
Thanks.
Does anyone know if this thing has been bug fixed of it’s issues? I spent weeks on mine having eratic issues drawing images and get odd results with stray lines and pixels. Not to mention the command codes in manual are a bit wrong as mention by others.
Please update this device and replace our units that are barely usable at best.
Hi guys,
Sorry you’re having so much trouble. We’re going to attack this in short order. If you’ve got one of these and you’re having trouble, contact tech support and tell them Pete sent you and why. They’ll forward on your concerns directly to me and I’ll make sure the code gets fixed.
OK, a very generous customer has given me some code to integrate into the existing code (for the cost of some pint glasses – glad to see his priorities are in the right place). I’m going to try and get this done in the next day or so. If all goes well, this will become the new production code and we’ll post it here, too.
I see the new firmware is posted, but I’m having trouble updating my device. I’m using the FTDI Basic breakout, which I can use to write text on the display, but I can’t seem to find a command string (or programmer-id) for avrdude that works. I have both Tx and Rx hooked up, but it would seem that the device isn’t responding to avrdude. Any suggestions? Thanks.
Or, are the ICSP pins the only way to program this?
You gotta go through the ICSP to update the firmware. You will need a AVR ICSP programmer, such as one of the following:
http://www.sparkfun.com/commerce/product_info.php?products_id=9231
http://www.sparkfun.com/commerce/product_info.php?products_id=14
If you need help using them email techsupport@sparkfun.com
OK, I had to wait until I was sure that this change had happened for the 3 different items to which this pertains…
Many thanks to Eric Gaertner for his code additions. We have reviewed and assimilated his code, and all the backpacks that we currently have in stock (including the ones attached to LCDs) have been pulled from the shelves and reprogrammed accordingly. The source code links have also been updated. And I owe Eric a 4-pack of SFE pint glasses. You rock, dude.
Happy to help out Pete! Hope everyone has better luck now.
Tip for anyone who already has the backpack but no programmer, you can turn your Arduino into one and program the new LCD code without buying any new hardware. http://www.arduino.cc/playground/Hacking/AvrdudeFTDIBitbang
Thanks for the info. I was able to program it using the Arduino FTDI bitbang method.
Looks like mine already had the latest firmware though (bought it Monday, 5/17), as I didn’t notice any change… graphics seem to work ok, aside from the box command not reading the on/off flag, but character stuff is pretty problematic.
I’ll probably take a stab at tweaking the firmware myself, and I’ll post the code if I fix anything…
Does this work with any Graphics LCD? Or is it restricted by size? controller?
Will this work http://www.newhavendisplay.com/index.php?main_page=product_info&cPath=21_107&products_id=613?
Or how about this one 160*128? http://www.newhavendisplay.com/index.php?main_page=product_info&cPath=21_101&products_id=3146
I already have the last two, that’s why I’m asking.
I fixed the last bug that currently annoys me, and have a new main.c to distribute. For my purposes, it not only works better, but it turns out that I no longer ever get an X-OFF character. Still, it’s good to have it built in so noone, including me, needs to worry about overrunning the Serial Graphic LCD Backpack input buffer.
I can’t simply include the file here, as it is too big. How does one release code into the Arduino/AVR development society?
The display is ever-so-much more responsive now, and I’m getting no extraneous pixels or screen clearing events. It’s been rock solid for hours.
I don’t have a good test suite, so although i’ve tried to limit the scope of my changes to those things which I am testing, I welcome more testing or code review by anyone interested.
— Carl
Some people post their code on the SparkFun forums. Feel free to link people to it in the comments section.
I flashed the new code last night, and it seems a little better, but I’m still surprised at how slow the unit is at rendering text. I can literally see it printing out the text, character by character. It can do maybe 2-3 lines per second. Is this what everyone else is seeing?
In contrast, my 20x4 line displays can render the entire LCD in probably a tenth of a second ( you can barely see it ). This is my first foray into graphic LCD’s, and if this is normal then set me straight. ;)
foxkid: I’ll look for your updated drivers and give them a try.
Thanks,
Nathan
MrRoot.net
The code is too large to post in forums — I tried.
Does SparkFun have an FTP site? Or is there a CVS/SVN server? I have code to contribute, but no means to contribute it.
Does this go back through Google Code?
Do I need to create a SourceForge project for it?
Should I put it on my own web site?
All of these seem a little haphazard. Surely there must be a way to get code back to SparkFun (where I got the original code)?
What are the procedures and rules for working with SparkFun to improve your products?
— Carl
I too have been having trouble with the responsiveness of the display. Over the weekend I did an almost complete re-write of the code with many speed improvements. There are still some bugs which I plan to work out soon, but if people want it, the beta code is here: http://jennwork.homelinux.net/drupal6/sites/default/files/GLCD_firmware0.1.zip
the text rendering is ~10 times faster. the line and circle algos are ~2 times faster, the display responds to CR/LF, there is support for sprites and bitblt-type image transfers. as well as low-level access to the LCD interface. I changed the coordinate system to (0,0) in the upper left, increasing down and right.
the bitlbt is a little buggy, but I’ll work on fixing this.
(since the character rendering relies on bitblt, there might be problems if the characters are not drawn on integer*8 pixel y values.)
also this code ONLY works for the small screen. I don’t have a large one, so this is what I wrote. Anyone is welcome to take/modify/fix the code if they want.
I have set up a sourceforge page for the code. it anyone is interested in helping develop let me know.
http://serialglcd.sourceforge.net
Ahh, an improvement indeed!
I’ve increased the RX buffer to 256 characters and added draw/clear functionality to the box() functions and now it’s perfect for me. It even runs on Adafruit’s MONOCHRON white-on-black display (I also had to make an adapter for the LCD connector pins), where the native firmware had trouble. Thanx a lot for this contribution!
Thanks for pointing out the missing draw/clear function of box(). I have fixed it in the SVN tree and will make a version .61 .zip for download soon.
I just found a graphic LCD backpack in the mailbox today. What code would be programed into the Flash? Should I solder up an ICSP header and head over to SourceForge?
You found it? Are you sure it’s yours?
Let’s see —– the name on the box matches the name on my credit card, so I guess it’s mine. ;–)
But seriously, I’d like to know what version of firmware is in there.
Just checking. It should be the same as the source code posted. There’s no need to load any code onto it, it will have the most recent code on it.
Above, it say :
“There is a solder jumper on the backpack that determines which display is used. When the solder jumper is closed, code for the 128x64 display will run. If the jumper is open, code for the 160x128 display will run.”
I have it working with the smaller display with no mods to the backpack. What does this ‘Jumper’ do? I don’t see this documented in the spec sheet, or did I miss it? Can anyone clarify what it does and where it is on the board?
Hi,
I created a driver so that it can be easily used on the fez.
http://www.microframeworkprojects.com/index.php?title=Graphic_LCD_Serial_Backpack
Roy
As this seems to be a point of confusion, this backpack ships with the solder jumper closed, so you will need to unsolder for the 160x128 display.
I’m taking a look at reprogramming the backpack for some additional functionality, but can’t figure out how to get an ICSP header soldered on to the backpack since it’s hard-soldered to the display, perhaps in the future you could ship the displays with the backpack removable.
Is there going to be a official version that fixes the speed and the erase box function? I can’t erase a box or draw a box that erases, both do nothing.
I finally got a working backpack thanks to SummoningDark’s firmware.
I would suggest anyone that buys this to load the firmware instead of spending hours hitting your head against the wall.
Here is the link
http://serialglcd.sourceforge.net/
It fixes the issues with slowness, flipped Y, axis the erase function not working and others.
I hope that Sparkfun can adopt this as the official firmware.
Just a note, my firmware is only for the 128x64 display. I don’t have the larger one and so can’t write code for it.
summoning, sorry im kinda a noob with this. wanting to try your software on my backpack, and im using a mega 2560 to program it. How do i install your software onto my backback? i downloaded your files from source forge but still am not sure what to do with them.
Thanks,
ryan
There are six pads on the backpack which have no pins soldered into them. these are the programming pins, and you will need to connect your programmer to them. If you look at the second image of the board on this page, they are the six right above the mega168. The current zip file 1.62 has a pre-compiled main.hex in firmware/trunk. You just need to use your programmer to flash this file to the chip. If you want to change anything, you will need avr development tools. You should be able to run “make” in the trunk directory to build the firmware. if you edit the makefile to reflect your programmer, you can run “make program” to flash the firmware.
thank you i will give this a try
Having installed SummoningDark’s firmware brings this product from useless, to wonderful in a few seconds.
Having shorted out the voltage regulator on the board, bring this product to a useful state. No one has 6-7V on the supply side, 5V or 3,3V that’s standard. And since the voltage controller only brings the supply down to 5V, I don’t understand it being there other than a waste of components. Short it out and use 5V for supply.
Man, this thing could be cheaper if that useless
voltage regulator was not there.
PS: Thanks a lot for that firmware SummoningDark, it really makes this display work as it should.
I purchased one of the 128x64 displays along with the serial backpack to be included on my robot which is operated by the Orangutan SVP MCU by Pololu. I am the most extreme novice when it comes to coding. My question is, what all functions must I include in my code if I simply wish for my screen to display 4 digits, each of which is 1" tall? As of right now, whenever I send any serial data, the display simply starts to fill in the pixels from left to right.
I posted this on the Serial Graphic LCD 128x64 page…..thought I would post it here aswell.
I bought my first Aurduino (UNO Eleven) with this LCD and backpack 2 days ago. I got the backpack on the LCD with the idea it would simplify the interface to the LCD. I quickly came to the realisation that the rendering of this display was very slow and there was no flow control (e.g. Xon, Xoff) which ment I was going to run into trouble real quick with having to put delays in my code. Looking around I found SummoningDark’s firmware at http://serialglcd.sourceforge.net/ and I wanted to try it but didn’t know how to get the main.hex into the ATmega168. I finally worked it out and this is what I did:
I built a simple programmer cable like this except I used 100ohm resistors – just used stuff I had laying around. I connected the cable to the 6 pin ISP connection on the backpack as shown here which is explained about a 1/3 of the way down on the page. I confirmed these connections with the pinouts from the manufactures datasheets which is on page 2 here . I downloaded and installed WinAVR from here . I changed the programmer options in SummoningDark’s firmware makefile (in firmware\trunk folder) to direct parallel “dapa” which has the correct pin out for this programmer cable (i.e AVRDUDE__PROGRAMMER = dapa)and also changed the port to lpt1 (i.e. AVRDUDE_PORT = lpt1). I’ll just mention here that programmer types are defined in the avrdude.conf file in WinAVR\bin folder. I then opened command prompt and changed directory to firmware\trunk folder and typed “make all” to recompile the main.hex file (WinAVR install adds its path to the system path variable so windows knows where make and avrdude is).
With the LCD powered by the +5V from my Arduino (Arduino plugged into the USB) and the programmer cable connected to computers LPT1 I typed “make program” at the command prompt and avrdude proceded to flash the ATmega168 on the backpack. It said “verification error” and “safemode lfuse changed! Would you like this fuse to be changed back? y/n” I typed “n” and pressed enter…it did the same for hfuse and efuse and I said no to all three. I then flashed it again to check and it said fuses OK avrdude DONE. Thank You.
My backpack works fine now! Thanks to SummoningDark’s firmware …. awesome job! I would like to try and contribute to this firmware – I have a few ideas. I hope this helps someone…. as it took me the last 2 days to figure all this stuff out.
Hallo everyone
I have made a guide on how to upload SummoningDark’s firmware using a Arduino as an In System Programmer (ISP).
For information look at my post at the Arduino forum
Thanks to SummoningDark for a nice firmware :)
After almost 2years I finally got round to putting SummoningDark’s firmware on my backpack. The firmware is a vast improvement over stock.
I’m wondering why Sparkfun still haven’t updated the firmware.
Are the serial backpacks usable with the GLCD library for arduino?
http://code.google.com/p/glcd-arduino/downloads/list
I don’t believe so. That library and backpack serve the same purpose; to provide a layer between the low-level LCD I/O lines, and high-level easy to use commands. The library would be better suited to a bare graphic LCD with a driver chip supported by the library.
There are a lot of +/– 3.2" 320x240 Touch TFT LCD’s on eBay from Hong Kong for < $20 with a 2x20 pin 0.1" pitch header and built-in sd card cage. Is there any possibility we might see a backpack/carrier board for this? I think larger LCD’s with touch input, coupled with SD access would be a very attractive option for developers.
Hi there,
greetings from Germany, the Backpack is really nice, but as you can read in the manual, still experimental. There is no feedback “READY” on the TX line, sadly enough, so you have to wait.
I will try SummoningDark’s firmware tomorrow: http://sourceforge.net/projects/serialglcd/files/