您的位置:首页 > 产品设计 > UI/UE

stm32 ucgui无触屏移植

2014-09-28 22:01 337 查看
平台:李想stm32开发板

利用开发板工程:STM32 理想智芯科技(库函数)

我的驱动函数文件:ILI93xx.c  ILI93xx.h  ILI9320.h

ucgui文件:需要添加代码的文件LCDConf.h    GUICOnf.h  LCDDummy.c 

/************************************************************************************************************

/  ILI93xx.c该文件为 液晶驱动初始化函数,画点函数,读点函数

/  ILI93xx.h为ILI93xx.c的函数申明

/  lcd9320.h为为液晶的IO接口、液晶寄存器的宏定义

************************************************************************************************************/

//ILI93xx.c

#include "lcd9320.h"

#include "delay.h"  

#include "stm32f10x.h"

#include "ILI93xx.h"

u16 POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;  

u16 DeviceCode;  

/*

 LCD_WR_DATA(data)该函数在LCD9320.h中用宏定义

 */

void LCD_WR_REG(u16 data)



    GPIO_ResetBits(GPIOD,GPIO_Pin_14);//写地址  

  GPIO_ResetBits(GPIOD,GPIO_Pin_12); 
GPIO_Write(GPIOE, data);  
GPIO_ResetBits(GPIOD,GPIO_Pin_13);  
GPIO_SetBits(GPIOD,GPIO_Pin_13); 

  GPIO_SetBits(GPIOD,GPIO_Pin_12);   

}

//读LCD数据

//返回值:读到的值

u16 LCD_RD_DATA(void)

{   
u16 t;

  GPIOE->CRL=0X88888888; //PB0-7  上拉输入
GPIOE->CRH=0X88888888; //PB8-15 上拉输入
GPIOE->ODR=0X0000;     //全部输出0

LCD_RS_SET;
LCD_CS_CLR;
//读取数据(读寄存器时,并不需要读2次)
LCD_RD_CLR;
if(DeviceCode==0X8989)delay_us(2);//FOR 8989,延时2us  
LCD_RD_SET;
t=DATAIN;  
LCD_CS_SET; 

 
GPIOE->CRL=0X33333333; //PB0-7  上拉输出
GPIOE->CRH=0X33333333; //PB8-15 上拉输出
GPIOE->ODR=0XFFFF;    //全部输出高
return t;  

}

//写寄存器

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)

{
LCD_WR_REG(LCD_Reg);  
LCD_WR_DATA(LCD_RegValue);   
 

}   

//读寄存器

u16 LCD_ReadReg(u8 LCD_Reg)

{   
u16 t;
GPIO_InitTypeDef GPIO_InitStructure; 
LCD_WR_REG(LCD_Reg);  //写入要读的寄存器号  
       

  

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All   ; 

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; 

    GPIO_Init(GPIOE, &GPIO_InitStructure); 

GPIO_SetBits(GPIOD,GPIO_Pin_14);
GPIO_ResetBits(GPIOD,GPIO_Pin_12);
//读取数据(读寄存器时,并不需要读2次)
GPIO_ResetBits(GPIOD,GPIO_Pin_15);
delay_us(5);//FOR 8989,延时5us  
GPIO_SetBits(GPIOD,GPIO_Pin_15);
t=GPIO_ReadInputData(GPIOE);  
GPIO_SetBits(GPIOD,GPIO_Pin_12); 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All   ; 

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

    GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP   ; 

    GPIO_Init(GPIOE, &GPIO_InitStructure); 
return t;  

}   

//开始写GRAM

void LCD_WriteRAM_Prepare(void)

{
if(DeviceCode==0X9341)LCD_WR_REG(0x2C);//ILI9341是以0X2C开始的
else LCD_WR_REG(R34);

}  

//LCD写GRAM

void LCD_WriteRAM(u16 RGB_Code)

{    
LCD_WR_DATA(RGB_Code);//写十六位GRAM

}

//从ILI93xx读出的数据为GBR格式,而我们写入的时候为RGB格式。

//通过该函数转换

//c:GBR格式的颜色值

//返回值:RGB格式的颜色值

u16 LCD_BGR2RGB(u16 c)

{

  u16  r,g,b,rgb;   

  b=(c>>0)&0x1f;

  g=(c>>5)&0x3f;

  r=(c>>11)&0x1f;  

  rgb=(b<<11)+(g<<5)+(r<<0);  

  return(rgb);

}  

//画点

//x:0~239

//y:0~319

//POINT_COLOR:此点的颜色

void LCD_DrawPoint(u16 x,u16 y)

{

   LCD_WriteReg(0x004e,x);   //设置x坐标位置

   LCD_WriteReg(0x004f,y);   //设置y坐标位置

   LCD_WR_REG(0x22);        //LCD_WriteCMD(GRAMWR);写入GRAM的命令,将此函数中上述

   LCD_WR_DATA(POINT_COLOR);       

}

 //读取个某点的颜色值  

//x:0~239

//y:0~319

//返回值:此点的颜色

u16 LCD_ReadPoint(u16 x,u16 y)

{
u16 r,g,b;
if(x>=LCD9320_W||y>=LCD9320_H)return 0;//超过了范围,直接返回
  
LCD_SetCursor(x,y);
if(DeviceCode==0X9341)LCD_WR_REG(0X2E);//ILI9341发送读GRAM指令
else LCD_WR_REG(R34);      //其他IC发送读GRAM指令
GPIOE->CRL=0X88888888; //PB0-7  上拉输入
GPIOE->CRH=0X88888888; //PB8-15 上拉输入
GPIOE->ODR=0XFFFF;     //全部输出高

LCD_RS_SET;
LCD_CS_CLR;
//读取数据(读GRAM时,第一次为假读)
LCD_RD_CLR;

  delay_us(1);//延时1us  
LCD_RD_SET;

  //dummy READ
LCD_RD_CLR;
  
delay_us(1);//延时1us  
LCD_RD_SET;

  r=DATAIN;  

  if(DeviceCode==0X9341)
{  
LCD_RD_CLR;
  
LCD_RD_SET;
b=DATAIN;//读取蓝色值   
g=r&0XFF;//对于9341,第一次读取的是RG的值,R在前,G在后,各占8位
g<<=8;
}  
LCD_CS_SET;

GPIOE->CRL=0X33333333; //PB0-7  上拉输出
GPIOE->CRH=0X33333333; //PB8-15 上拉输出
GPIOE->ODR=0XFFFF;    //全部输出高  
if(DeviceCode==0X9325||DeviceCode==0X4535||DeviceCode==0X4531||DeviceCode==0X8989||DeviceCode==0XB505)return r;//这几种IC直接返回颜色值
else if(DeviceCode==0X9341)return (((r>>11)<<11)|((g>>10)<<5)|(b>>11));//ILI9341需要公式转换一下
else return LCD_BGR2RGB(r);

}

void LCD_DisplayOn(void)

{
if(DeviceCode==0X9341)LCD_WR_REG(0X29);//开启显示
else LCD_WriteReg(R7,0x0173);
//开启显示

}  

//LCD关闭显示

void LCD_DisplayOff(void)

{   
if(DeviceCode==0X9341)LCD_WR_REG(0X28);//关闭显示
else LCD_WriteReg(R7, 0x0);//关闭显示 

}  

__inline void LCD_SetCursor(u16 Xpos, u16 Ypos)

{

#if USE_HORIZONTAL==1 
if(DeviceCode==0X8989)
{
Xpos=319-Xpos;
LCD_WriteReg(0X4E, Ypos);
LCD_WriteReg(0X4F, Xpos);

    }else if(DeviceCode==0X9341)//9341,设置坐标
{  
LCD_WR_REG(0x2B); 
LCD_WR_DATA(Ypos>>8); 
LCD_WR_DATA(Ypos&0XFF); 
LCD_WR_REG(0x2A); 
LCD_WR_DATA(Xpos>>8); 
LCD_WR_DATA(Xpos&0XFF);
}else
{
Xpos=319-Xpos;
LCD_WriteReg(R32,Ypos);
LCD_WriteReg(R33,Xpos);
}   

#else
if(DeviceCode==0X8989)
{
LCD_WriteReg(0X4E, Xpos);
LCD_WriteReg(0X4F, Ypos);

    }else if(DeviceCode==0X9341)
{    
LCD_WR_REG(0x2A); 
LCD_WR_DATA(Xpos>>8); 
LCD_WR_DATA(Xpos&0XFF); 
LCD_WR_REG(0x2B); 
LCD_WR_DATA(Ypos>>8); 
LCD_WR_DATA(Ypos&0XFF);
}else
{
LCD_WriteReg(R32, Xpos);
LCD_WriteReg(R33, Ypos);
}    

#endif



//设置LCD的自动扫描方向

//注意:其他函数可能会受到此函数设置的影响(尤其是9341这个奇葩),所以,

//一般设置为L2R_U2D即可,如果设置为其他扫描方式,可能导致显示不正常.

//0~7:代表8个方向(具体定义见lcd.h)

//9320/9325/9328/4531/4535/1505/b505/8989/5408/9341等IC已经实际测试  

void LCD_Scan_Dir(u8 dir)

{
u16 regval=0;
u8 dirreg=0;

#if USE_HORIZONTAL//使用横屏
switch(dir)//方向转换
{
case 0:dir=6;break;
case 1:dir=7;break;
case 2:dir=4;break;
case 3:dir=5;break;
case 4:dir=1;break;
case 5:dir=0;break;
case 6:dir=3;break;
case 7:dir=2;break;    
}

#endif
if(DeviceCode==0x9341)//9341,很特殊
{
switch(dir)
{
case L2R_U2D://从左到右,从上到下
regval|=(0<<7)|(0<<6)|(0<<5); 
break;
case L2R_D2U://从左到右,从下到上
regval|=(1<<7)|(0<<6)|(0<<5); 
break;
case R2L_U2D://从右到左,从上到下
regval|=(0<<7)|(1<<6)|(0<<5); 
break;
case R2L_D2U://从右到左,从下到上
regval|=(1<<7)|(1<<6)|(0<<5); 
break;
 
case U2D_L2R://从上到下,从左到右
regval|=(0<<7)|(0<<6)|(1<<5); 
break;
case U2D_R2L://从上到下,从右到左
regval|=(0<<7)|(1<<6)|(1<<5); 
break;
case D2U_L2R://从下到上,从左到右
regval|=(1<<7)|(0<<6)|(1<<5); 
break;
case D2U_R2L://从下到上,从右到左
regval|=(1<<7)|(1<<6)|(1<<5); 
break;
 
}
dirreg=0X36;

  regval|=0X08;//BGR   
LCD_WriteReg(dirreg,regval);
if(regval&0X20)
{

  LCD_WR_REG(0x2A); 
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA(319>>8);LCD_WR_DATA(319&0XFF);
LCD_WR_REG(0x2B); 
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA(239>>8);LCD_WR_DATA(239&0XFF);
}else 
{

  LCD_WR_REG(0x2A); 
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA(239>>8);LCD_WR_DATA(239&0XFF);
LCD_WR_REG(0x2B); 
LCD_WR_DATA(0);LCD_WR_DATA(0);
LCD_WR_DATA(319>>8);LCD_WR_DATA(319&0XFF);
}  

  }else 
{
switch(dir)
{
case L2R_U2D://从左到右,从上到下
regval|=(1<<5)|(1<<4)|(0<<3); 
break;
case L2R_D2U://从左到右,从下到上
regval|=(0<<5)|(1<<4)|(0<<3); 
break;
case R2L_U2D://从右到左,从上到下
regval|=(1<<5)|(0<<4)|(0<<3);
break;
case R2L_D2U://从右到左,从下到上
regval|=(0<<5)|(0<<4)|(0<<3); 
break;
 
case U2D_L2R://从上到下,从左到右
regval|=(1<<5)|(1<<4)|(1<<3); 
break;
case U2D_R2L://从上到下,从右到左
regval|=(1<<5)|(0<<4)|(1<<3); 
break;
case D2U_L2R://从下到上,从左到右
regval|=(0<<5)|(1<<4)|(1<<3); 
break;
case D2U_R2L://从下到上,从右到左
regval|=(0<<5)|(0<<4)|(1<<3); 
break;
 
}
if(DeviceCode==0x8989)//8989 IC
{
dirreg=0X11;
regval|=0X6040;//65K   
}else//其他驱动IC 
{
dirreg=0X03;
regval|=1<<12;  
}
LCD_WriteReg(dirreg,regval);
}

}  
 

//初始化lcd

//该初始化函数可以初始化各种ILI93XX液晶,但是其他函数是基于ILI9320的!!!

//在其他型号的驱动芯片上没有测试! 

void LCD9320_Init(void)

{
RCC->APB2ENR|=1<<5;//先使能外设PORTD时钟

  RCC->APB2ENR|=1<<6;//先使能外设PORTE时钟

//RCC->APB2ENR|=1<<0;    //开启辅助时钟

 

 
GPIOD->CRH&=0X0000FFFF;
GPIOD->CRH|=0X33330000; 
GPIOD->ODR=0XF000; 

GPIOE->CRH=0X33333333;
GPIOE->CRL=0X33333333;
 
GPIOE->ODR=0XFFFF;

delay_ms(50); // delay 50 ms 
LCD_WriteReg(0x0000,0x0001);
delay_ms(50); // delay 50 ms 
DeviceCode = LCD_ReadReg(0x0000);   

    delay_ms(50);//可以适当调整延时,保障稳定显示

    LCD_WriteReg(0x0000,0x0001);   // delayms(5);   //打开晶振

    LCD_WriteReg(0x0003,0xA8A4);   // delayms(5);   //0xA8A4

    LCD_WriteReg(0x000C,0x0000);   // delayms(5);   

    LCD_WriteReg(0x000D,0x080C);   // delayms(5);   

    LCD_WriteReg(0x000E,0x2B00);   // delayms(5);   

    LCD_WriteReg(0x001E,0x00B0);   // delayms(5);   

    LCD_WriteReg(0x0001,0x3B3F);   // delayms(5);   //驱动输出控制320*240 0x6B3F

    LCD_WriteReg(0x0002,0x0600);   // delayms(5);

    LCD_WriteReg(0x0010,0x0000);   // delayms(5);

    LCD_WriteReg(0x0011,0x6070);   // delayms(5);   //定义数据格式 16位色 横屏 0x6058

    LCD_WriteReg(0x0005,0x0000);   // delayms(5);

    LCD_WriteReg(0x0006,0x0000);   // delayms(5);

    LCD_WriteReg(0x0016,0xEF1C);   // delayms(5);

    LCD_WriteReg(0x0017,0x0003);   // delayms(5);

    LCD_WriteReg(0x0007,0x0233);   // delayms(5);   //0x0233       

    LCD_WriteReg(0x000B,0x0000);   // delayms(5);

    LCD_WriteReg(0x000F,0x0000);   // delayms(5);   //扫描开始地址

    LCD_WriteReg(0x0041,0x0000);   // delayms(5);

    LCD_WriteReg(0x0042,0x0000);   // delayms(5);

    LCD_WriteReg(0x0048,0x0000);   // delayms(5);

    LCD_WriteReg(0x0049,0x013F);   // delayms(5);

    LCD_WriteReg(0x004A,0x0000);   // delayms(5);

    LCD_WriteReg(0x004B,0x0000);   // delayms(5);

    LCD_WriteReg(0x0044,0xEF00);   // delayms(5);

    LCD_WriteReg(0x0045,0x0000);   // delayms(5);

    LCD_WriteReg(0x0046,0x013F);   // delayms(5);

    LCD_WriteReg(0x0030,0x0707);   // delayms(5);

    LCD_WriteReg(0x0031,0x0204);   // delayms(5);

    LCD_WriteReg(0x0032,0x0204);   // delayms(5);

    LCD_WriteReg(0x0033,0x0502);   // delayms(5);

    LCD_WriteReg(0x0034,0x0507);   // delayms(5);

    LCD_WriteReg(0x0035,0x0204);   // delayms(5);

    LCD_WriteReg(0x0036,0x0204);   // delayms(5);

    LCD_WriteReg(0x0037,0x0502);   // delayms(5);

    LCD_WriteReg(0x003A,0x0302);   // delayms(5);

    LCD_WriteReg(0x003B,0x0302);   // delayms(5);

    LCD_WriteReg(0x0023,0x0000);   // delayms(5);

    LCD_WriteReg(0x0024,0x0000);   // delayms(5);

    LCD_WriteReg(0x0025,0x8000);   // delayms(5);

    LCD_WriteReg(0x004f,0);        // 行首址0,y=0

    LCD_WriteReg(0x004e,0);        // 列首址0,x=0

}  

//ILI93xx.h

#ifndef ILI93xx_H

#define ILI93xx_H

//#include "stm32f10x_lib.h"

#include "stm32f10x.h"

//写8位数据函数

#define LCD_WR_DATA(data){\

GPIO_SetBits(GPIOD,GPIO_Pin_14);\

GPIO_ResetBits(GPIOD,GPIO_Pin_12);\

GPIO_Write(GPIOE, data);\

GPIO_ResetBits(GPIOD,GPIO_Pin_13);\

GPIO_SetBits(GPIOD,GPIO_Pin_13);\

GPIO_SetBits(GPIOD,GPIO_Pin_12);\



void  LCD_WR_REG(u16 data);

u16 LCD_RD_DATA(void);

void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue);

u16 LCD_ReadReg(u8 LCD_Reg);

void LCD_WriteRAM_Prepare(void);

void LCD_WriteRAM(u16 RGB_Code);

u16 LCD_BGR2RGB(u16 c);

u16 LCD_ReadPoint(u16 x,u16 y);

void LCD_DisplayOn(void);

void LCD_DisplayOff(void);

__inline void LCD_SetCursor(u16 Xpos, u16 Ypos);

void LCD_Scan_Dir(u8 dir);

void LCD9320_Init(void);

#endif 

//ILI9320.h

#ifndef __LCD9320_H

#define __LCD9320_H  

#include "stdlib.h"

#include "stm32f10x.h"

   

//定义LCD的尺寸

#define LCD9320_W 240

#define LCD9320_H 320

#define  RGB565(R,G,B) ((R<<11)|(G<<5)|(B))

#define LCD_CS_SET  GPIOD->BSRR=1<<12    //片选端口      

#define LCD_RS_SETGPIOD->BSRR=1<<14    //数据/命令          
  

#define LCD_WR_SETGPIOD->BSRR=1<<13    //写数据
 

#define LCD_RD_SETGPIOD->BSRR=1<<15    //读数据
 
   

#define LCD_CS_CLR  GPIOD->BRR=1<<12     //片选端口      

#define LCD_RS_CLRGPIOD->BRR=1<<14     //数据/命令          
  

#define LCD_WR_CLRGPIOD->BRR=1<<13     //写数据
 

#define LCD_RD_CLRGPIOD->BRR=1<<15     //读数据

#define DATAOUT(x) GPIOE->ODR=x; //数据输出

#define DATAIN     GPIOE->IDR;   //数据输入

//扫描方向定义

#define L2R_U2D  0 //从左到右,从上到下

#define L2R_D2U  1 //从左到右,从下到上

#define R2L_U2D  2 //从右到左,从上到下

#define R2L_D2U  3 //从右到左,从下到上

#define U2D_L2R  4 //从上到下,从左到右

#define U2D_R2L  5 //从上到下,从右到左

#define D2U_L2R  6 //从下到上,从左到右

#define D2U_R2L  7 //从下到上,从右到左

#define DFT_SCAN_DIR  L2R_U2D  //默认的扫描方向       

 

//9320/9325 LCD寄存器  

#define R0             0x00

#define R1             0x01

#define R2             0x02

#define R3             0x03

#define R4             0x04

#define R5             0x05

#define R6             0x06

#define R7             0x07

#define R8             0x08

#define R9             0x09

#define R10            0x0A

#define R12            0x0C

#define R13            0x0D

#define R14            0x0E

#define R15            0x0F

#define R16            0x10

#define R17            0x11

#define R18            0x12

#define R19            0x13

#define R20            0x14

#define R21            0x15

#define R22            0x16

#define R23            0x17

#define R24            0x18

#define R25            0x19

#define R26            0x1A

#define R27            0x1B

#define R28            0x1C

#define R29            0x1D

#define R30            0x1E

#define R31            0x1F

#define R32            0x20

#define R33            0x21

#define R34            0x22

#define R36            0x24

#define R37            0x25

#define R40            0x28

#define R41            0x29

#define R43            0x2B

#define R45            0x2D

#define R48            0x30

#define R49            0x31

#define R50            0x32

#define R51            0x33

#define R52            0x34

#define R53            0x35

#define R54            0x36

#define R55            0x37

#define R56            0x38

#define R57            0x39

#define R59            0x3B

#define R60            0x3C

#define R61            0x3D

#define R62            0x3E

#define R63            0x3F

#define R64            0x40

#define R65            0x41

#define R66            0x42

#define R67            0x43

#define R68            0x44

#define R69            0x45

#define R70            0x46

#define R71            0x47

#define R72            0x48

#define R73            0x49

#define R74            0x4A

#define R75            0x4B

#define R76            0x4C

#define R77            0x4D

#define R78            0x4E

#define R79            0x4F

#define R80            0x50

#define R81            0x51

#define R82            0x52

#define R83            0x53

#define R96            0x60

#define R97            0x61

#define R106           0x6A

#define R118           0x76

#define R128           0x80

#define R129           0x81

#define R130           0x82

#define R131           0x83

#define R132           0x84

#define R133           0x85

#define R134           0x86

#define R135           0x87

#define R136           0x88

#define R137           0x89

#define R139           0x8B

#define R140           0x8C

#define R141           0x8D

#define R143           0x8F

#define R144           0x90

#define R145           0x91

#define R146           0x92

#define R147           0x93

#define R148           0x94

#define R149           0x95

#define R150           0x96

#define R151           0x97

#define R152           0x98

#define R153           0x99

#define R154           0x9A

#define R157           0x9D

#define R192           0xC0

#define R193           0xC1

#define R229           0xE5   

#endif  

//另外ucgui中的文件代码添加

//LCDConf.h

#define LCD_XSIZE      (240)   /* X-resolution of LCD, Logical coor. */  //(y,x) 反了

#define LCD_YSIZE      (320)   /* Y-resolution of LCD, Logical coor. */

//#define LCD_BITSPERPIXEL (16)

#define LCD_BITSPERPIXEL   (16) //16位色

#define LCD_CONTROLLER     (-1) //缺省驱动(即采用自己的驱动函数)

#define LCD_FIXEDPALETTE (565) //调色板565格式

#define LCD_SWAP_RB (1) //红蓝反色交换

#define LCD_INIT_CONTROLLER() LCD9320_Init()

#endif /* LCDCONF_H */ 

//GUIConf.h

#ifndef GUICONF_H

#define GUICONF_H

#define GUI_OS                    (0)  /* Compile with multitasking support */

#define GUI_SUPPORT_TOUCH         (0)  /* Support a touch screen (req. win-manager) */

#define GUI_SUPPORT_MOUSE         (1)  /* Support a mouse */

#define GUI_SUPPORT_UNICODE       (1)  /* Support mixed ASCII/UNICODE strings */

#define GUI_DEFAULT_FONT          &GUI_Font6x8  //默认字体

#define GUI_ALLOC_SIZE            (1024*5)  /* Size of dynamic memory ... For WM and memory devices*/

/*********************************************************************

*

*         Configuration of available packages

*/

#define GUI_WINSUPPORT            1  /* Window manager package available */

#define GUI_SUPPORT_MEMDEV        1  /* Memory devices available */

#define GUI_SUPPORT_AA            0  /* Anti aliasing available */

#endif      /* Avoid multiple inclusion */

//LCDDnmmy.c文件

//添加头文件

#include "LCD_Private.h"      /* private modul definitions & config */

#include "GUI_Private.h"

#include "GUIDebug.h"

#include "ILI93xx.h"  //画点函数和读点函数

#include "LCDConf.h"      //液晶初始化函数#define LCD_INIT_CONTROLLER() LCD9320_Init()

添加三个函数

/*********************************************************************

*

*       LCD_L0_Init

*

* Purpose:

*   Initialises the LCD-controller.

*/

int  LCD_L0_Init(void) {

  LCD_INIT_CONTROLLER();

  return 0;

}

/*********************************************************************

*

*       LCD_L0_SetPixelIndex

*

* Purpose:

*   Sets the index of the given pixel. The upper layers

*   calling this routine make sure that the coordinates are in range, so

*   that no check on the parameters needs to be performed.

*/

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) {

  /* Convert logical into physical coordinates (Dep. on LCDConf.h) */

 //  LCD_DrawPoint(x,y);

   LCD_WriteReg(0x004e,x);   //设置x坐标位置

   LCD_WriteReg(0x004f,y);   //设置y坐标位置

   LCD_WR_REG(0x22);

   LCD_WR_DATA(PixelIndex); 

}

/*********************************************************************

*

*       LCD_L0_GetPixelIndex

*

* Purpose:

*   Returns the index of the given pixel. The upper layers

*   calling this routine make sure that the coordinates are in range, so

*   that no check on the parameters needs to be performed.

*/

unsigned int LCD_L0_GetPixelIndex(int x, int y) {

 

  

  return LCD_ReadPoint(x,y);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32 ucgui 移植