home   |   primer index   |   1. Intro: Why 6502?   |   2. addr decode   |   3. mem map req.s   |   4. IRQ/NMI conx   |   5. 74 families & timing   |   6. clk gen   |   7. RST   |   8. mystery pins   |   9. AC performance construction   |   10. exp bus & interfaces   |   11. get more on a board   |   12. WW Q&A   |   13. custom PCBs   |   14. I/O ICs   |   15. displays   |   16. getting 65xx parts   |   17. project steps   |   18. program-writing   |   19. debugging   |   20. pgm tips   |   21. workbench equip   |   22. circuit potpourri

6502 PRIMER: Building your own 6502 computer


Intelligent LCD character modules are much easier to work with than virtually any other type of display.  They're low-power (assuming you get a reflective type that doesn't need a backlight), easy to mount since they come with their own PC board with holes in the corners, often require 5V only, and have a 4-bit interface mode so you can interface them with as little as 6 bits, all outputs: 4 data, plus a register select (RS) and an enable (E).  You mainly feed the LCD module ASCII data, cursor position (which advances automatically so you don't have to tell it for every letter), cursor on/off, and a clear-display command.  You don't have to feed individual dot information unless you want to make your own special characters.  The module takes care of things like character generation and strobing.  You will need a trimmer pot or other way to provide a variable voltage for viewing angle adjustment.  There are code samples here (a text file with .asm extension).

Here's the one on my workbench computer, a 1x16:

picture   picture

There's a little more about it in the potpourri section, under "Displays".  I have interfaced up to 4x40 with the computer for other projects.

You can also get intelligent character and graphics LCD modules with RS-232 interfaces built in.  Go to any of the major distributors' websites and type "LCD module serial" in the search box.  I'm sure the programming gets a little easier, but it requires another UART, like the 6551.

I also have a small graphics LCD that is interfaced by SPI, so I put it on the 65SIB.  I have working sample code for it here.  Here's a few seconds of demo video done for experiment purposes, using a random number generator to produce sets of 25 random segments then displaying the screen memory:

LED displays like those made for calculators might be smaller, but will require more I/O bits to feed them, constant software attention for the strobing (which you would take care of with a timer generating evenly-spaced interrupts), will require more power, and if you use 7-segment displays, you will have to severely compromise many of the letters' and special characters' user-friendliness to get them in at all, even if you don't try to do both upper and lower case.  Seven segments gives you 128 combinations, but many of them will be awfully cryptic!  Here in my hand is a tiny 4-digit 7-segment (plus decimal points) LED display made for early calculators:

tiny 4-digit LED calculator display module

Maxim has serial-interfaced ICs with LED-strobing circuits to reduce the processor's overhead to feed these animals, sometimes with other functions built in, like a keyboard scanner.  See this selector.

If you really need it small but want alphanumerics (which you don't really get with the 7-segment calculator displays above), another possibility (although expensive) is the Avago Technologies HCMS-2963 and relatives.  This one has four 5x7-dot-matrix characters that you can feed with any dot combination you want, and it fits in a 14-pin DIP socket and is X and Y stackable for more lines or characters.

For one product, I used the National Semiconductor (now TI, unfortunately) MM5453, a 40-pin IC that's an LCD driver for 4½-digit 7-segment-plus-decimal-point watch-sized raw (non-intelligent) LCD.  IIRC, I drove it with the 6522's shift register output.  It takes care of the strobing and prevents plating problems that could arise from a net DC current you might get if you were to try to strobe it yourself and didn't get it balanced.  It does not form the characters itself, so you tell it exactly what segments to turn on, and you can make any characters the LCD segments allow.

The 6845 and 6545 (compatible) were popular CRT controller ICs in early PCs.  The Commodore 128 used the 8563 for 80 columns.

A link to this small VGA interface from 4D Systems in Australia and available in the States from Microcontroller Pros was just posted on the forum.  You would connect it to a 6551 or other UART, without the line drivers and receivers.  The Micro VGA apparently works similarly.

Obviously this is just the interface and requires adding a VGA monitor, but if you have the room for that and want it, this appears to make life easy.  The other limitation I anticipate is that since it goes through the UART, it won't be suitable for fast graphics.  You probably won't be playing movies on your 6502 creation anyway.  :D

Geoff offers a small VT100-compatible ASCII video terminal board at http://geoffg.net/terminal.html.  It uses a serial interface to your computer, and you plug a PS/2 keyboard and VGA monitor into it.

This page might be of interest too.  If you want to take just his IC and built it into your board, see http://micromite.org/shop/add-on-gadgets/ascii-video-terminal-pic32mx250/.

The "Brad's projects" forum has a Generating Video Signals section.  That forum does not get much traffic, but the section has lots of posts (all by ChuckT), and you're bound to find something good there.  Daniel Tufvesson's page "Bitmapped video interface" using just TTL ICs and not being terribly complex was recently mentioned on the 6502.org forum.  "Sagar GV" has a series of seven blog posts called "NTSC Demystified."

I/O ICs <--Previous   |   Next--> getting 65xx parts

last updated Aug 8, 2015