毕业设计-单片机的主从控制系统

发布时间 : 星期一 文章毕业设计-单片机的主从控制系统更新完毕开始阅读

附录2 从机1程序

//***********从机1代码*******

#include #include \

#include \

char TTemp;

unsigned char code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int ss=2; int num=1; sbit c1=P3^6;

void delay_50ms() {

int s=5000; while(--s); }

//************

void Serial_Init(void) //串口初始化 { SCON = 0x50; // 设定串行口工作方式 TMOD=0x20; TH1 = 0xfD; // 11.0952MHZ 波特率9600 TL1 = 0xfD; TR1=1; ES=1; }

//************

void Interrupt_Init(void) //中断初始化 { EA=1; EX0=1; }

//*************

void interrupt4(void) interrupt 4 using 2 //串口中断触发 { EA=0;

28

if(TI) TI=0; if(RI) { RI=0; if(SBUF==STD1) //如果接收到主机的地址码 { SBUF=Address_Respond1; //发送地址响应码 while(!TI); //必须 TI=0; SCON=0xd0; //并且把SCON中的SM2置0,允许响应数据中断 } if(SBUF==Clicent_Command1) //如果接收到主机的启动的命令 { SBUF=Command_Respond1; //发送响应码返回给主机 while(!TI); //必须 TI=0; } if(SBUF==Clicent_Data_Command1) //如果接受到主机的发送转化结果的命令 { SBUF=Data_Command_Respond1;//发送响应码 while(!TI); //必须 TI=0; } if(SBUF==Clicent_Receive_Data1) { SBUF=Data_Receive_Respone1; while(!TI); //必须 TI=0; while(!RI); //接收数据 测试 RI=0; TTemp=SBUF; P1=SEG7[TTemp];c1=0; SCON=0xf0; //并且把SCON中的SM2置1 } if(SBUF==Clicent_Send_Data1) //发送数据 {

29

SBUF=DS18B20_Data[0]; //发送温度数据 while(!TI); TI=0; SBUF=DS18B20_Data[1]; while(!TI); TI=0; SCON=0xf0; } } EA=1; }

//***************

void DS18B20_Run(void) {

DS18B20_Read_Temperature(); }

//***************/ void main(void) { P1=0; Interrupt_Init(); Serial_Init(); while(1) { delay_50ms(); //延时50ms左右读一次温度,读得太多太快可能会出现乱数 DS18B20_Run(); delay_50ms(); //延时50ms左右读一次温度,读得太多太快可能会出现乱数 } }

附录3 从机2程序

//***********从机2代码******

#include

#include \

30

#include \

extern char DS18B20_Data[2];

unsigned char code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char TTemp; int num=0; sbit c1=P3^6;

void delay_50ms() {

int s=5000; while(--s); }

//************

void Serial_Init(void) //串口初始化 { SCON = 0x50; // 设定串行口工作方式 TMOD=0x20; TH1 = 0xfD; // 11.0952MHZ 波特率9600 TL1 = 0xfD; TR1=1; ES=1; }

//************

void Interrupt_Init(void) //中断初始化 { EA=1; EX0=1; }

//*************

void interrupt4(void) interrupt 4 using 2 //串口中断触发 { EA=0; if(TI) TI=0; if(RI) { RI=0; if(SBUF==STD2) //0x8f) //如果接收到主机的地址码 { SBUF=Address_Respond2; //发送地址响应码

31

联系合同范文客服:xxxxx#qq.com(#替换为@)