📄 gui.c
字号:
#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 + -