📄 word_lib.c
字号:
# include "Word_Lib.h"
//这个变量定义在TRANS文件中,用于放大倍数的传递
static unsigned char Word_Buffer[] = "0123456789";
static unsigned char Number[10]={'0', '1', '2', '3', '4',
'5', '6', '7', '8', '9'};
const unsigned char Wrod_Table[96][5]={
{0x00, 0x00, 0x00, 0x00, 0x00},// (space) ascii=0x20
{0x00, 0x00, 0x5F, 0x00, 0x00},// !
{0x00, 0x07, 0x00, 0x07, 0x00},// "
{0x14, 0x7F, 0x14, 0x7F, 0x14},// #
{0x24, 0x2A, 0x7F, 0x2A, 0x12},// $
{0x23, 0x13, 0x08, 0x64, 0x62},// %
{0x36, 0x49, 0x55, 0x22, 0x50},// &
{0x00, 0x05, 0x03, 0x00, 0x00},// '
{0x00, 0x1C, 0x22, 0x41, 0x00},// (
{0x00, 0x41, 0x22, 0x1C, 0x00},// )
{0x08, 0x2A, 0x1C, 0x2A, 0x08},// *
{0x08, 0x08, 0x3E, 0x08, 0x08},// +
{0x00, 0x50, 0x30, 0x00, 0x00},// ,
{0x08, 0x08, 0x08, 0x08, 0x08},// -
{0x00, 0x30, 0x30, 0x00, 0x00},// .
{0x20, 0x10, 0x08, 0x04, 0x02},// /
{0x3E, 0x51, 0x49, 0x45, 0x3E},// 0
{0x00, 0x42, 0x7F, 0x40, 0x00},// 1
{0x42, 0x61, 0x51, 0x49, 0x46},// 2
{0x21, 0x41, 0x45, 0x4B, 0x31},// 3
{0x18, 0x14, 0x12, 0x7F, 0x10},// 4
{0x27, 0x45, 0x45, 0x45, 0x39},// 5
{0x3C, 0x4A, 0x49, 0x49, 0x30},// 6
{0x01, 0x71, 0x09, 0x05, 0x03},// 7
{0x36, 0x49, 0x49, 0x49, 0x36},// 8
{0x06, 0x49, 0x49, 0x29, 0x1E},// 9
{0x00, 0x36, 0x36, 0x00, 0x00},// :
{0x00, 0x56, 0x36, 0x00, 0x00},// ;
{0x00, 0x08, 0x14, 0x22, 0x41},// <
{0x14, 0x14, 0x14, 0x14, 0x14},// =
{0x41, 0x22, 0x14, 0x08, 0x00},// >
{0x02, 0x01, 0x51, 0x09, 0x06},// ?
{0x32, 0x49, 0x79, 0x41, 0x3E},// @
{0x7E, 0x11, 0x11, 0x11, 0x7E},// A
{0x7F, 0x49, 0x49, 0x49, 0x36},// B
{0x3E, 0x41, 0x41, 0x41, 0x22},// C
{0x7F, 0x41, 0x41, 0x22, 0x1C},// D
{0x7F, 0x49, 0x49, 0x49, 0x41},// E
{0x7F, 0x09, 0x09, 0x01, 0x01},// F
{0x3E, 0x41, 0x41, 0x51, 0x32},// G
{0x7F, 0x08, 0x08, 0x08, 0x7F},// H
{0x00, 0x41, 0x7F, 0x41, 0x00},// I
{0x20, 0x40, 0x41, 0x3F, 0x01},// J
{0x7F, 0x08, 0x14, 0x22, 0x41},// K
{0x7F, 0x40, 0x40, 0x40, 0x40},// L
{0x7F, 0x02, 0x04, 0x02, 0x7F},// M
{0x7F, 0x04, 0x08, 0x10, 0x7F},// N
{0x3E, 0x41, 0x41, 0x41, 0x3E},// O
{0x7F, 0x09, 0x09, 0x09, 0x06},// P
{0x3E, 0x41, 0x51, 0x21, 0x5E},// Q
{0x7F, 0x09, 0x19, 0x29, 0x46},// R
{0x46, 0x49, 0x49, 0x49, 0x31},// S
{0x01, 0x01, 0x7F, 0x01, 0x01},// T
{0x3F, 0x40, 0x40, 0x40, 0x3F},// U
{0x1F, 0x20, 0x40, 0x20, 0x1F},// V
{0x7F, 0x20, 0x18, 0x20, 0x7F},// W
{0x63, 0x14, 0x08, 0x14, 0x63},// X
{0x03, 0x04, 0x78, 0x04, 0x03},// Y
{0x61, 0x51, 0x49, 0x45, 0x43},// Z
{0x00, 0x00, 0x7F, 0x41, 0x41},// [
{0x02, 0x04, 0x08, 0x10, 0x20},// "\"
{0x41, 0x41, 0x7F, 0x00, 0x00},// ]
{0x04, 0x02, 0x01, 0x02, 0x04},// ^
{0x40, 0x40, 0x40, 0x40, 0x40},// _
{0x00, 0x01, 0x02, 0x04, 0x00},// `
{0x20, 0x54, 0x54, 0x54, 0x78},// a
{0x7F, 0x48, 0x44, 0x44, 0x38},// b
{0x38, 0x44, 0x44, 0x44, 0x20},// c
{0x38, 0x44, 0x44, 0x48, 0x7F},// d
{0x38, 0x54, 0x54, 0x54, 0x18},// e
{0x08, 0x7E, 0x09, 0x01, 0x02},// f
{0x08, 0x14, 0x54, 0x54, 0x3C},// g
{0x7F, 0x08, 0x04, 0x04, 0x78},// h
{0x00, 0x44, 0x7D, 0x40, 0x00},// i
{0x20, 0x40, 0x44, 0x3D, 0x00},// j
{0x00, 0x7F, 0x10, 0x28, 0x44},// k
{0x00, 0x41, 0x7F, 0x40, 0x00},// l
{0x7C, 0x04, 0x18, 0x04, 0x78},// m
{0x7C, 0x08, 0x04, 0x04, 0x78},// n
{0x38, 0x44, 0x44, 0x44, 0x38},// o
{0x7C, 0x14, 0x14, 0x14, 0x08},// p
{0x08, 0x14, 0x14, 0x18, 0x7C},// q
{0x7C, 0x08, 0x04, 0x04, 0x08},// r
{0x48, 0x54, 0x54, 0x54, 0x20},// s
{0x04, 0x3F, 0x44, 0x40, 0x20},// t
{0x3C, 0x40, 0x40, 0x20, 0x7C},// u
{0x1C, 0x20, 0x40, 0x20, 0x1C},// v
{0x3C, 0x40, 0x30, 0x40, 0x3C},// w
{0x44, 0x28, 0x10, 0x28, 0x44},// x
{0x0C, 0x50, 0x50, 0x50, 0x3C},// y
{0x44, 0x64, 0x54, 0x4C, 0x44},// z
{0x00, 0x08, 0x36, 0x41, 0x00},// {
{0x00, 0x00, 0x7F, 0x00, 0x00},// |
{0x00, 0x41, 0x36, 0x08, 0x00},// }
{0x08, 0x08, 0x2A, 0x1C, 0x08},// ->
{0x08, 0x1C, 0x2A, 0x08, 0x08} // <-
};
void Get_Word_Digit(unsigned int Data, unsigned ch_Newline)
{
unsigned char NUM_Move=0;
unsigned char NUM_Digit=0;
for(NUM_Move=0; NUM_Move<DIGIT_SHOW; NUM_Move++)
{
NUM_Digit=Data%10;
Data=Data/10;
Word_Buffer[DIGIT_SHOW-1-NUM_Move]=Number[NUM_Digit];
}
if(ch_Newline)
{
Word_Buffer[NUM_Move]=' ';
Word_Buffer[NUM_Move+1]='\n';
Word_Buffer[NUM_Move+2]='\0'; //字符收尾
}
else
{
Word_Buffer[NUM_Move]=' ';
Word_Buffer[NUM_Move+1]='\0';
}
}
void Word_Show_Number(unsigned int Data,
unsigned char ch_Newline,
unsigned char ch_x,
unsigned char ch_y)
{
Get_Word_Digit(Data, ch_Newline);
Write_Str(Word_Buffer, ch_x, ch_y);
}
void Write_Char(UINT8 chData,UINT8 chx,UINT8 chy)
{
UINT8 i = 0,j = 0;
UINT8 chIndex = (UINT8)(chData-32); //-space
UINT8 x = chx;
UINT8 y = chy;
if (!((chx > 0 && chx <= 123) && (chy >= 4 && chy <= 63)))
{
return;
}
for (i = 0;i < 5;i++)
{
for (j = 0;j < 8;j++)
{
if (Wrod_Table[chIndex][i]&BIT(j))
{
Draw_Dot(x,y);
}
else
{
Clear_Dot(x,y);
}
y--;
}
x++;
y = chy;
}
}
void Write_Str(UINT8 *Str,UINT8 chx,UINT8 chy)
{
UINT8 i = 0;
for (i = 0;Str[i] != '\0';i++)
{
Write_Char(Str[i],chx,chy);
chx += 5;
}
}
void Dialog_Output(void)
{
Write_Str("Ic:u",102,63);
Write_Str("Vce:",102,43);
Write_Str("Back",102,23);
}
void Dialog_Input(void)
{
Write_Str("Ib:u",102,63);
Write_Str("Vbe:",102,43);
Write_Str("Back",102,23);
}
void Show_Disk_Top(void)
{
Write_Str("Duuble ",55,63);
Write_Str("NPN_IN ",55,53);
Write_Str("NPN_Out",55,43);
Write_Str("PNP_In ",55,33);
Write_Str("PNP_Out",55,23);
Write_Str("Diode ",55,13);
}
//////////////////////////////////////////
//这个函数实现坐标的实际虚拟坐标到实际物理
//意义的转换并显示
//其中显示坐标需要根据实际菜单区大小来改变
//////////////////////////////////////////
struct Mouse_Struct *Show(unsigned char Testing_Type)
{
struct Dot_Struct *Mouse_Head = NULL;
static struct Mouse_Struct Mouse = {0,0,FALSE,FALSE};
unsigned int x_Real = 0;
unsigned int y_Real = 0;
Mouse_Icon_Update();
Mouse_Head = Mouse_Icon_Read(0,0,FALSE);
Mouse.x = Mouse_Head->x;
Mouse.y = Mouse_Head->y;
{
if(Testing_Type == OUT)
{
if(Mouse_Head->x <=51)
{
x_Real = (Mouse_Head->x -1)*15;
}
else
{
x_Real = (Mouse_Head->x -52)*15;
}
}
else if(Testing_Type == IMPT)
{
if(Mouse_Head->x <=51)
{
x_Real = (Mouse_Head->x +26)*10;
}
else
{
x_Real = (Mouse_Head->x +77)*10;
}
}
y_Real = (Mouse_Head->y)*300;
if (g_Mouse.b_Left_Key_Down && Dot_Is_Exist(Mouse_Head->x,Mouse_Head->y))
{
static UINT8 chCounter = 0;
switch (chCounter)
{
case 0:
Word_Show_Number(x_Real, 0,102,33);//PLUS_[0][3]
Word_Show_Number(y_Real, 0, 102,53);
break;
case 1:
break;
}
chCounter = (chCounter+1)%2;
}
}
Mouse.b_Left_Key_Down = g_Mouse.b_Left_Key_Down;
Mouse.b_Right_Key_Down = g_Mouse.b_Right_Key_Down;
return &Mouse;
}
void Twice(UINT8 chCounter)
{
switch (chCounter)
{
case 0:
break;
case 1:
break;
}
chCounter = (chCounter+1)%2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -