📄 lcm.#2
字号:
/****************************************************************************
* 名称:LCD_DispChStr16x16()
* 功能:输出显示字符串(16*16字体)。
* 入口参数:x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* str 要显示的字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void LCD_DispChStr16x16(uint8 x, uint8 y, uint8 *str, bit bReve, bit FontNo)
{
uint8 *OffSet;
uint8 i;
uint16 AddOffSet;
OffSet = strstr(Index_FONT16x16ChCH, str);
AddOffSet =(OffSet - Index_FONT16x16ChCH) << 5;
if( !FontNo )
{
if( !bReve )
{
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y, FONT16x16ChCH1[AddOffSet++]);
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y+8, FONT16x16ChCH1[AddOffSet++]);
}
else
{
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y, ~FONT16x16ChCH1[AddOffSet++]);
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y+8, ~FONT16x16ChCH1[AddOffSet++]);
}
}
else
{
if( !bReve )
{
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y, FONT16x16ChCH2[AddOffSet++]);
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y+8, FONT16x16ChCH2[AddOffSet++]);
}
else
{
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y, ~FONT16x16ChCH2[AddOffSet++]);
for(i=0;i<16;i++)
LCD_UpdateByte(x+i, y+8, ~FONT16x16ChCH2[AddOffSet++]);
}
}
}
/****************************************************************************
* 名称:LCD_DispAsciiChStr()
* 功能:显示ASCII码和汉字混编字符串.
* 入口参数:x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* str 要显示的字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void LCD_DispAsciiChStr(uint8 x, uint8 y, uint8 *str, bit bReve, bit FontNo)
{
uint8 idata rega[2];
uint8 idata regc[3];
while( *str != 0 )
{
if( (uint8)*str < 0xA0 )
{
strncpy(rega, str, 1);
rega[1]=0;
LCD_DispAsciiStr16x8(x, y, rega, bReve);
str = str + 1;
x = x + 8;
}
if( (uint8)*str >= 0xA0 )
{
strncpy(regc, str, 2);
regc[2] = 0;
LCD_DispChStr16x16(x, y, regc, bReve, FontNo);
str = str + 2;
x = x + 16;
}
}
}
/****************************************************************************
* 名称:LCD_DispAsciiChCURS()
* 功能:显示光标
* 入口参数:x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* bCOLOR 0/1, 不显示/显示.
* bCHAR 0/1, ASCII码字符/汉字字符型光标.
* 出口参数:
* 说明:
****************************************************************************/
void LCD_DispAsciiChCURS(uint8 xx, uint8 yy, bit bCOLOR, bit bCHAR)
{
uint8 idata x, y;
x = xx;
y = yy;
if( bCHAR == 1 ) // 显示汉字
{
if( bCOLOR == 1 ) // 显示光标
{
LCD_UpdateByte(x, y+15, 0xff);
LCD_UpdateByte(x+8, y+15, 0xff);
}
else // 不显示光标
{
LCD_UpdateByte(x, y+15, 0x00);
LCD_UpdateByte(x+8, y+15, 0x00);
}
}
else // 显示ASCII码
{
if( bCOLOR == 1 ) // 显示光标
{
LCD_UpdateByte(x, y+15, 0xff);
}
else // 不显示光标
{
LCD_UpdateByte(x, y+15, 0x00);
}
}
}
/****************************************************************************
** 函数名称: LCD_SelfTest()
** 功能描述: LCD测试程序
** 入口参数: 无
** 出口参数: 无
** 全局变量: 无
** 调用模块: 无
** 说明:
****************************************************************************/
void LCD_SelfTest(void)
{
LCD_BLED = 1; // Light ON.
Box();
D1S(1);
Staticmap();
D1S(1);
// Scrollmap();
/*
LCD_DispAsciiChStr (16, 96, "苏州LZK-X型电动机", 1);
LCD_DispAsciiCh16x8 (16, 16, '4' );
LCD_DispAsciiStr16x8( 0, 32, ">0123456789LZK-xABCDEFG");
LCD_DispChChar16x16 (16, 48, "科", 1);
LCD_DispChStr16x16 (32, 48, "科树", 1);
LCD_DispChStr16x16 (64, 48, "通信", 1);
LCD_DispChStr16x16 (64+2*16+8, 48, "公科有技限司", 1);
LCD_DispChStr16x16 (16, 72, "友明科技有限公司", 1);
LCD_DispAsciiChStr (16,112, "常滑全", 0);
LCD_DispAsciiChStr (64,112, "科树", 1);
*/
LCD_BLED = 0; // Light OFF
D1S(1);
}
/****************************************************************************
** 函数名称: LCD_GoToXY()
** 功能描述: 光标定位
** 入口参数: 无
** 出口参数: 无
** 全局变量: 无
** 调用模块: 无
** 说明:
****************************************************************************/
void LCD_GoToXY(uint8 x, uint8 y)
{
CURS_X = x;
CURS_Y = y;
}
Staticmap()
{
int i,j,tr1,tr2;
LCD_CS(); /* ExSRAM Page 16 */
LCD_WriteCommand(0xB0); /* SET PAGE ADDRESS */
LCD_WriteCommand(0x10); /* SET COLUMN ADDRESS MSB(00000000) */
LCD_WriteCommand(0x00); /* SET COLUMN ADDRESS LSB(00000000) */
LCD_WriteCommand(0x89); /* SET RAM ADDRESS CONTROL */
for(i=0;i<480;i++)
{
LCD_WriteData(0x00);
// DmS(10);
}
for(i=0,tr1=0,tr2=0;i<13;i++)
{
for(j=0;j<24;j++)
{
LCD_WriteData(0x00);
// DmS(10);
}
for(j=0;j<96;j++,tr1++)
{
LCD_WriteData(TRULY1[tr1]);
// DmS(10);
}
for(j=0;j<96;j++,tr2++)
{
LCD_WriteData(TRULY2[tr2]);
// DmS(10);
}
for(j=0;j<24;j++)
{
LCD_WriteData(0x00);
// DmS(10);
}
}
for(i=0;i<240;i++)
LCD_WriteData(0x00);
}
Box()
{
int i,j;
LCD_CS(); /* ExSRAM Page 16 */
LCD_WriteCommand(0xB0); /*SET PAGE ADDRESS*/
LCD_WriteCommand(0x10); /*SET COLUMN ADDRESS MSB(00000000)*/
LCD_WriteCommand(0x00); /*SET COLUMN ADDRESS LSB(00000000)*/
LCD_WriteCommand(0x89); /*SET RAM ADDRESS CONTROL*/
LCD_WriteData(0xFF);
for(i=0;i<238;i++)
LCD_WriteData(0x01);
LCD_WriteData(0xFF);
for(i=0;i<14;i++)
{
LCD_WriteData(0xFF);
for(j=0;j<238;j++)
LCD_WriteData(0x00);
LCD_WriteData(0xFF);
}
LCD_WriteData(0xFF);
for(i=0;i<238;i++)
LCD_WriteData(0x80);
LCD_WriteData(0xFF);
ExInSRAM_Select(0); //
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -