两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
learing:alpha:2017052301 [2017/10/03 08:36] – 弘毅 | learing:alpha:2017052301 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.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|}} |
| |
| |