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

📄 cj1.c

📁 485通信仿真源码.rar
💻 C
字号:
#include<reg51.h>
#include"18B20_1.h"		//	包含18b20函数
#define uchar unsigned char
#define uint unsigned int


sbit RE=P3^4;
uchar code display_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x73};
uchar ti=0;temperature[4]={11,0,0,0};


void display();			//	显示函数
void delay1(uint a);	//	延时函数

void main()
{
  	int temp;

	TMOD=0x21;		//定时计数器1设置为模式2 ,定时计数器0为模式1
	TL1=0XFD;
	TH1=0XFD;
	TH0=(65536-50000*110592/120000)/256;	//设置50ms溢出一次
	TL0=(65536-50000*110592/120000)%256;
	PCON=0X00;
	SCON=0xf0;		//工作在方式3,允许通信,SM2=1只有RB8为1时才接受数据,否则不要
	TR0=1;
	TR1=1;
	ET0=1;
	RE=0;			//设置457为接受状态
	EA=1;
	ES=1;

 	while(1)
	{	
		display();

		if(ti==20)
		{
			ti=0;
			temp=b20_temperate();  			//	获得整数部分温度
			temperature[1]=temp%1000/100;		//	百位温度
			temperature[2]=temp%100/10;			//	十位温度
			temperature[3]=temp%10;				//	个位温度
		}	
	}
	
}


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

}


void display()
{

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

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

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

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

}


void time() interrupt 1
{
	TH0=(65536-50000*110592/120000)/256;
	TL0=(65536-50000*110592/120000)%256;

	ti++;
}


void r_scon() interrupt 4	   //串口中断
{
	uchar i;

	if(RI==1)
	{
		RI=0;
		delay1(10);		
		if(SBUF==1)			//判断是否是本机地址,为1
		{
			ES=0;			//关串口中断
			SM2=0;

		  	RE=1;  //准备发送数据
			delay1(5);

			SBUF=1;		//将本机的地址发送给主机
			while(TI!=1);	
			TI=0;
			delay1(10);

			for(i=0;i<4;i++)	  //发送要显示的4个数据
			{
				SBUF=temperature[i];
				while(TI!=1);
				TI=0;
				delay1(10);
			 }

			RE=0;
			ES=1;
			SM2=1;  
		
		}	
	
	}
}

⌨️ 快捷键说明

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