应广单片机吧 关注:140贴子:454
  • 0回复贴,共1

PMS150G测温比较器版

只看楼主收藏回复

/********************李想测温比较器版**************/
/******************qq:774145445********************/
/*****************快手:共同学习stm8****************/
/******************20210123************************/
// pms150g
// _______@______
// |1 vdd gnd 8|-----------------------|地
// @2|2 pa7 pa0 7|@5--dianzu100k--| |
// @1|3 pa6 pa4 6|@4--jiance20r---|--||--|
// |4_pa5____pa3_5|@3--ntc100k-----| 103
/**************************************************/
/******************************************************************************/
// 显示屏2353/188
// _2a_ ____
// | 2e 2b | |
// | | | | |
// -2f- ----
// | 2e 2c | |
// | |_2d_| |____|
// @1 @2 @3 @4 @5
// ____________________________
// | |led1|led2|led3|led4|led5|
// |_1_|_高_|_3A_|_3C_|_3E_|____|
// |_2_|_3B_|_高_|_2A_|_1B_|____|
// |_3_|_3D_|_2B_|_高_|_1A_|____|
// |_4_|_3F_|_2D_|_2C_|_高_|____|
// |_5_|_3G_|_2E_|_2F_|_2G_|_高_|
//共阳:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90//0x88,0x83,0xc6,0xa1,0x86,0x8e
//共阴:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f//0x77,0x7c,0x39,0x5e,0x79,0x71
/******************************************************************************/
#include"extern.h"
led1bitpa.6;
led2bitpa.7;
led3bitpa.3;
led4bitpa.4;
led5bitpa.0;
jiancebitpa.4;//检测脚
dianzubitpa.0;//标准电阻100k
ntcbitpa.3;//ntc电阻100k
bitled_hong;
bitled_lv;
bytetemp;//温度
voidcewen();//测温
voidcewen_fangdian();//测温放电
voidjisuan();//计算
voidyanshi();//延时
voidbiao1();//表1(低于25度每度之间差值)
wordcewen_a1,cewen_a2,cewen_a3;
voidFPPA0 (void)
{
.ADJUST_ICSYSCLK=IHRC/4//SYSCLK=IHRC/4
//$gpccenable,bandgap,p_pa4;//比较器pa.4,1.2v
while(1)
{
cewen();
jisuan();
}
}
/**************************************************/
voidcewen()//测温
{
cewen_a1=0;
cewen_a2=0;
/**************************************************///1计算标准电阻充电时间25℃
cewen_fangdian();
$led1in;
$led2in;//为了不影响测温全部设成输入
$dianzuin;
$jiancein;
$ntcin;
$gpccenable,bandgap,p_pa4;//开比较器1.2v,pa.4
nop;nop;
$dianzuout,high;
while(!gpcc.6)
{
cewen_a1++;
//if(cewen_a1>254){return;}
}
$gpccdisable;//关比较器
/**************************************************///2计算ntc电阻充电时间
cewen_fangdian();
$dianzuin;
$jiancein;
$ntcin;
$gpccenable,bandgap,p_pa4;//开比较器1.2v,pa.4
nop;nop;
$ntcout,high;
while(!gpcc.6)
{
cewen_a2++;
//if(cewen_a2>54){return;}
}
$gpccdisable;//关比较器
}
/**************************************************/
voidcewen_fangdian()//测温放电
{
$dianzuout,low;
$jianceout,low;
$ntcout,low;
yanshi();
}
/**************************************************/
voidjisuan()//计算
{
bytejisuan_a1;
wordjisuan_a2;
bytejisuan_a3;
cewen_a3=0;
if(cewen_a1 < cewen_a2)//低于25度
{
cewen_a3=cewen_a2-cewen_a1;
led_hong=0;
led_lv=1;
jisuan_a1=0;//查表
jisuan_a2=0;//临时ad值
jisuan_a3=25;//临时温度值
while(1)
{
jisuan_a1++;//jisuan_a1不能为0
a=jisuan_a1;
biao1();
jisuan_a2+=a;
jisuan_a3--;
if(cewen_a3<jisuan_a2)
{
temp=jisuan_a3;
return;
}
}
}
else
{
cewen_a3=cewen_a1-cewen_a2;
led_hong=1;
led_lv=0;
}
}
/**************************************************/
voidbiao1()//表1(低于25度每度之间差值)
{
pcadda;//汇编指令(a>0)代替查表
ret14;
ret15;
ret15;
ret15;
ret17;
ret19;
ret19;
ret20;
ret21;
ret23;
ret23;
ret25;
ret27;
ret27;
ret29;
ret31;
ret33;
ret34;
ret36;
ret38;
ret41;
ret43;
ret45;
ret48;
ret50;
ret54;
}
/**************************************************/
/**************************************************/
voidyanshi()//延时
{
.delay300;
}
/**************************************************/


IP属地:北京1楼2021-02-02 23:41回复