STM32单片机DA程序

STM32单片机DA程序,第1张

//DAC通道1输出初始化

void Dac1_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

DAC_InitTypeDef DAC_InitType;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //使能PORTA通道时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //使能DAC通道时钟

GPIO_InitStructureGPIO_Pin = GPIO_Pin_4; // 端口配置

GPIO_InitStructureGPIO_Mode = GPIO_Mode_AIN; //模拟输入

GPIO_InitStructureGPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA4 输出高

DAC_InitTypeDAC_Trigger=DAC_Trigger_None; //不使用触发功能 TEN1=0

DAC_InitTypeDAC_WaveGeneration=DAC_WaveGeneration_None;//不使用波形发生

DAC_InitTypeDAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽、幅值设置

DAC_InitTypeDAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭 BOFF1=1

DAC_Init(DAC_Channel_1,&DAC_InitType); //初始化DAC通道1

DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC1

DAC_SetChannel1Data(DAC_Align_12b_R, 0); //12位右对齐数据格式设置DAC值

}

//设置通道1输出电压

//vol:0~3300,代表0~33V

void Dac1_Set_Vol(u16 vol)

{

float temp=vol;

temp/=1000;

temp=temp4096/33;

DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值

}

用电阻分压是可行的,计算时要考虑基准电压端要吸入30~45微安的电流。因此电阻要取小些,比如上分压电阻取1K,下分压电阻取约52欧(我只是估算,你自己精确算下)。但分压不是最好的方法,最好还是用可调精密电压基准,如TL431等。DAC8551/8552上电时默认输出为0,如果为了保险,可在控制端加上拉或下拉电阻的方法确保单片机不输出时DAC输出 为0。

如果您想将乐之邦DAC05解码器连接到电脑上使用,那么您需要安装相应的驱动程序。这是因为DAC05解码器需要与电脑进行通信,并且电脑需要知道如何处理来自解码器的信号。

为了安装驱动程序,您需要首先从乐之邦官网或其他可靠的网站下载最新的驱动程序。然后,将解码器连接到电脑上,并按照驱动程序的安装指南进行 *** 作。在安装过程中,您需要注意一些特定的设置,例如选择正确的 *** 作系统版本和设置音频输出选项。

完成安装后,您可以通过音频设置或其他相应的软件来配置解码器,并开始使用它来提高音频质量。请注意,在使用过程中,您需要定期检查驱动程序是否需要更新,以确保解码器正常运行。

DAC832是一个数模转换芯片,要用它产生三角波,只需要将AD转换的值从低到高,再从高到低传送给它就可以实现了,以下是具体例程:

ORG 0000H

JMP START

ORG 0030H

START:

CLR A

LOOP: ;该循环产生上升波形

MOV P1, A ;输出,D/A 转换

INC A

CALL DELAY ;延时

CJNE A,#250,LOOP

LOOP1: ;该循环产生下降波形

DEC A

MOV P1,A

JNZ LOOP1

SJMP START

DELAY: ;延时子程序

MOV R6, #2

DEL1:

MOV R7, #250

DEL2:

DJNZ R7, DEL2 ;内循环250遍

DJNZ R6, DEL1 ;外循环2遍

RET

END

/ 在P14上可用示波器看到三角波 /

#include <msp430x42x0h>

void main(void)

{

unsigned char i,j;

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

SD16CTL = SD16REFON; // 12V ref

DAC12_0CTL = DAC12OPS + DAC12SREF_2 + DAC12IR + DAC12AMP_5 + DAC12ENC;

// DAC o/p external, Ref Voltage = internal (SD16),

// O/p Voltage range = 1x ref, Enable conversion

while(1){

for(i=0;i<100;i++)

{

DAC12_0DAT = 20i; // 步进输出三角上升阶梯

for(j=0;j<10;j++); // 软延时

}

for(i=100;i>0;i--);

{

DAC12_0DAT = 20i; // 步进输出三角下降阶梯

for(j=0;j<10;j++); // 软延时

}}

} // main

这个程序是ST官方自带的,是双DAC模式,产生两个通道的正弦波,进行那个运算是为使双DAC的12位右对齐数据保持寄存器(DAC_DHR12RD) 中的DAC通道1和通道2都能得取到值

以上就是关于STM32单片机DA程序全部的内容,包括:STM32单片机DA程序、dac芯片输出电路设计请教、乐之邦dac05解码器连电脑用安装驱动吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10626762.html

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

发表评论

登录后才能评论

评论列表(0条)

保存