用户工具

站点工具


learing:alpha:2017052301

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
learing:alpha:2017052301 [2017/10/03 08:36] 弘毅learing:alpha:2017052301 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== 8F328P的DAC使用 ======
 +ALPHA 8F328P具有一路8位DAC,我们介绍一下,怎样使用DAC。
 +
 +需要注意的是,ADC和DAC使用的是同一个基准源,如果你改变基准源的话是两个所参考的基准源同时改变。
 +
 +===== 程序 =====
 +
 +输出一个固定电压值
 +<code cpp>
 +int dac = 4;  //定义dac管脚
 +void setup() {
 +  pinMode(dac, ANALOG); //初始化dac管脚为模拟输出模式
 +  analogReference(INTERNAL2V048);  //设置基准源为2.048内部基准
 +}
 +
 +void loop() {
 +  analogWrite(dac, 100);  //DAC是8位精度,范围是0-255。255就是基准源上限。计算公式为:2048/256*100
 +}
 +</code>
 +
 +输出正弦波
 +<code cpp>
 +#define PI 3.1415926535897932384626433832795    //定义常数π
 +
 +void setup() {
 +
 +  pinMode(4, ANALOG);     //配置DAC输出
 +  analogReference(INTERNAL4V096);   //内部基准源4.096V
 +}
 +
 +void loop() 
 +{
 + for(float i=0;i<=2;i=i+0.01)    //起始点为0,终止为2π,采样率为0.01
 + {
 +  float rad=PI*i;    
 +  float Sin=sin(rad);
 +  long intSin=Sin*300;    //将数据放大300倍,取整数
 +  byte val=map(intSin,-300,300,0,255);   //映射至8位DAC精度
 +  analogWrite(4, val);   //DAC输出
 +  }
 +}
 +</code>
 +
 +{{:learing:alpha:pasted:20170524-073435.png?nolink|}}
 +