新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD12864指定位置反白顯示程序

        LCD12864指定位置反白顯示程序

        作者: 時間:2016-12-02 來源:網絡 收藏

        /********************************************************************
        函 數 名:Delay
        入口參數:ms
        出口參數:無
        建立日期:2007年3月3日
        修改日期:
        函數作用:毫秒級的延時程序,當晶振為12Mhz時,xtal=12;
        說 明:
        ********************************************************************/
        void Delay(uint ms)
        {
        uint i;
        while(ms--)
        {
        for(i=1;i<(uint)(xtal*143-2);i++)
        ;
        }
        }
        //===================================================================*/
        /********************************************************************
        函 數 名:Char_Set_XY
        入口參數:x,y,*p
        出口參數:無
        建立日期:2007年8月26日
        修改日期:
        函數作用:
        說 明:
        ********************************************************************/
        void Char_Set_XY(uchar x, uchar y, uchar *p)
        {
        if(y == 0)
        {
        W_1byte(0,0,(0x80+x));
        }
        if(y == 1)
        {
        W_1byte(0,0,(0x90+x));
        }
        if(y == 2)
        {
        W_1byte(0,0,(0x88+x));
        }
        if(y == 3)
        {
        W_1byte(0,0,(0x98+x));
        }
        while(*p != 0)
        {
        W_1byte(0,1,*p++);
        }
        }
        //===================================================================*/

        /********************************************************************
        函 數 名:Set_Draw(
        入口參數:無
        出口參數:無
        建立日期:2007年8月26日
        修改日期:
        函數作用:
        說 明:
        ********************************************************************/
        void Set_Draw(void)
        {
        //W_1byte(0,0,0x01); //清屏
        Delay(20); //延時
        //W_1byte(0,0,0x34); //8BIT控制界面,擴充指令集,,繪圖顯示OFF
        W_1byte(0,0,0x36);
        Delay(20); //延時
        }
        //===================================================================*/
        /********************************************************************
        函 數 名:Draw_Pic 128*64
        入口參數:x,y,*Draw
        出口參數:無
        建立日期:2007年8月26日
        修改日期:
        函數作用:
        說 明:
        ********************************************************************/
        /*************************************************/

        void Draw_Pic(uchar x, uchar y, const uchar *Draw)
        {
        uchar i, j, temp_x, temp_y; //
        temp_x = x; //
        temp_y = y; //
        temp_x |= 0x80; //
        temp_y |= 0x80; //
        for(i=0;i<32;i++ ) //上半屏32行
        {
        W_1byte(0,0,temp_y++); //設置繪圖區的Y地址坐標0
        W_1byte(0,0,temp_x); //設置繪圖區的X地址坐標0
        for(j=0;j<16;j++) //
        {
        W_1byte(0,1,*Draw++); //
        }
        }

        temp_x = 0x88; //
        temp_y = 0x80; //
        j = 0; //
        for(;i<64;i++ )
        {
        W_1byte(0,0,temp_y++); //設置繪圖區的Y地址坐標
        W_1byte(0,0,temp_x); //設置繪圖區的X地址坐標
        for(j=0;j<16;j++)
        {
        W_1byte(0,1,*Draw++); //
        }
        }

        }
        /**************************************************/
        /**************************************************/
        void Set_White(uchar x,uchar y,uchar end_x,uchar clear)
        {
        uchar i, j, white_x, white_y,white_end_x,clr_x,clr_y; //
        white_end_x = (end_x-x+1);
        white_end_x <<= 1;
        if(y==1)
        {
        white_x = (0x80+x-1);
        white_y = 0x80;
        clr_x = 0x80;
        clr_y = 0x80;
        }
        else if(y==2)
        {
        white_x = (0x80+x-1);
        white_y = 0x90;
        clr_x = 0x80;
        clr_y = 0x90;
        }
        else if(y==3)
        {
        white_x = (0x88+x-1);
        white_y = 0x80;
        clr_x = 0x88;
        clr_y = 0x80;
        }
        else if(y==4)
        {
        white_x = (0x88+x-1);
        white_y = 0x90;
        clr_x = 0x88;
        clr_y = 0x90;
        }
        if(clear==0)//要反白時,先將整行的液晶全部清成不反白(此處行指y)
        {
        for(i=0;i<16;i++ ) //16行
        {
        W_1byte(0,0,clr_y++); //設置繪圖區的Y地址坐標0
        W_1byte(0,0,clr_x); //設置繪圖區的X地址坐標0
        for(j=0;j<16;j++) //
        {
        W_1byte(0,1,0x00); //清成不反白
        nop();
        }
        }
        }
        nop();
        for(i=0;i<16;i++ ) //16行,因為是16*16漢字
        {
        W_1byte(0,0,white_y++); //設置繪圖區的Y地址坐標0
        W_1byte(0,0,white_x); //設置繪圖區的X地址坐標0
        for(j=0;j {
        if(clear==1)
        {
        W_1byte(0,1,0x00); //取消這一行的8個點的反白,液晶地址自動加1
        //(此處行指一個一個液晶點所組成的行)
        }
        else
        {
        W_1byte(0,1,0xff); //反白這一行的8個點,液晶地址自動加1
        //(此處行指一個一個液晶點所組成的行)
        }
        nop();
        }
        }
        }
        /*************************************************/

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 巴林右旗| 革吉县| 高州市| 苍梧县| 康定县| 桑日县| 来安县| 和静县| 昌都县| 桐庐县| 三穗县| 普陀区| 会理县| 黄大仙区| 静乐县| 南阳市| 桂林市| 托里县| 左云县| 舞钢市| 澄江县| 武穴市| 连平县| 林州市| 山东省| 鄂伦春自治旗| 罗城| 长武县| 桑植县| 永丰县| 铁岭市| 鄂温| 罗城| 曲阜市| 根河市| 通江县| 阿拉善左旗| 杂多县| 绥化市| 光山县| 凤山县|