?? test.c
字號:
/****************************************************************************************
* 文件名:TEST.C
* 功能:在圖形液晶模塊SMG240128A上顯示均勻的黑白方格。
****************************************************************************************/
#include "config.h"
#define TCOLOR uint8
extern uint8 gui_disp_buf[GUI_LCM_YMAX][GUI_LCM_XMAX/8];
/****************************************************************************
* 名稱:GUI_FillSCR()
* 功能:全屏填充。直接使用數據填充顯示緩沖區。
* 入口參數:dat 填充的數據(對于黑白色LCM,為0的點滅,為1的點顯示)
* 出口參數:無
****************************************************************************/
void GUI_FillSCR(uint8 dat)
{ uint32 i, j;
for(i=0; i<GUI_LCM_YMAX; i++) // 歷遍所有行
{ for(j=0; j<GUI_LCM_XMAX/8; j++) // 歷遍所有行
{ gui_disp_buf[i][j] = dat; // 填充數據
}
}
/* 填充LCM */
LCD_FillAll(dat);
}
uint8 const DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
/****************************************************************************
* 名稱:GUI_Point()
* 功能:在指定位置上畫點。
* 入口參數: x 指定點所在列的位置
* y 指定點所在行的位置
* color 顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數:返回值為1時表示操作成功,為0時表示操作失敗。(操作失敗原因是指定地址超出有
* 效范圍)
****************************************************************************/
uint8 GUI_Point(uint32 x, uint32 y, TCOLOR color)
{ /* 參數過濾 */
if(x>=GUI_LCM_XMAX) return(0);
if(y>=GUI_LCM_YMAX) return(0);
/* 設置緩沖區相應的點 */
if( (color&0x01) != 0 ) gui_disp_buf[y][x>>3] |= DCB_HEX_TAB[x&0x07];
else gui_disp_buf[y][x>>3] &= (~DCB_HEX_TAB[x&0x07]);
/* 刷新顯示 */
LCD_UpdatePoint(x, y);
return(1);
}
/****************************************************************************
* 名稱:GUI_HLine()
* 功能:畫水平線。
* 入口參數: x0 水平線起點所在列的位置
* y0 水平線起點所在行的位置
* x1 水平線終點所在列的位置
* color 顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數:無
* 說明:操作失敗原因是指定地址超出緩沖區范圍。
****************************************************************************/
void GUI_HLine(uint32 x0, uint32 y0, uint32 x1, uint8 color)
{ uint32 bak;
if(x0>x1) // 對x0、x1大小進行排列,以便畫圖
{ bak = x1;
x1 = x0;
x0 = bak;
}
if(x0==x1)
{ GUI_Point(x0, y0, color);
return;
}
do
{ /* 設置相應的點為1 */
if(0!=color) gui_disp_buf[y0][x0>>3] |= DCB_HEX_TAB[x0&0x07];
else gui_disp_buf[y0][x0>>3] &= (~DCB_HEX_TAB[x0&0x07]);
/* 刷新顯示(一次刷新一字節) */
if( (x0&0x07)==0x07 ) LCD_UpdatePoint(x0, y0);
x0++;
}while(x1>x0);
/* 對最后一點顯示操作 */
if(0!=color) gui_disp_buf[y0][x0>>3] |= DCB_HEX_TAB[x0&0x07];
else gui_disp_buf[y0][x0>>3] &= (~DCB_HEX_TAB[x0&0x07]);
LCD_UpdatePoint(x0, y0);
}
/****************************************************************************
* 名稱:main()
* 功能:主函數,SMG240128A顯示測試。
****************************************************************************/
int main(void)
{ uint8 x, y;
uint8 color;
uint8 i, j;
LCD_Initialize(); // 初始化LCM模塊工作模式,純圖形模式
GUI_FillSCR(0x00); // 初始化緩沖區為0x00,并輸出屏幕(清屏)
x=0;
y=0;
color = 1;
// 在液晶屏上顯示均勻的黑白方格
for(j=0; j<7; j++)
{ // 顯示20行x_x_,從上至下,即形成黑白塊
for(i=0; i<20; i++)
{ // 顯示一行 x_x_ (x表示畫線,_表示空白)
for(x=0; x<240; x+=24)
{ GUI_HLine(x, y, x+23, color);
if(0==color) color = 1;
else color = 0;
}
y++; // 指向下一行
}
// 下一個20行x_x_要切換起始色
if(0==color) color = 1;
else color = 0;
}
while(1);
return(0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -