📄 display.c
字号:
#include <at89x52.h>
#include "define.h"
extern unsigned char g_State[22];
void LEDInitial() // 数码管显示初始化
{
unsigned int Data1 = 0x0401;
unsigned int Data2 = 0x0580;
unsigned int Data3;
unsigned int Temp;
unsigned char i;
for(i=0; i<12; i++) // 驱动芯片系统参数初始化
{
LED_DCLK1 = 0;
LED_DCLK2 = 0;
LED_DCLK3 = 0;
if(Data1 & 0x0001)
{
LED_DIN1 = 1;
LED_DIN2 = 1;
LED_DIN3 = 1;
}
else
{
LED_DIN1 = 0;
LED_DIN2 = 0;
LED_DIN3 = 0;
}
LED_DCLK1 = 1;
LED_DCLK2 = 1;
LED_DCLK3 = 1;
Temp = Data1>>1;
Data1 = Temp;
}
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 1;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++) // 驱动芯片显示参数初始化
{
LED_DCLK1 = 0;
LED_DCLK2 = 0;
LED_DCLK3 = 0;
if(Data2 & 0x0001)
{
LED_DIN1 = 1;
LED_DIN2 = 1;
LED_DIN3 = 1;
}
else
{
LED_DIN1 = 0;
LED_DIN2 = 0;
LED_DIN3 = 0;
}
LED_DCLK1 = 1;
LED_DCLK2 = 1;
LED_DCLK3 = 1;
Temp = Data2>>1;
Data2 = Temp;
}
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 0;
LED_A2 = 1;
LED_A1 = 1;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
LED_E = 0;
LED_E = 1;
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
Data3 = 0x0b12; // 手工控制显示数码管初始化
for(i=0; i<12; i++)
{
LED_DCLK3 = 0;
if(Data3 & 0x0001)
{
LED_DIN3 = 1;
}
else
{
LED_DIN3 = 0;
}
LED_DCLK3 = 1;
Temp = Data3>>1;
Data3 = Temp;
}
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
Data3 = 0x0a12;
for(i=0; i<12; i++)
{
LED_DCLK3 = 0;
if(Data3 & 0x0001)
{
LED_DIN3 = 1;
}
else
{
LED_DIN3 = 0;
}
LED_DCLK3 = 1;
Temp = Data3>>1;
Data3 = Temp;
}
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
Data3 = 0x0912;
for(i=0; i<12; i++)
{
LED_DCLK3 = 0;
if(Data3 & 0x0001)
{
LED_DIN3 = 1;
}
else
{
LED_DIN3 = 0;
}
LED_DCLK3 = 1;
Temp = Data3>>1;
Data3 = Temp;
}
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
Data3 = 0x0812;
for(i=0; i<12; i++)
{
LED_DCLK3 = 0;
if(Data3 & 0x0001)
{
LED_DIN3 = 1;
}
else
{
LED_DIN3 = 0;
}
LED_DCLK3 = 1;
Temp = Data3>>1;
Data3 = Temp;
}
LED_A3 = 1;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
LED_E = 0;
LED_E = 1;
}
void UpdateVoltage_1(unsigned char Channel, unsigned int Result) // 数码管1-8显示更新
{
unsigned int Data3_1 = 0x0f00;
unsigned int Data2_1 = 0x0e00;
unsigned int Data1_1 = 0x0d80;
unsigned int Data0_1 = 0x0c00;
unsigned int Data3_2 = 0x0b00;
unsigned int Data2_2 = 0x0a00;
unsigned int Data1_2 = 0x0980;
unsigned int Data0_2 = 0x0800;
unsigned char Hundred;
unsigned char Decade;
unsigned char One;
unsigned char Tenth;
unsigned int Temp;
unsigned char i;
Hundred = Result/0x0333; // 计算百位数值
Result %= 0x333;
Decade = Result/0x52; // 计算十位数值
Result %= 0x52;
One = Result/0x08; // 计算个位数值
Result %= 0x08;
Tenth = Result*1.22; // 计算小数位数值
if(Channel%2)
{
Data3_1 |= Hundred; // 准备要发送的数据
Data2_1 |= Decade;
Data1_1 |= One;
Data0_1 |= Tenth;
switch(Channel) // 确定要选通的驱动芯片
{
case 1:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
break;
case 3:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
break;
case 5:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
break;
case 7:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 1;
break;
}
for(i=0; i<12; i++) // 更新数码管显示
{
LED_DCLK1 = 0;
if(Data3_1 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data3_1>>1;
Data3_1 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data2_1 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data2_1>>1;
Data2_1 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data1_1 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data1_1>>1;
Data1_1 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data0_1 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data0_1>>1;
Data0_1 = Temp;
}
LED_E = 0;
LED_E = 1;
}
else
{
Data3_2 |= Hundred;
Data2_2 |= Decade;
Data1_2 |= One;
Data0_2 |= Tenth;
switch(Channel) // 确定要选通的驱动芯片
{
case 2:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
break;
case 4:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
break;
case 6:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
break;
case 8:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 1;
break;
}
for(i=0; i<12; i++) // 更新数码管显示
{
LED_DCLK1 = 0;
if(Data3_2 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data3_2>>1;
Data3_2 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data2_2 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data2_2>>1;
Data2_2 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data1_2 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data1_2>>1;
Data1_2 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
LED_DCLK1 = 0;
if(Data0_2 & 0x0001)
{
LED_DIN1 = 1;
}
else
{
LED_DIN1 = 0;
}
LED_DCLK1 = 1;
Temp = Data0_2>>1;
Data0_2 = Temp;
}
LED_E = 0;
LED_E = 1;
}
}
void UpdateVoltage_2(unsigned char Channel, unsigned int Result) // 数码管9-16显示更新
{
unsigned int Data3_1 = 0x0f00;
unsigned int Data2_1 = 0x0e00;
unsigned int Data1_1 = 0x0d80;
unsigned int Data0_1 = 0x0c00;
unsigned int Data3_2 = 0x0b00;
unsigned int Data2_2 = 0x0a00;
unsigned int Data1_2 = 0x0980;
unsigned int Data0_2 = 0x0800;
unsigned char Hundred;
unsigned char Decade;
unsigned char One;
unsigned char Tenth;
unsigned int Temp;
unsigned char i;
Hundred = Result/0x0333; // 计算百位数值
Result %= 0x333;
Decade = Result/0x52; // 计算十位数值
Result %= 0x52;
One = Result/0x08; // 计算个位数值
Result %= 0x08;
Tenth = Result*1.22; // 计算小数位数值
if(Channel%2)
{
Data3_1 |= Hundred; // 准备要发送的数据
Data2_1 |= Decade;
Data1_1 |= One;
Data0_1 |= Tenth;
switch(Channel) // 确定要选通的驱动芯片
{
case 9:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 0;
break;
case 11:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 0;
LED_A0 = 1;
break;
case 13:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 0;
break;
case 15:
LED_A3 = 0;
LED_A2 = 0;
LED_A1 = 1;
LED_A0 = 1;
break;
}
for(i=0; i<12; i++) // 更新数码管显示
{
LED_DCLK2 = 0;
if(Data3_1 & 0x0001)
{
LED_DIN2 = 1;
}
else
{
LED_DIN2 = 0;
}
LED_DCLK2 = 1;
Temp = Data3_1>>1;
Data3_1 = Temp;
}
LED_E = 0;
LED_E = 1;
for(i=0; i<12; i++)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -