Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to generate Sin(w n) using 8051 microcontroller ??

Status
Not open for further replies.

starfish

Member level 2
Joined
Jul 8, 2004
Messages
53
Helped
7
Reputation
14
Reaction score
6
Trophy points
1,288
Activity points
564
generate sine wave with microcontroller

I want to design a digital signal generator which can generate digital values for the Sine wave using 8051 and then convert it to analog sine wave using DAC0808. But how to compute values for a function x[n] = sin(w n) using 8051 if i want 50 samples per cycle and 100 Hertz frequency of sine wave. I don't want to use lookup table in which i already have 50 values for 1 cycle of sine wave. I want to compute the values in realtime using 8051. Any DSP concepts which might be good for generating sin(w n) ????
 

Pont de Pedra

Junior Member level 3
Joined
Dec 7, 2005
Messages
27
Helped
5
Reputation
10
Reaction score
3
Trophy points
1,283
Location
CATALUNYA
Activity points
1,561
microcontroller sine wave

Hello starfish:

I think it is difficult and very slow for a 8051 do this task.
Usually you'll need a multiplier, and that is by nature, slow.

In addition, Have you tried to generate a simple triangular signal?
In that case you need only make add and subtractions, that's slow too.

Unless you need very slow signals, you'll need others "things" like DSP, Hardware multipliers, (others uControlers, FPGA's)

Why you don't want use a lookup table?
It's,I think, the fastest way to solve your problem.

I hope this help a bit.
 

throwaway18

Advanced Member level 2
Joined
Jun 9, 2005
Messages
594
Helped
101
Reputation
202
Reaction score
24
Trophy points
1,298
Location
Kent, UK
Activity points
8,347
8051 sine wave

The DAC0808 is an 8bit DAC. It can't be that hard to calculate sin(n) to 8 bit precision. W.n and the output will be integer not floating point.
I'm sure it can be done with integer math operations by suitably scaling the values.

Integer multiplication in a processor that handles data in 8bit chunks isn't paticularly onerous, a few hundred cycles to multiply two 32bit number in the worst case.

Google turns up loads of interesting webpages about generating sine

Here's a page about calculating an 8bit sine value with integer operations.
http://www.ganssle.com/articles/atrig.htm

5000 calculations/second with a reasonably fast 8051 clone sounds feasible.

A lookup table is the best way of doing it. You only need a table for a quarter of a sinewave, you just read the table in reverse and/or invert the values for the other three quarters of a cycle.

When only using 8bit output and a really low frequency like 100Hz it might be feasable to have a lookup table of the time interval between increasing the output by 1 in steps of say 0.5uS, instead of putting out new samples at a fixed interval.
 

jhbbunch

Full Member level 4
Joined
Feb 21, 2006
Messages
197
Helped
17
Reputation
34
Reaction score
3
Trophy points
1,298
Activity points
2,902
signal generator using 8051

I want to design a digital signal generator which can generate digital values for the Sine wave using 8051 and then convert it to analog sine wave using DAC0808.

This is like asking you want to build a 100 story building in the twentieth century using nothing but the blocks they used to make the pyramids 3000 years ago. It doesn't work that way. The DAC you are talking about is pretty good for DC motor control and stuff but it was never meant for something like sine-wave generation (way to slow). Get yourself the book "Digital Frequency Synthesis Demystified" available on this board. It will show you how to use a chip with a DAC that runs in the 10MHz+ range with onboard filters and logic to make sine-wave and triangle-wave synthesis a piece of cake.

As posted elsewhere on this board:
h**p://rapidshare.de/files/7833926/Digital_Frequency_Synthesis_Demystified_MAZ.rar.html

If you want something simpler, get youself a 8038 chip and wire it up. It will work ffine for sine-waves < 100 KHz (but really in this business, DDS is the future, learn it)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top