📄 lcd.c
字号:
/****************************************************************************
* 公司名称:SITRONIX *
* 模块名称:LCD.C *
* 模块功能:IC与板子之间的接口函数,可以按需要作移植修改 *
* 创建人员:Jim Yuan *
* 创建日期:2007-6-26 *
* 修改日期:2007-7-5 *
****************************************************************************/
#include "lcd.h"
#include "interface.h"
#define PANEL_X_PIXEL 240
#define PANEL_Y_PIXEL 320
#define PANEL_X_SHIFT 0
#define PANEL_Y_SHIFT 0
/****************************************************************************
* 函数名称:disp_area *
* 函数功能:设置显示区域在RAM中的范围和位置 *
* 入口参数:x LCM上的X坐标,从0开始 *
* y LCM上的Y坐标,从0开始 *
* width LCM上显示区域的宽度 *
* height LCM上显示区域的高度 *
* 出口参数:FALSE设置失败/TRUE设置成功 *
* 创建日期:2007-6-8 *
* 修改日期:2007-6-26 *
* 修改原因:增加函数返回值 *
****************************************************************************/
uint8 disp_area(uint16 x, uint16 y, uint16 width, uint16 height)
{
if ((x + width) > PANEL_X_PIXEL){return FALSE;}
if ((y + height) > PANEL_Y_PIXEL){return FALSE;}
writec(0x2A); //column range
writed(0x00); //start
writed(x + PANEL_X_SHIFT);
writed(0x00); //end
writed(x + PANEL_X_SHIFT + width - 1);
writec(0x2B);
writed(((y + PANEL_Y_SHIFT) >> 8) & 0x0f); //page range
writed((y + PANEL_Y_SHIFT) & 0xff); //start
writed(((y + PANEL_Y_SHIFT + height -1 ) >> 8) & 0x0f);
writed((y + PANEL_Y_SHIFT + height - 1) & 0xff); //end
writec(0x2C);
return TRUE;
}
void init(void)
{
writec(0x11);//sleep out
delay(30);
writec(0xb0);
writed(0x00);//0xc
writec(0xB1);//set frame rate control(normal mode/full colors)
writed(0x23);
writed(0x10);
writed(0x10);
writec(0xB2);//set frame rate control(idle mode/8-colors)
writed(0x23);
writed(0x10);
writed(0x10);
writec(0xB3);//set frame rate control(partial mode/full-colors)
writed(0x3e);
writed(0x02);
writed(0x02);
writed(0x3e);
writed(0x02);
writed(0x02);
writec(0xB6);//set behavior of source output at porch area
writed(0x02);
writed(0x04);
writec(0xBC);//turn off the VSYNC funtion
writed(0x02);
writed(0x04);
writec(0xC0);//set power system
writed(0x00);
writec(0xC1);//set power system
writed(0xbb);
writed(0x00);
writec(0xC2);
writed(0x01);
writed(0xD6);
writed(0x85);
writed(0x30);
writed(0x05);
writec(0xC3);
writed(0x01);
writed(0x33);
writed(0x01);
writed(0x00);
writed(0x00);
writec(0xC4);
writed(0x01);
writed(0xB3);
writed(0x03);
writed(0x00);
writed(0x00);
writec(0xC5);
writed(0x80);
writed(0x22);
writed(0x14);
writec(0xC6);//set vcomAC level
writed(0x18);
writed(0x28);
writec(0xF4);//set timing for sram
writed(0xFF);
writed(0x3F);
writec(0xFB);//set equalize mode of source output
writed(0x7F);
writec(0x36);
writed(0xC0);
writec(0x20);
writec(0x3A);
writed(0x55);
writec(0x29);//display on
}
void delay(uint8 tt)
{
system_delay_lcd(tt);
}
void disp_pattern(uint8 dat1, uint8 dat2)
{
uint32 i;
uint32 x,y;
x = PANEL_X_PIXEL;
y = PANEL_Y_PIXEL;
x = x * y;
disp_area(0, 0, PANEL_X_PIXEL, PANEL_Y_PIXEL);
for(i = 0; i < x; i++)
{
writed(dat1);
writed(dat2);
}
}
void disp_data(uint8 dat)
{
writed(dat);
}
void disp_flash(uint8 rom, uint32 address)
{
uint32 i,w,h;
w = PANEL_X_PIXEL;
h = PANEL_Y_PIXEL;
i = w * h;
if (disp_area(0, 0, PANEL_X_PIXEL, PANEL_Y_PIXEL) == FALSE){return;}
flash_data_out(rom, address, i);
}
void disp_hex(uint16 row, uint16 column, uint8 hex)
{
print_hex(row, column, hex);
}
void disp_string(uint16 row, uint16 column, uint8 *str)
{
print_string(row, column, str);
}
void disp_key_test(uint16 row, uint16 column)
{
disp_string(row, column, "KEY TEST:");
disp_hex(row, column + 9, key_test());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -