It has been 7 years (!) since I posted my PIC18F2550 KS0108 Graphical LCD Oscilloscope code and schematics. I have long since taken the circuit apart, sold my PIC microcontrollers, and moved on in my life (as one can surmise from my most recent posts detailing my graduate and postdoctoral work). However, I still get inquiries about the Microchip PIC oscilloscope, so I decided to recreate it using a simpler setup using my Arduino Fio.
Arduino LCD Oscilloscope – [Link]
Steve @ semifluid.com writes:
Using the PIC18F2550 GLCD Text Test as a basis for further experimentation, I put together a simple and accurate graphical oscilloscope using a PIC18F2550 microcontroller and a AGM1264F graphical LCD. The oscilloscope measures the average voltage, the maximum voltage, the minimum voltage, the peak-to-peak voltage, and the zero-crossing frequency for a DC signal over 100 samples. The oscilloscope has a built in edge trigger function that can be set to capture on rise or fall (or disabled altogether). The time scale for the display is variable and can be easily redefined using the changeTimeDivision function. Likewise, the voltage range can be change to 0-5V, 0-2.5V, and 0-1.25V. The main limitations of this oscilloscope include relatively slow acquisition time and sampling rate (~60kHz) and the fact that the inputs are limited by the constraints of the internal ADC. However, it is a very nice display and I highly suggest you view the videos to see it in action.
PIC18F2550 KS0108 Graphical LCD Oscilloscope – [Link]
In the first part of this tutorial, we discussed about Winstar’s WDG0151-TMI GLCD module, which is a 128×64 pixel monochromatic display built with KS0108B and KS0107B compatible display controllers. The module was interfaced to a PIC16F887 microcontroller and a test program was written in C to demonstrate how to implement the KS0108 instruction set in the firmware of PIC to activate display pixels on the screen. We wrote our subroutine programs that would turn the GLCD on, move the display location to a specified row and column, and draw a pixel at a given coordinates. You might have realized it by now that how much of effort is required to write the firmware for just plotting a point on a GLCD screen. Today’s discussion will focus more on using the built-in GLCD library routines of mikroC Pro for PIC compiler, which will make your life a lot easier if you are using a graphical LCD in your project.
The use of a graphical LCD (GLCD) drastically changes the look of your project. It provides more freedom for presenting data than the HD44870 based character LCDs. Today we will see how to interface a KS0108 (name of the display controller chip) based GLCD to a PIC microcontroller. This experimental tutorial is divided into two parts. In the first part, we will see how to write a firmware for the PIC microcontroller to initialize the GLCD and send data to plot points and lines on the screen. The second part will focus more on exploring the built-in GLCD Library of mikroC Pro for PIC compiler to display more complex texts and objects. Since GLCDs are real resource hungry devices (in terms of required I/O pins and memory), a bigger size PIC microcontroller (PIC16F887, which has 36 I/O pins and 14KB flash memory) is selected for this experiment. I am using MikroElektronika’s UNI-DS6 development board to demonstrate this project, but the circuit setup can also be made on a breadboard.
Interfacing a KS0108 based Graphics LCD (Part 1) – [Link]
vladutz2000 has published plans for an overclocked Atmega32 based 8-bit game system. Dubbed the Penguin, this project runs the chip at 27 MHz instead of the usual 16 MHz and uses a 128×64 monochrome KS0108 based display along with a speaker and handful of resistors and pushbuttons. The schematic couldn’t be simpler and it, along with the source code written in Mikroelektronika MikroC pro for AVR v1.45, sprite and modeling tools are available on Sourceforge.
Penguin Atmega32 game system – [Link]
Saeki Yoshiyasu build a remote controlled GLCD using an Arduino and iPod touch. The project uses a Graphics LCD (KS0107) and for controlling GLCD, he used Arduino and KS0108 library. Firstly he wrote the Arduino code that Arduino receives a drawing data from serial port and draws a picture on GLCD. Secondly he wrote the WebSocket Server in Python/Tornado. This server receives a drawing data from iPod touch/Safari through WebSocket connection and sends the data to Arduino thought Serial port. He used pySerial for Serial communication. Finally he wrote a web page for drawing a picture and sending a drawing data. [via]
Controlling GLCD with Arduino and iPod touch – [Link]
This project is a Digital Oscilloscope using graphical LCD display. The LCD has 64*128 pixels resolution and is controlled by an ATMEGA32 microcontroller. It also uses an ADC0820 analog to digital converter. Check source code and schematic on the link below.
Digital GLCD Oscilloscope – [Link]
Very simple thermometer with PIC16F88, two LM35 sensors and KS0108 graphic LCD.
PIC16F88 LCD thermometer – [Link]
Demo-application for Philips LPC2000 ARM7TDMI controller with a KS0108/KS0107-based graphics-LCD (128*64 pixels), DCF77 time-receiver and Onewire-Bus (for DS18×20-Temp.-Sensor).The time and date are received with a DCF77-receiver-module .The DCF77-signal is transmitted from a station near Frankfurt/Main, Germany and can be received all over Europe, North Africa and the Middle-East. [via]
T-Clock – [Link]