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

📄 gui.c

📁 DDS产生程序
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "DF1404.h"

__flash U8 LedTable[] = {0xED,0x84,0xD9,0xDC,0xB4,0x7C,0x7D,0xC4,0xFD,0xFC,0x00};

U8 DispBuffer[8];        
U8 DispMark[3];
U8 KeyInputPoint;       
U8 DigitalBuffer[8];  
U8 Key;
U8 Dot;
U8 EnCoderPoint;
U8 EnCoderEnable;
U8 RountData;

static void SendCH451(U16 command)
{
     U8 Temp,i;
     #ifdef BIG_ENDIAN
        Temp = ((U8*)(&command))[1];
     #else
        Temp = ((U8*)(&command))[0];
     #endif
         if ( ((U8*)(&command))[1] >= 0x80 )  
           {
                SetCH451Load1();
                NOP();
                NOP();
                ClrCH451Load1();
           }
         else
           {
                SetCH451Load0();
                NOP();
                NOP();
                ClrCH451Load0();

           }
         for (i=0x01; i ; i=i << 1)
           {
                ClrCH451Clk();
                NOP();
                if (Temp & i)
                  {
                      SetCH451Data();
                  }
                else
                  {
                      ClrCH451Data();
                  }
                NOP();
                SetCH451Clk();
           }
        
          if ( ((U8 *)(&command))[1] >= 0x80 )
             {
                    SetCH451Load1();
             }
          else
            {
                    SetCH451Load0();
            }
}

static void CH451Init(void)
{
        KeyInputPoint = 0;
        EnCoderPoint = 1;
        
        SetCH451Data();
        NOP();
        NOP();
        ClrCH451Data();
        NOP();
        NOP();
        SetCH451Data();

        SendCH451(0x0201);
        SendCH451(0x8201);

        SendCH451(0x0401);
        SendCH451(0X8403);

        SendCH451(0x0500);
        SendCH451(0x8500);

        SendCH451(0x0640);
        SendCH451(0x8600);

}

void UpDataCH451(void)
{
        SendCH451(0x0401);
        SendCH451(0X8403);

        SendCH451(0x0500);
        SendCH451(0x8500);
      
  
}

void DivBCD(U32 hex)
{

        U32 va = 10000000;
        U8 i,j;
        for(i=0, j=0; i<7; i++, j++)
        {
                DispBuffer[j] = 0;		
                while((hex >= va) && (va > 9))
                {
                        hex = hex - va;		
                        DispBuffer[j]++;	
                }
                va = va/10;			
        }
        DispBuffer[7] = hex;			
        
        
        for (i=0; i<8; i++)
        {
              DispBuffer[i] = LedTable[DispBuffer[i]];
        }
}

U8 ReadKey(void)
{
      U8 i,command;
         command = 0x07;  
         Key = 0;
      if ( !GetCH451Key() ) 
        {
              ClrCH451Load1();
              for (i=0x01; i<0x10; i<<=1)
              {
                 ClrCH451Clk();
                 NOP();
                 if ( i & command )
                   {
                         SetCH451Data();
                   }
                 else
                   {
                         ClrCH451Data();
                   }
                 NOP();
                 SetCH451Clk();
              }
             SetCH451Load1();
             return Key;
        }
      else
      {
          return 0;
      }
}

void DefaultFun(void)
{
    
    SignalInit();
    CurrentState.Freq = 10000.0;
    WriteFreq(CurrentState.Freq);
    DigitalBuffer[0] = 1;
    DigitalBuffer[1] = 0;
    DigitalBuffer[2] = 0;
    DigitalBuffer[3] = 0;
    DigitalBuffer[4] = 0;
    DigitalBuffer[5] = 0;
    DigitalBuffer[7] = 0;
    DigitalBuffer[7] = 0;
    DispBuffer[0] = LedTable[DigitalBuffer[0]];
    DispBuffer[1] = LedTable[DigitalBuffer[1]] | 0x02;
    DispBuffer[2] = LedTable[DigitalBuffer[2]];
    DispBuffer[3] = LedTable[DigitalBuffer[3]];
    DispBuffer[4] = LedTable[DigitalBuffer[4]];
    DispBuffer[5] = LedTable[DigitalBuffer[5]];
    DispBuffer[6] = LedTable[10];
    DispBuffer[7] = LedTable[10];
    DispMark[2] |= (1 << SinLed) | (1 << kLed) | (1 << HzLed);
    DispMark[1] &= ~(1 << MLed);
    UpDataCH451();
}

void DispInit(void)
{
      CH451Init();
      //DivBCD(100000);
      DefaultFun();
      DispMark[2] |= (1 << ShiftLed);
      UpDataCH451();
}

void NumberFun(U8 Position, U8 Number)
{  
       U8 i;
       U8 j;
       U8 n;
       j = Position;
       n = Number;
       EnCoderEnable = DISABLE;
       SendCH451(0x0600);
       if(CurrentState.CurrentMode == CWMODE)
       {
          switch (j)
          {
              case 0:
             {
                   DigitalBuffer[0] = n;
                   DispBuffer[0] = LedTable[n];
                   KeyInputPoint++;
                   for (i=7; i>0; i--)
                   {
                        DispBuffer[i] = LedTable[10];
                   }
                 UpDataCH451();
                 break;
              };
               case 1:
              {
                   DigitalBuffer[1] = n;
                   DispBuffer[1] = LedTable[n];
                   KeyInputPoint++;
                   for (i=7; i>1; i--)
                   {
                      DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
              case 2:
              {
                   DigitalBuffer[2] = n;
                   DispBuffer[2] = LedTable[n];
                   KeyInputPoint++;
                   for (i = 7; i > 2; i--)
                   {
                       DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
              case 3:
              {
                   DigitalBuffer[3] = n;
                   DispBuffer[3] = LedTable[n];
                   KeyInputPoint++;
                   for (i=7; i>3; i--)
                   {
                        DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
             case 4:
              {
                   DigitalBuffer[4] = n;
                   DispBuffer[4] = LedTable[n];
                   KeyInputPoint++;
                   for (i = 7; i > 4; i--)
                   {
                     DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
              case 5:
              {
                   DigitalBuffer[5] = n;
                   DispBuffer[5] = LedTable[n];
                   KeyInputPoint++;
                   for (i = 7; i > 5; i--)
                   {
                     DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
               case 6:
              {
                   DigitalBuffer[6] = n;
                   DispBuffer[6] = LedTable[n];
                   KeyInputPoint++;
                   for (i = 7; i > 6; i--)
                   {
                     DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
               case 7:
              {
                   DigitalBuffer[7] = Number;
                   DispBuffer[7] = LedTable[n];
                   KeyInputPoint++;
                   for (i=7; i>7; i--)
                   {
                     DispBuffer[i] = LedTable[10];
                   }
                   UpDataCH451();
                   break;
              };
              
             default : break;
              
          }
      
    }
}

void KeyDotAmplFun(U8 Position)
{
     
     if (--Position == 0)
     {
          DispBuffer[0] = LedTable[DigitalBuffer[0]] | 0x02;
     }
     else if (Position == 1)
     {
           DispBuffer[1] = LedTable[DigitalBuffer[1]] | 0x02;
     }
     else if (Position == 2)
     {
           DispBuffer[2] = LedTable[DigitalBuffer[2]] | 0x02;
     }
     else if (Position == 3)
     {
           DispBuffer[3] = LedTable[DigitalBuffer[3]] | 0x02;
     }
     else if (Position == 4)
     {

⌨️ 快捷键说明

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