找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4281|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于MSP430F149單片機的ADC轉(zhuǎn)換

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:207177 發(fā)表于 2017-7-29 11:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
********************************************************
程序功能:MCU的片內(nèi)ADC對P6.0端口,P6.1端口的電壓進行轉(zhuǎn)換
          將模擬電壓值顯示在1602液晶上。
----------------------------------------------------------
測試說明:調(diào)節(jié)電位器R7的旋鈕觀察液晶顯示數(shù)字變化。
*********************************************************/
#include  <msp430x14x.h>
#include  "BoardConfig.h"
#include  "cry1602.h"

#define   Num_of_Results   32  
#define   keyin  (P1IN&0x0f)

uchar shuzi[] = {"0123456789."};
uchar tishi[] = {"The volt is:"};

static uint results[Num_of_Results],results1[Num_of_Results];    //保存ADC轉(zhuǎn)換結(jié)果的數(shù)組                                                     // is not used for anything.
void Trans_val(uint Hex_Val);           

/************************主函數(shù)****************************/
void main(void)
{
  WDTCTL = WDTPW+WDTHOLD;                   //關(guān)閉看門狗
  BoardConfig(0xb8);                        //關(guān)閉數(shù)碼管、流水燈、4245
  LcdReset();                               //復(fù)位1602液晶
  DispNChar(2,0,12,tishi);                  //顯示提示信息
  Disp1Char(11,1,'V');                      //顯示電壓單位
  P6DIR|=BIT3;
  P6OUT|=BIT3;//背光顯示
  P6SEL|=0X03;
  ADC12CTL0 &= ~(ENC);        //設(shè)置ENC為0,從而修改ADC12寄存器的值
  ADC12CTL0 = ADC12ON+SHT0_2+MSC;           // 打開ADC,設(shè)置采樣時間


  //ADC12MCTL0=INCH_0;
  //ADC12MCTL1=INCH_1;
while(1)
{
   ADC12CTL0 &= ~(ENC);  
   if(keyin!=0x0f)
    {
      ADC12CTL0 = ADC12ON+SHT0_2+MSC+REFON;
      ADC12CTL1 = SHP+CONSEQ_2+CSTARTADD_1;     // 使用采樣定時器
      ADC12MCTL1=INCH_1;
      ADC12IE = 0x02;                           // 使能ADC中斷
      static uint index = 0;

      results1[index++] = ADC12MEM1;               // Move results
      if(index == Num_of_Results)
      {
            uchar i;
            unsigned long sum = 0;

            index = 0;
            for(i = 0; i < Num_of_Results; i++)
            {
                sum += results1[i];
            }
            sum >>= 5;                            //除以32

            Trans_val(sum);

      }
    }
    else if (keyin==0x0f)
    {
      ADC12CTL1 = SHP+CONSEQ_2+CSTARTADD_0;     // 使用采樣定時器
      ADC12MCTL0=INCH_0;
      ADC12IE = 0x01;                           // 使能ADC中斷
      static uint index = 0;

      results[index++] = ADC12MEM0;               // Move results
      if(index == Num_of_Results)
      {
            uchar i;
            unsigned long sum = 0;

            index = 0;
            for(i = 0; i < Num_of_Results; i++)
            {
                sum += results[i];
            }
            sum >>= 5;                            //除以32

            Trans_val(sum);

      }
    }

    ADC12CTL0 |= ENC;                         // 使能轉(zhuǎn)換
    ADC12CTL0 |= ADC12SC;                     // 開始轉(zhuǎn)換
}   
  //  _EINT();
  //  LPM0;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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