您的位置 首页 知识

用msp430与TLC5620完成AD_DA

刚刚弄了一个AD_DA的转换。拿来和大家分享一下。这个东西没有太多的使用价值,只是初学者的练手而已。先说一下器件吧,话筒一…

  刚刚弄了一个AD_DA的转化。拿来和我们共享一下。这个东西没有太多的运用价值,仅仅初学者的练手罢了。

  先说一下器材吧,话筒一个,LM324N放大器将一个,TDA2822音频放大器一个,扬声器一个(不要太大,耳麦上就可以),TLC5620msp430学习板,电容、电阻自不用说。

结构图如下:

话筒——》LM324N——》msp430(ADC12)——》tlc5620——》TDA2822——》扬声器(输出)

lM324N的电路图如下(因为没用PCB绘图,画的很丑陋,还请见谅)

关于TDA2822呢参照手册上的带你路程即可,这儿不再画出。

下面是程序代码部分:

//================================================

//define.h文件

#define SIMO BIT1
#define SOMI BIT2
#define SCLK BIT3
#define LDAC BIT7
#define LOAD BIT6

//==============================================

//================================================

//Init_ADDA.c文件

//==========================================================
//功用:AD模块初始化
//描绘://
//代码:
void Init_AD()
{
//初始化AD
P6SEL=0xC0;
ADC12CTL0=ADC12ON+REFON+REF2_5V+SHT0_8; // Turn on ADC12, extend sampling time
ADC12CTL1=SHP+ADC12SSEL_2+CONSEQ_0; // Use sampling timer, repeated sequence
ADC12MCTL0=SREF_1+INCH_6;

ADC12CTL0|=ENC;
}
//================================================================

//================================================================
//功用:DA模块初始化
//描绘:本DA模块是外接的(运用SPI进行通讯)
//代码:
void Init_Spi()
{ //初始化SPI
U0CTL |=SWRST;
P3SEL=0;
P3SEL |= SIMO |SCLK | SOMI;
ME1 |=USPIE0;//SPIO allow
U0CTL=0X00;//reset register is 0
U0CTL |=CHAR + SYNC + MM+SWRST;//data 8 bit,SPI,master
U0TCTL=0X00;//reset register is 0
U0TCTL=SSEL1+SSEL0+STC;//timer is smclk,3 line
//bit offset
UBR00=0X20;
UBR10=0x00;
UMCTL0=0X00;
U0CTL &=~SWRST;
IE1 &=~UTXIE0;//发送中止答应
IE1 &=~URXIE0;

}
//=============================================================

//=============================================================
//功用:时钟模块初始化
//描绘://
//代码:
voidInit_Clk()
{
inti;
do
{
BCSCTL1&=~XT2OFF;//turn on XT2
IFG1&=~OFIFG;//high frequency crystal is stable
for(i=0; i < 2000; i++)
{}
}while((IFG1 & OFIFG) !=0);

//MClk=6M / 1=6M ;
//SMClk=6M / 1=6M
BCSCTL2|=SELM_2 + DIVM_0 + SELS;
}

//====================================================================

//===================================================================
//功用:I/O口初始化
//描绘://
//代码:
void Init_Port()//P3脚设置
{
P3DIR=0;

P3DIR |=LOAD + LDAC;
P3OUT |=LOAD + LDAC;

}
//================================================================

//=================================================
//功用:I/O口高电平输出函数
//描绘://
//代码:
void Init_high(int a)
{
P3OUT |=a;
}
//======================================================

//=====================================================
//功用:I/O口低电平输出函数
//描绘://
//代码:
void Init_low(int b)
{
P3OUT &=~b;
// _NOP();
}
//===========================================

//=================================================
//功用:延时函数
//描绘://
//代码:
void delays()
{
unsigned short i;
for(i=0;i<5;i++) {_NOP();}
}
//=====================================================

//===================================================
//功用:data输出函数
//代码:
void Init_tx(unsigned long data,unsigned int xuan)
{ while((IFG1 & UTXIFG0)!=UTXIFG0);
TXBUF0=xuan;
while((IFG1 & UTXIFG0)!=UTXIFG0);
TXBUF0=data;
Init_low(LOAD);
_NOP();
Init_high(LOAD);
_NOP();
Init_low(LDAC);
_NOP();
Init_high(LDAC);

}
//====================================================

//====================================================

//main.c文件

#include “io430.h”
#include “in430.h”
#include “define.h”
#include “Init_ADDA.c”
//======================================
//功用:中心数据,用于将AD存储器中数据赋给SPI
unsigned long Gv_data;
//=============================================

//================================================
//功用:主函数
//描绘://
//代码:
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Init_Clk();
Init_Port();
Init_Spi();
Init_AD();

while(1)
{
//运用软件发动AD转化,必须在转化之前,先复位Enc,然后再使能ENC
ADC12CTL0&=~ENC; // Enable conversions
ADC12CTL0|=(ENC|ADC12SC);
while(ADC12CTL1&ADC12BUSY)
{}
Gv_data=ADC12MEM0;
Gv_data=Gv_data>>4;
Init_tx(Gv_data,0);

}
//return 0;
}

关于程序的一点阐明:因为msp430f135的AD是12位的而TLC5620是8位所以关于AD采到的数据要取高8位,固呈现了Gv_data>>4的状况,还有一点是二者的采样速率要一者,表现在时钟上。

还有一点是关于硬件的因为TLC5620只要8位,固只能表现一个声道,只用到TAD2822的一个输出。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/273069.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部