For our project, we used an Atmel Mega32 micro controller that we ran at 16MHz. The circuit diagram can be found in the Schematic section. This Atmel has four I/O ports. Port A was used to output to the LCD. Port B is an input from the pushbuttons that ultimately sends commands to WinAmp. Port C was used as a test and debugging port during development. We also used two pins on Port D for serial communication.
Our 5V power was supplied from a 9V battery that was regulated down by using an LM340 5V regulator. We also placed a 100uF capacitor on the output of the regulator to help smooth out the signal. Aside from this, given the schematic hardware schematic, this project should be easily duplicated.
We experienced two problems with the hardware. First, we mistakenly assumed
that the LEDs had a 0.7V drop across them. Originally, the LEDs were placed
on the other side of the button since a 0.7V signal would be considered
a low signal by the micro controller anyway. However, we soon learned
that yellow LEDs require about 2.6 volts to operate. This obviously caused
problems because we never could give a low input. The second problem we
faced was that the input pins seemed to do nothing. The micro worked fine
on the STK500 with the entire circuit set up. We then put it on the stand
alone board we made and it did not work. So, to see if the micro and clock
were working, we wrote a quick program that just changed all of port C
from high to low every two seconds. This worked fine. We knew that it
was not a hardware issue, but we could not figure out what could possibly
be wrong with the code so that the micro would work on the STK but not
on a standalone board. Finally, we remembered from lab 1 that the micro
controller would not work without the LCD connected to it, which we had
failed to disconnect from the STK and connect to the stand-alone board.
Once we realized this, our board worked very well.