?? lcddrive.c
字號:
write_com(0x0002,0x0600); DelayNS(1000);
write_com(0x0010,0x0000); DelayNS(1000);
write_com(0x0011,0x6070); DelayNS(1000); //0x4030 //定義數據格式 16位色
write_com(0x0005,0x0000); DelayNS(1000);
write_com(0x0006,0x0000); DelayNS(1000);
write_com(0x0016,0xEF1C); DelayNS(1000);
write_com(0x0017,0x0003); DelayNS(1000);
write_com(0x0007,0x0233); DelayNS(1000); //0x0233
write_com(0x000B,0x0000); DelayNS(1000);
write_com(0x000F,0x0000); DelayNS(1000); //掃描開始地址
write_com(0x0041,0x0000); DelayNS(1000);
write_com(0x0042,0x0000); DelayNS(1000);
write_com(0x0048,0x0000); DelayNS(1000);
write_com(0x0049,0x013F); DelayNS(1000);
write_com(0x004A,0x0000); DelayNS(1000);
write_com(0x004B,0x0000); DelayNS(1000);
write_com(0x0044,0xEF00); DelayNS(1000);
write_com(0x0045,0x0000); DelayNS(1000);
write_com(0x0046,0x013F); DelayNS(1000);
write_com(0x0030,0x0707); DelayNS(1000);
write_com(0x0031,0x0204); DelayNS(1000);
write_com(0x0032,0x0204); DelayNS(1000);
write_com(0x0033,0x0502); DelayNS(1000);
write_com(0x0034,0x0507); DelayNS(1000);
write_com(0x0035,0x0204); DelayNS(1000);
write_com(0x0036,0x0204); DelayNS(1000);
write_com(0x0037,0x0502); DelayNS(1000);
write_com(0x003A,0x0302); DelayNS(1000);
write_com(0x003B,0x0302); DelayNS(1000);
write_com(0x0023,0x0000); DelayNS(1000);
write_com(0x0024,0x0000); DelayNS(1000);
write_com(0x0025,0x8000); DelayNS(1000);
write_com(0x004f,0); //行首址0
write_com(0x004e,0); //列首址0
}
/****************************************************************************
* 與LCM相關的GUI接口函數
****************************************************************************/
void Lcd_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
/****************************************************************************
* 名稱:GUI_FillSCR()
* 功能:全屏填充。直接使用數據填充顯示緩沖區。
* 入口參數:dat 填充的數據(對于黑白色LCM,為0的點滅,為1的點顯示)
* 出口參數:無
****************************************************************************/
//==============================================
void Set_ramaddr(uint x,uint y)
{
write_com(0x004f,y); //行首址
write_com(0x004e,x); //列首址
}
/**************************************************************************************
* 名 稱: DispOneColor
* 功 能: 全屏顯示某種顏色
* 參 數: Color : 顏色值
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者 改動內容和原因
* ----------------------------------------------------
* 1.0 2007.6.13 lcf 基本的功能完成
**************************************************************************************/
void DispOneColor(uint Color)
{
int i,j;
write_com(0x004f,0); //行首址0
write_com(0x004e,0); //列首址0
LCD_WriteCommand(0x0022);
for(j=0;j<320;j++)
for(i=0;i<240;i++)
LCD_WriteData(Color);
}
/**************************************************************************************
* 名 稱: DispClear
* 功 能: 清除顯示屏的顯示內容
* 參 數: 無
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者 改動內容和原因
* ----------------------------------------------------
* 1.0 2006.8.13 lcf 基本的功能完成
**************************************************************************************/
void DispClear(void)
{
DispOneColor(BLUE);
}
/**************************************************************************************
* 名 稱: DispSmallPic
* 功 能: 在指定的位置顯示一張65K色的圖片
* 參 數: str : 圖片數組名
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者 改動內容和原因
* ----------------------------------------------------
* 1.0 2007.6.13 lcf 基本的功能完成
**************************************************************************************/
void DispSmallPic(uint x, uint y, uint w, uint h, const uchar *str)
{
uint i,j,temp;
for(j=0;j<h;j++)
{
Set_ramaddr(x,y+j);
LCD_WriteCommand(0x22);
for(i=0;i<w;i++)
{ //send_data(*(unsigned short *)(&str[(j*w+i)*2])); //高位在前
temp=str[(j*w+i)*2+1]<<8; //低位在前
temp|=str[(j*w+i)*2];
LCD_WriteData(temp);
}
}
}
/**************************************************************************************
* 名 稱: DrawString
* 功 能: 在指定的位置顯示多個字符
* 參 數: x : x坐標
* y : y坐標
* LineColor : 字符的顏色
* FillColor : 字符背景顏色
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者 改動內容和原因
* ----------------------------------------------------
* 1.0 2007.6.13 lcf 基本的功能完成
**************************************************************************************/
void DrawString(uint x, uint y, uchar *pStr, uint LineColor,uint FillColor, uchar Mod)
{
while(1)
{
if (*pStr == 0)
{
return;
}
if (*pStr > 0x80) //漢字
{
DrawSingleHz(x, y, pStr, LineColor, FillColor, Mod);
x += HZ_column;
pStr += 2;
}
else //英文字符
{
DrawSingleAscii(x, y, pStr, LineColor, FillColor, Mod);
x += 8;
pStr += 1;
}
}
}
/**************************************************************************************
* 名 稱: DrawSingleHz
* 功 能: 在指定的位置顯示漢字
* 參 數: x : x坐標
* y : y坐標
* LineColor : 漢字的顏色
* FillColor : 漢字背景顏色
* 返 回 值: 無
*
* 修改歷史:
* 版本 日期 作者 改動內容和原因
* ----------------------------------------------------
* 1.0 2007.6.13 lcf 基本的功能完成
**************************************************************************************/
void DrawSingleHz(uint x, uint y, uchar *pHz, uint LineColor,uint FillColor, uchar Mod)
{
uint j=0,i=0,k=0;
uint str,len;
//---------------------------統計是否在字庫中出現
len=sizeof(HzLib)/sizeof(HzLib[0]);
for(j=0;j<sizeof(HzLib)/sizeof(HzLib[0]);j++)
if((uchar)HzLib[j].Index[0]==pHz[0]&&(uchar)HzLib[j].Index[1]==pHz[1])break;
//--------------------------
if(j<len)
{
for (i=0;i<HZ_column;i++)
{
Set_ramaddr(x,y+i);
LCD_WriteCommand(0x22);
str = (uchar)HzLib[j].Msk[i*2]<<8|(uchar)HzLib[j].Msk[i*2+1];
for (k=0;k<HZ_column;k++)
{
if ( str & (0x8000>>k) ) //0x8000>>k
{
LCD_WriteData((uint)(LineColor&0xffff));
}
else
{
if (NORMAL == Mod)
LCD_WriteData((uint)(FillColor&0xffff));
else
{
Set_ramaddr(x+k+1,y+i);
LCD_WriteCommand(0x22);
}
}
}
}
}
}
void DrawSingleAscii(uint x, uint y, uchar *pAscii, uint LineColor,uint FillColor, uchar Mod)
{
uchar i, j;
uchar str;
uint OffSet;
OffSet = (*pAscii - 32)*16;
for (i=0;i<16;i++)
{
Set_ramaddr(x,y+i);
LCD_WriteCommand(0x22);
str = *(AsciiLib + OffSet + i);
for (j=0;j<8;j++)
{
if ( str & (0x80>>j) ) //0x80>>j
{
LCD_WriteData((uint)(LineColor&0xffff));
}
else
{
if (NORMAL == Mod)
LCD_WriteData((uint)(FillColor&0xffff));
else
{
Set_ramaddr(x+j+1,y+i);
LCD_WriteCommand(0x22);
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -