衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

算法&編程學院 ? 來源:網絡整理 ? 作者:工程師3 ? 2018-04-22 12:45 ? 次閱讀

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

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

[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; //打開XT振蕩器

do

{

IFG1 &= ~OFIFG; //清除振蕩錯誤標志

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

_NOP(); //延時等待

}

while ((IFG1 & OFIFG) != 0); //如果標志為1繼續循環等待

IFG1&=~OFIFG;

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

}

void Init_ADC()

{

P6SEL|=0XFF; //信號采集端口選擇第二功能

ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打開ADC+設置采樣時間

ADC12CTL1 = SHP+CONSEQ_1; // 使用采樣時序電路信號+多路單次模式

//上面的寄存器配置采樣保持觸發源選擇時ADC12SC,采集信號使用采樣時序電路產生的信號

// 轉換模式為多路單次復轉換 上面的設置必須在ENC=0的情況下設置

//設置每個通道的輸入端口和參考電壓,參考電壓默認為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; // 最后一個通道

ADC12IE = BIT7; // 最后一個通道轉換完成后使能ADC中斷

ADC12CTL0 |= ENC; // 使能轉換

}

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

函數名稱:Trans_val

功 能:將16進制ADC轉換數據變換成三位10進制

真實的模擬電壓數據,并在液晶上顯示

參 數:Hex_Val--16進制數據

n--變換時的分母等于2的n次方

返回值 :無

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

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,所以計算公式應該為Hex_val*3.3/2^n

// 乘除計算通過移位來進行可以有效的提高程序運行效率

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

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

}

void main()

{

Init_Clk();

Init_ADC();

WDTCTL = WDTPW + WDTHOLD;

LCD_init();

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

_EINT();//開啟全局中斷

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);

}

}

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

函數名稱:ADC12ISR

功 能:ADC中斷服務函數

參 數:無

返回值 :無

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

#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);

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • msp430
    +關注

    關注

    180

    文章

    2403

    瀏覽量

    229611
  • adc
    adc
    +關注

    關注

    99

    文章

    6533

    瀏覽量

    545744
收藏 人收藏

    評論

    相關推薦

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

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

    MSP430趣談】系列教程匯總貼

    MSP430第四講之中斷【MSP430趣談】MSP430第五講庫函數【MSP430趣談】MSP430
    發表于 02-20 16:48

    ADC0809八路轉換

    adc0809怎樣進行八路轉換,最好有程序,電路圖如下
    發表于 04-15 14:22

    sed1335的msp430程序

    sed1335的msp430程序 MSP430子程
    發表于 04-11 09:53 ?1173次閱讀

    msp430的實驗程序

    msp430的實驗程序代碼,共七個基礎性的簡單實驗。
    發表于 04-28 15:35 ?6次下載

    msp430延時程序設計

    msp430延時程序設計msp430延時程序設計msp430延時程序設計
    發表于 04-29 14:40 ?0次下載

    msp430內部溫度傳感器測試程序

    MSP430內部溫度傳感器測試程序 //MSP430基礎實驗開發組件 - ADC12內部模塊演示程序之內部溫度傳感器 //時鐘設置:
    發表于 06-21 15:39 ?21次下載

    msp430單片機adc+12864液晶顯示菜單程序

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

    MSP430教程14:MSP430單片機ADC12模塊

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

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

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

    MSP430單片機實踐篇MSP430單片機ADC模數轉換操作

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

    MSP430ADC12模塊

    msp430內部含有 ADC12模塊,可以完成12位的模數轉換,當對精度或其他指標要求不高時,可以選用430單片機內部的 ADC12完成模數轉換工作。
    發表于 05-04 09:40 ?6次下載
    <b class='flag-5'>MSP430</b><b class='flag-5'>之</b><b class='flag-5'>ADC</b>12模塊

    MSP430單片機ADC模數轉換操作

    學習要點:MSP430單片機中斷編程;ADC(模數轉換)的實現;MSP430單片機低功耗控制(休眠)。
    發表于 05-08 08:43 ?45次下載
    <b class='flag-5'>MSP430</b>單片機<b class='flag-5'>ADC</b>模數轉換操作

    MSP430單片機教程之MSP430的詳細程序示例合集免費下載

    本文檔的主要內容詳細介紹的是MSP430單片機教程之MSP430的詳細程序示例合集免費下載。
    發表于 09-13 08:00 ?197次下載

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

    MSP430單片機串口控制5PWM頻率變化程序
    發表于 11-19 15:51 ?11次下載
    <b class='flag-5'>MSP430</b>單片機串口控制5<b class='flag-5'>路</b>PWM頻率變化<b class='flag-5'>程序</b>
    百家乐赌博讨论群| 麻栗坡县| 属猪属蛇做生意怎么样| 易胜博棋牌| 致胜百家乐软件| 东山县| 百家乐大轮转| 带百家乐官网的时时彩平台| 15人百家乐桌| 真人百家乐官网赌注| 大发888代理| 好望角百家乐官网的玩法技巧和规则 | 百家乐官网规则以及玩法| 六合彩开奖网站| 百家乐开户最快的平台是哪家| 百家乐官网是否有路子| 百家乐什么方法容易赢| 百家乐官网这样赢保单分析| 云鼎娱乐城信誉度| 百家乐有几种打法| 百家乐官网庄闲多少| 足球百家乐系统| 百家乐官网博彩平| 皇冠网游戏小说| 百家乐家乐娱乐城| 云鼎百家乐官网作弊| 比分直播| 百家乐号游戏机| 百家乐官网有公式| 元江| 百家乐怎么玩请指教| 百家乐官网技巧-澳门百家乐官网官方网址| 大发888 dafa888 gzsums| 百家乐隐者博客| 百家乐官网视频游戏网址| 大发888娱乐城赢钱| 百家乐赌的技巧| 澳门百家乐官网娱乐城信誉如何 | 澳门赌百家乐心法| 电脑百家乐官网玩| 霍邱县|