色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用msp430與TLC5620實(shí)現(xiàn)AD_DA

          用msp430與TLC5620實(shí)現(xiàn)AD_DA

          作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
            剛剛弄了一個(gè)AD_DA的轉(zhuǎn)換。拿來(lái)和大家分享一下。這個(gè)東西沒(méi)有太多的使用價(jià)值,只是初學(xué)者的練手而已。

            先說(shuō)一下器件吧,話筒一個(gè),LM324N放大器將一個(gè),TDA2822音頻放大器一個(gè),揚(yáng)聲器一個(gè)(不要太大,耳麥上就可以),TLC5620msp430學(xué)習(xí)板,電容、電阻自不用說(shuō)。

          本文引用地址:http://cafeforensic.com/article/201611/316448.htm

          框架圖如下:

          話筒——》LM324N——》msp430(ADC12)——》tlc5620——》TDA2822——》揚(yáng)聲器(輸出)

          lM324N的電路圖如下(由于沒(méi)用PCB繪圖,畫(huà)的很難看,還請(qǐng)見(jiàn)諒)

          關(guān)于TDA2822呢參照手冊(cè)上的帶你路途即可,這里不再畫(huà)出。

          下面是程序代碼部分:

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

          //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進(jìn)行通信)
          //代碼:
          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;//發(fā)送中斷允許
          IE1 &=~URXIE0;


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

          //=============================================================
          //功能:時(shí)鐘模塊初始化
          //描述://
          //代碼:
          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腳設(shè)置
          {
          P3DIR=0;

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

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

          //=================================================
          //功能:I/O口高電平輸出函數(shù)
          //描述://
          //代碼:
          void Init_high(int a)
          {
          P3OUT |=a;
          }
          //======================================================


          //=====================================================
          //功能:I/O口低電平輸出函數(shù)
          //描述://
          //代碼:
          void Init_low(int b)
          {
          P3OUT &=~b;
          // _NOP();
          }
          //===========================================


          //=================================================
          //功能:延時(shí)函數(shù)
          //描述://
          //代碼:
          void delays()
          {
          unsigned short i;
          for(i=0;i<5;i++) {_NOP();}
          }
          //=====================================================


          //===================================================
          //功能:data輸出函數(shù)
          //代碼:
          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"
          //======================================
          //功能:中間數(shù)據(jù),用于將AD存儲(chǔ)器中數(shù)據(jù)賦給SPI
          unsigned long Gv_data;
          //=============================================

          //================================================
          //功能:主函數(shù)
          //描述://
          //代碼:
          int main( void )
          {
          // Stop watchdog timer to prevent time out reset
          WDTCTL = WDTPW + WDTHOLD;
          Init_Clk();
          Init_Port();
          Init_Spi();
          Init_AD();

          while(1)
          {
          //使用軟件啟動(dòng)AD轉(zhuǎn)換,必須在轉(zhuǎn)換之前,先復(fù)位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;
          }

          關(guān)于程序的一點(diǎn)說(shuō)明:由于msp430f135的AD是12位的而TLC5620是8位所以對(duì)于AD采到的數(shù)據(jù)要取高8位,固出現(xiàn)了Gv_data>>4的情況,還有一點(diǎn)是二者的采樣速率要一者,體現(xiàn)在時(shí)鐘上。

          還有一點(diǎn)是關(guān)于硬件的由于TLC5620只有8位,固只能體現(xiàn)一個(gè)聲道,只用到TAD2822的一個(gè)輸出。



          關(guān)鍵詞: msp430TLC5620ADD

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