⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddrive.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:           LCDDRIVE.C
** Last modified Date:  2008-05-15
** Last Version:        1.0
** Descriptions:        ZLGGUI的底层驱动
**
**--------------------------------------------------------------------------------------------------------
** Created by:          Houxiaolong
** Created date:        2008-05-15
** Version:             1.0
** Descriptions:        ZLGGUI的底层驱动
**
**--------------------------------------------------------------------------------------------------------
** Modified by:         
** Modified date:       
** Version:             
** Descriptions:        
*********************************************************************************************************/
#include "config.h"

/*********************************************************************************************************
* 名称:GUI_Initialize()
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void  GUI_Initialize(void)
{   
    lcd_Init();
    lcd_Clear(GUI_CCOLOR);
}


/*********************************************************************************************************
* 名称:GUI_FillSCR()
* 功能:全屏填充。直接使用数据填充显示缓冲区
* 入口参数:dat		填充的数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void  GUI_FillSCR(TCOLOR dat)
{   lcd_Clear(dat);
}


/*********************************************************************************************************
* 名称:GUI_ClearSCR()
* 功能:清屏
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
*********************************************************************************************************/
void  GUI_ClearSCR(void)
{   
    lcd_Clear(GUI_CCOLOR);
}


/*********************************************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点
* 入口参数:x		指定点所在列的位置
*           y		指定点所在行的位置
*           color	显示颜色
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
*********************************************************************************************************/
uint8  GUI_Point(uint16 x, uint16 y, TCOLOR  color)
{  
    /* 参数过滤 */
    if(x>=GUI_LCM_XMAX) return(0);
    if(y>=GUI_LCM_YMAX) return(0);
   
    /* 刷新显示 */
    lcd_SetPixel(x, y, color);
   
    return(1);
}


/*********************************************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定位置点的颜色数据
* 入口参数:x		指定点所在列的位置
*           y		指定点所在行的位置
* 出口参数:返回值即是读出值(RRRRRGGGGGGBBBBB)。
*********************************************************************************************************/
uint8  GUI_ReadPoint(uint16 x, uint16 y, TCOLOR *ret)
{  
    uint16  bak;
    /* 参数过滤 */
    if(x>=GUI_LCM_XMAX) return(0);
    if(y>=GUI_LCM_YMAX) return(0);
   
    /* 读取数据 */
    bak  = lcd_ReadPixel(x, y);    
    *ret = bak;
   
    return(1);
}


/*********************************************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线
* 入口参数:x0		水平线起点所在列的位置
*           y0		水平线起点所在行的位置
*           x1      水平线终点所在列的位置
*           color	显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void  GUI_HLine(uint16 x0, uint16 y0, uint16 x1, TCOLOR color) 
{  
    uint16  bak;

    if(x0>x1) {                                                         /*  对x0、x1大小进行排列        */  
        bak = x1;
        x1 = x0;
        x0 = bak;
    }
      
    GUI_Point(x0, y0, color);		                                    /*  显示第一点                  */
    x0++;
    while(x1>=x0) {  
        lcd_SetPixel(x0, y0, color);                                    /*  不断填充并显示              */
        x0++;
    }
}


/*********************************************************************************************************
* 名称:GUI_RLine()
* 功能:画垂直线
* 入口参数:x0		垂直线起点所在列的位置
*           y0		垂直线起点所在行的位置
*           y1      垂直线终点所在行的位置
*           color	显示颜色
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void  GUI_RLine(uint16 x0, uint16 y0, uint16 y1, TCOLOR color) 
{  
    uint16  bak;

    if(y0>y1) {                                                         /*  对y0、y1大小进行排列        */ 
        bak = y1;
        y1 = y0;
        y0 = bak;
    }
   
    while(y1>=y0) {  
        GUI_Point(x0, y0, color);		                                /*  逐点显示,描出垂直线        */
        y0++;
    }	
}

/*********************************************************************************************************
* 名称:GUI_DrawBmp()
* 功能:画位图
* 入口参数:x0		位图起点所在列的位置
*           y0		位图起点所在行的位置
*           iwidth  位图的行的宽度
*           ilength	位图的列的宽度
*           pucBmp  位图的指针
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
*********************************************************************************************************/
void  GUI_DrawBmp (uint16 ix0, 
                   uint16 iy0, 
                   uint16 iwidth, 
                   uint16 ilength,
                   uint8 *pucBmp) 
{  
    lcd_DrawBmp(ix0, iy0, iwidth, ilength, pucBmp);
}

#if (FONT_TRANS_EN == 1)
extern const uint8 FONT5x7ASCII[][8];
/*********************************************************************************************************
* 名称:GUI_ProgbarPutChar()
* 功能:显示ASCII码,显示值为20H-7FH(若为其它值,则显示' ')
* 入口参数:x		指定显示位置,x坐标
*           y		指定显示位置,y坐标
*           dy      指定要读取像素点的Y轴坐标
*           ch		要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。(显示格式为6*8)
*********************************************************************************************************/
uint8  GUI_ProgbarPutChar(uint32 x, uint32 y, uint32 dy, uint8 ch)
{  
    uint8   font_dat;
    uint8   i, j;
    TCOLOR  bakc;

    /* 参数过滤 */
    if( x>(GUI_LCM_XMAX-8) ) return(0);
    if( y>(GUI_LCM_YMAX-8) ) return(0);
    if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
   
    ch -= 0x20; 
    for(i=0; i<8; i++) {  
        /* 读取点阵数据 */
        font_dat = FONT5x7ASCII[ch][i];
      
        for(j=0; j<6; j++) {  
            back_color = lcd_ReadPixel(x, dy);                          /*  add ,读取背景颜色           */                   
            
            
            /* 设置相应的点为color或为back_color */
            if((font_dat&DCB2HEX_TAB[j])==0 ) {
                GUI_CopyColor(&bakc, back_color);
            } else { 
                GUI_CopyColor(&bakc, disp_color);
            }
        
            GUI_Point(x, y, bakc);       
            x++;
        }
      
        y++;									                        /*  指向下一行                  */
        x -= 6;								                            /*  恢复x值                     */
    }
   
   return(1);
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -