📄 e20_lcd.c
字号:
if ((g2Local_2 & 0x00ff) < 0x0080){ //显示单个非汉字字符时
g2Local_2 = (g2Local_1 << 8) | gLocal_1;
MDIPASCIIToScreen(gLocal_XS, gLocal_YS, g2Local_2>>8);
gLocal_XS += 7;
}
if (gLocal_1 == 0x00) break;
g2Local_1 = (g2Local_1 << 8) | gLocal_1;
if (g2Local_2 < 0x8000){ //显示两个非汉字字符时
MDIPASCIIToScreen(gLocal_XS, gLocal_YS, g2Local_1);
gLocal_XS += 5*2; //*2
}
else {
MDIPChineseToScreen(gLocal_XS, gLocal_YS, g2Local_1);
gLocal_XS += 16;
}
};
return;
}
void MDIPWriteEngChinese_String(BYTE gLocal_XS, BYTE gLocal_YS, const char *gpString) {
BYTE gLocal_1;
WORD g2Local_2;
WORD gLocal_2;
WORD g2Local_1;
while (1) {
g2Local_1 = *gpString++;
if (g2Local_1 == 0x00) break;
g2Local_2 = g2Local_1;
gLocal_1 = *gpString++;
gLocal_2 = gLocal_1;
if ((g2Local_2 & 0x00ff) < 0x0080){ //显示单个非汉字字符时
g2Local_2 = (g2Local_1 << 8) | gLocal_1;
MDIPASCIIToScreen(gLocal_XS, gLocal_YS, g2Local_2>>8);
gLocal_XS += 7;
}
if (gLocal_1 == 0x00) break;
g2Local_1 = (g2Local_1 << 8) | gLocal_1;
if (g2Local_2 < 0x8000){ //显示两个非汉字字符时
MDIPASCIIToScreen(gLocal_XS, gLocal_YS, g2Local_1);
gLocal_XS += 7;
}
else {
MDIPChineseToScreen(gLocal_XS, gLocal_YS, g2Local_1);
gLocal_XS += 16;
}
};
return;
}
/*显示字符, 参数 x 为列数,参数 y 为行数,参数 gLocal_1 为字符内容*/
BYTE MDIPASCIIToScreen(BYTE x, BYTE y, BYTE gLocal_1){
BOOL FLocal_1;
BYTE gLocal_0;
BYTE gLocal_2;
BYTE gLocal_3;
BYTE gLocal_4;
BYTE gLocal_5[6];
WORD g2Local_1;
gLocal_0 = x;
if (x > 63) x -= 64;
else x += 64;
g2Local_1 = (gLocal_1 - ' ') * 6;
gLocal_2 = x;
MLCDOffsetWrite(x, y);
gLocal_3 = 0;
FLocal_1 = 0;
do {
gLocal_4 = TabDIP_ASCII[g2Local_1 + gLocal_3];
gLocal_5[gLocal_3] = gLocal_4;
MWriteToLCD(gLocal_2++, gLocal_4 << 4);
if (gLocal_2 > 127 && !FLocal_1){
FLocal_1 = 1;
gLocal_2 = 0;
MLCDOffsetWrite(0, y);
}
} while (++gLocal_3 < 6);
MWriteToLCD(gLocal_2, 0);
y += 1;
MLCDOffsetWrite(x, y);
gLocal_2 = x;
gLocal_3 = 0;
FLocal_1 = 0;
do {
MWriteToLCD(gLocal_2++, gLocal_5[gLocal_3] >> 4);
if (gLocal_2 > 127 && !FLocal_1){
FLocal_1 = 1;
gLocal_2 = 0;
MLCDOffsetWrite(0, y);
}
} while (++gLocal_3 < 6);
MWriteToLCD(gLocal_2, 0);
return gLocal_0 + 6;
}
void MDIPLogoShow(){
return;
}
void mDIPClearBuffer(){
BYTE gLocal_1;
gLocal_1 = 64;
do {
MLCD_Write(cLCDLow_D, 0xff);
} while (--gLocal_1 != 0);
gLocal_1 = 64;
do {
MLCD_Write(cLCDHigh_D, 0xff);
} while (--gLocal_1 != 0);
return;
}
void MDIPClearScreen(BYTE gLocal_1){ //清除整行
BYTE gLocal_2;
FDIPReverse = 1;
MLCD_Write(cLCDLow_C, 0x40);
MLCD_Write(cLCDHigh_C, 0x40);
switch (gLocal_1){
case cDOTLine1 : gLocal_2 = 0xb8; break;
case cDOTLine2 : gLocal_2 = 0xba; break;
case cDOTLine3 : gLocal_2 = 0xbc; break;
case cDOTLine4 : gLocal_2 = 0xbe; break;
default : break;
}
MLCD_Write(cLCDLow_C, gLocal_2);
MLCD_Write(cLCDHigh_C, gLocal_2);
mDIPClearBuffer();
MLCD_Write(cLCDLow_C, gLocal_2+1);
MLCD_Write(cLCDHigh_C, gLocal_2+1);
mDIPClearBuffer();
return;
}
void MDIPChineseToScreen(BYTE x, BYTE y, WORD g2Local_1){ // 16 * 16
BOOL FLocal_1;
BYTE gLocal_1;
BYTE gLocal_2;
BYTE gLocal_3;
DWORD g4Local_1;
DWORD g4Local_2;
if (x > 63) x -= 64;
else x += 64;
if (g2Local_1 < 0x80){
g2Local_1 = g2Local_1 + (0xa3a1 - '!');
}
g4Local_2 = ((((g2Local_1 >> 8) - 161) * 94) + ((g2Local_1 & 0xff) - 161));
g4Local_1 = g4Local_2 * 32;
MLCDOffsetWrite(x, y);
gLocal_1 = x;
gLocal_3 = 0;
FLocal_1 = 0;
do {
MWriteToLCD(gLocal_1++, MROM_Read(g4Local_1++));
if (gLocal_1 > 127 && !FLocal_1){
FLocal_1 = 1;
gLocal_1 = 0;
MLCDOffsetWrite(0, y);
}
} while (++gLocal_3 < 16);
MLCDOffsetWrite(x, y+1);
gLocal_1 = x;
gLocal_3 = 0;
FLocal_1 = 0;
do{
MWriteToLCD(gLocal_1++, MROM_Read(g4Local_1++));
if (gLocal_1 > 127 && !FLocal_1){
FLocal_1 = 1;
gLocal_1 = 0;
MLCDOffsetWrite(0, y+1);
}
} while (++gLocal_3 < 16);
return;
}
BYTE MROM_Read(DWORD g4Local_1){ // 16 * 16
BYTE gLocal_1;
BYTE gLocal_2;
// A18/A17/A16处理
gLocal_1 = g4Local_1 >> 16;
gLocal_2 = 0xf1;
if (gLocal_1 & 0x01) gLocal_2 |= 0x02; // A16
if (gLocal_1 & 0x02) gLocal_2 |= 0x08; // A17
if (gLocal_1 & 0x04) gLocal_2 |= 0x04; // A18
M4094DataWrite(gLocal_2);
// A15至A8处理
M4094DataWrite(MSwapAdderssHigh(g4Local_1 >> 8));
p4094_HighSTB = 1;
IOP0 = 0xff;
p4094_HighSTB = 0;
// A7至A9处理
M4094DataWrite(MSwapAdderssLow(g4Local_1));
p4094_LowSTB = 1;
IOP0 = 0xff;
p4094_LowSTB = 0;
pROE = 0;
// MUSDELAY();
gLocal_1 = IOP0;
pROE = 1;
MLED_Release();
/*
M4094DataWrite(gLED_NewBuffer[0] & 0xbf);
M4094DataWrite(gLED_NewBuffer[1]);
p4094_HighSTB = 1;
p4094_HighSTB = 0;
*/
return gLocal_1;
}
BYTE MSwapAdderssHigh(BYTE gLocal_1){
BYTE gLocal_2;
gLocal_2 = 0;
if (gLocal_1 & 0x80) gLocal_2 |= 0x04;
if (gLocal_1 & 0x40) gLocal_2 |= 0x80;
if (gLocal_1 & 0x20) gLocal_2 |= 0x40;
if (gLocal_1 & 0x10) gLocal_2 |= 0x08;
if (gLocal_1 & 0x08) gLocal_2 |= 0x10;
if (gLocal_1 & 0x04) gLocal_2 |= 0x20;
if (gLocal_1 & 0x02) gLocal_2 |= 0x01;
if (gLocal_1 & 0x01) gLocal_2 |= 0x02;
return gLocal_2;
}
BYTE MSwapAdderssLow(BYTE gLocal_1){
BYTE gLocal_2;
gLocal_2 = 0;
if (gLocal_1 & 0x0080) gLocal_2 |= 0x0008;
if (gLocal_1 & 0x0040) gLocal_2 |= 0x0004;
if (gLocal_1 & 0x0020) gLocal_2 |= 0x0002;
if (gLocal_1 & 0x0010) gLocal_2 |= 0x0001;
if (gLocal_1 & 0x0008) gLocal_2 |= 0x0080;
if (gLocal_1 & 0x0004) gLocal_2 |= 0x0040;
if (gLocal_1 & 0x0002) gLocal_2 |= 0x0020;
if (gLocal_1 & 0x0001) gLocal_2 |= 0x0010;
return gLocal_2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -