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.