I had bought a ridiculously overpriced G19 keyboard shortly after they came out. One of the reasons I did so is I enjoy playing video games and it had plenty of macro keys that I could setup that I never ended up using. One of the other features that I ended up using quite a bit however was the small 1" screen on the keyboard that could be controlled using software on your computer. Some games like Guild Wars 2 displayed character information on the screen but I used this software called LCDHost, that has since been open sourced, that allowed me to put information such as CPU and GPU temp, network usage, fan speeds, current weather conditions and more. The keyboard itself was not that poorly made, however it was a membrane keyboard which means that over time the membrane wears out. After 10 years the A key was almost entirely gone and the S and D keys were following suit. I contacted Logitech but they had no replacement membranes and at the same time my brother got me a brand new mechanical keyboard for my birthday. So as much as I loved the Logitech G19 I switch to the newer mechanical keyboard.
I then attempted to separate just the screen from the rest of the keyboard however all of the electronics pass through a weird hub system in the keyboard and then snake back up to the screen. I could have attempted to figure out what was what but I thought it an interesting challenge to make my own, how hard could it be right?
So my first goal was to find comparable screens and thankfully a website like http://www.buydisplay.com has plenty of displays. I found everything from similar 1 inch screens to much larger screens and thankfully many of the ones over about 1.5 inch use 40 pin parallel RGB which meant I could design for one and then choose the screen size I want later.
Initially I decided to use an LPC1788 a relatively low level NXP microprocessor based on the ARM Cortex®-M3 core however whenever I went to purchase them they were out of stock and not recommended for new builds. So I decided to try its newer brother the LPC4088 and I spun a board up after I bought two of these. The LPC4088 is effectively the older brother of the LPC1788 with nearly the same pin out and cost but now using a ARM Cortex®-M4 processor. Knowing that to have a screen of any reasonable resolution required more ram than the LPC4088 had I also put some SRAM on there and length matched the lines as closely as possible. Needless to say none of the boards worked and I found out why some microprocessors are more annoying than others. I managed to brick my first two having used BGA parts and messed up the flashing but had no way of accessing the boot pins to put it in an acceptable state. This can be seen below.
After messing these up I made a v1.2 that had a pad that I could bridge to enable the boot system, fixed some issues with backlight circuitry, and added in a needed resistor for USB as this appears to be the only micro with usb but without built-in resistor, that can be seen below.
After this failure I switched to a new processor that hopefully had less legacy, a new processor that had just been released and had a dev board available with reference schematics, enter the LPC54628.I also switched to DRAM as I thought that might be easier to get working being that I had failed at SRAM 4 times now between various revisions and nearly all reference boards used DRAM, I also decided to switch to 24 bit full color since I had the pins available now. The LPC54xxx series is not backwards compatible with the previous two and has a bit more sane pinout due to that. I managed to get the DRAM on this one somewhat working on my first try but it was not perfect. Also the screen worked without issue on my first try. At this time I am waiting on more connectors before I spin up another board with TQFP products rather than BGA to allow for easier debugging. This project is also my first trips into 4 layers boards and the current version under test can be seen below.