C语言怎么编写正弦波

C语言怎么编写正弦波,第1张

源代码如下:

#include#include#define EX 0.000001

#define PI 3.14159265

int main()

{

double x=0.0, temp=1.0, sin=0.0

int i

printf("Please input a degree:")

scanf("%lf",&x)

x=x*PI/180

temp=xi=0

while ( fabs(temp) >EX ) ...{

sin += temp

i += 2

temp = (-1) * temp*x*x/( (i+1)*(i) )

}

printf("sin(%lf) = %lf ",x,sin)

printf("The number is %d ",i)

return 0

}

扩展资料

C语言编写一个程序输出一个正方形的源代码如下:

#include

int main()

{

int i,j,n

scanf("%d",&n)

for(i=0i     

printf("*")

else

printf(" ")

}

printf("\n")

}

return 0 

}

用51单片机或者FPGA完全可以实现正弦波的输出,具体的方法有:

1.你说的查表法,就是在ROM里面建一个表格,只需要四分之一正弦波的数据就可以了,然后用DA输出;

2.用PWM波的方法,就是用单片机的定时计数器输出不同占空比的方波,后端用合适的低通滤波器滤波,就能产生不同幅值的模拟信号正弦波,低通滤波器将方波的高频部分滤掉,PWM波的占空比越大,输出的模拟信号幅值就越高;

3.使用DDS技术,一块DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分。频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码;而相位累加器根据

dds频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦计算器则对该相位值计算数字化正弦波幅度(芯片一般通过查表得到)。DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号

下面是一个简单的用 C 语言实现采样正弦波的示例代码:

cCopy code#include <stdio.h>#include <math.h>#define PI 3.14159265358979323846int main(){int sample_rate = 20000000 // 采样率

int signal_freq = 1250000 // 模拟信号频率

int num_samples = 100 // 采样点数量

double t, signal, carrier, modulated int i, j // 生成载波

double carrier_freq = signal_freq * 16// 载波频率为信号频率的16倍

for (i = 0i <num_samplesi++)

{

t = (double)i / sample_rate // 当前时间

carrier = sin(2 * PI * carrier_freq * t)// 正弦波形式的载波

modulated = 0.0 // 采样信号并进行调制

for (j = 0j <sample_rate / signal_freqj++)

{

signal = sin(2 * PI * signal_freq * t)// 正弦波形式的模拟信号

modulated += signal * carrier

t += 1.0 / sample_rate // 更新时间

}printf("%f\n", modulated)// 输出调制后的采样点

}return 0

}

在上面的代码中,我们先生成了一个频率为 1.25MHz 的模拟信号,然后以其 16 倍的频率(20MHz)生成了一个正弦波形式的载波,并将其与模拟信号进行调制后进行采样。由于采样点数量为 100,因此输出了 100 个调制后的采样点。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12071896.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存