The basic motivation behind the project is to create a simple, easily read interface for Winamp that runs without cumbersome monitors or keyboards. At a glance, the user should be able to find a particular track in an extensive playlist and alter playback at will. Essentially, the system should emulate a simplified version of Winamp's playlist and equilizer in separate screens, with all the functionality of each. Originally, we wanted to use a touch screen/LCD interface but scaled that back to a keypad/television interface due to cost limitations. A diagram of our hardware setup is in figure 1.
The user uses a keypad to input commands, which the MCU decodes and sends to a computer running Winamp via an RS-232 serial communication line. A custom module for Winamp listens on COM1 for commands and executes the appropriate function. The module also sends information such as track title and various initial sound preferences to the MCU, which prints the information to a TV. We used code from a 2001 home audio control system project as a starting point for the Winamp module.
We need two interrupts: One for TIMER1 compare/match to time the TV screen refreshes and one for receive information from Winamp through the USART RS-232 connection. The main part of the program will decode keypad commands, send commands to the Winamp module, and update the TV screen as necessary. We adapted keypad polling code from our security system lab as well as the TIMER1 interrupt function and video functions/character bitmaps from our television oscilloscope lab. Our MCU code is depicted in figure 2.