Path: Home => AVR overview => Applications => DCF77 receivers => OpAmp receiver => Async RX m48   Diese Seite in Deutsch: Flag DE
DCF77 receiver logo Applications of
AVR single chip controllers AT90S, ATtiny, ATmega and ATxmega
DCF77 async serial receiver with an ATmega48
This project is experimental. I don't know if it really works as planned here.

10 DCF77 AM direct receiver with gain-regulated OpAmps and an ATtiny25

10.7 Async serial receiver and LCD display with ATmega48

The direct receiver with a regulated OpAmp outputs an async serial signal in a long format, if so desired. This receiver here reads this async signal and displays the received content on an LCD. With that, time, date, weekday as well as status messages from the receiver can be displayed, depending from the size of the attached LCD.

10.7.1 Necessary hardware

Async serial receiver with LCD display ATmega48 To not having to write an async serial receiver in assembler I chose an AVR that already has an integrated async receiver on board. Many AVRs have that, I chose an ATmega48 for that. If you have an ATmega88, you can simply replace the m48 by the m88, just change the include header in the source code.

Those who want to clock their DCF77 seconds with an XTAL, cannot use this hardware. The ATmega48 has no complete 8-bit data bus for the LCD when enabling an external crystal, so I decided to skip the crystal here. That makes the watch malfunctioning with 3% inaccuracy. If you want a crystal-driven device you can change to an ATmega324 like here or you'll have to drive the LCD with a four-bit data bus.

The serial signals are received by the Mega48 on its RXD pin. Because the serial signal is directly attached and not inverted, choose cRevert = 0 in the source code software for the ATtiny25. This switches the TXD and CTS pins of the ATtiny25 to active high. After the ATmega48 has absolved its initialization, he turns PD1 on, switching Clear-To-Send back on the ATtiny25 on.

The pins PD2 and PD3 are attached to two keys. Those are for adjusting the clock to current time even without a valid DCF77 signal coming in. Pressing key1 starts the adjustment of the hours with an INT0 signal, the correct hour can be selected with the potentiometer that is attached to ADC0. If correct, press key2 (INT1) and the minutes are adjusted. Pressing Key2 again sets the time.

The LCD is attached with its data bus to Port B, the three control inputs are on PD5 to PD7. You can attach any LCD of any size to it, just change the number of rows and columns in the source code. Of course, the size of the LCD determines what is displayed.

Calculation basics for this project are in the Libre-Office-Calc-File here.

©2021 by