Here are some simple boards I made for a recent course on Embedded Systems. All are based around PIC16F84A or PIC18F2420 microcontrollers and are designed for easy explanation in classes. The boards have also been used for school science events.
The course also made use of a communication board to demonstrate I2C and SPI, an 8bit ADC/DAC board, and a 16 LED spinning display developed by two colleagues. The components on the ADC board and one chip on the MP3 board are SMD, all others are through hole for ease of construction.
More later on this and other hardware I've designed and built over the years: Single board and other computers, multimedia hardware, network interfaces, network on a chip, etc. ...
This is a ZIF board for PIC16F84A chips and the Microchip ICD2. This is used to program chips for the Lights & Switches board and the Clock module as neither of these support in circuit programming -- this is so students see there's no magic and get used to the idea of programming a chip.
PIC16F84A: Eight LEDs and four buttons. This is a very simple board aimed at getting over the basics of hardware, PIC assembly language programming and the development cycle.
PIC16F84A: Another old favourite... a digital clock. A single button is provided so the user can set the current time.
PIC18F2420: 40 button calculator with two line LCD. A serial port is provided for debugging.
Fairly standard scientific calculator including all the normal arithmetic operators, parenthesis, various logarithms, trigonometric functions, powers and roots, factorial, and a memory.
PIC18F2420: This is an MMC/SD card based MP3 player. The board has been tested with cards up to 2GB and supports both partitioned and non-partitioned SDSC/HC/XC cards. Multiple FAT16 or FAT32 filesystems can be handled, each with VFAT long filenames and multi-level directories. A serial port is provided for debugging.
MP3 stream reporting and ID3.1 tags are supported. The demo code uses the three buttons to provide: Mute, Pause, Track skip, and Volume up/down.
PIC16F84A: This is a simple three wheeled robot/ buggy that runs off a standard racing pack battery. In addition to headlights and tail-lights, the board has left and right turn indicators and connectors for commercially available ultrasound 'range finder' modules (two shown).
A serial port is provided for debugging. This can also be used to connect an external control processor for more complex control algorithms, or a radio module for remote control.
PIC18F2420: Another simple board used to generate the standard VGA sync and colour signals in software. This is a really good exercise in timing, interrupts, and cycle counting.
A connector is provided to connect one or two 3-button game controllers (two shown).
Again, a serial port is provided for debugging or image data input.
The board has been used to run Breakout (left), Pong, and Snake. The demonstration code memory maps the screen into the microcontroller's RAM to make coding the game easier. The screen memory and all control variables must fit in the 768 bytes available.
The demonstration code also includes a simple but complete ASCII font in ROM, and text overlay support -- used here for the score.
The picture of the breakout game (left) shows the output from a commercial DLP projector when connected to the board. The white line down the left was used as final visual confirmation of the timing accuracy.
I think a 'high resolution' monochrome version should be relatively easy with only a very minor modification to the board. I'll get round to it one day...