📄 sed1335lcd.c
字号:
* *
*******************************************************************************/
void LCD16X24Printf(uchar ucRowStart, uchar ucColumnStart, uchar ucAttribute, uchar * pStringDisplay)
{
uchar idata ucIndex;
while(*pStringDisplay != '\0')
{
if(*pStringDisplay == 32 ) // 空格
{
ucIndex = 0;
}
else if(*pStringDisplay > 57) // XYZ
{
ucIndex = *pStringDisplay - 88 + 14;
}
else // - ~ 9
{
ucIndex = *pStringDisplay - 45 + 1;
}
Char16X24Display(ucIndex , ucRowStart , ucColumnStart , ucAttribute);
pStringDisplay++;
ucColumnStart = ucColumnStart + 2;
}
}
/*************************************************************************
* 函数名称: LCD8Printf() *
* 函数用途: 显示8X16的字符串(只用于程序代码显示) *
* 输入参数: *
* ucRowStart: 显示起始行号 *
* ucColumnStar: 显示起始列号(单位:字节) *
* *pStringDisplay: 显示的字符串 *
* ucAttribute: 字符显示属性(0:正常;1:反白) *
* 输出参数:无 *
* *
**************************************************************************/
void LCD8Printf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar *pStringDisplay )
{
uchar idata ucIndex;
while((*pStringDisplay != '\0') && (ucColumnStart < (ColumnEnd+1)))
{
ucIndex = *pStringDisplay - 32; //求字符在字库的索引值,首个字符位空格,按ASCII嘛顺序存放
CharDisplay(ucIndex , ucRowStart , ucColumnStart , ucAttribute);
pStringDisplay++;
ucColumnStart = ucColumnStart + 1;
}
}
/*************************************************************************
* 函数名称: ProgramRowPrintf() *
* 函数用途: AUTO方式程序代码显示(8X16的字符串) *
* 输入参数: *
* ucRowStart: 显示起始行号 *
* ucColumnStar: 显示起始列号(单位:字节) *
* *pStringDisplay: 显示的字符串 *
* ucAttribute: 字符显示属性(0:正常;1:反白) *
* 输出参数:无 *
* *
**************************************************************************/
void ProgramRowPrintf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar *pStringDisplay )
{
uchar idata ucIndex;
while((*pStringDisplay != '\0') && (ucColumnStart < 29))
{
ucIndex = *pStringDisplay - 32; //求字符在字库的索引值,首个字符位空格,按ASCII嘛顺序存放
CharDisplay(ucIndex , ucRowStart , ucColumnStart , ucAttribute);
pStringDisplay++;
ucColumnStart = ucColumnStart + 1;
}
}
/*---------------图片显示---------------------------------------*/
/*******************************************************************************
* 函数名称: GSKFlagDisplay() *
* 函数用途: 显示GSK标志 *
* 输入参数: *
* ucRowStart: 显示起始行号 *
* ucColumnStar: 显示起始列号(单位:字节) *
* ucAttribute: 字符显示属性(0:正常;1:反白) *
* 输出参数:无 *
* *
********************************************************************************/
uchar GSKFlagDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute )
{
uchar ucRowCounter,ucColumnCounter;
uint unCounter;
union CURSOR_ADR POSITION;
POSITION.Adr = ucRow*APL + ucColumn; //计算显示位置的内存地址
LCDCommand = CSRDIR_RIGHT;
for(ucRowCounter = 0;ucRowCounter < 100;ucRowCounter++) //点阵显示行控制(100点)
{
LCDCommand = CSRW;
LCDDataWrite = POSITION.AdrByte.AdrL;
LCDDataWrite = POSITION.AdrByte.AdrH;
LCDCommand=MWRITE;
for(ucColumnCounter = 0;ucColumnCounter < 11;ucColumnCounter++) //点阵显示列控制(11字节,88点)
{
if(KeyScanf() != 0x00) // 检测到按键则返回
return(1);
if(ucAttribute == 0)
{
LCDDataWrite = GSK_FLAG[ucRowCounter * 11 + ucColumnCounter];
}
else
{
LCDDataWrite = ~GSK_FLAG[ucRowCounter * 11 + ucColumnCounter];
}
}//for(ucColumnCounter = 0;ucColumnCounter < 11;ucColumnCounter++)
POSITION.Adr += APL; //指向下一行开始位置
unCounter=DelayWithKeyScanf(50);
if(unCounter != 0)
return(1);
}//for(ucRowCounter = 0;ucRowCounter < 100;ucRowCounter++)
return(0);
}
/******************************************************************************
* 函数名称: GSKNameDisplay() *
* 函数用途: 显示GSK名字 *
* 输入参数: *
* ucRowStart: 显示起始行号 *
* ucColumnStar: 显示起始列号(单位:字节) *
* ucAttribute: 字符显示属性(0:正常;1:反白)*
* 输出参数:无 *
* *
*******************************************************************************/
uchar GSKNameDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute )
{
uchar ucRowCounter , ucColumnCounter;
uint unCounter;
union CURSOR_ADR POSITION;
POSITION.Adr = ucRow*APL + ucColumn; //计算显示位置的内存地址
LCDCommand = CSRDIR_RIGHT;
for(ucRowCounter = 0;ucRowCounter < 23;ucRowCounter++) //点阵显示行控制(23点)
{
LCDCommand = CSRW;
LCDDataWrite = POSITION.AdrByte.AdrL;
LCDDataWrite = POSITION.AdrByte.AdrH;
LCDCommand=MWRITE;
for(ucColumnCounter = 0;ucColumnCounter < 26;ucColumnCounter++) //点阵显示列控制(11字节,88点)
{
if(KeyScanf() != 0x00) // 检测到按键则返回
return(1);
if(ucAttribute == 0)
{
LCDDataWrite = GSK_NAME[ucRowCounter * 26 + ucColumnCounter];
}
else
{
LCDDataWrite = ~GSK_NAME[ucRowCounter * 26 + ucColumnCounter];
}
}//for(ucColumnCounter = 0;ucColumnCounter < 26;ucColumnCounter++)
POSITION.Adr += APL; //指向下一行开始位置
unCounter=DelayWithKeyScanf(50);
if(unCounter != 0)
return(1);
}// for(ucRowCounter = 0;ucRowCounter < 23;ucRowCounter++)
return(0);
}
/*********************************************************************
* 函数名称: MultipleDisplay() *
* 函数用途: 显示24X16点阵的倍率图标 *
* 输入参数: *
* ucIndex : 字符在字库的索引 *
* ucRow : 屏幕行号 *
* ucColumn : 屏幕列号(单位:字节) *
* ucAttribute: 字符显示属性(0:正常;1:反白) *
* 输出参数:无 *
* *
**********************************************************************/
void MultipleDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
uchar idata ucRowCounter;
uchar idata ucColumnCounter;
union CURSOR_ADR idata POSITION;
POSITION.Adr = ucRow*APL + ucColumn; //计算显示位置的内存地址
LCDCommand = CSRDIR_DOWN;
for(ucColumnCounter = 0;ucColumnCounter < 3;ucColumnCounter++) //点阵显示列控制(3字节,16点)
{
LCDCommand = CSRW;
LCDDataWrite = POSITION.AdrByte.AdrL;
LCDDataWrite = POSITION.AdrByte.AdrH;
LCDCommand=MWRITE;
for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++) //点阵显示行控制(16点)
{
if(ucAttribute == 0)
{
LCDDataWrite = Multiple[ucIndex][ucColumnCounter*16+ucRowCounter];
}
else
{
LCDDataWrite = ~Multiple[ucIndex][ucColumnCounter*16+ucRowCounter];
}
}//for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)
POSITION.Adr++; //显示内存地址加1,指向字符右半部显示内存地址
}//for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -