📄 主机.c
字号:
{
word=256*(w1[i]-0xa0)+w1[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
/* for(i=0,j=0;i<13;i=i+2,j++)
{
word=256*(w2[i]-0xa0)+w2[i+1]-0xa0;
dis_word(j+3,1,0xf0);
}*/
P1=0xff;
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe)
check_key();
b1=P1;
send_byte(0xf4);
switch(b1)
{
/*case 0x7d://0
word='0';
flag1=0;
break;*/
case 0xee://1
word='1';
sendbuf[1]=1;
break;
case 0xed://2
word='2';
sendbuf[1]=2;
break;
case 0xeb://3
word='3';
sendbuf[1]=3;
break;
case 0xe7://4
word='4';
sendbuf[1]=4;
break;
case 0xde://5
word='5';
sendbuf[1]=5;
break;
case 0xdd://6
word='6';
sendbuf[1]=6;
break;
case 0xdb://7
word='7';
sendbuf[1]=7;
break;
case 0xd7://8
word='8';
sendbuf[1]=8;
break;
case 0xbe://9
word='9';
sendbuf[1]=9;
break;
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
send_byte(0xf4);
for(i=0,j=0;i<13;i=i+2,j++)
{
word=256*(w5[i]-0xa0)+w5[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
P1=0xff;
while(P1!=0xee&&P1!=0xed)
check_key();
z=P1;
send_byte(0xf4);
if(z==0xee||z==0xed)
{
switch(z)
{
case 0xee://1
word='1';
times=1;
sendbuf[2]=10;
break;
case 0xed://2
word='2';
times=2;
sendbuf[2]=11;
break;
}
dis_word(0x04,0,0xf9);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
sendbuf[3]=times;
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
send_byte(0xf4);
for(i=0,j=0;i<9;i=i+2,j++)
{
word=256*(w6[i]-0xa0)+w6[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
j=0;
//////////////////////////////////////////
while((RI==0)&&(j<100000)) //校准延时较长
{
j++;
}
if(j>=100000)
overtime=1;
else
{
overtime=0;
RI=0;
}
////////////////////////////////////////////
if(overtime==0)
{
for(i=0;i<7;i++)
{
j1=0;
while(RI==0)
{
j1++;
if(j1>1000)
{
break; //超时退出
}
}
RI=0;
if(j1>1000)
{
break; //超时退出
}
buff[i]=SBUF;
}
}
if(j1>1000||overtime==1)
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
if(j1<1000&&overtime==0)
{
send_byte(0xf4);
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w4[i]-0xa0)+w4[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
}
overtime=0;
send_byte(0xf4);
P1=0xff;
}
number()//编号
{
uchar w3[]={"超时"};
uchar w4[]={"成功"};
uchar x;
k=3;
send_byte(0xf4);
for(i=0,j=0;i<7;i=i+2,j++)
{
word=256*(www1[i]-0xa0)+www1[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
P1=0xff;
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe&&P1!=0x7d)
check_key();
x=P1;
send_byte(0xf4);
switch(x)
{
case 0x7d://0
word='0';
num=0;
break;
case 0xee://1
word='1';
num=1;
break;
case 0xed://2
word='2';
num=2;
break;
case 0xeb://3
word='3';
num=3;
break;
case 0xe7://4
word='4';
num=4;
break;
case 0xde://5
word='5';
num=5;
break;
case 0xdd://6
word='6';
num=6;
break;
case 0xdb://7
word='7';
num=7;
break;
case 0xd7://8
word='8';
num=8;
break;
case 0xbe://9
word='9';
num=9;
break;
}
dis_word(0x04,2,0xf9);
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
sendbuf[1]=0x00;
sendbuf[3]=num;//地址,一号
sendbuf[2]=0x01;
sendbuf[8]=sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5]+sendbuf[6]+sendbuf[7];
send();
j=0;
while((RI==0)&&(j<100))
{
j++;
}
if(j>=100)
overtime=1;
else
{
overtime=0;
RI=0;
}
if(overtime==0)
{
for(i=0;i<7;i++)
{
j1=0;
while(RI==0)
{
j1++;
if(j1>1000)
{
break; //超时退出
}
}
RI=0;
if(j1>1000)
{
break; //超时退出
}
buff[i]=SBUF;
}
}
if(j1>1000||overtime==1)
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w3[i]-0xa0)+w3[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
}
if(j1<1000&&overtime==0)
{
for(i=0,j=0;i<3;i=i+2,j++)
{
word=256*(w4[i]-0xa0)+w4[i+1]-0xa0;
dis_word(j+2,0,0xf0);
}
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
//delay(1000,10);
overtime=0;
send_byte(0xf4);
P1=0xff;
}
send_err()//送零点或者满度误差
{
frash();
}
////////////////////////
check_key()
{
P0=0xf0;
if(pkey()==1) //先扫描行,再扫描列,分别从第一行与第一列开始扫描
{
switch((P0&0xf0))//从第一行扫描
{
case 0xe0://第一行
m=0;
break;
case 0xd0:
m=1;
break;
case 0xb0:
m=2;
break;
case 0x70: //第四行
m=3;
break;
default:
break;
}
P0=0x0f;
switch((P0&0x0f))
{
case 0x0e://第一列
n=0;
break;
case 0x0d:
n=1;
break;
case 0x0b:
n=2;
break;
case 0x07://第四列
n=3;
break;
}
P1=tab[m][n];
}
}
main()
{
uchar data a1[]={"请输入子机号"};
uchar flag1=0,flag=0,b1=0;
SCON=0x50; //串口初始化方式1
TMOD=0x21; //定时器T1为方式2,T0方式1
TH1=0xfd; //定义9600波特率
TL1=0xfd;
TR1=1;
RI=0;
RI=0;
TI=0; //串口中断
trx=0;
rest=0;
for(i=0;i<20;i++)
{}
rest=1;
for(i=0;i<8000;i++)
{}
req=0;
sendbuf[0]=0xaa;
if((flag&0x80)==0x80)
{
write_word(7,0,0);
write_word(0,flag&0x7f,0);
write_word(7,0x80,0);
}
if(read_word(2,1)!=0xaa)
{
write_word(7,0,0);
write_word(2,0xaa,1);
write_word(0,0,0);
write_word(7,0x80,0);
}
/////////////////
for(i=0,j=0;i<7;i=i+2,j++)
{
word=256*(www[i]-0xa0)+www[i+1]-0xa0;
dis_word(j+4,0,0xf0);
}
//////////////////
for(i=0,j=0;i<7;i=i+2,j++)
{
word=256*(aa[i]-0xa0)+aa[i+1]-0xa0;
dis_word(j+3,1,0xf0);
}
word='1';
dis_word(0x11,16,0xf9);
/////////////
for(i=0,j=0;i<9;i=i+2,j++)
{
word=256*(bb[i]-0xa0)+bb[i+1]-0xa0;
dis_word(j+3,2,0xf0);
}
word='2';
dis_word(0x11,33,0xf9);
///////////////
for(i=0,j=0;i<9;i=i+2,j++)
{
word=256*(cc[i]-0xa0)+cc[i+1]-0xa0;
dis_word(j+3,3,0xf0);
}
word='3';
dis_word(0x11,50,0xf9);
////////////////
while(1)//扫描键盘
{
if(P1==0xee)
{
P1=0xff;
Up();
}
if(P1==0xed)
{
dis_time();
retur();
}
if(P1==0xeb)
{
frash();
retur();
}
if(P1==0xe7)
{
dis_lim();
retur();
}
if(P1==0xde)
{
dis_lim();
retur();
}
if(P1==0xdd)//显示温度
{
send_byte(0xf4);
P1=0xff;
for(i=0,j=0;i<11;i=i+2,j++)
{
word=256*(a1[i]-0xa0)+a1[i+1]-0xa0;
dis_word(j+3,0,0xf0);
}
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
while(P1!=0xee&&P1!=0xed&&P1!=0xeb&&P1!=0xe7&&P1!=0xde&&P1!=0xdd&&P1!=0xdb&&P1!=0xd7&&P1!=0xbe&&P1!=0x7d)
check_key();
b1=P1;
send_byte(0xf4);
switch(b1)
{
case 0x7d://0
word='0';
flag1=0;
break;
case 0xee://1
word='1';
flag1=1;
break;
case 0xed://2
word='2';
flag1=2;
break;
case 0xeb://3
word='3';
flag1=3;
break;
case 0xe7://4
word='4';
flag1=4;
break;
case 0xde://5
word='5';
flag1=5;
break;
case 0xdd://6
word='6';
flag1=6;
break;
case 0xdb://7
word='7';
flag1=7;
break;
case 0xd7://8
word='8';
num=8;
break;
case 0xbe://9
word='9';
flag1=9;
break;
}
dis_word(0x04,2,0xf9);
for(i=0;i<1000;i++)
for(j=0;j<10;j++);
getT(flag1);
retur();
}
if(P1==0xdb)//设置上限
{
frash();
retur();
}
if(P1==0xd7)//设置下限
{
frash();
retur();
}
if(P1==0xbe)//校准
{
T_check();
retur();
}
if(P1==0xbd)//送误差
{
frash();
retur();
}
if(P1==0xbb)//读误差
{
read_err();
retur();
}
if(P1==0x7d)
{
number();
retru();
}
check_key();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -