标题: MSP430 ADC采集 LCD1602显示 [打印本页]

作者: 51hei电控200522    时间: 2019-6-7 23:02
标题: MSP430 ADC采集 LCD1602显示
MSP430采集ADC数据,0-3.3V,采用LCD1602显示。三张运行截图证明切实有效。
(1)0.8V


(2)1.3V


(3)3.2V



main文件代码:
  1. void Init_ADC(void)
  2. {
  3.   ADC12CTL0 = SHT0_2 + ADC12ON;             // Set sampling time, turn on ADC12
  4.   ADC12CTL1 = SHP;                          // Use sampling timer
  5.   ADC12IE = 0x01;                           // Enable interrupt
  6.   ADC12CTL0 |= ENC;                         // Conversion enabled
  7.   P6DIR = 0xFE;                            // P6.0, i/p
  8.   P6SEL|= 0x01;                            // P6.0-ADC option select
  9. }

  10. /*******************************************
  11.   函数名称:Trans_val
  12.   功 能:将16进制ADC转换数据变换成三位10进制
  13.   真实的模拟电压数据,并在液晶上显示
  14.   参 数:Hex_Val--16进制数据
  15.   n--变换时的分母等于2的n次方
  16.   返回值 :无
  17. ********************************************/

  18. void Trans_val(uchar ptr[6],uint Hex_Val)
  19. {
  20.   unsigned long caltmp;
  21.   uint Curr_Volt;
  22.   caltmp = Hex_Val;
  23.   caltmp = (caltmp<<5) + Hex_Val; //caltmp = Hex_Val * 3
  24.   Curr_Volt = caltmp>> 12; //Curr_Volt = caltmp / 2^n
  25.   // 参考电压为3.3V,所以计算公式应该为Hex_val*3.3/2^n
  26.   // 乘除计算通过移位来进行可以有效的提高程序运行效率
  27.   ptr[2] = (Curr_Volt / 10)+0x30; //个位
  28.   ptr[4] = (Curr_Volt % 10)+0x30; //小数位
  29. }

  30. void Time0_Init()
  31. {
  32.     TACTL=TASSEL_1+ ID_3+ MC_1;
  33.     CCTL0=CCIE;
  34.     CCR0=1024;
  35. }

  36. void main(void)
  37. {
  38.   WDTCTL=WDTPW + WDTHOLD; // 关闭看门狗
  39.   P6SEL|= 0x03;                            // P6.0-ADC option select
  40.   
  41.   ADC12CTL0 = SHT0_8 + ADC12ON + MSC;         // Set sampling time, turn on ADC12
  42.   ADC12CTL1 = SHP+CONSEQ_1;                 // Use sampling timer
  43.   
  44.   ADC12MCTL0 = INCH_0;
  45.   ADC12MCTL1 = INCH_1 + EOS;

  46.   ADC12IE|= BIT1;                           // Enable interrupt
  47.   ADC12CTL0 |= ENC;                         // Conversion enabled
  48.   ADC12CTL0 |= ADC12SC;       // Start convn, software controlled

  49.   P1DIR=0xFF;            // 设置方向
  50.   P1SEL=0;            // 设置为普通I/O 口
  51.   
  52.   P2DIR=0xFF;            // 设置方向
  53.   P2SEL=0;            // 设置为普通I/O 口

  54.   P2OUT=0x00;
  55.   P1OUT=0x00;
  56.   delayms(200);  
  57.   Time0_Init();  
  58.   LCD_init();
  59.    
  60.   _BIS_SR(LPM0_bits+ GIE);//进入低功耗睡眠模式
  61.   while(1)
  62.   {   
  63.     ADC12IE|=BIT1;      
  64.     ADC12CTL0 |= ENC;
  65.     ADC12CTL0 |= ADC12SC;
  66.    
  67.     LCD_dsp_string(1,1,(char*)ad0);//在第一行第一列显示"LCD TEST"
  68.    
  69.     delayms(20);
  70.   }
  71. }

  72. // ADC12 interrupt service routine
  73. #pragma vector=ADC12_VECTOR
  74. __interrupt void ADC12_ISR (void)
  75. {   
  76.   temp0 = ADC12MEM0;
  77.   Trans_val(ad0,temp0);
  78.   
  79.   temp1 = ADC12MEM1;
  80.   Trans_val(ad1,temp1);
  81.   
  82.   LPM0_EXIT;
  83. }
复制代码



Msp430 ADC采集.zip

142.15 KB, 下载次数: 45, 下载积分: 黑币 -5


作者: xshhh    时间: 2019-7-19 15:05
不得行




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1