lcdrive.c
来自「ZLG的LPC2220读取SD卡的源代码」· C语言 代码 · 共 699 行 · 第 1/2 页
C
699 行
}
StartAddr=StartAddr + LineChar;
}
}
/********************************************************************************************************
** 名称:LCD_UpdatePoint()
** 功能:在指定的位置上画点,刷新某一点
** 入口参数:x 指定点所在列的位置
** y 指定点所在行的位置
** 出口参数:返回值为1表示操作成功,为0表示操作失败
** 说明:操作失败原因是指定地址超出缓冲区范围
*********************************************************************************************************/
void LCD_UpdatePoint(uint32 x, uint32 y)
{ uint32 addr;
/*找出目标地址*/
addr = y*(GUI_LCM_XMAX>>3)+(x>>3);
LCD_WriteTCommand3(LCD_ADR_POS,addr&0xFF,addr>>8); //置地址指针
/*输出数据*/
LCD_WriteTCommand2(LCD_INC_WR,gui_disp_buf[y][x>>3]);
}
/********************************************************************************************************
** 名称:LCD_UpdateSCR()
** 功能:LCM全屏刷新,即把全部显示缓冲区的数据输出到LCM的显示RAM
** 入口参数:无
** 出口参数:无
*********************************************************************************************************/
void LCD_UpdateSCR(void)
{ uint32 i,j;
/*开始复制数据*/
LCD_WriteTCommand3(LCD_ADR_POS,0x00,0x00); //置地址指针
LCD_WriteTCommand1(LCD_AUT_WR); //自动写
for(i=0;i<GUI_LCM_YMAX;i++) //遍历所有行
{ for(j=0;j<GUI_LCM_XMAX;j++) //遍历所有列
{ LCD_WriteTData1(gui_disp_buf[i][j]);
}
}
LCD_WriteTCommand1(LCD_AUT_OVR); //自动写结束
}
/********************************************************************************************************
** 名称:LCD_ShowLine()
** 功能:显示一行字符串(汉字,字母混排,一行16字节)
** 入口参数:lin:行 lineheadaddr: 此行汉字代码区首地址
** 出口参数:无
*********************************************************************************************************/
/*void LCD_ShowLine(uint8 lin,uint8 column,uint8 linehead[])
{
uint8 i,j;
uint8 byte;
uint32 hzcode;
for( i= column,j=0; i< column+14 ; )
{ byte=linehead[j];
if(byte < 0x80) //字母
{
LCD_ShowChar(lin, i , byte);
i=i+1;j=j+1;
}
else // byte >= 0x80(汉字)
{
byte=byte & 0x7f; //最高位置0,即:减去0x8000
hzcode=byte*256 + linehead[j+1]; //加低8位,组合成整型数地址
LCD_ShowHZ( lin,i,hzcode);
i=i+2;j=j+2;
}
}
}*/
/********************************************************************************************************
** 名称:LCD_ShowHZ()
** 功能:LCD显示汉字16*16点阵
** 入口参数:lin:行(0-7), column: 列(0-7),hzcode: 汉字代码
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowHZ(uint8 lin,uint8 column,uint8 hzcode)
{
uint8 i;
uint32 StartAddr;
StartAddr=lin*LineChar + column; //定位起始行
for(i=0;i<16;i++)
{
LCD_WriteTCommand3(LCD_ADR_POS,StartAddr&0xFF,StartAddr>>8);
LCD_WriteTCommand2(LCD_INC_WR,HZTable[hzcode][i*2]); //左半部 地址加一
LCD_WriteTCommand2(LCD_NOC_WR,HZTable[hzcode][i*2+1]); //右半部 字模地址加一
StartAddr=StartAddr + LineChar;
}
}
/********************************************************************************************************
** 名称:LCD_Showspace()
** 功能:LCD显示16*16空点阵,覆盖原显示字,做动画
** 入口参数:lin:行(0-7), column: 列(0-7)
** 出口参数:无
*********************************************************************************************************/
void LCD_Showspace(uint8 lin,uint8 column)
{
uint8 i;
uint32 StartAddr;
StartAddr=lin*LineChar + column; //定位起始行
for(i=0;i<16;i++)
{
LCD_WriteTCommand3(LCD_ADR_POS,StartAddr&0xFF,StartAddr>>8);
LCD_WriteTCommand2(LCD_INC_WR,0x00); //左半部 地址加一
LCD_WriteTCommand2(LCD_NOC_WR,0x00); //右半部 字模地址加一
StartAddr=StartAddr + LineChar;
}
}
/********************************************************************************************************
** 名称:LCD_ShowChar()
** 功能:LCD显示显示8*16字符
** 入口参数:lin:行(0-7), column: 列(0-15),ch:字符代码(标准ASCII码),reverse表示反显
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowChar(uint8 lin,uint8 column,uint8 ch,uint8 reverse)
{
uint8 i;
uint8 dat;
uint32 StartAddr;
StartAddr=lin*LineChar +column; //定位起始行
for(i=0;i<16;i++)
{
if(reverse==0)
dat=ASCII816[ ch-0x20 ][i];
else
dat=~ASCII816[ ch-0x20 ][i];
LCD_WriteTCommand3(LCD_ADR_POS,StartAddr&0xFF,StartAddr>>8);
LCD_WriteTCommand2(LCD_NOC_WR, dat);
StartAddr=StartAddr + LineChar;
}
}
/********************************************************************************************************
** 名称:LCD_ShowPicture()
** 功能:LCD显示图片
** 入口参数:Startline显示开始行,Startcolumn开始列,LineWidth图片行数,ColumnWidth图片列数(8位为一列),address图片代码
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowPicture(uint8 Startline,uint8 Startcolumn,uint8 LineWidth,uint8 ColumnWidth,uint8 *sbmp)
{
uint8 i,j;
uint32 StartAddr;
StartAddr=Startline*LineChar + Startcolumn; //定位起始位置
for(i=0;i<LineWidth;i++)
{
LCD_WriteTCommand3(LCD_ADR_POS,StartAddr&0xFF,StartAddr>>8); //set address
for(j=0;j<ColumnWidth;j++)
{
LCD_WriteTCommand2(LCD_INC_WR,sbmp[i*ColumnWidth+ j]);
}
StartAddr=StartAddr + LineChar;
}
}
/********************************************************************************************************
** 名称:LCD_ShowDir()
** 功能:LCD显示"目"
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowDir(uint8 Startline,uint8 Startcolumn)
{
LCD_ShowPicture(Startline,Startcolumn,16,2,Dir);
}
/********************************************************************************************************
** 名称:LCD_ShowFile()
** 功能:LCD显示"文"
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowFile(uint8 Startline,uint8 Startcolumn)
{
LCD_ShowPicture(Startline,Startcolumn,16,2,File);
}
/********************************************************************************************************
** 名称:LCD_ShowPlus()
** 功能:LCD显示加号,表示子目录下有文件或目录
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowPlus(uint8 Startline,uint8 Startcolumn)
{
LCD_ShowPicture(Startline,Startcolumn,16,2,Plus);
}
/********************************************************************************************************
** 名称:LCD_ShowMinus()
** 功能:LCD显示减号,表示子目录下空
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowMinus(uint8 Startline,uint8 Startcolumn)
{
LCD_ShowPicture(Startline,Startcolumn,16,2,Minus);
}
/********************************************************************************************************
** 名称:LCD_ShowLogo()
** 功能:LCD显示交大图标
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowLogo()
{
LCD_ShowPicture(30,0,96,12,Bmpsjtu);
}
/********************************************************************************************************
** 名称:LCD_ShowTitle()
** 功能:LCD显示标题
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowTitle()
{
uint8 i;
for(i=0;i<10;i++)
{
LCD_ShowHZ(4,4+i*2,i);
} //在第一行显示"多功能网络打印适配器"
}
/********************************************************************************************************
** 名称:LCD_ShowSDTitle()
** 功能:LCD显示SD卡信息标题
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowSDTitle()
{
uint8 i;
//for(i=0;i<2;i++)
// LCD_ShowCharBOLD(4,6+i*1,i+20);
LCD_ShowChar(4,6,0x53,0x00); //"S"
LCD_ShowChar(4,7,0x44,0x00); //"D"
for(i=0;i<8;i++)
{
LCD_ShowHZ(4,8+i*2,i+20);
} //在第一行显示"多功能网络打印适配器"
}
/********************************************************************************************************
** 名称:LCD_ShowName()
** 功能:LCD显示小组成员
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowName()
{
uint8 i;
for(i=0;i<4;i++)
{
LCD_ShowHZ(30,14+i*2,i+10);
} //显示"小组成员"
for(i=0;i<2;i++)
{
LCD_ShowHZ(50,17+i*2,i+14);
} //显示姓名
for(i=0;i<2;i++)
{
LCD_ShowHZ(70,17+i*2,i+16);
} //显示姓名
for(i=0;i<2;i++)
{
LCD_ShowHZ(90,17+i*2,i+18);
} //显示姓名
}
/********************************************************************************************************
** 名称:LCD_ShowDate()
** 功能:LCD显示日期
** 入口参数:
** 出口参数:无
*********************************************************************************************************/
void LCD_ShowDate()
{
LCD_ShowChar(110,21,0x32,0x00); //"2"
LCD_ShowChar(110,22,0x30,0x00); //"0"
LCD_ShowChar(110,23,0x30,0x00); //"0"
LCD_ShowChar(110,24,0x36,0x00); //"6"
LCD_ShowChar(110,25,0x2F,0x00); //"/"
LCD_ShowChar(110,26,0x30,0x00); //"0"
LCD_ShowChar(110,27,0x35,0x00); //"5"
//LCD_ShowChar(110,25,0x2F,0x00); //"/"
//LCD_ShowChar(110,26,0x30,0x00); //"0"
//LCD_ShowChar(110,27,0x36,0x00); //"6"}
//---------------------
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?