7.1.4 XMC驱动程序
/* the address of write data & command (xmc_a0) */
#define XMC_LCD_COMMAND 0x60000000
#define XMC_LCD_DATA (0x60000000|(1<<18)+1)
/**
* @brief this function is write command to lcd.
* @param command : the command to write
* @retval none
*/
void lcd_wr_command(uint8_t command)
{
*(__IO uint8_t *) XMC_LCD_COMMAND = command;
}
/**
* @brief this function is write data to lcd.
* @param data : the data to write.
* @retval none
*/
void lcd_wr_data(uint8_t data)
{
*(__IO uint8_t *) XMC_LCD_DATA = data;
}
/**
* @brief configures the lcd.
* this function must be called before any write/read operation
* on the lcd.
* @param none
* @retval none
*/
void lcd_xmc_init(void)
{
/* init xmc */
xmc_init(); //xmc初始化
/* reset lcd */
LCD_RESET_HIGH; //复位引脚拉高
delay_ms(200);
LCD_RESET_LOW; //复位引脚拉低
delay_ms(200);
LCD_RESET_HIGH;
delay_ms(800);
lcd_wr_command( 0x11); //退出睡眠
delay_ms(120); //Delay 120ms
lcd_wr_command( 0x36); //行列扫描顺序及RGB/BGR,横放/竖放控制
lcd_wr_data(0x00);
lcd_wr_command(0x3A); //定义RGB图像数据格式
lcd_wr_data( 0x55);
lcd_wr_command( 0xB2); //Porch Setting
lcd_wr_data(0x1F);
lcd_wr_data(0x1F);
lcd_wr_data(0x00);
lcd_wr_data( 0x33);
lcd_wr_data( 0x33);
lcd_wr_command( 0xB7); //Gate Control
lcd_wr_data(0x73);
lcd_wr_command( 0xBB); //VCOM Setting
lcd_wr_data( 0x1E);
lcd_wr_command(0xC0); //LCM Control
lcd_wr_data( 0x2C);
lcd_wr_command(0xC2); //VDV and VRH Command Enable
lcd_wr_data( 0x01);
lcd_wr_command(0xC3); //VRH Set
lcd_wr_data(0x13);
lcd_wr_command(0xC4); //VDV Set
lcd_wr_data(0x20);
lcd_wr_command( 0xC6);//Frame Rate Control in Normal Mode
lcd_wr_data( 0x0F);
lcd_wr_command( 0xD0); //Power Control
lcd_wr_data( 0xA4);
lcd_wr_data(0xA1);
lcd_wr_command(0xE0); //Positive Voltage Gamma Control
lcd_wr_data(0xF0);
lcd_wr_data(0x0C);
lcd_wr_data(0x15);
lcd_wr_data(0x09);
lcd_wr_data(0x09);
lcd_wr_data(0x07);
lcd_wr_data(0x3B);
lcd_wr_data(0x44);
lcd_wr_data(0x50);
lcd_wr_data(0x36);
lcd_wr_data(0x11);
lcd_wr_data(0x10);
lcd_wr_data(0x2F);
lcd_wr_data(0x35);
lcd_wr_command(0xE1); //Negative Voltage Gamma Control
lcd_wr_data(0xF0);
lcd_wr_data(0x17);
lcd_wr_data(0x1A);
lcd_wr_data(0x0C);
lcd_wr_data(0x0B);
lcd_wr_data(0x25);
lcd_wr_data(0x3A);
lcd_wr_data(0x43);
lcd_wr_data(0x4F);
lcd_wr_data(0x19);
lcd_wr_data(0x15);
lcd_wr_data(0x16);
lcd_wr_data(0x30);
lcd_wr_data(0x37);
lcd_wr_command( 0xe9); //Equalize time control
lcd_wr_data(0x07);
lcd_wr_data(0x07);
lcd_wr_data(0x03);
lcd_wr_command(0xE7); //SPI2 Enable
lcd_wr_data(0x10);
lcd_wr_command(0x21); //Display Inversion On颜色翻转
lcd_wr_command(0x29); //Display on开启显示
lcd_clear(WHITE); //清屏为白色
LCD_BL_LOW; //点亮背光
}
/**
* @brief 设置刷屏范围
* @param xstart : x起始坐标值
* @param ystart : y起始坐标值
* @param xend : x结束坐标值
* @param yend : y结束坐标值
* @retval 无
*/
void lcd_setblock(uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye)
{
/* 设置行范围 */
lcd_wr_command(0x2a); //设置行范围命令
lcd_wr_data(xs >> 8); //发送x起始坐标
lcd_wr_data(xs);
lcd_wr_data(xe >> 8); //发送x结束坐标
lcd_wr_data(xe);
/*设置列范围 */
lcd_wr_command(0x2b); //设置列范围命令
lcd_wr_data(ys >> 8); //发送y起始坐标
lcd_wr_data(ys);
lcd_wr_data(ye >> 8); //发送y起始坐标
lcd_wr_data(ye);
lcd_wr_command(0x2c); //写寄存器
}
/**
* @brief 画点函数
* @param x :需要画点的x坐标值
* @param y :需要画点的y坐标值
* @param color :颜色值
* @retval none
*/
void lcd_drawpoint(uint16_t x, uint16_t y, uint16_t color)
{
lcd_setblock(x, y, x, y); //设置刷屏区域
lcd_wr_data(color >> 8); //写颜色值
lcd_wr_data(color);
}
/**
* @brief 清屏函数.
* @param color : 清屏颜色值.
* @retval 无
*/
void lcd_clear(uint16_t color)
{
uint32_t i;
lcd_setblock(0, 0, 240, 320); //设置全屏区域
for(i = 0; i < 240*320; i++)//发送240x320颜色值
{
lcd_wr_data(color >> 8); //写颜色值
lcd_wr_data(color);
}
}
/**
* @brief this function is display image on the lcd.
* @param address:图片存在flash起始地址
* @param x:图片显示x轴起始坐标
* @param y:图片显示y轴起始坐标
* @param w:图片宽度
* @param h:图片高度
* @retval none
*/
void lcd_display_image(uint32_t address,uint16_t x,uint16_t y,uint16_t w,uint16_t h)
{
uint8_t *dz_buff = buffer_write;
uint32_t len = w * h << 1,i = 0;
lcd_setblock(x,y,w-1,h-1);//设置区域
spiflash_read(dz_buff,address,len);//从flash读图片数据
for(i=0; i<len; i++)
{
lcd_wr_data(dz_buff[i]); //发送图片数据给屏幕
}
}
//24x24 '啊'字
const u8 ch[72] ={
0x00,0x00,0x00,0x00,0x88,0x00,0x00,0xFC,0x06,0x44,0xCB,0xFF,
0x7E,0xC8,0x0C,0x64,0xC8,0x0C,0x64,0xC8,0x0C,0x64,0xD2,0x4C,
0x64,0xD3,0xEC,0x64,0xE2,0x4C,0x64,0xD2,0x4C,0x64,0xD2,0x4C,
0x64,0xCA,0x4C,0x64,0xCA,0x4C,0x7C,0xCB,0xCC,0x64,0xCA,0x4C,
0x64,0xFA,0x0C,0x40,0xD0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,
0x00,0xC0,0x0C,0x00,0xC0,0x7C,0x00,0xC0,0x18,0x00,0x80,0x10,
};
/**
* @brief this function is display ch on the lcd.
* @param x:汉字显示x轴起始坐标
* @param y:汉字显示y轴起始坐标
* @param w:汉字宽度
* @param h:汉字高度
* @retval none
*/
void show_ch(u16 x,u16 y,u16 w,u16 h)
{
unsigned int i,j,k,n;
unsigned char temp;
n = 0;
lcd_setblock(x, y,x+w-1,y+h-1);//设置区域
for( j = 0;j < ((w+7)>> 3);j++)//列数
{
for( i = 0;i < h; i++)//行数
{
temp = ch[n++];
for(k = 0;k < 8;k++)
{
if(((temp << k)& 0x80) == 0 ){
/* 显示一个像素点 */
lcd_wr_data(0xff);
Lcd_wr_data(0xff);
}else{
/* 显示一个像素点 */
lcd_wr_data(0x0);
lcd_wr_data(0x0);
}
}
}
}
}
-
- GT-HMI Designer用户手册
- GT-HMI Engine用户手册
- 高通字库芯片开发资料
- GTDB-X7ESP高通智匠AI开发板规格书
- GTC-480480TFT40XP模块使用手册
- GTC-480272TFT43XP模块使用手册
- GTC-800480TFT50G模块使用手册
- GTC-800480TFT70GP模块使用手册
- GTC-1024600TFT101GP模块使用手册
- GT-GUI LCD 0.96寸液晶模组数据手册
- GT-GUI LCD 1.9寸液晶模组数据手册
- GT-GUI LCD 3.5寸液晶模组数据手册
- GT-GUI LCD 7.0寸液晶模组数据手册
- GUI-LCD开发板使用手册
- GT5GL128B标准GUI芯片规格书
- GT5GL64芯片产品规格书
高通字库交流群
GT-HMI交流群