基于单片机数字温度计(18)
时间:2025-07-10
时间:2025-07-10
这是本人在大学期间其中之一的课程设计希望对大家有用。
{ Temp_Value[1]= ~Temp_Value[1];
Temp_Value[0]= ~Temp_Value[0]+1; if(Temp_Value[0]==0x00) Temp_Value[1]++; ng=1;np=0XFD; } Display_Digit[0]=df_Table[Temp_Value[0]&0x0F]; CurrentT
=((Temp_Value[0]&0xF0)>>4)|(( Temp_Value[1]&0x07)<<4);
Signed_Current_Temp=ng? CurrentT: CurrentT; HI_Alarm=Signed_Current_Temp>= Alarm_Temp_HL[0]?1:0;
LO_Alarm=Signed_Current_Temp<= Alarm_Temp_HL[1]?1:0; Display_Digit[3]=CurrentT/100; Display_Digit[2]=CurrentT % 100 / 10; Display_Digit[1]=CurrentT % 10; if(Display_Digit[3]==0) { Display_Digit[3]=10;
np=0xF7;
if(Display_Digit[2]==0) { Display_Digit[2]=10;
np=0xEF; } } for(i=0;i<30;i++)
{ P0=0x39;P2=0x7F;Delay(t);P2=0xFF;
P0=0x63;P2=0xBF;Delay(t);P2=0xFF; P0=DSY_CODE[Display_Digit[1]]; P2=0xDF;Delay(t);P2=0xFF;
P0=(DSY_CODE[Display_Digit[1]])|0x80; P2=0xEF;Delay(t);P2=0xFF; P0=DSY_CODE[Display_Digit[2]]; P2=0xF7;Delay(t);P2=0xFF; P0=DSY_CODE[Display_Digit[3]]; P2=0xF7;Delay(t);P2=0xFF; if(ng)
{ P0=0x40;P2=np;Delay(t);P2=0xFF; } }
}
void T0_INT() interrupt 1 { TH0=-1000/512;
TL0=-1000%512; BEEP=!BEEP;
if(++Time0_Count==400) { Time0_Count=0;
if(HI_Alarm) HI_LED= ~HI_LED;else HI_LED=1; if(LO_Alarm) LO_LED=
~LO_LED;else
LO_LED=1; } }
void main(void) { IE=0x82;
TMOD=0x01; TH0=-1000/512; TL0=-1000%512; TR0=0; HI_LED=1; LO_LED=1;
Set_Alarm_Temp_Value(); Read_Temperature(); Delay(50000); Delay(50000); while(1)
{ Read_Temperature();
if(DS18B20_IS_OK)
{ if(HI_Alarm==1 || LO_Alarm==1)
TR0=1;
else TR0=0;
Display_Temperature();
}
else
{ P0=P2=0x00; } } }