久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

ILI9235的51單片機驅動程序-推箱子游戲

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年08月16日   【字體:


完整的代碼下載地址:http://www.zg4o1577.cn/bbs/dpj-20611-1.html
下面是ILI9235的驅動程序部分預覽
#include "mylib.h"


/*******************************************************************************
函數(shù)名稱:void ClearScreen(uint Color)
函數(shù)功能:刷屏使得全屏顯示單一的顏色
入口參數(shù):Clolr:屏幕背景的顏色(直接寫入顏色的英文,在.h中有定義)
出口參數(shù):無
備    注:
********************************************************************************/
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);
    }
  }
}


/*******************************************************************************
函數(shù)名稱:void Show_RGB (uint x0,uint x1,uint y0,uint y1,uint Color)
函數(shù)功能:在屏幕的(x0,y0)到(x1,y1)區(qū)域顯示某一種顏色
入口參數(shù):(x0,y0)和(x1,y1)表示位置;
           Color :顯示區(qū)域的顏色
出口參數(shù):無
備    注:可以實現(xiàn)畫點和畫水平和垂直的直線
          顯示時輸入的參數(shù)x:0-320,y:0-240(橫向)
*******************************************************************************/
void Show_RGB (uint x0,uint x1,uint y0,uint y1,uint Color)
{
  uint i,j;
 
  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++)
    {
      Write_Data_U16(Color);
    }
  }
}

 

/*******************************************************************************
函數(shù)名稱:void DrawCoord(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)
函數(shù)功能:在屏幕上畫坐標,屏幕是橫放的
入口參數(shù):(x0,y0)和(x1,y1)表示位置;
           Color :顯示區(qū)域的顏色
           Line_Width:坐標軸的線寬
出口參數(shù):無
備    注:無
*******************************************************************************/
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);  //橫
}

 

/*******************************************************************************
函數(shù)名稱:void Show_Xmark(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)
函數(shù)功能:在屏幕上畫橫線,屏幕是橫放的
入口參數(shù):(x0,y0)和(x1,y1)表示位置;
           Color :顯示區(qū)域的顏色
           Line_Width:坐標軸的線寬

出口參數(shù):無
備    注:無
*******************************************************************************/
void Show_Xmark(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)
{
  LineWidth = LineWidth-1;
  Show_RGB (x0,x0+LineWidth,y0,y1,Color);  //豎
}


/*******************************************************************************
函數(shù)名稱:void Show_Xmark(uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)
函數(shù)功能:在屏幕上畫豎線,屏幕是橫放的
入口參數(shù):(x0,y0)和(x1,y1)表示位置;
           Color :顯示區(qū)域的顏色
           Line_Width:坐標軸的線寬

出口參數(shù):無
備    注:無
*******************************************************************************/
void Show_Ymark (uint x0,uint x1, uint y0, uint y1, uint LineWidth, uint Color)
{
  LineWidth = LineWidth-1;
  Show_RGB (x0,x1,y0,y0+LineWidth,Color);
}

 

/*******************************************************************************
函數(shù)名稱:void  Init_data (uchar x,uint y)
函數(shù)功能:些數(shù)據(jù)到寄存器
入口參數(shù):x,y 需要寫入的數(shù)據(jù)
出口參數(shù):無
備    注:無
*******************************************************************************/
void  Init_data (uchar x,uint y)
{
  uchar m,n;
  m=y>>8;
  n=y;
  Write_Cmd(0x00,x);
  Write_Data(m,n);
}


/*******************************************************************************
函數(shù)名稱:void  Write_Data_U16(uint y)
函數(shù)功能:寫入顏色
入口參數(shù):y 顏色數(shù)據(jù)
出口參數(shù):無
備    注:無
*******************************************************************************/
void  Write_Data_U16(uint y)
{
  uchar m,n;
  m=y>>8;
  n=y;
  Write_Data(m,n);
}


/*******************************************************************************
函數(shù)名稱:void Write_Cmd(uchar DH,uchar DL)
函數(shù)功能:寫指令
入口參數(shù):DH 高8位數(shù)據(jù)  DL  低8位數(shù)據(jù)
出口參數(shù):無
備    注:無
*******************************************************************************/
void Write_Cmd(uchar DH,uchar DL)
{
  CS0
  RS0
  P4DIR = 0xff;
  P4OUT = DH;
  RW0
  RW1
  P4OUT = DL;
  RW0
  RW1
  CS1
}


/*******************************************************************************
函數(shù)名稱:void Write_Data(uchar DH,uchar DL)
函數(shù)功能:寫數(shù)據(jù)
入口參數(shù):DH 高8位數(shù)據(jù)  DL  低8位數(shù)據(jù)
出口參數(shù):無
備    注:無
*******************************************************************************/
void Write_Data(uchar DH,uchar DL)
{
  CS0
  RS1
  P4DIR = 0xff;
  P4OUT=DH;
  RW0
  RW1
  P4OUT=DL; 
  RW0
  RW1
  CS1
}

 


/*******************************************************************************
函數(shù)名稱:void ILI9325_Initial()
函數(shù)功能:初始化液晶模塊
入口參數(shù):無
出口參數(shù):無
備    注:無
*******************************************************************************/
void ILI9325_Initial()
{
  RD1 
  CS1
  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順序來寫的像素數(shù)據(jù)【即去掉那個1】
                            //BGR = " 1 ":將RGB數(shù)據(jù)換成BGR數(shù)據(jù)再寫入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(0x0011, 0x0007); 
  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);
}

 

/*******************************************************************************
函數(shù)名稱:void ILI9325_Initial()
函數(shù)功能:初始化液晶模塊
入口參數(shù):無
出口參數(shù):無
備    注:無
*******************************************************************************/
void DisPoint(uchar x, uint y, uint color)
{
  Show_RGB(x,x,y,y,color);
}


/********************************************************************
畫直線(可以畫任意方向直線,包括橫線、豎線、斜線)。
入口參數(shù): (x1,y1)起點, (x2,y2)終點, color顏色。
出口參數(shù): 無
說    明:用指定的顏色在指定的兩點間畫出一條直線。
***********************************************************************/
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; 
  else 
  { 
    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)
{
  uint i,j;
  y = 320-y-32;
  LCD_SetPos(x,x+31,y,y+31);
  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;//條件運算符,當為字模成份時描前景色                                                                                                              //否則描背景色
      Write_Data_U16(Color);
      w<<=1;
    }
  }
       
}


void Dis16x16(uchar x,uchar y,uchar *Code16x16,uint fColor,uint bColor)
{
  uint i,j;
  y = 320-y-16;
  LCD_SetPos(x,x+15,y,y+15);
  for(i=0;i<32;i++)//按照字模成分描點
  {
    uchar w = Code16x16[i];
    for(j=0;j<8;j++)
    {
      uint Color= (w&0x80)? fColor:bColor;    //條件運算符,當為字模成份時描前景色
                                              //否則描背景色
      Write_Data_U16(Color);
      w<<=1;
    }
  } 
}

 

//寫16X32字符
void Dis16x32(uint y, uint x,uchar *Code16x32,uint fColor,uint bColor)
{
    uint i,j;
    y=320-y-32;
    LCD_SetPos(x,x+31,y,y+15);
   
    for(i=0;i<64;i++)  //按字模成分描點
    {
      ushort w = Code16x32[i];
      for(j=0;j<8;j++)
      {
        uint Color= (w&0x80)? fColor:bColor;  //條件運算符,當為字模成份時描前景色
                                              //否則描背景色
        Write_Data_U16(Color);
        w<<=1;
      }
                   
    }
 
}
 

關閉窗口

相關文章

主站蜘蛛池模板: 一级片在线视频 | 欧美中文字幕在线 | 久久久久成人精品免费播放动漫 | 国产精品一区二区视频 | 高清黄色网址 | 国产精品一区二区不卡 | 国产一区二区激情视频 | 国产96在线| 亚洲欧美国产一区二区三区 | 91九色porny首页最多播放 | 欧美激情综合网 | 久久大陆 | 成人免费看片 | 亚洲综合资源 | 91精品国产综合久久精品图片 | 91亚洲国产| 自拍 亚洲 欧美 老师 丝袜 | 91视频播放| 中文字幕视频在线看 | 国产精品久久久久一区二区三区 | 国产精品久久久久久久久久不蜜臀 | 欧美舔穴 | 成年人在线 | 中文字幕在线精品 | 蜜臀久久 | 青青艹在线视频 | 日韩色综合 | 午夜羞羞 | 午夜伦理影院 | 黄页网址在线观看 | 1级毛片| 久久高清| 亚洲国产一区在线 | 91在线第一页 | 亚洲精品久久久久久久久久久久久 | 国产乱码精品1区2区3区 | 亚洲啊v在线 | 欧美二三区 | 欧美日韩成人网 | 日韩久久精品 | 亚洲国产精选 |