📄 cpa.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 + -