Dirt-Cheap Video

(20 characters by 8 lines - 'no hardware')

Want to add video to your next project? This device uses a PIC16F819 and not much else.

Getting 20 characters to a line is possible by using the SPI port to generate video. Neat trick, eh?

The character set is limited to upper case and a few punctuation marks and uses a 'folded data table' to store the image data in the space available.

Input to the device is via 9600 baud RS-232 directly from a computer com port. Since this device was designed as a status display, data is placed on the screen by sending a decimal number to designate the screen location followed by up to 20 characters of text and a carriage return. This allows individual portions of the screen to be updated without disturbing the rest of the screen display.

Example: 40 LINE 3 DATA<CR>

(the space after the screen location number is mandatory)

Sending ctrl-k (ascii 11) will clear the screen.

Lines are numbered 0,20,40,60,80,100,120, and 140. You can put data starting any place on the screen but do not count on data wrapping to the next line.

As you can see from the circuit, the PIC does all the work here. The 2N3904 is added to boost the output drive.

Sync pulses are generated in software on RB3. The video character data is sent from the internal SPI port via RB2. This is how so many characters can be generated per line. The SPI port is basically just a hardware shift register - eliminating the usual external shift register used in may video generation schemes.

Incoming data is received via RB0 and generates an interrupt to grab a line of ascii data. (This causes the display to blank until the complete command is received).

Data can be entered by hand typing from a terminal program or sent full-tilt from some other program. Here are the SOURCE and HEX files as they currently exist.