|
驅動文件說明:
1.V2版本本驅動將包含ILI9163基本驅動函數、基本圖形函數,并將相應函數進行歸類。如果需要將本驅動移植到其他平臺,只需修改base文件中相應函數即可。
1.8寸tft彩屏SGP18T驅動,ILI9163控制器;含有基本驅動和基本圖形函數
0.png (32.7 KB, 下載次數: 102)
下載附件
2016-4-6 19:57 上傳
51單片機所有驅動文件下載:
部分代碼預覽:
- /**********************************************************
- 文件名稱:
- 功能說明:
- 編寫:阿呆游樂園
- ADaiPlay.21ic.org
- QQ:1325180192
- 時間:2011/8/
- 其他說明:版權所有,盜版請注明出處
- **********************************************************/
- #include<reg51.h>
- #include "MyType.h"
- #include "SGP18T_ILI9163B_base.h"
- #include "SGP18T_ILI9163B_figure.h"
- /*****************數組聲名**********************************/
- uint16 code palette[]={
- 0x0000,
- 0xf800,//red
- 0x07e0,//green
- 0x001f,//blue
- 0xf81f,//purple
- 0xffe0,//yellow
- 0x07ff,//cyan
- 0xffff, //white
- 0xfc08,//orange
- };
- /**********************************************************
- 函數名稱:ILI9163B_display_full()
- 入口參數:color為常用的需要顯示的顏色(已經提前定義),color為
- NULL時,則可將不常用顏色放入dat中加以顯示
- 出口參數:無
- 時間:2011/8/8
- 功能說明:全屏顯示單色畫面
- 其他說明:無
- **********************************************************/
- void ILI9163B_display_full(uint8 color,uint16 dat)
- {
- unsigned int i,j;
-
- ILI9163B_address_rst();
- for(i=0;i<160;i++)
- {
- for(j=0;j<128;j++)
- {
- if(color == NULL)
- ILI9163B_write_para16(dat);
- else
- {
- ILI9163B_write_para16(palette[color]);
- }
- }
- }
- }
- /**********************************************************
- 函數名稱:ILI9163B_draw_part()
- 入口參數:起始、終止橫坐標(0-127),縱坐標(0-159),顯示顏色uint16
- 出口參數:無
- 時間:2011/8/8
- 功能說明:填充矩形區域
- 其他說明:0<=xs<xe<=127
- 0<=ys<ye<=159
- **********************************************************/
- void ILI9163B_draw_part(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
- {
- uint8 i,j;
- ILI9163B_SetPos(xs,ys,xe,ye);
- for(j=0;j<(ye-ys+1);j++)
- {
- for(i=0;i<(xe-xs+1);i++)
- {
- ILI9163B_write_para16(color_dat);
- }
- }
- }
- /**********************************************************
- 函數名稱:ILI9163B_draw_rectangle()
- 入口參數:起始、終止橫坐標(0-127),縱坐標(0-159),顯示顏色uint16
- 出口參數:無
- 時間:2011/8/8
- 功能說明:畫矩形邊框
- 其他說明:0<=xs<xe<=127
- 0<=ys<ye<=159
- **********************************************************/
- void ILI9163B_draw_rectangle(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
- {
- ILI9163B_draw_line(xs,ys,xs,ye,color_dat); //畫矩形左邊
- ILI9163B_draw_line(xe,ys,xe,ye,color_dat); //畫矩形右邊
- ILI9163B_draw_line(xs,ys,xe,ys,color_dat); //畫矩形上邊
- ILI9163B_draw_line(xs,ye,xe,ye,color_dat); //畫矩形下邊
- }
- /**********************************************************
- 函數名稱:ILI9163B_draw_circle()
- 入口參數:圓心橫坐標(0-127),縱坐標(0-159),半徑(0-128),顯示顏色uint16
- 出口參數:無
- 時間:2011/8/8
- 功能說明:畫圓形邊框(僅支持屏幕內畫圓)
- 其他說明:0<=x<=127
- 0<=y<=159
- **********************************************************/
- void ILI9163B_draw_circle(uint8 x,uint8 y,uint8 r,uint16 color_dat)
- {
- unsigned char dx, dy = r;
- if((x>=r) &&((128-x)>=r) && (y>=r) && ((160-y)>=r)) //確定所畫圓在屏幕范圍內,沒有超出最外邊,(暫不支持與屏幕邊相交)
- {
- for(dx = 0; dx <= r; dx++)
- {
- while((r * r + 1 - dx * dx) < (dy * dy)) dy--;
- ILI9163B_draw_dot(x + dx, y - dy, color_dat);
- ILI9163B_draw_dot(x - dx, y - dy, color_dat);
- ILI9163B_draw_dot(x - dx, y + dy, color_dat);
- ILI9163B_draw_dot(x + dx, y + dy, color_dat);
- ILI9163B_draw_dot(x + dy, y - dx, color_dat);
- ILI9163B_draw_dot(x - dy, y - dx, color_dat);
- ILI9163B_draw_dot(x - dy, y + dx, color_dat);
- ILI9163B_draw_dot(x + dy, y + dx, color_dat);
- }
- }
- }
- /**********************************************************
- 函數名稱:ILI9163B_draw_line()
- 入口參數:起始、終止橫坐標(0-127),縱坐標(0-159),顯示顏色uint16
- 出口參數:無
- 時間:2011/8/8
- 功能說明:畫直線
- 其他說明:0<=xs<xe<=127
- 0<=ys<ye<=159
- **********************************************************/
- void ILI9163B_draw_line(uint8 xs,uint8 ys,uint8 xe,uint8 ye,uint16 color_dat)
- {
- uint8 i,ds;
- int dx,dy,inc_x, inc_y;
- int xerr = 0, yerr = 0; //初始化變量
- if(xs==xe) //如果是畫垂直線則只需對豎直坐標計數
- {
- ILI9163B_SetPos(xs,ys,xe,ye);
- for(i=0;i<(ye-ys+1);i++)
- {
- ILI9163B_write_para16(color_dat);
- }
- }
- else if(ys==ye) //如果是水平線則只需要對水平坐標計數
- {
- ILI9163B_SetPos(xs,ys,xe,ye);
- for(i=0;i<(xe-xs+1);i++)
- {
- ILI9163B_write_para16(color_dat);
- }
- }
- else //如果是斜線,則重新計算,使用畫點函數畫出直線
- {
- dx = xe - xs; //計算坐標增量
- dy = ye - ys;
- if(dx > 0) inc_x = 1; //設置單步方向
- else
- {
- inc_x = -1; dx = -dx;
- }
- if(dy > 0) inc_y = 1; //設置單步方向
- else
- {
- inc_y = -1; dy = -dy;
- }
- if(dx > dy) ds = dx; //選取基本增量坐標軸
- else ds = dy;
- for(i = 0; i <= ds+1; i++) //畫線輸出
- {
- ILI9163B_draw_dot(xs, ys,color_dat); //畫點
- xerr += dx;
- yerr += dy;
- if(xerr > ds)
- {
- xerr -= ds;
- xs += inc_x;
- }
- if(yerr > ds)
- {
- yerr -= ds;
- ys += inc_y;
- }
- }
- }
- }
- /**********************************************************
- 函數名稱:ILI9163B_draw_dot()
- 入口參數:起始橫坐標(0-127),縱坐標(0-159),顯示顏色uint16
- 出口參數:無
- 時間:2011/8/8
- 功能說明:畫點
- 其他說明:0<=x<=127
- 0<=y<=159
- **********************************************************/
- void ILI9163B_draw_dot(uint8 x,uint8 y,uint16 color_dat)
- {
- ILI9163B_SetPos(x,y,x,y);
- ILI9163B_write_para16(color_dat);
- }
復制代碼
|
|