|
本帖最后由 FSL_TICS_ZJJ 于 2014-5-25 22:06 编辑
#defined S_Value //采样值
unsigned char i;
Amplitude = Adc_Amplitude(); //ADC读入幅值
// 幅值计算
unsinged int Amplitude_calculate(unsigned char i)
{
double a,b,c;
unsigned int Result;
a = (double)i /S_Value;
b = sin(2 * 3.14159 * a);
c = (double)(Amplitude * b);
Result = (WORD)c + 2048;
return Result;
}
//输出正弦波
for(i = 0; i <S_Value;i++)
{
DAC_SET(1, Amplitude_calculate(i);
}
以上代码是用DAC来拟合输出正弦波,幅值可以通过外部旋钮调整,使用这段代码的调整幅值输出正弦波的功能可以实现,但是如果采样次数多的话输出频率上不去
目前使用的是PIC18F45K80单片机,使用外部16MHZ晶振,4倍频之后是64MHZ系统时钟,采样值取128的话,正弦波频率只有几个HZ,现在要实现40HZ左右的输出,采样值i就只能取16了
求教怎样做才能使执行效率更高在高采样值的前提下(比如说128),输出40HZ的正弦波 |
|