Summary of VCR Pong using PIC16C711 Microcontroller
This nostalgic project, VCR Pong, generates NTSC composite video directly from a PIC16C711 microcontroller. By utilizing the chip's built-in A/D converters for paddle input and a simple one-transistor driver circuit, it accurately produces video signals for black, white, and sync levels. The design emphasizes minimal hardware costs, relying heavily on custom programming to achieve precise timings compatible with standard televisions, monitors, or VCRs via their video inputs.
Parts used in VCR Pong:
- PIC16C711 Microcontroller
- One-transistor driver circuit
- NTSC composite video output capability
- VCR video input jack (or compatible monitor/TV)
- Optional RF modulator
- Parallax SPASM.EXE or Tech-Tools CVASM16.EXE assembler
- INXH8M preassembled object file
About the Project
Here is a fascinating and nostalgic project that kept me up many, many nights last summer (creating it, not playing the game!). I had long thought it would be exciting to try to generate video from a PIC, and with built-in A/D converters available for the paddles, the game of Pong seemed an obvious application to prove the concept.
The most amazing thing about this project is the small number of parts. My boss joked that it involves 17 cents worth of parts and 1000 dollars worth of programming. But don’t worry — the code is free to you! That means you can build this TV pong game in a very short time, or adapt the generic “video engine” portion of the program to make your own video-from-a-PIC project.
At the heart of the circuit is a cute one-transistor driver circuit that generates the NTSC voltages for white (1v), black (.3v) and sync (0v), depending on whether the PIC pin is driven high, low, or allowed to float. With careful programming, I was able to achieve accurate NTSC timings, something most computer and video game outputs do not take the trouble to do. That means you can use this video engine with confidence in broadcast or other applications where correct timings are important.
I call this project VCR Pong because the output signal is actually NTSC composite video, and the most common way to view it is to connect it to the video in jack on a VCR. (How about that old non-HiFi machine that eats tapes? Get it out and have fun with it again!) Naturally any monitor or television capable of directly accepting a video input will work. Or, you can get a ready-made RF modulator and add it for a more traditional approach to Pong.
Project Files
Here is the schematic, a parts list, and most importantly the PIC source code.
The code uses the Parallax instruction syntax, so you’ll either need to use Parallax’s SPASM.EXE (available for free on Parallax’s web site) or Tech-Tools’s CVASM16.EXE (available for evaluation on Tech-Tools’s web site), or here is a preassembled object file, in INXH8M format, for use with any device programmer.
For more detail: VCR Pong using PIC16C711 Microcontroller
-
What is the main purpose of this project?
To generate video from a PIC microcontroller using the game of Pong as an application. -
How does the circuit generate NTSC voltages?
A one-transistor driver circuit creates NTSC voltages based on whether the PIC pin is driven high, low, or allowed to float. -
Can I view the output on a modern TV?
Yes, any monitor or television capable of directly accepting a video input will work. -
What is the most common way to view the signal?
The most common way is to connect the output to the video in jack on a VCR. -
Is there an alternative method for viewing the game?
You can add a ready-made RF modulator for a more traditional approach to Pong. -
Which assemblers are required to build the code?
You need Parallax's SPASM.EXE or Tech-Tools's CVASM16.EXE. -
What format is the preassembled object file provided in?
The preassembled object file is provided in INXH8M format. -
Does the project require expensive components?
No, the author jokes it involves only 17 cents worth of parts.
