|
本帖最后由 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的正弦波 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|