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

📄 displaycontrol.c

📁 基于FPGA 的直接数字频率合成信号发生器(DDS)设计
💻 C
字号:
#define _DISPLAYCONTROL_C_Def

#include "hd7279.h"
#include "DisplayControl.h"

void InitialDisplayControl(void){
  unsigned char i;
  SendInstructTo7279(CMD_RESET); //
  for( i=0;i<DIG_NUMs;i++ ){
      DisplayV.DisplayBakBuffer[i] = 0xFF;
      DisplayV.DisplayBuffer[i] = 0x98;//DP , transMode 1, data 8
  }
  DisplayV.FlashC = 0xFF;
  DisplayV.HideC = 0xFF;
  DisplayV.BakFlashC = 0x00;
  DisplayV.BakHideC = 0x00;
  DisplayV.ControlMark = 1;
  
  return;
}

//disBit:0~7
//mark:1 显示小数点;0:不显示小数点
void SetupDPForLED(unsigned char disBit, unsigned char mark)
{
  if(mark)
    DisplayV.DisplayBuffer[disBit] |= 0x80;
  else
    DisplayV.DisplayBuffer[disBit] &= 0x7F;
}
//返回显示缓冲器中的数据,0x00~0x0f
unsigned char ReturnLedBufData(unsigned char disBit)
{
  return DisplayV.DisplayBuffer[disBit] & 0x0F; 
}

//让所有的LED无显示, 注意:不是隐藏
void GoOutAllLED(void)
{
  unsigned char i;

  for ( i=0;i<DIG_NUMs;i++ )
    DisplayV.DisplayBuffer[i] = 0x0F;
}

//DisBit:0~7
//Data: 0x00~0x0F
//DP: 0 or 1
//transMode:0 or 1 or 2
unsigned char SetupDisBuffer(unsigned char DisBit, unsigned char Dp, unsigned char Data, unsigned char transMode){
  unsigned char i;
  if( DisBit>7 ) return 0;
  
  i = Data & 0x0F;
  if( Dp!=0 ) i += 0x80;
  i += ((transMode & 0x03) << 4);
  
  DisplayV.DisplayBuffer[DisBit] = i;
  
  return 1;
}
//DisBit:0~7, other all bit
//mark:1-闪烁; 0-不闪烁
void SetupFlashBit(unsigned char DisBit, unsigned char mark){
  if( DisBit>7 ){
    if( mark!=0 )//闪烁
      DisplayV.FlashC = 0x00;
    else//不闪烁
      DisplayV.FlashC = 0xFF;
  }
  else{
    if( mark!=0 )//闪烁
      DisplayV.FlashC &= ~(1 << (7-DisBit));
    else//不闪烁
      DisplayV.FlashC |= (1 << (7-DisBit));
  }
  
  return;
}
//DisBit:0~7, other all bit
//mark: 1-消隐; 0-不消隐
void SetupHideBit(unsigned char DisBit, unsigned char mark){
  if( DisBit>7 ){
    if( mark!=0 )//消隐
      DisplayV.HideC = 0x00;
    else//不消隐
      DisplayV.HideC = 0xFF;
  }
  else{
    if( mark!=0 )//消隐
      DisplayV.HideC &= ~(1 << (7-DisBit));
    else//不消隐
      DisplayV.HideC |= (1 << (7-DisBit));
  }

  return ;
}

//-------------------------------------------------------------------------------
void Display(void)
{
  unsigned char i;

  if( DisplayV.ControlMark==0 )
    return;
    
  for( i=0;i<DIG_NUMs;i++ ){
    if( DisplayV.DisplayBuffer[i]!=DisplayV.DisplayBakBuffer[i] ){
      SetupLedData(7-i, DisplayV.DisplayBuffer[i]&0x8F, (DisplayV.DisplayBuffer[i]&0x70)>>4 );
      DisplayV.DisplayBakBuffer[i] = DisplayV.DisplayBuffer[i];
    }
  }

  if( DisplayV.FlashC!=DisplayV.BakFlashC ){
    Flash7279(DisplayV.FlashC);
    DisplayV.BakFlashC = DisplayV.FlashC;
  }
  if( DisplayV.HideC!=DisplayV.BakHideC ){
    Hide7279(DisplayV.HideC);
    DisplayV.BakHideC = DisplayV.HideC;
  }
  
  return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -