📄 ledx7.cpp
字号:
#ifndef __Ledx7_C
#define __Ledx7_C
#include "Ledx7.h"
Ledx7::Ledx7()
{
Number[0]=0x03;
Number[1]=0x9f;
Number[2]=0x25;
Number[3]=0x0d;
Number[4]=0x99;
Number[5]=0x49;
Number[6]=0x41;
Number[7]=0x1f;
Number[8]=0x01;
Number[9]=0x09;
Number[10]=0xfd;//"-"
Number[11]=0xe3;//too low
Number[12]=0x91;//too hight
value[0]=1;
value[1]=2;
value[2]=3;
value[3]=4;
DlTime=1000;
PnPos=0;
HiLeft=false;
KasUnit=false;
P5DIR |= 0x30; // Set P1.0 to output direction
P4DIR |= 0xff;
}
void Ledx7::Setvalue(float temp)
{
uchar i;
if(temp>=9999999)
{
for(i=0;i<4;i++)
value[i]=12;
}
else if(temp>=999999)
{
value[0]=((long)temp)%10000000/1000000;
value[1]=((long)temp)%1000000/100000;
value[2]=((long)temp)%100000/10000;
value[3]=((long)temp)%10000/1000;
PnPos=4;
KasUnit=true;
}
else if(temp>=99999)
{
value[0]=((long)temp)%1000000/100000;
value[1]=((long)temp)%100000/10000;
value[2]=((long)temp)%10000/1000;
value[3]=((long)temp)%1000/100;
PnPos=3;
KasUnit=true;
}
else if(temp>=9999)
{
value[0]=((long)temp)%100000/10000;
value[1]=((long)temp)%10000/1000;
value[2]=((long)temp)%1000/100;
value[3]=((long)temp)%100/10;
PnPos=2;
KasUnit=true;
}
else if(temp>=999)
{
value[0]=((int)temp)%10000/1000;
value[1]=((int)temp)%1000/100;
value[2]=((int)temp)%100/10;
value[3]=((int)temp)%10;
PnPos=0;
KasUnit=false;
}
else if(temp>=99)
{
value[0]=((int)temp)%1000/100;
value[1]=((int)temp)%100/10;
value[2]=((int)temp)%10;
value[3]=((int)(temp*10))%10;
PnPos=3;
KasUnit=false;
}
else if(temp>9)
{
value[0]=((int)temp)%100/10;
value[1]=((int)temp)%10;
value[2]=((int)(temp*10))%10;
value[3]=((int)(temp*100))%10;
PnPos=2;
KasUnit=false;
}
else if(temp>=0)
{
value[0]=((int)temp)%10;
value[1]=((int)temp*10)%10;
value[2]=((int)(temp*100))%10;
value[3]=((int)(temp*1000))%10;
PnPos=1;
KasUnit=false;
}
else if(temp>-10)
{
value[0]=10;
value[1]=((int)(-temp))%10;
value[2]=((int)(-temp*10))%10;
value[3]=((int)(-temp*100))%10;
PnPos=2;
KasUnit=false;
}
else if(temp>-100)
{
value[0]=10;
value[1]=((int)(-temp))%100/10;
value[2]=((int)(-temp))%10;
value[3]=((int)(-temp*10))%10;
PnPos=3;
KasUnit=false;
}
else if(temp>-1000)
{
value[0]=10;
value[1]=((long)(-temp))%1000/100;
value[2]=((long)(-temp))%100/10;
value[3]=((long)(-temp))%10;
PnPos=0;
KasUnit=false;
}
else if(temp>-10000)
{
value[0]=10;
value[1]=((long)(-temp))%10000/1000;
value[2]=((long)(-temp))%1000/100;
value[3]=((long)(-temp))%100/10;
PnPos=2;
KasUnit=true;
}
else if(temp>-100000)
{
value[0]=10;
value[1]=((int)(-temp))%100000/10000;
value[2]=((int)(-temp))%10000/1000;
value[3]=((int)(-temp))%1000/100;
PnPos=3;
KasUnit=true;
}
else//temp<=-99999
{
for(i=0;i<4;i++)
value[i]=11;
}
}
void Ledx7::Display(uchar pos,uchar value)
{
P5OUT=0x00;
P4OUT=0x80>>(pos-1);
Latch_addr_H;
Latch_addr_L;
P4OUT=Number[value];
if(pos==PnPos)
P4OUT &=0xfe;
Latch_data_H;
Latch_data_L;
Delay(DlTime);
}
void Ledx7::Test()
{
uchar i,j;
for(j=0;j<100;j++)
{
for(i=1;i<5;i++)
{
SetPnPos(i);
Display(i,8);
}
}
}
void Ledx7::Clear()
{
uchar i;
for(i=1;i<5;i++)
{
P5OUT=0x00;
P4OUT=0xff;
Latch_addr_H;
Latch_addr_L;
P4OUT=0xff;
Latch_data_H;
Latch_data_L;
}
}
void Ledx7::Display(float Ntemp)
{
uchar i;
Setvalue(Ntemp);
for(i=1;i<=4;i++)
{
if(i==4&&KasUnit==true)
SetPnPos(4);
Display(i,value[i-1]);
}
}
void Ledx7::SetPnPos(uchar NewPos)
{
//PoinPos=(NewPos>4)? 0:NewPos;
if(NewPos>4)PnPos=0;
else PnPos=NewPos;
}
void Ledx7::SetHL(bool NewB)
{
HiLeft=NewB;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -