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

📄 cpa.c

📁 msp430斜坡a/d转换器测电阻值
💻 C
字号:
#include "msp430xw42x.h"
long  SHE;
char digit[]={

//位0-7
0x7D, //"0"
0x60,//"1"
0x3E,//"2"
0x7A,//"3"
0x63,//"4"
0x5B,//"5"
0x5F,//"6"
0x70,//"7"
0x7F,//"8"
0x7B,//"9"
0x80,//"."或者最后一位数字后"k"

//LCDMEM[8]
0X01,  //15   8-"M"   MGJm3/                
0X02,  //16   8-"G"   MGJm3/
0X04,  //17   8-"M"   kmwh
0X08,  //18   8-"W"   kmwh

0X10,  //11   8-"J"       MGJm3/              
0X20,  //12   8-"m3"      MGJm3/
0X40,  //13   8-"/"       MGJm3/            
0X80,  //14   8-"h"        kmwh

//LCDMEM[9]
0X01,  //∏∏            
0X02,  //S℃
0X04,  //R℃
0X08,  //Δt

0X10,  //!         
0X20,  //s
0X40,  //⊙        
0X80,  //〓
   
};


void delay(unsigned long delay_number)
{
    long i;
    for(i=0;i<delay_number;i++)
    {}
}  


//#################################################################################


void main(void)

{
WDTCTL=WDTPW+WDTHOLD;                      //关狗
_EINT();                                  //开中断
TACTL = TASSEL0+TACLR+MC0;               //32768hz辅助时钟+清空计数器+增计数              
CCR0=35526;                              //计数到32768产生中断(比较模式)
CCTL0 = CCIE;                            //增计数允许中断 
CACTL1 = CAON+CAIE+CAIES;               //打开比较+允许中断+下降沿
CACTL2 = P2CA0+P2CA1+CAF;                    //p1.7+p1.6外部电压接入+低通滤波器

          LCDCTL=LCDON+LCD4MUX+LCDP1;  //开启lcd模块使用4个com口
          P5SEL=0xfc;                 //p5.1为第2功能(com口)
          FLL_CTL0=XCAP18PF;         //设置频率产生的电容为18pf
          BTCTL=BTFRFQ1;              //设置为lcd频率 
          
          
while(1)
         {
                    if ((P1IN&0x20)== 0) //按下按钮
                       {

                       P2DIR&=~(BIT2+BIT3);//打开一路测温电阻
                       P2OUT&=~(BIT2+BIT3);
                      
                      }else 
                      {
                       P2DIR|=BIT2+BIT3+BIT4;//打开2路测温电阻
                       P2OUT|=BIT2+BIT3+BIT4;
                      }

          LCDMEM[0]=digit[(SHE/10000000)%10];//刷新led的数字
          LCDMEM[1]=digit[(SHE/1000000)%10];
          LCDMEM[2]=digit[(SHE/100000)%10];
          LCDMEM[3]=digit[(SHE/10000)%10];
          LCDMEM[4]=digit[(SHE/1000)%10];
          LCDMEM[5]=digit[(SHE/100)%10];
          LCDMEM[6]=digit[(SHE/10)%10];
          LCDMEM[7]=digit[(SHE/1)%10];
          LCDMEM[8]=digit[11];
          LCDMEM[9]=digit[19];
         
         }
}
#pragma vector=TIMERA0_VECTOR   //每阁1秒给电容充电
__interrupt void TimerA0()
{
 P2DIR|=BIT1+BIT0;
 P2OUT|=BIT1+BIT0;
 delay(500);
 P2DIR&=~(BIT1+BIT0);
 P2OUT&=~(BIT1+BIT0);
 P1DIR|=BIT5;
 P1OUT|=BIT5;
 delay(500);
 P1DIR&=~BIT5;
 P1OUT&=~BIT5;
 TAR=0;
 
}
#pragma vector = COMPARATORA_VECTOR       //如果电压p1.6<p1.7中断激活
__interrupt void COMPARATORA_INT(void)
{
SHE=TAR;                                  //记下当前的时钟
}

⌨️ 快捷键说明

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