The circuit is based on Jesper's Mini DDS: http://www.myplace.nu/avr/minidds/
I've substituted an Analog Devices AD557JN for the resistive ladder network DAC Jesper used. I couldn't lay my hands on one, and I didn't want to mess about building one up from the individual resistors. A lot more expensive, but probably more accurate. It also includes an output buffer. The 5-way connector is for in-circuit programming of the microcontroller, so you may update or modify Jesper's code, if you wish.
It generates sine, sawtooth, triangle and square waves. Frequency range is the same as Jesper's unit: from 0.07 Hz up to 200 kHz or more.
Here's a pic of the prototype:
My home-made PCB may be seen here.
And here is an image of the 'production' PCB, taken from my CAD system.
I could provide kits for people who want to make one of these. Please contact me for details.
A draft copy of the instructions is here: minidds.zip.
Here is the schematic, if you want to make your own:dds.pdf
I've modified Jesper's gcc AVR assembler code for the Atmel assembler: dds_asm.zip.
I have designed a version which has two pushbuttons for frequency control - up and down. This may easily be tailored for a particular user's requirements like waveform, frequency range, etc.
Please email me for further details: firstname.lastname@example.org