?? lcd.h
字號:
}
}
}
//*******************************************************************
void Red(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<128;i++)
{
for (j=0;j<128;j++)
{
send_data(0xf8);
send_data(0x00);
}
}
delay_nms(500);
}
void Green(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<128;i++)
{
for (j=0;j<128;j++)
{
send_data(0x07);
send_data(0xe0);
}
}
delay_nms(500);
}
void Blue(void)
{ uint8_t Xs=0,Ys=0;
send_command(COLUMN_ADDRESS_SET); //XS,XE
send_data(Xs); //0~128
send_data(0x7f);
send_command(ROW_ADDRESS_SET); //YS,YE
send_data(Ys); //0~128
send_data(0x7f);
send_command(MEMORY_WRITE);
for (i= 0; i<128;i++)
{
for (j=0;j<128;j++)
{
send_data(0x00);
send_data(0x1f);
}
}
delay_nms(500);
}
void BlackBar(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<16;i++)
{
for (j=0;j<128;j++)
{
send_data(0x00);
send_data(0x00);
}
}
delay_nms(500);
}
void ThreeColourBar(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<42;i++)
{
for (j=0;j<128;j++)
{
send_data(0xf8);
send_data(0x00);
}
}
for (i= 0; i<43;i++)
{
for (j=0;j<128;j++)
{
send_data(0x07);
send_data(0xe0);
}
}
for (i= 0; i<43;i++)
{
for (j=0;j<128;j++)
{
send_data(0x00);
send_data(0x1f);
}
}
delay_nms(500);
}
void ThreeColourBar1(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<128;i++)
{
for (j=0;j<42;j++)
{
send_data(0xf8);
send_data(0x00);
}
for (j=0;j<43;j++)
{
send_data(0x07);
send_data(0xe0);
}
for (j=0;j<43;j++)
{
send_data(0x00);
send_data(0x1f);
}
}
delay_nms(500);
}
void B_Grey_W(void)
{
send_command(MEMORY_WRITE);
for (i= 0; i<42;i++)
{
for (j=0;j<128;j++)
{
send_data(0xff);
send_data(0xff);
}
}
for (i= 0; i<43;i++)
{
for (j=0;j<128;j++)
{
send_data(0x84);
send_data(0x10);
}
}
for (i= 0; i<43;i++)
{
for (j=0;j<128;j++)
{
send_data(0x00);
send_data(0x00);
}
}
delay_nms(500);
}
void writeData16(unsigned int usData) /* 寫16位數據函數 */
{
send_data((char)((usData>>8)&0xff));
send_data((char)(usData&0xff));
}
/*********************************************************************************************************
** 函數名稱: setCoordinate
** 功能描述: 寫繪圖坐標
** 輸 入: x 起點所在列的位置
** y 起點所在行的位置
** 輸 出: 無
** 全局變量: 無
** 返 回:無
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void setCoordinate(unsigned short Xs, unsigned short Ys)
{
send_command(COLUMN_ADDRESS_SET); //XS,XE
send_data(Xs); //0~128
send_data(0x7f);
send_command(ROW_ADDRESS_SET); //YS,YE
send_data(Ys); //0~128
send_data(Ys+n-1);
send_command(MEMORY_WRITE);
}
/*********************************************************************************************************
** 函數名稱: writeOneHzChar
** 功能描述: 在指定的起始坐標處寫一個漢字
** 輸 入: pucMsk 指向漢字字模存放的起始地址
** x0 起始坐標所在列的位置
** y0 起始坐標所在行的位置
** color 字符顯示的顏色
** 輸 出: 無
** 全局變量: 無
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned long writeOneHzChar(unsigned char *pucMsk,
unsigned short x0,
unsigned short y0,
unsigned short color)
{
unsigned long i,j;
unsigned short mod[16]; /* 當前字模 */
unsigned short *pusMsk; /* 當前字庫地址 */
unsigned short y;
pusMsk = (unsigned short *)pucMsk;
for(i=0; i<16; i++) /* 保存當前漢字點陣式字模 */
{
mod[i] = *pusMsk++; /* 取得當前字模,半字對齊訪問 */
mod[i] = ((mod[i] & 0xff00) >> 8) | ((mod[i] & 0x00ff) << 8); /* 字模交換高低字節(為了顯示 */
/* 需要) */
}
y = y0;
for(i=0; i<16; i++) { /* 16行 */
#ifdef __DISPLAY_BUFFER /* 使用顯存顯示 */
for(j=0; j<16; j++) { /* 16列 */
if((mod[i] << j)& 0x8000) { /* 顯示字模 */
DispBuf[128*(y0+i) + x0+j] = color;
}
}
#else /* 直接顯示 */
setCoordinate(x0, y); /* 設置寫數據地址指針 */
send_command(MEMORY_WRITE); //data write command
for(j=0; j<16; j++) { /* 16列 */
if((mod[i] << j) & 0x8000) { /* 顯示字模 */
writeData16(color);
} else {
writeData16(WHITE); /* 用讀方式跳過寫空白點的像素 */
}
}
y++;
#endif
}
return (16); /* 返回16位列寬 */
}
/*********************************************************************************************************
** 函數名稱: writeOneASCII
** 功能描述: 在指定的起始坐標處寫一個ASCII碼字符
** 輸 入: pucMsk 指向ASCII碼字符字模存放的起始地址
** x0 起始坐標所在列的位置
** y0 起始坐標所在行的位置
** color 字符顯示的顏色
** 輸 出: 無
** 全局變量: 無
** 調用模塊: setCoordinate()、__writeData16()、__readData16()
** 返 回:所寫字符的列寬8
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned long writeOneASCII(unsigned char *pucMsk,
unsigned int x0,
unsigned int y0,
unsigned int color)
{
unsigned int i,j;
unsigned int y;
unsigned char ucChar;
y = y0;
for(i=0; i<16; i++) { /* 16行 */
ucChar = *pucMsk++;
#ifdef __DISPLAY_BUFFER /* 使用顯存顯示 */
for(j=0; j<8; j++) { /* 8列 */
if((ucChar << j)& 0x80) { /* 顯示字模 */
DispBuf[128*(y0+i) + x0+j] = color;
}
}
#else /* 直接顯示 */
setCoordinate(x0, y); /* 設置寫數據地址指針 */
send_command(MEMORY_WRITE); //data write command
for(j=0; j<8; j++) { /* 8列 */
if((ucChar << j) & 0x80) { /* 顯示字模 */
writeData16(color);
} else {
writeData16(WHITE);
}
}
y++;
#endif
}
return (8); /* 返回16位列寬 */
}
/*********************************************************************************************************
** 函數名稱: writeString
** 功能描述: 在指定的坐標處開始顯示字符串
** 輸 入: pcStr 字符串存放首地址
** x0 起始坐標所在列的位置
** y0 起始坐標所在行的位置
** color 字符串的顯示顏色
** 輸 出: 無
** 全局變量: GBHZ_16 自定義漢字庫字模數表
** ASCII 自定義的ASCII碼字庫字模數表
** 調用模塊: findHzIndex()、__writeOneHzChar()、__writeOneASCII()
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void writeString(uint8_t *pcStr, unsigned short x0, unsigned short y0, unsigned short color)
{
unsigned short usIndex;
unsigned short usWidth = 0;
FNT_GB16 *ptGb16 = 0;
ptGb16 = (FNT_GB16 *)GBHZ_16; /* */
while(1)
{
if(*pcStr == 0) {
break; /* 字符串結束 */
}
x0 = x0 + (usWidth); /* 調節字符串顯示松緊度 */
if(*pcStr > 0x80) { /* 判斷為漢字 */
if((x0 + 16) >= Gus_LCM_XMAX) { /* 檢查剩余空間是否足夠 */
x0 = 0;
y0 = y0 + 16; /* 改變顯示坐標 */
if(y0 >= Gus_LCM_YMAX) { /* 縱坐標超出 */
y0 = 0;
}
}
usIndex = findHzIndex(pcStr);
usWidth = writeOneHzChar((unsigned char *)&(ptGb16[usIndex].Msk[0]), x0, y0, color);
/* 顯示字符 */
pcStr += 2;
} else { /* 判斷為非漢字 */
if (*pcStr == '\r') { /* 換行 */
y0 = y0 + 16; /* 改變顯示坐標 */
if(y0 >= Gus_LCM_YMAX) { /* 縱坐標超出 */
y0 = 0;
}
pcStr++;
usWidth = 0;
continue;
} else if (*pcStr == '\n') { /* 對齊到起點 */
x0 = 0;
pcStr++;
usWidth = 0;
continue;
} else {
if((x0 + 8) >= Gus_LCM_XMAX) { /* 檢查剩余空間是否足夠 */
x0 = 0;
y0 = y0 + 16; /* 改變顯示坐標 */
if(y0 >= Gus_LCM_YMAX) { /* 縱坐標超出 */
y0 = 0;
}
}
usWidth = writeOneASCII((unsigned char *)&ASCII[(*pcStr - 0x20)][0], x0, y0, color); /* ASCII碼表21H的值對應區位碼3區*/
pcStr += 1;
}
}
}
}
//畫橫線,定義起始X坐標,長度,高度,顏色和寬度提前定義
void Xline(unsigned char Xs,unsigned char Ys,unsigned char len,unsigned int color)
{
/* send_command(COLUMN_ADDRESS_SET); //XS,XE
send_data(Xs); //0~128
send_data(0x7f);
send_command(ROW_ADDRESS_SET); //YS,YE
send_data(Ys); //0~128
send_data(Ys+n-1);
send_command(MEMORY_WRITE); */
setCoordinate(Xs,Ys);
for (j=0;j<len;j++)
{
// send_data(0x00);
// send_data(0x00);
writeData16(color);
}
}
//畫橫線,定義起始Y坐標,長度,高度,顏色和寬度提前定義
void Yline(unsigned char Xs,unsigned char Ys,unsigned char len,unsigned int color)
{
// setCoordinate(Xs,Ys);
for (j=0;j<len;j++)
{
// send_data(0x00);
// send_data(0x00);
setCoordinate(Xs,Ys+j);
writeData16(color);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -