📄 zj.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 + -