!!! Warning !!!: The current version of the display driver board is untested. While I think they will work, Mark and I will be reviewing them this week, and I would not try to build this project until we build the first version. I’m hoping to send the boards out at the end of this week. At that time, I should have a good idea of the final cost. My estimates at this point are under $120 for a full replacement (4 player scores, and the master display) of a Williams system 3-6 display system.
The four player scores, and the master display all use the same board. Since ordering 5×20 cm boards from ITeadStudio gives you five boards in an order this is perfect. The player score boards do not populate the microprocessor, or the muxes. The master display populates these components, but doesn’t populate one of the i2c register chips since the board has four instead of six displays on it. This keeps the cost to a minimum, and only requires a little bit more programming in the microprocessor.
The code will constantly poll the strobe signals. Since there are a lot of strobes (more than can be simply attached to pins in the processor), the strobes are muxed into two different groups. When polling the strobe signals, it first looks at one group of strobes, then another group of strobes. If it finds that a strobe signal is active, it polls that bank sixteen more times to makes sure that it isn’t a glitch. At that point, it reads the two BCD nibbles. We measured a strobe width of about 1 ms on Williams yellow PROMs. The reading multiple times gives us a simple digital filter and reduces the need of filtering on these input pins.
The player displays use sixteen bit i2c registers for driving the LCDs. Each sixteen bit register controls two digits on the display. That means there are three register chips on the player scores, while only two on the master display since there are only credits and ball count. That gives a total of fourteen register chips for a whole set of boards. The register chip addresses are chosen using jumpers on each of the boards. There is also a jumper to pick if it is a player score display or the master display.
Once a new BCD digit is read, it compares it to the current value that it is displaying. If there is a change, the processor sends the new value across the i2c bus and updates the correct display. The processor does the conversion from BCD to the register outputs.
The only other part of the design is using a low dropout voltage regulator to control the brightness of the displays. This is done once for all of the displays with the master display board generating the voltage for all the cards.
The open pinball project is in a subversion repository in Google code. The easiest way to grab it is to grab a copy of tortoiseSVN (a free windows GUI client for subversion, there are also versions for linux/Mac) Install that program, and then create a folder where you want to have the open pinball project files stored. Right click on the folder, choose SVN Checkout… from the menu. This will bring up a window, and the address of the repository is https://open-pinball-project.googlecode.com/svn/trunk. The display driver files are under the Kicad/1008-DispDrv directory. It should have everything that you need.
Mark and I will review the schematic this week and hopefully send it out to get built. This should be a very good solution if you need to replace all your Williams display boards.