📄 4.2Ц-
字号:
#include <reg2051.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit Dig1 = P3^2;
sbit Dig2 = P3^3;
sbit Dig3 = P3^4;
sbit Dig4 = P3^7;
sbit RE = P3^5;
uchar Timer = 0; //0.5ms闪烁控制标志
uchar Receive_Buffer[6]; //接收主机发来的数据
uchar Display_Buffer[6]; //显示缓冲区
uchar Display_Flag = 0; //是否显示标志
uchar Number_Buffer[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar Number_Buffer_Dot[10] = {0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xDF};
void Delay(unsigned char time) //延时函数单位1的时候3ms
{
unsigned char i;
unsigned int j;
for(i=time;i>0;i--)
{
for(j=50;j>0;j--);
}
}
void uart(void) interrupt 4
{
//unsigned char UARTNum = 0 ;
unsigned char temp;
//unsigned char sign = 0 ;
/*Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = 0x06;
Delay(20);*/
if (RI)
{
RI=0;
temp = SBUF ;
Receive_Buffer[temp>>4] = temp&0x0F;
/*
if (sign == 0)
{
sign = 1 ;
}
if(sign == 1)
{
Receive_Buffer[UARTNum++] = temp;
if(UARTNum>4)
{
UARTNum = 0;
sign = 0 ;
}
}
*/
/*Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = 0x7F;
Delay(10);*/
//add your code here.
/*Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = Number_Buffer[Receive_Buffer[Receive_Buffer[0]]];
Delay(10);*/
// if (Receive_Buffer[0] >= 5)
//{
/*Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = 0x3F;
/*Display_Buffer[1] = Receive_Buffer[1];
Display_Buffer[2] = Receive_Buffer[2];
Display_Buffer[3] = Receive_Buffer[3];
Display_Buffer[4] = Receive_Buffer[4];*/
//Display_Flag = 1;
// Receive_Buffer[0] = 0;
//}
/*else
{
Display_Flag = 0;
}*/
// Receive_Buffer[0]++;
// Receive_Buffer[Receive_Buffer[0]] = SBUF;
}
}
void timer0(void) interrupt 1 //4ms一次
{
TH0=0xf0;
TL0=0x60;
//add your code here.
Timer++;
Display_Buffer[0]++;
if (Timer >= 200)
{
Timer = 0;
}
if (Display_Buffer[0] > 4)
{
Display_Buffer[0] = 1;
}
}
void initTimer(void)
{
TMOD=0x1;
TH0=0xf0;
TL0=0x60;
}
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
ES=1;
}
void main(void)
{
EA = 1;
TR0=1;
ET0=1;
RE = 0;
initTimer();
initUart();
Receive_Buffer[0] = 0;
Display_Buffer[0] = 0;
Display_Flag = 0;
while (1)
{
/*if (Display_Flag == 1)
{
/*Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = Number_Buffer[Receive_Buffer[4]];
Delay(10);
Display_Buffer[1] = Receive_Buffer[1];
Display_Buffer[2] = Receive_Buffer[2];
Display_Buffer[3] = Receive_Buffer[3];
Display_Buffer[4] = Receive_Buffer[4];
Display_Flag = 0;
}
else */
switch (Display_Buffer[0])
{
case 1:
Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = Number_Buffer[Receive_Buffer[0]];
//P1 = Number_Buffer[1];
Delay(10);
break;
case 2:
Dig1 = 0;
Dig3 = 0;
Dig4 = 0;
Dig2 = 1;
P1 = Number_Buffer[Receive_Buffer[1]];
//P1 = Number_Buffer[2];
Delay(10);
break;
case 3:
Dig1 = 0;
Dig2 = 0;
Dig4 = 0;
Dig3 = 1;
P1 = Number_Buffer[Receive_Buffer[2]];
//P1 = Number_Buffer[3];
Delay(10);
break;
case 4:
Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = Number_Buffer[Receive_Buffer[3]];
//P1 = Number_Buffer[4];
Delay(10);
break;
default: break;
}
//Display_Flag = 0;
/*else
{
switch (Display_Buffer[0])
{
case 1:
Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = 0x06;
Delay(10);
break;
case 2:
Dig1 = 0;
Dig3 = 0;
Dig4 = 0;
Dig2 = 1;
P1 = 0x06;
Delay(10);
break;
case 3:
Dig1 = 0;
Dig2 = 0;
Dig4 = 0;
Dig3 = 1;
P1 = 0x06;
Delay(10);
break;
case 4:
Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = 0x06;
Delay(10);
break;
default: break;
}
}*/
/*Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = 0x66;
*/
/*Display_Buffer[1] = Receive_Buffer[1];
Display_Buffer[2] = Receive_Buffer[2];
Display_Buffer[3] = Receive_Buffer[3];
Display_Buffer[4] = Receive_Buffer[4];
if (Receive_Buffer[5] == 0) //当接收数组第5位是0时显示时间
{
switch (Display_Buffer[0])
{
case 1:
Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
if (Timer >= 0 && Timer <= 100) //当TIMER在0到100范围内时 点是亮的状态
{
P1 = Number_Buffer_Dot[Display_Buffer[1]];
}
else //当TIMER在100到200范围内 点是灭的状态
{
P1 = Number_Buffer[Display_Buffer[1]];
}
Delay(10);
break;
case 2:
Dig1 = 0;
Dig3 = 0;
Dig4 = 0;
Dig2 = 1;
P1 = Number_Buffer[Display_Buffer[2]];
Delay(10);
break;
case 3:
Dig1 = 0;
Dig2 = 0;
Dig4 = 0;
Dig3 = 1;
P1 = Number_Buffer[Display_Buffer[3]];
Delay(10);
break;
case 4:
Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = Number_Buffer[Display_Buffer[4]];
Delay(10);
break;
default: break;
}
}
else if (Receive_Buffer[5] == 1) //当接收数组第5位是1时 显示床位号 要闪烁且点永远不亮
{
if (Timer >= 0 && Timer <= 100) //数码管处于亮的状态
{
switch (Display_Buffer[0])
{
case 1:
Dig2 = 0;
Dig3 = 0;
Dig4 = 0;
Dig1 = 1;
P1 = Number_Buffer[Display_Buffer[1]];
Delay(10);
break;
case 2:
Dig1 = 0;
Dig3 = 0;
Dig4 = 0;
Dig2 = 1;
P1 = Number_Buffer[Display_Buffer[2]];
Delay(10);
break;
case 3:
Dig1 = 0;
Dig2 = 0;
Dig4 = 0;
Dig3 = 1;
P1 = Number_Buffer[Display_Buffer[3]];
Delay(10);
break;
case 4:
Dig1 = 0;
Dig2 = 0;
Dig3 = 0;
Dig4 = 1;
P1 = Number_Buffer[Display_Buffer[4]];
Delay(10);
break;
default: break;
}
}
else
{
Display_Buffer[0] = 0;
}
}
}
else
break;
/*if (Display_Flag == 1)
{
Display_Buffer[1] = Receive_Buffer[1];
Display_Buffer[2] = Receive_Buffer[2];
Display_Buffer[3] = Receive_Buffer[3];
Display_Buffer[4] = Receive_Buffer[4];
if (Receive_Buffer[5] == 0) //当接收数组第5位是0时显示时间
{
if (Display_Buffer[0] == 1)
{
Dig1 = 1;
if (Timer >= 0 && Timer <= 100) //当TIMER在0到100范围内时 点是亮的状态
{
P1 = Number_Buffer_Dot[Display_Buffer[1]];
}
else //当TIMER在100到200范围内 点是灭的状态
{
P1 = Number_Buffer[Display_Buffer[1]];
}
}
else if (Display_Buffer[0] == 2)
{
Dig2 = 1;
P1 = Number_Buffer[Display_Buffer[2]];
}
else if (Display_Buffer[0] == 3)
{
Dig3 = 1;
P1 = Number_Buffer[Display_Buffer[3]];
}
else if (Display_Buffer[0] == 4)
{
Dig4 = 1;
P1 = Number_Buffer[Display_Buffer[4]];
}
else
{
Display_Buffer[0] = 0;
}
}
else if (Receive_Buffer[5] == 1) //当接收数组第5位是1时 显示床位号 要闪烁且点永远不亮
{
if (Timer >= 0 && Timer <= 100) //数码管处于亮的状态
{
if (Display_Buffer[0] == 1)
{
Dig1 = 1;
P1 = Number_Buffer[Display_Buffer[1]];
}
else if (Display_Buffer[0] == 2)
{
Dig2 = 1;
P1 = Number_Buffer[Display_Buffer[2]];
}
else if (Display_Buffer[0] == 3)
{
Dig3 = 0x03;
P1 = Number_Buffer[Display_Buffer[3]];
}
else if (Display_Buffer[0] == 4)
{
Dig4 = 0x04;
P1 = Number_Buffer[Display_Buffer[4]];
}
else
{
Display_Buffer[0] = 0;
}
}
else //当TIMER在100到200内时 数码管不亮
{
Display_Buffer[0] = 0;
}
}
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -