⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430f2274adc10 wendu.c

📁 MSP430F2274利用内部10位AD转换器测温度的源程序。
💻 C
字号:
MSP430F2274中ADC10 内部温度传感器-MSP430单片机,MSP430F2274基础知识
    

      /*******************************************************************************************************
      * 功能: ADC10测片内温度两极管的电压                                                     
                    *
      * 描述: 用 temp = ((Vref+ * temp )/ 1023 - 0.986) /0.00355 的公式来计算温           
*
      *       度值程序中写到的  "/0.0000355"  是将结果扩大100倍,保留俩位小数点           *  
      *       AD 采样通道选择 A10(内部温度传感器),选用内部 1.5V 为正向参考电压         * 
      *       采样通道选择 A0,选用AVSS 为负参考电压,AVCC为正参考电压                      *  
      *       ADC10 采样保持时钟源选择 ADC10OSC ,采样保持时间64个ADC10CLKs.     *
      *       用于连续或重复模式并2分频. ADC10CTL0寄存器中的 位7  MSC                    *
      *       0    多次采只样转换位,采样时序,要求SHI 上升沿来触发每次采样转换          *
      *       1 第一次SHI的上升沿触发采样时序 一次采样转换结束以后,以后的采样自     *
      *         动完成以定时方式进行采样.                                                    
                              *
      *                                                                          
                               
                               *      
      *       此例在 IAR Embedded Workbench IDE for MSP430 v3.42a 调试通过 .           
*
      ********************************************************************************************************/

      #include <MSP430x22x4.h>
      unsigned char ADC10FLAG=0;
      unsigned int  result; 
      void TIMER_A_SETTINGS( void )
          {
             TACTL=TASSEL1+TACLR+MC1;                 
             CCR0=50000;                              
             TACCTL0 |= CCIE;              
          }
      void ADC10_SETTINGS ( void )
          {   
            ADC10CTL0 &=~ ENC;             //  设置ADC10CTL 先将此位清0,丧失ADC10功能 才修能改  
          
            ADC10CTL0 |=  SREF_1;          //  AVSS 为负参考电压,VREF+内部参考为正电压 
            ADC10CTL0 |=  ADC10SHT_3;      //  ADC10 采样保持时间为64个ADC10CLKs
            ADC10CTL0 &=~ ADC10SR;         //  采样速率 选用 200KSPS 
            ADC10CTL0 &=~ REFOUT;          //  关闭内部参考电压输出
            ADC10CTL0 &=~ REFBURST;        //  内部参考电压连续补足 
            ADC10CTL0 &=~ MSC;              
            ADC10CTL0 &=~ REF2_5V;         //  选择内部 1.5V 参考电压 
            ADC10CTL0 |=  REFON;           //  开启内部参考电压 
            ADC10CTL0 |=  ADC10IE;         //  允许 ADC10 采样中断   
            ADC10CTL0 &=~ ADC10IFG;        //  初始先清楚 ADC10中断标记位
            ADC10CTL0 |=  ADC10ON;         //  开启 ADC10 采样功能 
            ADC10CTL1 |=  INCH_10;         //  选择A10 ADC10片内温度传感器,
            ADC10CTL1 |=  SHS_0;           //  选启 ADC10 内部采样时时钟发生器 ADC10OSC 
            ADC10CTL1 &=~ ADC10DF;         //  采样结果以二进制格式存放
            ADC10CTL1 &=~ ISSH;            //  采样输入信号不反转
            ADC10CTL1 |=  ADC10DIV_1;      //  对采样时钟源进行 2分频
            ADC10CTL1 |=  CONSEQ_0;        //  单通道单次采样
          }
      void START_ADC10( void )
          {
             ADC10CTL0 |= ADC10SC + ENC;
          }
      void FORMAT_DATA( void )
          {
             result = ADC10MEM;
             result = (int)(((1.5 * result )/ 1023 - 0.986) /0.0000355);  
             _NOP();
          }
      void main( void )
          {
             WDTCTL=WDTPW+WDTHOLD;                   
             BCSCTL1 =CALBC1_1MHZ;                   
             DCOCTL  =CALBC1_1MHZ;
             ADC10_SETTINGS();
             TIMER_A_SETTINGS();
             _BIS_SR(GIE);                 
             while(1)
               {
                 if(ADC10FLAG)
                    {
                      FORMAT_DATA();
                      ADC10FLAG = 0;
                    }
               } 
          }
      #pragma vector = ADC10_VECTOR            
      __interrupt void adc_isr(void)
          {
             ADC10FLAG=1;       
          }     
            
      #pragma vector = TIMERA0_VECTOR
      __interrupt void ta0_isr(void)
          {        
             CCR0=50000;
             START_ADC10();
          }
      MSP430录入:dycxin    责任编辑:dycxin 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -