找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6446|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

MSP430單片機(jī)片內(nèi)12位DA產(chǎn)生正弦波C語(yǔ)言程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51337 發(fā)表于 2013-7-14 16:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include  <msp430x16x.h>
  2. //------------------------------------------------------------------------------
  3. // 12-bit Sine Lookup table with 32 steps
  4. //------------------------------------------------------------------------------
  5. static int Sin_tab[32] = { 0x7FF,0xA78,0xCB2,0xE77,0xF9A,0xFFE,0xF9A,0xE77,0xCB2,0xA78,0x7FF,0x586,0x34C,0x187,0x064,0x000
  6. ,0x064,0x187,0x34C,0x586};
  7. static int Cos_tab[32] = { 0xFFE,0xF9A,0xE77,0xCB2,0xA78,0x7FF,0x586,0x34C,0x187,0x064,0x000
  8. ,0x064,0x187,0x34C,0x586,0x7FF,0xA78,0xCB2,0xE77,0xF9A};

  9. void main(void)
  10. {
  11.   volatile unsigned int i;
  12.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  13.    //==========================選擇高頻振蕩器=======================================
  14.   BCSCTL1 &= ~XT2OFF;                       // XT2= HF XTAL
  15.    do
  16.   {
  17.   IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  18.   for (i = 0xFF; i > 0; i--);               // Time for flag to set
  19.   }
  20.   while ((IFG1 & OFIFG)); //查看8M的震蕩是否穩(wěn)定  // OSCFault flag still set?
  21.   BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK選擇XT2// MCLK= SMCLK= XT2 (safe)
  22.   //================================================================================
  23.   ADC12CTL0 = REF2_5V + REFON;//內(nèi)部基準(zhǔn)電壓      // Internal 2.5V ref
  24.   //================================================================================
  25.   DMACTL0 = DMA0TSEL_5 + DMA1TSEL_5;        // DAC12IFG trigger觸發(fā)器
  26.   DMA0SA = (int) Sin_tab;//首地址           // Source block address
  27.   DMA0DA = (int)&DAC12_0DAT; //目的地址     // Destination single address
  28.   DMA0SZ = 0x14;       //長(zhǎng)度               // Block size
  29.   DMA0CTL = DMADT_4 + DMASRCINCR_3 + DMAEN; // Rpt, inc src, word-word

  30.   DMA1SA = (int) Cos_tab;  //首地址          // Source block address
  31.   DMA1DA = (int)&DAC12_1DAT; //目的地址      // Destination single address
  32.   DMA1SZ = 0x14;       //長(zhǎng)度                // Block size
  33.   DMA1CTL = DMADT_4 + DMASRCINCR_3 + DMAEN;  // Rpt, inc src, word-word

  34.   DAC12_0CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_5 + DAC12IFG + DAC12ENC + DAC12GRP;
  35.   DAC12_1CTL = DAC12LSEL_2 + DAC12IR + DAC12AMP_5 + DAC12IFG + DAC12ENC;

  36.   CCTL1 = OUTMOD_3;//置位復(fù)位模式           // CCR1 set/reset
  37.   CCR1 = 1;    //設(shè)置占空比                 // CCR1 PWM Duty Cycle
  38.   CCR0 = 1; //設(shè)置周期                     // Clock period of CCR0
  39.   TACTL = TASSEL_2 + MC_1; //定時(shí)器A的時(shí)鐘源為SMCLK=8M,增計(jì)數(shù)模式 // SMCLK, upmode

  40.   _BIS_SR(CPUOFF);                          // CPU off
  41. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:53173 發(fā)表于 2013-8-17 22:00 | 只看該作者
這個(gè)從哪個(gè)管腳輸出正弦波
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表