📄 host.c
字号:
//*********主机代码******
#include <reg51.h>
#include "Clicent_Setting.h"
#include "LCD_Funtion.h"
#include "Futions.h"
#include "Host_Interrupt_Funtion.h"
int num1=1; //从机数码管起始数
int num2=0;
int num3=1;
//*****************
void main(void)
{
Serial_Set(); //串口设置
Lcd_Init(); //LCD初始化
Interrupt_Init(); //中断初始化
ClrScreen(); //LCD清屏
while(1)
{
if(Intval1&&Int_pro1) //如果第一次中断0,采集从机1温度
{
Serial_Init(); //初始化串口
SBUF=STD1; //发送从机1 ID
while(!TI); //等待发送完成
TI=0;
while(Int_pro1) //如果没触发第二次中断
{
if(Serial1) //从机1响应是否正确
{
if(Serial1==1) //如果从机正确接收到地址
{
SCON=0xd0; //串口允许接收数据
Serial1=0;
SBUF=Clicent_Command1; //发送命令给从机1告知从机这是命令
while(!TI);
TI=0;
}
if(Serial1==2&&SendTo1==1) //
{
Serial1=0;
SBUF=Clicent_Receive_Data1; //发送从机1接收数据的命令
while(!TI);
TI=0;
}
if(Serial1==2&&ReceiveFrom1==1) //如果从机1正确接受到命令
{
Serial1=0; //
SBUF=Clicent_Data_Command1; //发送把从机1结果送主机的命令
while(!TI);
TI=0;
}
if(Serial1==3) //接收从机1 温度数据
{
Serial1=0;
SBUF=Clicent_Send_Data1; //发送给从机发送数据命令
while(!TI);
TI=0;
while(!RI);
RI=0;
DS18B20_Data[0]=SBUF; //接收温度数据
while(!RI);
RI=0;
DS18B20_Data[1]=SBUF;
ClrScreen(); //LCD清屏
GotoXY(0,0);
Print_Str("NUM1");//LCD显示从机号
temperature_process(DS18B20_Data[0],DS18B20_Data[1]); //温度数据处理
if(!flag) //正 LCD显示正温度
{
GotoXY(0,1);
Print_Str(zhen_temp);
if(dot_dis)
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
else //负 LCD显示负温度
{
GotoXY(0,1);
Print_Str("-");
Print_Str(zhen_temp);
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
}
if(Serial1==4) //主机向从机发送数据
{
Serial1=0;
SBUF=num1; //发送数据1 3 5 7 9....给从机1测试(奇数递增)
while(!TI); //等待发送完成
TI=0;
num1=num1+2;
}
}
}
}
//****************************
//*****************************
if(Intval2&&Int_pro2) //如果第二次中断0,采集从机2温度
{
Serial_Init(); //初始化串口
SBUF=STD2; //发送从机2 ID
while(!TI); //等待发送完成
TI=0;
while(Int_pro2) //如果没触发下次中断0,循环
{
if(Serial2) //从机2响应是否正确
{
if(Serial2==1) //如果从机2正确接收到地址
{
SCON=0xd0;
Serial2=0;
SBUF=Clicent_Command2; //发送从机2命令
while(!TI);
TI=0;
}
if(Serial2==2&&SendTo2==1) //
{
Serial2=0;
SBUF=Clicent_Receive_Data2; //发送从机2接收数据命令
while(!TI);
TI=0;
}
if(Serial2==2&&ReceiveFrom2==1) //如果从机正确接受到命令
{
Serial2=0; //
SBUF=Clicent_Data_Command2; //发送把从机结果送主机的命令
while(!TI);
TI=0;
}
if(Serial2==3) //如果从机发送结果完成
{
//ClrScreen();
Serial2=0;
SBUF=Clicent_Send_Data2; //从机可发送数据
while(!TI);
TI=0;
while(!RI);
RI=0;
DS18B20_Data[0]=SBUF; //接收温度数据
while(!RI);
RI=0;
DS18B20_Data[1]=SBUF;
ClrScreen(); //LCD清屏
GotoXY(0,0);
Print_Str("NUM2");//LCD显示从 机号
temperature_process(DS18B20_Data[0],DS18B20_Data[1]); //温度数据处理
if(!flag) //正
{
GotoXY(0,1);
Print_Str(zhen_temp);
if(dot_dis)
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
else //负
{
GotoXY(0,1);
Print_Str("-");
Print_Str(zhen_temp);
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
//*/
}
if(Serial2==4) //向从机2发送数据
{
Serial2=0;
num2=num2+2;
SBUF=num2; //发送数据2 4 6 8....测试(偶数递增)
while(!TI); //等待发送完成
TI=0;
}
}
}
}
//*********************************************
if(Intval3&&Int_pro3) //如果第三次中断,采集从机3温度
{
Serial_Init(); //初始化串口
SBUF=STD3; //发送从机3 ID
while(!TI); //等待发送完成
TI=0;
while(Int_pro3) //如果没触发第二次中断0
{
if(Serial3) //从机3响应是否正确
{
if(Serial3==1) //如果从机3正确接收到地址
{
SCON=0xd0;
Serial3=0;
SBUF=Clicent_Command3; //发送从机3命令
while(!TI);
TI=0;
}
if(Serial3==2&&SendTo3==1) //
{
Serial3=0;
SBUF=Clicent_Receive_Data3; //发送从机3命令
while(!TI);
TI=0;
}
if(Serial3==2&&ReceiveFrom3==1) //如果从机正确接受到命令
{
Serial3=0; //
SBUF=Clicent_Data_Command3; //发送把从机结果送主机的命令
while(!TI);
TI=0;
}
if(Serial3==3) //接收从机3 数据
{
Serial3=0;
SBUF=Clicent_Send_Data3;
while(!TI);
TI=0;
while(!RI);
RI=0;
DS18B20_Data[0]=SBUF; //接收数据
while(!RI);
RI=0;
DS18B20_Data[1]=SBUF;
ClrScreen(); //清屏
GotoXY(0,0);
Print_Str("NUM3");//显示结果
temperature_process(DS18B20_Data[0],DS18B20_Data[1]);
if(!flag) //正
{
GotoXY(0,1);
Print_Str(zhen_temp);
if(dot_dis)
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
else //负
{
GotoXY(0,1);
Print_Str("-");
Print_Str(zhen_temp);
Print_Str(".");
Print_Str(xiaoshu_temp);
Print_Char(0xdf);
Print_Str("C");
}
}
if(Serial3==4)
{
Serial3=0;
SBUF=num3; //发送数据1 2 3 4....测试(自然数递增)
while(!TI); //等待发送完成
TI=0;
num3=num3+1;
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -