找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 582|回复: 0
收起左侧

STM32&st7735s 驱动代码

[复制链接]
ID:1136289 发表于 2024-12-28 15:54 | 显示全部楼层 |阅读模式
#include "lcd.h"

#include "oledfont.h"
#include "stm32g4xx_hal.h"
#include "delay.h"
extern TIM_HandleTypeDef htim2;
u16 BACK_COLOR;   //背景色
COLOR color;
OLEDDriver disp;
/******************************************************************************
      函数说明:LCD串行数据写入函数
      入口数据:dat  要写入的串行数据
      返回值:  无
******************************************************************************/
void LCD_Writ_Bus(u8 dat)
{
        uint8_t i;
        OLED_CS_Clr();
        for(i=0;i<8;i++)
        {                          
                LCD_SCLK_Clr();
                if(dat&0x80)
                {
                   LCD_MOSI_Set();
                }
                else
                {
                   LCD_MOSI_Clr();
                }
                LCD_SCLK_Set();
                dat<<=1;
        }        
        OLED_CS_Set();               
//        HAL_SPI_Transmit(&hspi2,&dat,1,200);
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA8(u8 dat)
{
        LCD_Writ_Bus(dat);
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
inline void LCD_WR_DATA(u16 dat)
{
        LCD_A0_GPIO_Port->BSRR = LCD_A0_Pin;  //加速
        LCD_Writ_Bus(dat>>8);
        LCD_Writ_Bus(dat);
}

/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_BYTE(u16 dat)
{
        LCD_A0_GPIO_Port->BSRR = LCD_A0_Pin;  //加速
        LCD_Writ_Bus(dat>>8);
        LCD_Writ_Bus(dat);
}


/******************************************************************************
      函数说明:LCD写入命令
      入口数据:dat 写入的命令
      返回值:  无
******************************************************************************/
inline  void LCD_WR_REG(u8 dat)
{
        OLED_DC_Clr();//写命令
        LCD_Writ_Bus(dat);
        OLED_DC_Set();//写数据
}

u8 LCD_Read_Bus(u8 size)
{        
        u8 dat = 0;
//        HAL_SPI_Receive(&hspi2,&dat,size,200);
        return dat;
};


//获取屏幕id,0xDA就是读当前屏幕id,死机时无法读到数据
u8 read_id_lcd(u8 reg)
{
        u8 dat;
        OLED_CS_Clr();
        OLED_DC_Clr();
        LCD_Writ_Bus(reg);
        OLED_DC_Set();
        dat = LCD_Read_Bus(1);
//        printf(" %d ",dat);
        return dat;
};
/******************************************************************************
      函数说明:设置起始和结束地址
      入口数据:x1,x2 设置列的起始和结束地址
                y1,y2 设置行的起始和结束地址
      返回值:  无
******************************************************************************/
void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
{

        if(set.Hand){
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1);
                LCD_WR_DATA(x2);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+24);
                LCD_WR_DATA(y2+24);
                LCD_WR_REG(0x2c);//储存器写
        }
        else{
                LCD_WR_REG(0x2a);//列地址设置
                LCD_WR_DATA(x1);
                LCD_WR_DATA(x2);
                LCD_WR_REG(0x2b);//行地址设置
                LCD_WR_DATA(y1+24);
                LCD_WR_DATA(y2+24);
                LCD_WR_REG(0x2c);//储存器写
        }
}


/******************************************************************************
      函数说明:LCD初始化函数
      入口数据:无
      返回值:  无
******************************************************************************/
void Lcd_Init(void)
{
        OLED_RST_Clr();
        HAL_Delay(100);
        OLED_RST_Set();
        HAL_Delay(20);
        OLED_BLK_Set();
        
        LCD_WR_REG(0x11);
        HAL_Delay(100);

        //LCD_WR_REG(0x21);

        LCD_WR_REG(0xB1);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB2);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB3);
        LCD_WR_DATA8(0x05);  
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB4);
        LCD_WR_DATA8(0x03);

        LCD_WR_REG(0xC0);
        LCD_WR_DATA8(0x62);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x04);

        LCD_WR_REG(0xC1);
        LCD_WR_DATA8(0xC0);

        LCD_WR_REG(0xC2);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x00);

        LCD_WR_REG(0xC3);
        LCD_WR_DATA8(0x8D);
        LCD_WR_DATA8(0x6A);   

        LCD_WR_REG(0xC4);
        LCD_WR_DATA8(0x8D);
        LCD_WR_DATA8(0xEE);

        LCD_WR_REG(0xC5);  /*VCOM*/
        LCD_WR_DATA8(0x0E);   

        LCD_WR_REG(0xE0);
        LCD_WR_DATA8(0x10);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x07);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x07);
        LCD_WR_DATA8(0x0A);
        LCD_WR_DATA8(0x12);
        LCD_WR_DATA8(0x27);
        LCD_WR_DATA8(0x37);
        LCD_WR_DATA8(0x00);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x10);

        LCD_WR_REG(0xE1);
        LCD_WR_DATA8(0x10);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x0F);
        LCD_WR_DATA8(0x06);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x08);
        LCD_WR_DATA8(0x0A);
        LCD_WR_DATA8(0x13);
        LCD_WR_DATA8(0x26);
        LCD_WR_DATA8(0x36);
        LCD_WR_DATA8(0x00);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x10);

        LCD_WR_REG(0x3A);
        LCD_WR_DATA8(0x05);

        LCD_WR_REG(0x36);
      
//        if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
//        else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
//        else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x78);
//        else LCD_WR_DATA8(0xA8);

        LCD_WR_REG(0x29);
        LCD_Clear(WHITE);
}

void lcd_res(void)
{
OLED_RST_Clr();
        HAL_Delay(100);
        OLED_RST_Set();
        HAL_Delay(20);
        OLED_BLK_Set();
        
        LCD_WR_REG(0x11);
        HAL_Delay(100);

//        LCD_WR_REG(0x21);

        LCD_WR_REG(0xB1);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB2);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB3);
        LCD_WR_DATA8(0x05);  
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x05);
        LCD_WR_DATA8(0x3C);
        LCD_WR_DATA8(0x3C);

        LCD_WR_REG(0xB4);
        LCD_WR_DATA8(0x03);

        LCD_WR_REG(0xC0);
        LCD_WR_DATA8(0x62);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x04);

        LCD_WR_REG(0xC1);
        LCD_WR_DATA8(0xC0);

        LCD_WR_REG(0xC2);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x00);

        LCD_WR_REG(0xC3);
        LCD_WR_DATA8(0x8D);
        LCD_WR_DATA8(0x6A);   

        LCD_WR_REG(0xC4);
        LCD_WR_DATA8(0x8D);
        LCD_WR_DATA8(0xEE);

        LCD_WR_REG(0xC5);  /*VCOM*/
        LCD_WR_DATA8(0x0E);   

        LCD_WR_REG(0xE0);
        LCD_WR_DATA8(0x10);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x07);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x07);
        LCD_WR_DATA8(0x0A);
        LCD_WR_DATA8(0x12);
        LCD_WR_DATA8(0x27);
        LCD_WR_DATA8(0x37);
        LCD_WR_DATA8(0x00);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x10);

        LCD_WR_REG(0xE1);
        LCD_WR_DATA8(0x10);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x03);
        LCD_WR_DATA8(0x0F);
        LCD_WR_DATA8(0x06);
        LCD_WR_DATA8(0x02);
        LCD_WR_DATA8(0x08);
        LCD_WR_DATA8(0x0A);
        LCD_WR_DATA8(0x13);
        LCD_WR_DATA8(0x26);
        LCD_WR_DATA8(0x36);
        LCD_WR_DATA8(0x00);
        LCD_WR_DATA8(0x0D);
        LCD_WR_DATA8(0x0E);
        LCD_WR_DATA8(0x10);

        LCD_WR_REG(0x3A);
        LCD_WR_DATA8(0x05);

        LCD_WR_REG(0x36);
     
//        if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
//        else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
//        else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x78);
//        else LCD_WR_DATA8(0xA8);

        LCD_WR_REG(0x29);
        LCD_Clear(WHITE);

}

/******************************************************************************
      函数说明:LCD清屏函数
      入口数据:Color  颜色
      返回值:  无
******************************************************************************/
void LCD_Clear(u16 Color)
{
        u16 i,j;         
        LCD_Address_Set(0,0,LCD_W-1,LCD_H-1);
    for(i=0;i<LCD_W;i++)
          {
                        for (j=0;j<LCD_H;j++)
                        {
                                LCD_WR_DATA(Color);
                        }
          }
}


/******************************************************************************
      函数说明:LCD显示汉字
      入口数据:x,y   起始坐标
                index 汉字的序号
                size  字号
      返回值:  无
******************************************************************************/
void LCD_ShowChinese(u16 x,u16 y,u8 index,u8 size,u16 color)        
{  
        u8 i,j;
        u8 *temp,size1;
        if(size==16){temp=Hzk16;}//选择字号
        if(size==32){temp=Hzk32;}
  LCD_Address_Set(x,y,x+size-1,y+size-1); //设置一个汉字的区域
  size1=size*size/8;//一个汉字所占的字节
        temp+=index*size1;//写入的起始位置
        for(j=0;j<size1;j++)
        {
                for(i=0;i<8;i++)
                {
                         if((*temp&(1<<i))!=0)//从数据的低位开始读
                        {
                                LCD_WR_DATA(color);//点亮
                        }
                        else
                        {
                                LCD_WR_DATA(BACK_COLOR);//不点亮
                        }
                }
                temp++;
         }
}


/******************************************************************************
      函数说明:画点
      入口数据:x,y   起始坐标
      返回值:  无
******************************************************************************/
void LCD_DrawPoint(u16 x,u16 y,u16 color)
{
        LCD_Address_Set(x,y,x,y);//设置光标位置
        LCD_WR_DATA(color);
}


/******************************************************************************
      函数说明:LCD画一个大的点
      入口数据:x,y   起始坐标
      返回值:  无
******************************************************************************/
void LCD_DrawPoint_big(u16 x,u16 y,u16 color)
{
        LCD_Fill(x-1,y-1,x+1,y+1,color);
}


/******************************************************************************
      函数说明:在指定区域填充颜色
      入口数据:xsta,ysta   起始坐标
                xend,yend   终止坐标
      返回值:  无
******************************************************************************/
void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)
{         
        u16 i,j;
        LCD_Address_Set(xsta,ysta,xend,yend);      //设置光标位置
        for(i=ysta;i<=yend;i++)
        {                                                                                                                           
                for(j=xsta;j<=xend;j++)LCD_WR_DATA(color);//填充
        }                                                      
}

/******************************************************************************
      函数说明:画线
      入口数据:x1,y1   起始坐标
                x2,y2   终止坐标
      返回值:  无
******************************************************************************/
void LCD_DrawLine(u16 x1,u16 y1,u16 x2,u16 y2,u16 color)
{
        u16 t;
        int xerr=0,yerr=0,delta_x,delta_y,distance;
        int incx,incy,uRow,uCol;
        delta_x=x2-x1; //计算坐标增量
        delta_y=y2-y1;
        uRow=x1;//画线起点坐标
        uCol=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_x;}
        if(delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
        else distance=delta_y;
        for(t=0;t<distance+1;t++)
        {
                LCD_DrawPoint(uRow,uCol,color);//画点
                xerr+=delta_x;
                yerr+=delta_y;
                if(xerr>distance)
                {
                        xerr-=distance;
                        uRow+=incx;
                }
                if(yerr>distance)
                {
                        yerr-=distance;
                        uCol+=incy;
                }
        }
}


/******************************************************************************
      函数说明:画矩形
      入口数据:x1,y1   起始坐标
                x2,y2   终止坐标
      返回值:  无
******************************************************************************/
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2,u16 color)
{        
LCD_DrawLine(x1,y1,x1,y2,color);

          LCD_DrawLine(x1,y1,x2,y1,color);        
LCD_DrawLine(x1,y2,x2+1,y2,color);
        LCD_DrawLine(x2,y1,x2,y2,color);

         
}


/******************************************************************************
      函数说明:画圆
      入口数据:x0,y0   圆心坐标
                r       半径
      返回值:  无
******************************************************************************/
void Draw_Circle(u16 x0,u16 y0,u8 r,u16 color)
{
        int a,b;
        a=0;b=r;         
        while(a<=b)
        {
                LCD_DrawPoint(x0-b,y0-a,color);             //3           
                LCD_DrawPoint(x0+b,y0-a,color);             //0           
                LCD_DrawPoint(x0-a,y0+b,color);             //1               
                LCD_DrawPoint(x0-a,y0-b,color);             //2            
                LCD_DrawPoint(x0+b,y0+a,color);             //4               
                LCD_DrawPoint(x0+a,y0-b,color);             //5
                LCD_DrawPoint(x0+a,y0+b,color);             //6
                LCD_DrawPoint(x0-b,y0+a,color);             //7
                a++;
                if((a*a+b*b)>(r*r))//判断要画的点是否过远
                {
                        b--;
                }
        }
}


/******************************************************************************
      函数说明:显示字符
      入口数据:x,y    起点坐标
                num    要显示的字符
                mode   1叠加方式  0非叠加方式
      返回值:  无
******************************************************************************/
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 mode,u16 color)
{
    u8 temp;
    u8 pos,t;
          u16 x0=x;   
    if(x>LCD_W-16||y>LCD_H-16)return;            //设置窗口                  
        num=num-' ';//得到偏移后的值
        LCD_Address_Set(x,y,x+8-1,y+16-1);      //设置光标位置
        if(!mode) //非叠加方式
        {
                for(pos=0;pos<16;pos++)
                {
                        temp = asc2_1608[(u16)num*16+pos];                 //调用1608字体
                        for(t = 0; t < 8; t++)
                    {                 
                        if(temp&0x01)LCD_WR_DATA(color);
                                else LCD_WR_DATA(WHITE);
                                temp>>=1;
                                x++;
                    }
                        x=x0;
                        y++;
                }        
        }else//叠加方式
        {
                for(pos=0;pos<16;pos++)
                {
                    temp=asc2_1608[(u16)num*16+pos];                 //调用1608字体
                        for(t=0;t<8;t++)
                    {                 
                        if(temp&0x01)LCD_DrawPoint(x+t,y+pos,color);//画一个点     
                        temp>>=1;
                    }
                }
        }                                 
}


/******************************************************************************
      函数说明:显示字符串
      入口数据:x,y    起点坐标
                *p     字符串起始地址
      返回值:  无
******************************************************************************/
void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
{         
    while(*p!='\0')
    {      
        if(x>LCD_W-16){x=0;y+=16;}
        if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
        LCD_ShowChar(x,y,*p,0,color);
        x+=8;
        p++;
    }  
}


/******************************************************************************
      函数说明:显示数字
      入口数据:m底数,n指数
      返回值:  无
******************************************************************************/
u32 mypow(u8 m,u8 n)
{
        u32 result=1;         
        while(n--)result*=m;   
        return result;
}


/******************************************************************************
      函数说明:显示数字
      入口数据:x,y    起点坐标
                num    要显示的数字
                len    要显示的数字个数
      返回值:  无
******************************************************************************/
void LCD_ShowNum(u16 x,u16 y,u16 num,u8 len,u16 color)
{                 
        u8 t,temp;
        u8 enshow=0;
        for(t=0;t<len;t++)
        {
                temp=(num/mypow(10,len-t-1))%10;
                if(enshow==0&&t<(len-1))
                {
                        if(temp==0)
                        {
                                LCD_ShowChar(x+8*t,y,' ',0,color);
                                continue;
                        }else enshow=1;
                          
                }
                 LCD_ShowChar(x+8*t,y,temp+48,0,color);
        }
}


/******************************************************************************
      函数说明:显示小数
      入口数据:x,y    起点坐标
                num    要显示的小数
                len    要显示的数字个数
      返回值:  无
******************************************************************************/
void LCD_ShowNum1(u16 x,u16 y,float num,u8 len,u16 color)
{                 
        u8 t,temp;
        u16 num1;
        num1=num*100;
        for(t=0;t<len;t++)
        {
                temp=(num1/mypow(10,len-t-1))%10;
                if(t==(len-2))
                {
                        LCD_ShowChar(x+8*(len-2),y,'.',0,color);
                        t++;
                        len+=1;
                }
                 LCD_ShowChar(x+8*t,y,temp+48,0,color);
        }
}
//画图
void Lcd_Show_Img(uint8_t x,uint8_t y,uint8_t Pic_XSIZE,uint8_t Pic_YSIZE,const uint8_t *Pic,unsigned int forecolor,unsigned int background)
{
    uint16_t temp,t,t1;
    uint16_t y0=y;
    uint16_t FRAME_SIZE=Pic_XSIZE*Pic_YSIZE/8;
    for(t=0; t<FRAME_SIZE; t++)
    {
        temp=Pic[t];  //
        for(t1=0; t1<8; t1++)
        {
            if(temp&0x80)LCD_DrawPoint(x,y,forecolor);
            else LCD_DrawPoint(x,y,background);
            temp<<=1;
            y++;
            if((y-y0)==Pic_YSIZE)
            {
                y=y0;
                x++;
                break;
            }
        }
    }
}

#ifndef __LCD_H
#define __LCD_H               

#include "stm32g4xx_hal.h"
#include "main.h"
#include "stdlib.h"         
#define USE_HORIZONTAL 3  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏


#if USE_HORIZONTAL==0||USE_HORIZONTAL==1
#define LCD_W 80
#define LCD_H 160

#else
#define LCD_W 160
#define LCD_H 80
#endif


#define        u8 unsigned char
#define        u16 unsigned int

#define B 0X01
#define N 0
//-----------------测试LED端口定义----------------



//-----------------OLED端口定义----------------

//#define OLED_SCLK_Clr() HAL_GPIO_WritePin(LCD_SCK_GPIO_Port,LCD_SCK_Pin,GPIO_PIN_RESET)
//#define OLED_SCLK_Set() HAL_GPIO_WritePin(LCD_SCK_GPIO_Port,LCD_SCK_Pin,GPIO_PIN_SET)

//#define OLED_SDIN_Clr() HAL_GPIO_WritePin(LCD_MOSI_GPIO_Port,LCD_MOSI_Pin,GPIO_PIN_RESET)//DIN
//#define OLED_SDIN_Set() HAL_GPIO_WritePin(LCD_MOSI_GPIO_Port,LCD_MOSI_Pin,GPIO_PIN_SET)

#define LCD_SCLK_Set()  LCD_SCK_GPIO_Port->BSRR =         LCD_SCK_Pin
#define LCD_SCLK_Clr()  LCD_SCK_GPIO_Port->BSRR = (uint32_t)LCD_SCK_Pin << 16U

#define LCD_MOSI_Set()         LCD_MOSI_GPIO_Port->BSRR = LCD_MOSI_Pin
#define LCD_MOSI_Clr()         LCD_MOSI_GPIO_Port->BSRR = (uint32_t)LCD_MOSI_Pin << 16U

#define OLED_RST_Clr()         HAL_GPIO_WritePin(LCD_RES_GPIO_Port,LCD_RES_Pin,GPIO_PIN_RESET)//RES
#define OLED_RST_Set()         HAL_GPIO_WritePin(LCD_RES_GPIO_Port,LCD_RES_Pin,GPIO_PIN_SET)

#define OLED_DC_Clr()         HAL_GPIO_WritePin(LCD_A0_GPIO_Port,LCD_A0_Pin,GPIO_PIN_RESET)//DC
#define OLED_DC_Set()         HAL_GPIO_WritePin(LCD_A0_GPIO_Port,LCD_A0_Pin,GPIO_PIN_SET)
                     
#define OLED_CS_Clr()          HAL_GPIO_WritePin(SPI2_NSS_GPIO_Port,SPI2_NSS_Pin,GPIO_PIN_RESET)//CS
#define OLED_CS_Set()          HAL_GPIO_WritePin(SPI2_NSS_GPIO_Port,SPI2_NSS_Pin,GPIO_PIN_SET)

#define OLED_BLK_Clr()  
#define OLED_BLK_Set()

#define OLED_CMD  0        //写命令
#define OLED_DATA 1        //写数据
u8 read_id_lcd(u8 reg);
u8 LCD_Read_Bus(u8 size);

extern  u16 BACK_COLOR;   //背景色

void LCD_Writ_Bus(u8 dat);
void LCD_WR_DATA8(u8 dat);
void LCD_WR_DATA(u16 dat);
void LCD_WR_REG(u8 dat);
void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2);
void Lcd_Init(void);
void LCD_Clear(u16 Color);
void LCD_ShowChinese(u16 x,u16 y,u8 index,u8 size,u16 color);
void LCD_DrawPoint(u16 x,u16 y,u16 color);
void LCD_DrawPoint_big(u16 x,u16 y,u16 color);
void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color);
void LCD_DrawLine(u16 x1,u16 y1,u16 x2,u16 y2,u16 color);
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2,u16 color);
void Draw_Circle(u16 x0,u16 y0,u8 r,u16 color);
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 mode,u16 color);
void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color);
u32 mypow(u8 m,u8 n);
void LCD_ShowNum(u16 x,u16 y,u16 num,u8 len,u16 color);
void LCD_ShowNum1(u16 x,u16 y,float num,u8 len,u16 color);
void LCD_ShowPicture(u16 x1,u16 y1,u16 x2,u16 y2);
void lcd_res(void);
void Lcd_Show_Img(uint8_t x,uint8_t y,uint8_t Pic_XSIZE,uint8_t Pic_YSIZE,const uint8_t *Pic,unsigned int forecolor,unsigned int background);
//画笔颜色
#define WHITE                  0xFFFF
#define BLACK                  0x0000         
#define BLUE                    0x001F  
#define BRED             0XF81F
#define GRED                          0XFFE0
#define GBLUE                         0X07FF
#define RED                    0xF800
#define MAGENTA                0xF81F
#define GREEN                  0x07E0
#define CYAN                   0x7FFF
#define YELLOW                 0xFFE0
#define BROWN                          0XBC40 //棕色
#define BRRED                          0XFC07 //棕红色
#define GRAY                           0X8430 //灰色
#define VIOLET                   0x881F                 //紫
#define FEN                            0xa3da                 //紫
//GUI颜色

#define DARKBLUE               0X01CF        //深蓝色
#define LIGHTBLUE               0X7D7C        //浅蓝色  
#define GRAYBLUE                0X5458 //灰蓝色
//以上三色为PANEL的颜色

#define LIGHTGREEN              0X841F //浅绿色
#define LGRAY                          0XC618 //浅灰色(PANNEL),窗体背景色

#define LGRAYBLUE        0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE           0X2B12 //浅棕蓝色(选择条目的反色)


                                                           
#endif  
         




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表