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

📄 ledx7.cpp

📁 msp430的C++数码管完美驱动 用msp430F247成功测试
💻 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 + -