/********************李想测温**********************/
/******************qq:774145445********************/
/*****************快手:共同学习stm8****************/
/******************20210102************************/
// pms150g
// _______@______
// |1 vdd gnd 8|---------------------|地
// |2 pa7 pa0 7|--jiance20r---| |
// |3 pa6 pa4 6|--dianzu100k--|--||--|
// |4_pa5____pa3_5|--ntc100k-----| 103
/**************************************************/
#include "extern.h"
void cewen(); //测温
void jisuan(); //计算温度
jiance bit pa.0; //检测脚
dianzu bit pa.4; //标准电阻100k
ntc bit pa.3; //ntc电阻100k
word cewen_a1,cewen_a2,cewen_a3;
byte xianshi_hong,xianshi_lv;
byte temp; //温度
/**************************************************/
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/4 // SYSCLK=IHRC/4
word a1;
word b1;
while (1)
{
cewen(); //第一次舍弃
cewen();
jisuan();
}
}
/**************************************************/ //测温
void cewen()
{
cewen_a1 =0;
cewen_a2 =0;
/**************************************************/ //1放电
$ jiance out,low;
$ dianzu out,low;
$ ntc out,low;
.delay 1000;
/**************************************************/ //2计算标准电阻充电时间
$ jiance in;
$ dianzu out,high;
$ ntc in;
while(!jiance)
{
cewen_a1++;
}
/**************************************************/ //3放电
$ jiance out,low;
$ dianzu out,low;
$ ntc out,low;
.delay 1000;
/**************************************************/ //4计算ntc电阻充电时间
$ jiance in;
$ dianzu in;
$ ntc out,high;
while(!jiance)
{
cewen_a2++;
}
}
/**************************************************/ //计算温度
void jisuan()
{
cewen_a3 =0;
if(cewen_a1 < cewen_a2) //低于20度
{
xianshi_hong =0; xianshi_lv =1; //绿灯亮
cewen_a3 =cewen_a2 - cewen_a1;
if (cewen_a3 < 215) {temp =20; return;}
if (cewen_a3 < 848) {temp =10; return;}
if (cewen_a3 < 1976) {temp =0; return;}
}
else //高于20度
{
xianshi_hong =1; xianshi_lv =0; //红灯亮
cewen_a3 =cewen_a1 - cewen_a2;
if (cewen_a3 > 819) {temp =100; return;}
if (cewen_a3 > 792) {temp =90; return;}
if (cewen_a3 > 760) {temp =80; return;}
if (cewen_a3 > 710) {temp =70; return;}
if (cewen_a3 > 653) {temp =60; return;}
if (cewen_a3 > 553) {temp =50; return;}
if (cewen_a3 > 404) {temp =40; return;}
if (cewen_a3 > 168) {temp =30; return;}
}
}
/**************************************************/ |