0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MSP430之八路ADC單次采集的程序

算法&編程學(xué)院 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師3 ? 2018-04-22 12:45 ? 次閱讀

本程序采用的是八路ADC單次采集的模式,根據(jù)配置,在單次的模式下轉(zhuǎn)換完成后ADC12SC會(huì)自動(dòng)復(fù)位,因此需要在循環(huán)中進(jìn)行ADC12CTL0 |= ADC12SC;操作,而如果配置成連續(xù)采集的模式,只需要在程序開(kāi)始將ADC12SC置位一次就可以,但是就需要注意當(dāng)進(jìn)入中斷后如果不手動(dòng)禁止中斷會(huì)一直停留在循環(huán)中,因此在采集到需要的數(shù)據(jù)后需要將ADC關(guān)閉或者中斷使能禁止才能重新回到主函數(shù),這一點(diǎn)需要注意。

八路單次采集的程序如下:

[cpp] view plain copy/***************************************

八路AD多路單次采集基亞5110液晶顯示

采集模式:多路單次

****************************************/

#include 《msp430x14x.h》

#include “LCD5110.h”

#define uint unsigned int

#define uchar unsigned char

unsigned char ad0[]=“1:0.0V”;

unsigned char ad1[]=“2:0.0V”;

unsigned char ad2[]=“3:0.0V”;

unsigned char ad3[]=“4:0.0V”;

unsigned char ad4[]=“5:0.0V”;

unsigned char ad5[]=“6:0.0V”;

unsigned char ad6[]=“7:0.0V”;

unsigned char ad7[]=“8:0.0V”;

uchar flag=1;

uint temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;

void Init_Clk()

{

uchar i;

BCSCTL1&=~XT2OFF; //打開(kāi)XT振蕩器

do

{

IFG1 &= ~OFIFG; //清除振蕩錯(cuò)誤標(biāo)志

for(i = 0; i 《 100; i++)

_NOP(); //延時(shí)等待

}

while ((IFG1 & OFIFG) != 0); //如果標(biāo)志為1繼續(xù)循環(huán)等待

IFG1&=~OFIFG;

BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M

}

void Init_ADC()

{

P6SEL|=0XFF; //信號(hào)采集端口選擇第二功能

ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打開(kāi)ADC+設(shè)置采樣時(shí)間

ADC12CTL1 = SHP+CONSEQ_1; // 使用采樣時(shí)序電路信號(hào)+多路單次模式

//上面的寄存器配置采樣保持觸發(fā)源選擇時(shí)ADC12SC,采集信號(hào)使用采樣時(shí)序電路產(chǎn)生的信號(hào)

// 轉(zhuǎn)換模式為多路單次復(fù)轉(zhuǎn)換 上面的設(shè)置必須在ENC=0的情況下設(shè)置

//設(shè)置每個(gè)通道的輸入端口和參考電壓,參考電壓默認(rèn)為AVCC 3.3V

ADC12MCTL0 = INCH_0;

ADC12MCTL1 = INCH_1;

ADC12MCTL2 = INCH_2;

ADC12MCTL3 = INCH_3;

ADC12MCTL4 = INCH_4;

ADC12MCTL5 = INCH_5;

ADC12MCTL6 = INCH_10;

ADC12MCTL7 = INCH_11+EOS; // 最后一個(gè)通道

ADC12IE = BIT7; // 最后一個(gè)通道轉(zhuǎn)換完成后使能ADC中斷

ADC12CTL0 |= ENC; // 使能轉(zhuǎn)換

}

/*******************************************

函數(shù)名稱:Trans_val

功 能:將16進(jìn)制ADC轉(zhuǎn)換數(shù)據(jù)變換成三位10進(jìn)制

真實(shí)的模擬電壓數(shù)據(jù),并在液晶上顯示

參 數(shù):Hex_Val--16進(jìn)制數(shù)據(jù)

n--變換時(shí)的分母等于2的n次方

返回值 :無(wú)

********************************************/

void Trans_val(uchar ptr[6],uint Hex_Val)

{

unsigned long caltmp;

uint Curr_Volt;

caltmp = Hex_Val;

caltmp = (caltmp 《《 5) + Hex_Val; //caltmp = Hex_Val * 3

Curr_Volt = caltmp 》》 12; //Curr_Volt = caltmp / 2^n

// 參考電壓為3.3V,所以計(jì)算公式應(yīng)該為Hex_val*3.3/2^n

// 乘除計(jì)算通過(guò)移位來(lái)進(jìn)行可以有效的提高程序運(yùn)行效率

ptr[2] = (Curr_Volt / 10)+0x30; //個(gè)位

ptr[4] = (Curr_Volt % 10)+0x30; //小數(shù)位

}

void main()

{

Init_Clk();

Init_ADC();

WDTCTL = WDTPW + WDTHOLD;

LCD_init();

LCD_showsh(0, 0, “電壓采集:”);

_EINT();//開(kāi)啟全局中斷

P5DIR|=BIT5;

P3OUT|=~BIT5;

while (1)

{

ADC12CTL0 |= ADC12SC;

LCD_prints(0,2,ad0);

LCD_prints(8,2,ad1);

LCD_prints(0,3,ad2);

LCD_prints(8,3,ad3);

LCD_prints(0,4,ad4);

LCD_prints(8,4,ad5);

LCD_prints(0,5,ad6);

LCD_prints(8,5,ad7);

}

}

/*******************************************

函數(shù)名稱:ADC12ISR

功 能:ADC中斷服務(wù)函數(shù)

參 數(shù):無(wú)

返回值 :無(wú)

********************************************/

#pragma vector=ADC_VECTOR

__interrupt void ADC12ISR (void)

