您现在的位置: 主页 > MCU > 单片机综合应用 > ILI9235的51单片机驱动程序-推箱子游戏
本文所属标签:
为本文创立个标签吧:

ILI9235的51单片机驱动程序-推箱子游戏

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-01 

完整的代码下载地址:http://www.51hei.com/bbs/dpj-20611-1.html

下面是ILI9235的驱动程序部分预览

#include "mylib.h"

/*******************************************************************************

函数名称:void ClearScreen(uint Color)

函数功能:刷屏使得全屏显示单一的颜色

入口参数:Clolr:屏幕背景的颜色(直接写入颜色的英文,在.h中有定义)

出口参数:无

备 注:

********************************************************************************/

void ClearScreen(uint Color)

uint i,j;

LCD_SetPos(0,320,0,240); //设置起始地址为(0,0) ~(320,240)

for (i=0;i<325;i++)

for (j=0;j<240;j++)

Write_Data_U16(Color);

函数名称:void Show_RGB (uint x0,uint x1,uint y0,uint y1,uint Color)

函数功能:在屏幕的(x0,y0)到(x1,y1)区域显示某一种颜色

入口参数:(x0,y0)和(x1,y1)表示位置;

Color :显示区域的颜色

备 注:可以实现画点和画水平和垂直的直线

显示时输入的参数x:0-320,y:0-240(横向)

*******************************************************************************/

void Show_RGB (uint x0,uint x1,uint y0,uint y1,uint Color)

i=x0;x0=y0;y0=i;

i=x1;x1=y1;y1=i;

i = y0;

y0 = 320-y1;

y1 = 320-i;

LCD_SetPos(x0,x1,y0,y1);

for (i=y0;i<=y1;i++)

for (j=x0;j<=x1;j++)

函数名称:void DrawCoord(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)

函数功能:在屏幕上画坐标,屏幕是横放的

Line_Width:坐标轴的线宽

备 注:无

void DrawCoord(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)

LineWidth = LineWidth-1;

Show_RGB (x0,x0+LineWidth,y0,y1,Color); //竖

Show_RGB (x0,x1,y1-LineWidth,y1,Color); //横

函数名称:void Show_Xmark(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)

函数功能:在屏幕上画横线,屏幕是横放的

void Show_Xmark(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)

函数功能:在屏幕上画竖线,屏幕是横放的

void Show_Ymark (uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)

Show_RGB (x0,x1,y0,y0+LineWidth,Color);

函数名称:void Init_data (uchar x,uint y)

函数功能:些数据到寄存器

入口参数:x,y 需要写入的数据

void Init_data (uchar x,uint y)

uchar m,n;

m=y>>8;

n=y;

Write_Cmd(0x00,x);

Write_Data(m,n);

函数名称:void Write_Data_U16(uint y)

函数功能:写入颜色

入口参数:y 颜色数据

void Write_Data_U16(uint y)

函数名称:void Write_Cmd(uchar DH,uchar DL)

函数功能:写指令

入口参数:DH 高8位数据 DL 低8位数据

void Write_Cmd(uchar DH,uchar DL)

CS0

RS0

P4DIR = 0xff;

P4OUT = DH;

RW0

RW1

P4OUT = DL;

CS1

函数名称:void Write_Data(uchar DH,uchar DL)

函数功能:写数据

void Write_Data(uchar DH,uchar DL)

RS1

P4OUT=DH;

P4OUT=DL;

函数名称:void ILI9325_Initial()

函数功能:初始化液晶模块

入口参数:无

void ILI9325_Initial()

RD1

REST0

REST1

Init_data(0x00e5, 0x8000);

Init_data(0x0000, 0x0001);

Init_data(0x0001, 0x0000);//输出方式控制0x00,0x100,0x400,0x500,正常显示用0x00

Init_data(0x0002, 0x0700);//可设置为0x400或0x700;

Init_data(0x0003, 0x1018);//可设置为0x1030,0x1000,0x1010,0x1020,0x1038,0x1028,0x1018,0x1008;

//还可以把最前面的1去掉,如:0x18;

//BGR = " 0 ":遵循gb顺序来写的像素数据【即去掉那个1】

//BGR = " 1 ":将RGB数据换成BGR数据再写入GRAM【即不去掉那个1】

//横向设置0x1018最好/纵向设置0x1000最好

Init_data(0x0004, 0x0000);//显示大小尺寸控制寄存器0x00为1倍大小,即240x320

Init_data(0x0008, 0x0202);//可设置为0x0202,0x00,

Init_data(0x0009, 0x0000);//扫描设置

Init_data(0x000A, 0x0000);

Init_data(0x000C, 0x0000);

Init_data(0x000D, 0x0000);

Init_data(0x000F, 0x0000);

//-----Power On sequence-----------------------

Init_data(0x0010, 0x0000);

Init_data(0x0011, 0x0007);

Init_data(0x0012, 0x0000);

Init_data(0x0013, 0x0000);

Init_data(0x0010, 0x17B0);

Init_data(0x0012, 0x013A);

Init_data(0x0013, 0x1A00);

Init_data(0x0029, 0x000c);

//-----Gamma control-----------------------

Init_data(0x0030, 0x0000);

Init_data(0x0031, 0x0505);

Init_data(0x0032, 0x0004);

Init_data(0x0035, 0x0006);

Init_data(0x0036, 0x0707);

Init_data(0x0037, 0x0105);

Init_data(0x0038, 0x0002);

Init_data(0x0039, 0x0707);

Init_data(0x003C, 0x0704);

Init_data(0x003D, 0x0807);

//-----Set RAM area-----------------------

Init_data(0x0050, 0x0000);

Init_data(0x0051, 0x00EF);

Init_data(0x0052, 0x0000);

Init_data(0x0053, 0x013F);

Init_data(0x0060, 0x2700);

Init_data(0x0061, 0x0001);

Init_data(0x006A, 0x0000);

Init_data(0x0021, 0x0000);

Init_data(0x0020, 0x0000);

//-----Partial Display Control------------

Init_data(0x0080, 0x0000);

Init_data(0x0081, 0x0000);

Init_data(0x0082, 0x0000);

Init_data(0x0083, 0x0000);

Init_data(0x0084, 0x0000);

Init_data(0x0085, 0x0000);

//-----Panel Control----------------------

Init_data(0x0090, 0x0010);

Init_data(0x0092, 0x0000);

Init_data(0x0093, 0x0003);

Init_data(0x0095, 0x0110);

Init_data(0x0097, 0x0000);

Init_data(0x0098, 0x0000);

//-----Display on-----------------------

Init_data(0x0007, 0x0173);

/*=================定义显示窗体=============================

---------x0: 窗体中X坐标中较小者

---------x1: 窗体中X坐标中较大者

---------y0: 窗体中Y坐标中较小者

---------y1: 窗体中Y坐标中较大者

=================定义显示窗体=============================*/

void LCD_SetPos(uint x0,uint x1,uint y0,uint y1)

Init_data(WINDOW_XADDR_START,x0);

Init_data(WINDOW_XADDR_END,x1);

Init_data(WINDOW_YADDR_START,y0);

Init_data(WINDOW_YADDR_END,y1);

Init_data(GRAM_XADDR,x0);

Init_data(GRAM_YADDR,y0);

Write_Cmd (0x00,0x22);

void DisPoint(uchar x, uint y, uint color)

Show_RGB(x,x,y,y,color);

/********************************************************************

画直线(可以画任意方向直线,包括横线、竖线、斜线)。

入口参数: (x1,y1)起点, (x2,y2)终点, color颜色。

出口参数: 无

说 明:用指定的颜色在指定的两点间画出一条直线。

***********************************************************************/

void Disline(uint x1,uint x2,uint y1,uint y2,uint color)

uint t;

int xerr=0,yerr=0,delta_x,delta_y,distance;

int incx,incy;

uint row,col;

delta_x = x2-x1;//计算坐标增量

delta_y = y2-y1;

col=x1;

row=y1;

if(delta_x>0) incx=1;//设置单步方向

else

if(delta_x==0) incx=0;//垂直线

else {incx=-1;delta_x=-delta_x;}

if(delta_y>0)incy=1;

if(delta_y==0) incy=0;//水平线

else {incy=-1;delta_y=-delta_y;}

if(delta_x>delta_y) distance=delta_x;//选取基本增量坐标轴

else distance=delta_y;

for(t=0;t<=distance+1;t++)

{ //画线输出

DisPoint(col,row,color);

xerr+=delta_x;

yerr+=delta_y;

if(xerr>distance)

xerr-=distance;

col+=incx;

if(yerr>distance)

yerr-=distance;

row+=incy;

void Dis32x32(uint y,uint x,uchar *Code32x32,uint fColor,uint bColor)

y = 320-y-32;

LCD_SetPos(x,x+31,y,y+31);

for(i=0;i<128;i++) //按照字模成分描点

ushort w = Code32x32[i];

for(j=0;j<8;j++)

uint Color= (w&0x80)? fColor:bColor;//条件运算符,当为字模成份时描前景色 //否则描背景色

w<<=1;

void Dis16x16(uchar x,uchar y,uchar *Code16x16,uint fColor,uint bColor)

y = 320-y-16;

LCD_SetPos(x,x+15,y,y+15);

for(i=0;i<32;i++)//按照字模成分描点

uchar w = Code16x16[i];

uint Color= (w&0x80)? fColor:bColor; //条件运算符,当为字模成份时描前景色

//否则描背景色

//写16X32字符

void Dis16x32(uint y, uint x,uchar *Code16x32,uint fColor,uint bColor)

y=320-y-32;

LCD_SetPos(x,x+31,y,y+15);

for(i=0;i<64;i++) //按字模成分描点

ushort w = Code16x32[i];

uint Color= (w&0x80)? fColor:bColor; //条件运算符,当为字模成份时描前景色



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机综合应用 > ILI9235的51单片机驱动程序-推箱子游戏
 函数 颜色 参数

"ILI9235的51单片机驱动程序-推箱子游戏"的相关文章

网站地图

围观()