FUBARINO-CONTEST: 1980’S CD player WITH MPD

[Ronald] had to scramble to get his submission in, however we’re delighted he did. His demo video shows the screen of a 1980’s CD player working with music player Daemon. It’s truly just the original screen itself that works, however the job is not yet finished. However, is far sufficient along to show our URL when a track reaches the 22:00 mark.

The screen is driven by an ATmega32 chip which utilizes a USB connection to get commands from the computer running MPD. [Ronald] had troubles figuring out exactly how to send int values over USB so he hacked his own protocol that just utilizes the LSB of each byte coming over the bus. After the break you can see the video, as well as checked out the description which he included with his submission. There is likewise a code bundle offered here.

This is an entry in the Fubarino Contest for a possibility at one of the 20 Fubarino SD boards which Microchip has put up as prizes!

The final goal is to have an MPD (music player daemon) based player inside a 1980’s CD player box (working), utilizing the original LCD (working), being able to utilize the original remote manage (working), being able to play DVD’s (work in progress), stuff like that.

My plan is to put the schematics as well as source on the internet, as well as submit it to obdev.at since I believe it’s a new method to utilize their USB driver. since I’m still establishing the pc-side software, I hadn’t done yet. I only heard of the Fubarino-contest yesterday, as well as I believed it would be doable to mod my project, so I did it.
First, I failed to remember the schematics. They’re rather easy: it’s a general Atmega32 (no ATmega8, considering that I mainly utilize those I mistyped it below) HID Bootloader packed device. two pins of PORTD are utilized to drive the back plane. four out of five 1.1K 1% resistors are utilized as pull up / down resistors to produce the 2.5V level needed for a two backplane LCD configuration.

A bit of background. For driving a generic LCD with two backplanes, two square waves with middle value are needed, together with square waves for the segments (e.g. figure 2 at http://www.freescale.com/webapp/sps/site/overview.jsp?code=784_LPBB_LCDTIPS). The timing needs to be precise, to stop the LCD segments for degrading. any type of DC balance out big sufficient can kill it…

PORTA, PORTB, PORTC are all linked to the segments. One extra pin on PORTD is linked to the ‘play’ section (it seems single backplane), one section is linked to all ‘off’ segments (I did not have sufficient pins to drive all segments).

Because I did not understand exactly how to send 0x00 characters utilizing USB, I made my own protocol by sending the LSBit of the 2×3 data bytes as the very first three of a fourth data byte, as well as untangle those in the ATmega code. The very first three data bytes all have ‘1’ as LSB.

In my job style I made a decision to do a lot of of the logic on the pc-side, as well as utilize the ATmega a lot more or less as a framebuffer. That made it harder for me to mod it to show some text, as well as to carry out the easter egg trigger.
To show the text (the full http://hackaday.com was impossible on this LCD, so I made the closest I might :-)), I utilized the pc-client very first to produce the hex codes of the characters, as well as then copied those into the ATMega source, customized the LSB’s up until it looked well.

And that’s about all I can do before the deadline… I really hoped to paper this all in the code, however ah well.. . It may be sufficient for you to understand.

The easter egg is in the video at 1:06.

Kind regards,
Ronald