{

temp0 = ADC12MEM0;

Trans_val(ad0,temp0);

temp1 = ADC12MEM1;

Trans_val(ad1,temp1);

temp2 = ADC12MEM2;

Trans_val(ad2,temp2);

temp3 = ADC12MEM3;

Trans_val(ad3,temp3);

temp4 = ADC12MEM4;

Trans_val(ad4,temp4);

temp5 = ADC12MEM5;

Trans_val(ad5,temp5);

temp6 = ADC12MEM6;

Trans_val(ad6,temp6);

temp7 = ADC12MEM7;

Trans_val(ad7,temp7);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • msp430
    +關(guān)注

    關(guān)注

    180

    文章

    2392

    瀏覽量

    229155
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6391

    瀏覽量

    543768
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AMC1311是真差分輸出,還是偽差分輸出?可否直接給MSP430ADC采集

    AMC1311是真差分輸出,還是偽差分輸出?可否直接給MSP430ADC采集?還是必須要轉(zhuǎn)化為端信號(hào)提供MSP430
    發(fā)表于 08-15 06:40

    MSP430趣談】系列教程匯總貼

    MSP430第四講之中斷【MSP430趣談】MSP430第五講庫(kù)函數(shù)【MSP430趣談】MSP430
    發(fā)表于 02-20 16:48

    ADC0809八路轉(zhuǎn)換

    adc0809怎樣進(jìn)行八路轉(zhuǎn)換,最好有程序,電路圖如下
    發(fā)表于 04-15 14:22

    sed1335的msp430程序

    sed1335的msp430程序 MSP430子程
    發(fā)表于 04-11 09:53 ?1148次閱讀

    msp430的實(shí)驗(yàn)程序

    msp430的實(shí)驗(yàn)程序代碼,共七個(gè)基礎(chǔ)性的簡(jiǎn)單實(shí)驗(yàn)。
    發(fā)表于 04-28 15:35 ?6次下載

    msp430延時(shí)程序設(shè)計(jì)

    msp430延時(shí)程序設(shè)計(jì)msp430延時(shí)程序設(shè)計(jì)msp430延時(shí)程序設(shè)計(jì)
    發(fā)表于 04-29 14:40 ?0次下載

    msp430內(nèi)部溫度傳感器測(cè)試程序

    MSP430內(nèi)部溫度傳感器測(cè)試程序 //MSP430基礎(chǔ)實(shí)驗(yàn)開(kāi)發(fā)組件 - ADC12內(nèi)部模塊演示程序之內(nèi)部溫度傳感器 //時(shí)鐘設(shè)置:
    發(fā)表于 06-21 15:39 ?21次下載

    msp430單片機(jī)adc+12864液晶顯示菜單程序

    msp430單片機(jī)adc+12864液晶顯示菜單程序
    發(fā)表于 07-20 14:39 ?11次下載

    MSP430教程14:MSP430單片機(jī)ADC12模塊

    MSP430教程14:MSP430單片機(jī)ADC12模塊
    發(fā)表于 10-12 09:03 ?55次下載
    <b class='flag-5'>MSP430</b>教程14:<b class='flag-5'>MSP430</b>單片機(jī)<b class='flag-5'>ADC</b>12模塊

    基于MSP430功能模塊詳解系列——ADC12

    基于MSP430功能模塊詳解系列——ADC12
    發(fā)表于 10-12 15:24 ?4次下載
    基于<b class='flag-5'>MSP430</b>功能模塊詳解系列<b class='flag-5'>之</b>——<b class='flag-5'>ADC</b>12

    MSP430單片機(jī)實(shí)踐篇MSP430單片機(jī)ADC模數(shù)轉(zhuǎn)換操作

    MSP430單片機(jī)中斷編程;ADC(模數(shù)轉(zhuǎn)換)的實(shí)現(xiàn);MSP430單片機(jī)低功耗控制(休眠)。
    發(fā)表于 04-28 10:46 ?43次下載
    <b class='flag-5'>MSP430</b>單片機(jī)實(shí)踐篇<b class='flag-5'>之</b><b class='flag-5'>MSP430</b>單片機(jī)<b class='flag-5'>ADC</b>模數(shù)轉(zhuǎn)換操作

    MSP430ADC12模塊

    msp430內(nèi)部含有 ADC12模塊,可以完成12位的模數(shù)轉(zhuǎn)換,當(dāng)對(duì)精度或其他指標(biāo)要求不高時(shí),可以選用430單片機(jī)內(nèi)部的 ADC12完成模數(shù)轉(zhuǎn)換工作。
    發(fā)表于 05-04 09:40 ?6次下載
    <b class='flag-5'>MSP430</b><b class='flag-5'>之</b><b class='flag-5'>ADC</b>12模塊

    MSP430單片機(jī)ADC模數(shù)轉(zhuǎn)換操作

    學(xué)習(xí)要點(diǎn):MSP430單片機(jī)中斷編程;ADC(模數(shù)轉(zhuǎn)換)的實(shí)現(xiàn);MSP430單片機(jī)低功耗控制(休眠)。
    發(fā)表于 05-08 08:43 ?45次下載
    <b class='flag-5'>MSP430</b>單片機(jī)<b class='flag-5'>ADC</b>模數(shù)轉(zhuǎn)換操作

    MSP430單片機(jī)教程之MSP430的詳細(xì)程序示例合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MSP430單片機(jī)教程之MSP430的詳細(xì)程序示例合集免費(fèi)下載。
    發(fā)表于 09-13 08:00 ?197次下載

    MSP430單片機(jī)串口控制5PWM頻率變化程序

    MSP430單片機(jī)串口控制5PWM頻率變化程序
    發(fā)表于 11-19 15:51 ?11次下載
    <b class='flag-5'>MSP430</b>單片機(jī)串口控制5<b class='flag-5'>路</b>PWM頻率變化<b class='flag-5'>程序</b>