|
MSP430采集ADC數(shù)據(jù),0-3.3V,采用LCD1602顯示。三張運行截圖證明切實有效。
(1)0.8V
0.PNG (24.86 KB, 下載次數(shù): 78)
下載附件
2019-6-7 22:49 上傳
(2)1.3V
msp430 ADC12 LCD.PNG (24.9 KB, 下載次數(shù): 93)
下載附件
2019-6-7 22:49 上傳
(3)3.2V
1.PNG (25.22 KB, 下載次數(shù): 83)
下載附件
2019-6-7 22:49 上傳
main文件代碼:
- void Init_ADC(void)
- {
- ADC12CTL0 = SHT0_2 + ADC12ON; // Set sampling time, turn on ADC12
- ADC12CTL1 = SHP; // Use sampling timer
- ADC12IE = 0x01; // Enable interrupt
- ADC12CTL0 |= ENC; // Conversion enabled
- P6DIR = 0xFE; // P6.0, i/p
- P6SEL|= 0x01; // P6.0-ADC option select
- }
- /*******************************************
- 函數(shù)名稱:Trans_val
- 功 能:將16進制ADC轉(zhuǎn)換數(shù)據(jù)變換成三位10進制
- 真實的模擬電壓數(shù)據(jù),并在液晶上顯示
- 參 數(shù):Hex_Val--16進制數(shù)據(jù)
- 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,所以計算公式應(yīng)該為Hex_val*3.3/2^n
- // 乘除計算通過移位來進行可以有效的提高程序運行效率
- ptr[2] = (Curr_Volt / 10)+0x30; //個位
- ptr[4] = (Curr_Volt % 10)+0x30; //小數(shù)位
- }
- void Time0_Init()
- {
- TACTL=TASSEL_1+ ID_3+ MC_1;
- CCTL0=CCIE;
- CCR0=1024;
- }
- void main(void)
- {
- WDTCTL=WDTPW + WDTHOLD; // 關(guān)閉看門狗
- P6SEL|= 0x03; // P6.0-ADC option select
-
- ADC12CTL0 = SHT0_8 + ADC12ON + MSC; // Set sampling time, turn on ADC12
- ADC12CTL1 = SHP+CONSEQ_1; // Use sampling timer
-
- ADC12MCTL0 = INCH_0;
- ADC12MCTL1 = INCH_1 + EOS;
- ADC12IE|= BIT1; // Enable interrupt
- ADC12CTL0 |= ENC; // Conversion enabled
- ADC12CTL0 |= ADC12SC; // Start convn, software controlled
- P1DIR=0xFF; // 設(shè)置方向
- P1SEL=0; // 設(shè)置為普通I/O 口
-
- P2DIR=0xFF; // 設(shè)置方向
- P2SEL=0; // 設(shè)置為普通I/O 口
-
- P2OUT=0x00;
- P1OUT=0x00;
- delayms(200);
- Time0_Init();
- LCD_init();
-
- _BIS_SR(LPM0_bits+ GIE);//進入低功耗睡眠模式
- while(1)
- {
- ADC12IE|=BIT1;
- ADC12CTL0 |= ENC;
- ADC12CTL0 |= ADC12SC;
-
- LCD_dsp_string(1,1,(char*)ad0);//在第一行第一列顯示"LCD TEST"
-
- delayms(20);
- }
- }
- // ADC12 interrupt service routine
- #pragma vector=ADC12_VECTOR
- __interrupt void ADC12_ISR (void)
- {
- temp0 = ADC12MEM0;
- Trans_val(ad0,temp0);
-
- temp1 = ADC12MEM1;
- Trans_val(ad1,temp1);
-
- LPM0_EXIT;
- }
復制代碼
|
-
-
Msp430 ADC采集.zip
2019-6-7 23:01 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
142.15 KB, 下載次數(shù): 45, 下載積分: 黑幣 -5
評分
-
查看全部評分
|