新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ILI9235的51單片機驅動程序-推箱子游戲

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

        作者: 時間:2016-11-30 來源:網絡 收藏

        /*******************************************************************************
        函數名稱:void ILI9325_Initial()
        函數功能:初始化液晶模塊
        入口參數:無
        出口參數:無
        備 注:無
        *******************************************************************************/
        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順序來寫的像素數據【即去掉那個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(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);
        }

        本文引用地址:http://www.104case.com/article/201611/323809.htm


        /*=================定義顯示窗體=============================
        ---------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 ILI9325_Initial()
        函數功能:初始化液晶模塊
        入口參數:無
        出口參數:無
        備 注:無
        *******************************************************************************/
        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;
        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;
        }

        }

        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝清县| 通河县| 嵩明县| 基隆市| 沁源县| 兴业县| 辽中县| 龙南县| 宜君县| 贺兰县| 天台县| 平度市| 驻马店市| 长武县| 仲巴县| 奎屯市| 德钦县| 延边| 勐海县| 普格县| 当阳市| 绥芬河市| 乐昌市| 徐汇区| 麟游县| 盐城市| 元朗区| 登封市| 红桥区| 尤溪县| 渭南市| 宝应县| 遂宁市| 应用必备| 安仁县| 丰都县| 栾城县| 中阳县| 霞浦县| 余干县| 廉江市|