在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

              先說一下器件吧,話筒一個,LM324N放大器將一個,TDA2822音頻放大器一個,揚聲器一個(不要太大,耳麥上就可以),TLC5620msp430學習板,電容、電阻自不用說。

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

            框架圖如下:

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

            lM324N的電路圖如下(由于沒用PCB繪圖,畫的很難看,還請見諒)

            關(guān)于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;//發(fā)送中斷允許
            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腳設(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ù)
            //描述://
            //代碼:
            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存儲器中數(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)
            {
            //使用軟件啟動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)于程序的一點說明:由于msp430f135的AD是12位的而TLC5620是8位所以對于AD采到的數(shù)據(jù)要取高8位,固出現(xiàn)了Gv_data>>4的情況,還有一點是二者的采樣速率要一者,體現(xiàn)在時鐘上。

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



            關(guān)鍵詞: msp430TLC5620ADD

            評論


            技術(shù)專區(qū)

            關(guān)閉