2.0寸彩屏驱动240*320分辨率,ILI9320控制器,含有基本驱动函数和基本图形显示函数例如:画线,画点,画圆,画矩形,打印字母,打印汉字,输出图像等
完整代码下载:
52465290V1.0_TFT_ILI9320.rar
(88.1 KB, 下载次数: 60)
主要代码预览:
- /**********************************************************
- 文件名称:ILI9320_figure.c
- 功能说明:图形函数库,画点、画线、画圆、填充、画矩形
- 编写:阿呆游乐园
- ADaiPlay.21ic.org
- QQ:1325180192
- 时间:2011/8/10
- 其他说明:版权所有,盗版请注明出处
- **********************************************************/
- #include <reg51.h>
- #include "MyType.h"
- #include "ILI9320_base.h"
- #include "ILI9320_figure.h"
- /**********************************************************
- 函数名称:LCD_print_full()
- 入口参数:color为常用的需要显示的颜色(已经提前定义),color为
- NULL时,则可将不常用颜色放入dat中加以显示
- 出口参数:无
- 时间:2011/8/10
- 功能说明:全屏显示单色画面
- 其他说明:无
- **********************************************************/
- void LCD_print_full(uint16 color)
- {
- unsigned int i,j;
-
- ILI9320_SetPos(0,0,SCREEN_X_MAX,SCREEN_Y_MAX);
- for(i=0;i<SCREEN_Y_MAX;i++)
- {
- for(j=0;j<SCREEN_X_MAX;j++)
- {
- LCD_WRITE_DATA(color);
- }
- }
- }
- /**********************************************************
- 函数名称:LCD_print_part()
- 入口参数:起始、终止横坐标(0-239),纵坐标(0-319),显示颜色uint16
- 出口参数:无
- 时间:2011/8/10
- 功能说明:填充矩形区域
- 其他说明:0<=xs<xe<=SCREEN_X_MAX-1
- 0<=ys<ye<=SCREEN_Y_MAX-1
- **********************************************************/
- void LCD_print_part(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
- {
- uint16 i,j;
- ILI9320_SetPos(xs,ys,xe,ye);
- for(j=0;j<(ye-ys+1);j++)
- {
- for(i=0;i<(xe-xs+1);i++)
- {
- LCD_WRITE_DATA(color_dat);
- }
- }
- }
- /**********************************************************
- 函数名称:LCD_print_rectangle()
- 入口参数:起始、终止横坐标(0-239),纵坐标(0-319),显示颜色uint16
- 出口参数:无
- 时间:2011/8/10
- 功能说明:画矩形边框
- 其他说明:0<=xs<xe<=SCREEN_X_MAX-1
- 0<=ys<ye<=SCREEN_Y_MAX-1
- **********************************************************/
- void LCD_print_rectangle(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
- {
- LCD_print_line(xs,ys,xs,ye,color_dat); //画矩形左边
- LCD_print_line(xe,ys,xe,ye,color_dat); //画矩形右边
- LCD_print_line(xs,ys,xe,ys,color_dat); //画矩形上边
- LCD_print_line(xs,ye,xe,ye,color_dat); //画矩形下边
- }
- /**********************************************************
- 函数名称:LCD_print_circle()
- 入口参数:圆心横坐标(0-239),纵坐标(0-319),半径(0-120),显示颜色uint16
- 出口参数:无
- 时间:2011/8/10
- 功能说明:画圆形边框(仅支持屏幕内画圆)
- 其他说明:0<=x<=SCREEN_X_MAX-1
- 0<=y<=SCREEN_Y_MAX-1
- **********************************************************/
- void LCD_print_circle(uint16 x,uint16 y,uint16 r,uint16 color_dat)
- {
- uint16 dx, dy = r;
- if((x>=r) &&((SCREEN_X_MAX-x)>=r) && (y>=r) && ((SCREEN_Y_MAX-y)>=r)) //确定所画圆在屏幕范围内,没有超出最外边,(暂不支持与屏幕边相交)
- {
- for(dx = 0; dx <= r; dx++)
- {
- while((r * r + 1 - dx * dx) < (dy * dy)) dy--;
- LCD_print_dot(x + dx, y - dy, color_dat);
- LCD_print_dot(x - dx, y - dy, color_dat);
- LCD_print_dot(x - dx, y + dy, color_dat);
- LCD_print_dot(x + dx, y + dy, color_dat);
- LCD_print_dot(x + dy, y - dx, color_dat);
- LCD_print_dot(x - dy, y - dx, color_dat);
- LCD_print_dot(x - dy, y + dx, color_dat);
- LCD_print_dot(x + dy, y + dx, color_dat);
- }
- }
- }
- /**********************************************************
- 函数名称:LCD_print_line()
- 入口参数:起始、终止横坐标(0-239),纵坐标(0-319),显示颜色uint16
- 出口参数:无
- 时间:2011/8/10
- 功能说明:画直线
- 其他说明:0<=xs<xe<=SCREEN_X_MAX-1
- 0<=ys<ye<=SCREEN_Y_MAX-1
- **********************************************************/
- void LCD_print_line(uint16 xs,uint16 ys,uint16 xe,uint16 ye,uint16 color_dat)
- {
- uint16 i,ds;
- int dx,dy,inc_x, inc_y;
- int xerr = 0, yerr = 0; //初始化变量
- if(xs==xe) //如果是画垂直线则只需对竖直坐标计数
- {
- ILI9320_SetPos(xs,ys,xe,ye);
- for(i=0;i<(ye-ys+1);i++)
- {
- LCD_WRITE_DATA(color_dat);
- }
- }
- else if(ys==ye) //如果是水平线则只需要对水平坐标计数
- {
- ILI9320_SetPos(xs,ys,xe,ye);
- for(i=0;i<(xe-xs+1);i++)
- {
- LCD_WRITE_DATA(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++) //画线输出
- {
- LCD_print_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;
- }
- }
- }
- }
- /**********************************************************
- 函数名称:LCD_print_dot()
- 入口参数:起始横坐标(0-239),纵坐标(0-319),显示颜色uint16
- 出口参数:无
- 时间:2011/8/8
- 功能说明:画点
- 其他说明:0<=x<=SCREEN_X_MAX-1
- 0<=y<=SCREEN_Y_MAX-1
- **********************************************************/
- void LCD_print_dot(uint16 x,uint16 y,uint16 color_dat)
- {
- ILI9320_SetPos(x,y,x,y);
- LCD_WRITE_DATA(color_dat);
- }
复制代码
|