📄 0-100度水的焓值表密度计算公式.c
字号:
#include <msp430x14x.h>
unsigned int j=0;
static const char led_tab[]=
{0x7E,0x30,0x6D,0x79,
0x33,0x5B,0x5F,0x70,
0X7F,0x7B,0x80}; //7段显示数据表,0-9,"."
//水的定压比热容非4.17部分,扩大了1000,即(4170+表中数据)/1000为实际数值
char han_value[]={
0X31,0X2D,0X2A,0X27,0X25,0X22,0X20,0X1E,0X1C,0X1A,
0X19,0X17,0X16,0X15,0X13,0X13,0X11,0X10,0X10,0X0F,
0X0E,0X0D,0X0D,0X0C,0X0B,0X0B,0X0B,0X0A,0X0A,0X0A,
0X09,0X09,0X09,0X08,0X08,0X08,0X08,0X08,0X08,0X08,
0X08,0X08,0X08,0X08,0X08,0X08,0X08,0X08,0X08,0X08,
0X09,0X09,0X09,0X09,0X0A,0X0A,0X0B,0X0B,0X0B,0X0B,
0X0C,0X0C,0X0D,0X0D,0X0E,0X0E,0X0F,0X10,0X10,0X11,
0X11,0X12,0X13,0X13,0X14,0X15,0X15,0X16,0X17,0X18,
0X19,0X1A,0X1A,0X1B,0X1C,0X1D,0X1E,0X1F,0X20,0X21,
0X22,0X23,0X25,0X25,0X27,0X28,0X29,0X2A,0X2B,0X2C,0X2E,
};
#pragma vector=PORT2_VECTOR //外部按键中断
__interrupt void Port2()
{
//if((P1IN&BIT4)==BIT4)
P2IFG &= ~BIT4;; //中断标志清除
LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽
}
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void) //ta1脉冲中断
{
switch(TAIV)
{
case 2:
//P1OUT^=0x01; //脉冲累加
//// j++;
break;
case 4:break;
case 10:
break;
}
}
void main(void)
{
unsigned int k,ii,ai;
float f_md;
unsigned int m,i;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR=BIT0;
P1OUT|=BIT0; //熄灭P1.0
P4DIR |=0xFF;
P3DIR |=0xFF;
P3OUT=0XFF;
// P1DIR&=~BIT0; //设置为输入方向
//P1SEL&=~BIT0; //设置为普通I/O口功能
P2DIR=~BIT4;
P2IES|=BIT4; //选择下降沿触发
P2IE|=BIT4; //打开中断允许
// P1OUT=~BIT0;
P1SEL = BIT2; //设置P1.2端口为功能模块使用 他TA1
TACTL = TASSEL0+TACLR+TAIE+MC1; //定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式
CCTL1 = SCS+CAP+CCIE; //,CCI0A为捕获信号源
CCTL1 |=0x4000; //输入上升沿捕获
_EINT();
while(1) // Repeat forever
{
//以下代码可以作为按键显示延时用**********************************************
P1OUT&=~BIT0; //点亮P1.0
for (ai=0;ai<=100;ai++)
{
f_md=-0.0035*ai*ai - 0.0708*ai + 1000.9;//水的密度计算公式
j=f_md;
// j=4170+han_value[ai];//水的定压比热容计算(扩大了1000)
for(k=0;k<4;k++)
{
//for(ii=0;ii<2;ii++)
for(ii=0;ii<100;ii++)
{
P4OUT=led_tab[j/1000]; //千位
P3OUT&=~BIT1;
P3OUT|=BIT2;
P3OUT|=BIT3;
P3OUT|=BIT4;
for(i=0;i<=100;i++); //显示短暂停顿
m=j%1000;
P4OUT=led_tab[m/100]; //百位
P3OUT|=BIT1;
P3OUT&=~BIT2;
P3OUT|=BIT3;
P3OUT|=BIT4;
for(i=0;i<=100;i++);
m=j%100;
P4OUT=led_tab[m/10]; //十位
P3OUT|=BIT1;
P3OUT|=BIT2;
P3OUT&=~BIT3;
P3OUT|=BIT4;
for(i=0;i<=100;i++);
m=j%10;
P4OUT=led_tab[m]; //个位
P3OUT|=BIT1;
P3OUT|=BIT2;
P3OUT|=BIT3;
P3OUT&=~BIT4;
for(i=0;i<=100;i++);
}
}
}
P1OUT|=BIT0; //熄灭P1.0
//以上代码可以作为按键显示延时用*******************************************
// P1OUT|=BIT0;
// _BIS_SR(LPM3_bits+GIE); //等同于LPM3
P3OUT=0XFF;
P4OUT=0XFF;
LPM3;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -