⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zj.c

📁 485通信仿真源码.rar
💻 C
字号:
#include<reg51.h>
#define uchar unsigned char

sbit RE=P3^4;	//	控制487接收,发送控制端
uchar code display_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c};
uchar temperature[4];


void delay(uchar a);
void judge_button();
void display();
void cj(uchar a);


void main()
{
	TMOD=0x20;		//定时计数器1设置为模式2
	TL1=0XFD;	    //波特率设置
	TH1=0XFD;
	PCON=0X00;
	TR1=1;
	SCON=0xd8;		//工作在方式3,允许通信,TB8=1;
	P1=0xff;
	RE=1;			//487准备发送数据

	while(1)
	{
		judge_button();
		display();
	
	}
	

}

void delay(uchar a)
{
	uchar i;
	for(;a>0;a--)
		for(i=100;i>0;i--);

}


void judge_button()
{
	if(P1!=0xff)	  						//判断是否有按钮按下
	{
		delay(10);									 

		switch(P1)
		{											
			case 0xfe:   cj(1);   break; 	//	寻址从机1,并接受从机数据
			case 0xfd:   cj(2);   break;	//	寻址从机2,并接受从机数据
		}

		P1=0XFF;	
	}		


}


void display()
{

	P2=0XFF;			   //  显示从机的代号
	P0=display_table[temperature[0]];
	P2=0xfe;
	delay(1);

	P2=0XFF;			   //  显示温度
	P0=display_table[temperature[1]];
	P2=0xfd;
	delay(1);

	P2=0XFF;
	P0=display_table[temperature[2]];
	P2=0xfb;
	delay(1);

	P2=0XFF;
	P0=display_table[temperature[3]]+0x80;
	P2=0xf7;
	delay(1);

}


void  cj(uchar a)
{
	uchar i;

	SBUF=a;
	while(TI!=1);
	TI=0;
	delay(10);

	RE=0;	//准备接受数据
	delay(5);
	TB8=0;	
							   
	while(RI!=1);	
	RI=0;
	delay(10);

	if(SBUF==a)
	{
		delay(10);	  

		for(i=0;i<4;i++)
		{
			while(RI!=1);
			temperature[i]=SBUF;
			RI=0;
			delay(10);
		}
	
	}

	RE=1;	//准备下一次发送数据
	TB8=1;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -