当前位置:首页 > 课程设计(论文)-基于单片机温度监测系统
沈阳航空航天大学课程设计 基于单片机的温度监测系统设计
for(i = 0;i < 8;i++) { j = temp_readbit(); dat = (j << 7)|(dat >> 1); }
return(dat); }
void temp_write(uchar dat) {
uint i; uchar j; bit testb;
for(j = 1;j<=8;j++) { testb = dat & 0x01; dat = dat >> 1; if(testb) { ds = 0; i++;i++;i++; ds = 1; i =8;while(i>0)i--; } else { ds = 0; i = 8;while(i>0)i--; ds = 1; i++;i++; } } }
void temp_change(void) {
ds_reset(); delay(1);
temp_write(0xcc); temp_write(0x44); }
uint get_temp() {
uchar a,b; EA = 0; ds_reset(); delay(1);
temp_write(0xcc); temp_write(0xbe); a = temp_read();
16
沈阳航空航天大学课程设计 基于单片机的温度监测系统设计
b = temp_read(); temp = b; temp <<=8; temp = temp | a;
f_temp = temp * 0.0625; temp = f_temp*10+0.5; f_temp =f_temp + 0.05; return temp; }
/****************************定时器初始化 *****************/ void init_com(void) {
TMOD = 0X01; PCON = 0X00; SCON = 0X50;
TH0 = (65536-10000)/256; TL0 = (65536-10000)%6; EA = 1; ET0 = 1; TR0 = 1;
}
/****************报警**************************************/ void warn(uint s,uchar led) {
uchar i; i = s; beep = 0; P1 = ~(led); while(i--) { dis_temp(get_temp()); }
beep = 1; P1 = 0xff; i = s; while(i--) { dis_temp(get_temp()); } }
void deal(int t) {
uchar i;
if((t > warn_l2)&&(t <= warn_l1)) { warn(10,0x01); }
17
沈阳航空航天大学课程设计 基于单片机的温度监测系统设计
else if(t <= warn_l2) { warn(1,0x02); }
else if((t <= warn_h2)&&(t >= warn_h1)) { warn(10,0x04); }
else if(t >= warn_h2) { warn(1,0x08); } else { i = 40; while(i--) { dis_temp(get_temp()); } } }
/********************报 警 监 测 显 示 ********************/ void bjxs(int a) { int x,y,z;
x=a/100; //计算得到shi位数字 display(5,x);
y=a/10-x*10; //计算得到ge位数字 display(6,y+10);
z=a-x*100-y*10; //计算得到xiao数 display(7,z); }
/*******************************键盘 扫描*********************/ void key() { if(SET1 == 0) { delay(100); if(SET1 == 0) { while(SET1 == 0) { bjxs( warn_h1); if(ADD==0&&SET1==0) { if(ADD==0&&SET1==0) {
18
沈阳航空航天大学课程设计 基于单片机的温度监测系统设计
while(ADD==0) bjxs( warn_h1); warn_h1 = warn_h1+10; if(warn_h1>1000) warn_h1 = 1000; bjxs( warn_h1); } }
else if(DEC==0&&SET1==0) {
if(DEC==0&&SET1==0) { while(DEC==0) bjxs( warn_h1); warn_h1 = warn_h1-10; if(warn_l1>warn_h1) warn_h1=warn_l1; bjxs( warn_h1); } }
}
}
} if(SET2 == 0) { delay(100); if(SET2 == 0) { while(SET2 == 0) { bjxs( warn_l1); if(ADD==0&&SET2==0) { if(ADD==0&&SET2==0) { while(ADD==0) bjxs( warn_l1); warn_l1 = warn_l1+10; if(warn_l1>warn_h1) warn_l1 = warn_h1; bjxs( warn_l1); } } else if(DEC==0&&SET2==0) { if(DEC==0&&SET2==0) { while(DEC==0)
bjxs( warn_l1);
19
沈阳航空航天大学课程设计 基于单片机的温度监测系统设计
warn_l1 = warn_l1-10; if(warn_l1<0) warn_l1=0;
bjxs( warn_l1); }
} } } } }
void scan() { int i; temp_change(); deal(temp); for(i = 0;i < 10;i++) { dis_temp(get_temp()); }
EA = 1; }
void timer0(void)interrupt 1 { key(); TH0 = (65536-10000)/256; TL0 = (65536-10000)%6; } void main() {
dula = 0; wela = 0; init_com(); while(1) {
scan(); } }
20
共分享92篇相关文档