📄 main.c
字号:
// else write_byte(1,2,12,&number[25]);
//next1:
write_word(0,6,4,&chinese[7]); // 温度上限
write_word(0,6,20,&chinese[8]);
write_word(0,6,36,&chinese[43]);
write_word(0,6,52, &chinese[44]);
write_byte(1,6,4,&number[22]);
write_byte(1,6,32,&number[26]);
write_byte(1,6,40,&number[12]);
z=iic_read[2]/100;
write_byte(1,6,12,&number[z]);
x=(iic_read[2]-z*100)/10;
write_byte(1,6,20,&number[x]);
y=(iic_read[2]-z*100-x*10)%10;
write_byte(1,6,28,&number[y]);
if(iic_read[4]==1){write_byte(1,6,12,&number[25]);}
// else if(z==0&x==0){write_byte(1,6,20,&number[25]);}
// else write_byte(1,6,12,&number[25]);
//next2:
ES=1;
delay_1s(1000);
ES=0;
}
/********************** found new ****************************************/
void found_new(void)
{
unsigned char num[8];
unsigned char n,i,z;
bit h;
delay_iic();
read_iic_data(1,&iic_read,0,6);
n=iic_read[0];
delay_iic();
if(iic_read[0]==64) // 系统超限!
{ clear_lcd_screen();
write_word(0,3,26,&chinese[11]);
write_word(0,3,42,&chinese[12]);
write_word(0,3,58,&chinese[50]);
write_word(1,3,10,&chinese[44]);
write_byte(1,3,26,&number[23]);
delay_1s(30000);
goto xx;
}
if(iic_read[0]<0|iic_read[0]>64)
{
read_iic_data(1,&iic_read,0,6);
if(iic_read[0]<0|iic_read[0]>64){error();}
} //系统故障!
for(;n>0;n--)
{ z=0;
read_iic_data(0,&iic_read,n*8-8,8);
delay_iic();
if(iic_write[0]==iic_read[0]){ z++;}
if(iic_write[1]==iic_read[1]){ z++;}
if(iic_write[2]==iic_read[2]){ z++;}
if(iic_write[3]==iic_read[3]){ z++;}
if(iic_write[4]==iic_read[4]){ z++;}
if(iic_write[5]==iic_read[5]){ z++;}
if(iic_write[6]==iic_read[6]){ z++;}
if(iic_write[7]==iic_read[7]){ z++;}
if(z==8)
{ clear_lcd_screen();
write_word(0,3,20,&chinese[17]);//器件已存在!
write_word(0,3,36,&chinese[41]);
write_word(0,3,52,&chinese[42]);
write_word(1,3,4,&chinese[27]);
write_word(1,3,20,&chinese[57]);
write_byte(1,3,36,&number[23]);
x: delay_1s(30000);
while(1){
ds18b20_number(&num[0]);
if(num[0]==0x28|num[0]==0x26)
{goto x;}
else
{break;} // if you not bright ds18b20,do while
}
goto xx;
}
}
read_iic_data(1,&iic_read,0,6); //写IIC 总数加1
delay_iic();
write_iic_data(0,&iic_write,iic_read[0]*8,8);
iic_read[0]++;
delay_iic();
write_iic_data(1,&iic_read[0],0,1);
clear_lcd_screen();
write_word(0,0,28,&chinese[53]);
write_word(0,0,44,&chinese[54]); // 添加成功 序列
write_word(0,0,60,&chinese[55]); // ::当前总数
write_word(1,0,12,&chinese[56]);
write_byte(1,0,28,&number[23]);
z=0;n=0;h=0;
for(i=0;i<8;i++)
{ if(i<4)h=0;else h=1;
if(h==0&z>60){z=0;}
n=iic_write[i]&0xf0;
n>>=4;
write_byte(h,2,z,&number[n]); //:
z+=8;
n=iic_write[i]&0x0f;
write_byte(h,2,z,&number[n]);
z+=8;
}
write_word(0,4,0,&chinese[11]); //系统编号
write_word(0,4,16,&chinese[12]);
write_word(0,4,32,&chinese[20]);
write_word(0,4,48,&chinese[21]);
write_byte(1,4,0,&number[22]); //:
read_iic_data(1,&iic_read[0],0,1);
n=iic_read[0]/8;
z=iic_read[0]%8;
write_byte(1,4,8,&number[n+10]);
write_byte(1,4,16,&number[25]); // -
write_byte(1,4,24,&number[z]);
write_word(0,6,0,&chinese[25]); // 传感器总数:
write_word(0,6,16,&chinese[26]);
write_word(0,6,32,&chinese[17]);
write_word(0,6,48,&chinese[58]);
write_word(1,6,0,&chinese[59]);
write_byte(1,6,16,&number[22]);
n=iic_read[0]/10;
z=iic_read[0]%10;
write_byte(1,6,24,&number[n]);
write_byte(1,6,32,&number[z]);
gg: delay_1s(30000);
ds18b20_number(&num);
delay_iic();
if(num[0]==0x28|num[0]==0x26) goto gg;
xx: delay_1s(100);
}
//************** finding *********************************************/
bit finding(void)
{
unsigned int hhhh;
unsigned char y;
int w,r,u,n;
bit f; ES=0;
f=0; hhhh=0;
w=0;r=0;n=0;
ds18b20_number(&iic_write);
for(y=0;y<8;y++)
{
u=(int)iic_write[y];n+=u;
}
ES=1;
delay_1s(4000); ES=0;
ds18b20_number(&iic_write);
for(y=0;y<8;y++)
{
u=(int)iic_write[y];w+=u;
} ES=1;
delay_1s(1000); ES=0;
ds18b20_number(&iic_write);
for(y=0;y<8;y++)
{
u=(int)iic_write[y];r+=u;
} ES=1;
delay_1s(1000);
ES=0;
if((n==w&w==r&(iic_write[0]==0x28|iic_write[0]==0x26))&(n<1028))
{ f=1;
clear_lcd_screen();
// 找到新硬件
write_word(0,3,16,&chinese[37]);
write_word(0,3,32,&chinese[38]);
write_word(0,3,48,&chinese[39]);
write_word(1,3,0,&chinese[40]);
write_word(1,3,16,&chinese[41]);
write_byte(1,3,32,&number[23]);
ES=0;
delay_1s(30000); ES=1;
}
return f;
}
// *************** error ************************************//
void error(void)
{ clear_lcd_screen();
write_word(0,3,26,&chinese[11]);
write_word(0,3,42,&chinese[12]);
write_word(0,3,58,&chinese[51]);
write_word(1,3,10,&chinese[52]);
write_byte(1,3,26,&number[23]);
while(1);
}
void memery_error(void)
{
clear_lcd_screen();
write_word(0,3,16,&chinese[27]);
write_word(0,3,32,&chinese[28]);
write_word(0,3,48,&chinese[17]);
write_word(1,3,0,&chinese[51]);
write_word(1,3,16,&chinese[52]);
write_byte(1,3,32,&number[23]);
while(1);
}
/************* display temperature *********************************/
void display_temp(unsigned i,unsigned char j,short int temp)
{
unsigned char y,z,h,w0,w1;
signed char up,down;
bit err,qq;
err=0;
qq=0;
w0=28;w1=31;
z=0;
if(j==1|j==5){y=0;}
if(j==2|j==6){y=2;}
if(j==3|j==7){y=4;}
if(j==4|j==8){y=6;}
if(temp<-880|temp>2000|temp==-1)
{if(j<=4){write_word(0,y,28,&chinese[51]);
write_word(0,y,44,&chinese[52]);}
else{write_word(1,y,28,&chinese[51]);
write_word(1,y,44,&chinese[52]);}
err=1;
}
if(temp<0){temp*=(-1);qq=1;}
temp*=0.0625;
if(~err)
{
read_iic_data(1,&iic_read,0,8); //继电器
if(iic_read[3]==1){down=iic_read[1]*(-1);}
else down=iic_read[1];
if(iic_read[4]==1){up=iic_read[2]*(-1);}
else {up=iic_read[2];}
if(temp<=down|temp>=up)
{
call=0;
}
}
h=temp/100;
if(j<=4){ if(h==0){w0-=7;}
write_byte(0,y,7,&number[25]);
write_byte(0,y,18,&number[22]);
if(~err){if(qq){write_byte(0,y,23,&number[25]);} //负号!
write_byte(0,y,w0+18,&number[26]);
write_byte(0,y,w0+26,&number[12]);}
write_byte(0,y,0,&number[i+10]); //light this setup
write_byte(0,y,12,&number[j]);
if(~err){
if(h==1)
{
write_byte(0,y,w0,&number[h]);}
z=(temp-(h*100))/10;
write_byte(0,y,w0+7,&number[z]);
z=temp%10;
write_byte(0,y,w0+14,&number[z]);
}}
else
{
if(h==0){w1-=7;}
write_byte(1,y,10,&number[25]);
write_byte(1,y,21,&number[22]); //:
if(~err){if(qq){write_byte(1,y,26,&number[25]);} //负号!
write_byte(1,y,w1+26,&number[12]);
write_byte(1,y,w1+18,&number[26]);
}
write_byte(1,y,3,&number[i+10]); //right this
write_byte(1,y,15,&number[j]);
if(~err)
{
if(h==1){
write_byte(1,y,w1,&number[h]);}
z=(temp-(h*100))/10;
write_byte(1,y,w1+7,&number[z]);
z=temp%10;
write_byte(1,y,w1+14,&number[z]);
}}
// SEND RS485
if(err){t_buf[(i*8+j)*2-1]=i*8+j; t_buf[(i*8+j)*2]=0xfe;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -