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
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.