📄 7-1.c
字号:
unsigned char LUT8[256*3] =
{
/* 主次色 */
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x00, 0xA0, 0xA0,
0xA0, 0x00, 0x00, 0xA0, 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0xA0, 0xA0, 0xA0,
0x50, 0x50, 0x50, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0xF0,
0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0xF0, 0xF0, 0x00, 0xF0, 0xF0, 0xF0,
/* 灰度 */
0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x30, 0x30, 0x30,
0x40, 0x40, 0x40, 0x50, 0x50, 0x50, 0x60, 0x60, 0x60, 0x70, 0x70, 0x70,
0x80, 0x80, 0x80, 0x90, 0x90, 0x90, 0xA0, 0xA0, 0xA0, 0xB0, 0xB0, 0xB0,
0xC0, 0xC0, 0xC0, 0xD0, 0xD0, 0xD0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0,
/* 黑色到红色*/
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00,
0x40, 0x00, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0x00,
0x80, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xB0, 0x00, 0x00,
0xC0, 0x00, 0x00, 0xD0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00,
/*黑色到绿色*/
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00,
0x00, 0x40, 0x00, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00,
0x00, 0x80, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xB0, 0x00,
0x00, 0xC0, 0x00, 0x00, 0xD0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00,
/*黑色到蓝色*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30,
0x00, 0x00, 0x40, 0x00, 0x00, 0x50, 0x00, 0x00, 0x60, 0x00, 0x00, 0x70,
0x00, 0x00, 0x80, 0x00, 0x00, 0x90, 0x00, 0x00, 0xA0, 0x00, 0x00, 0xB0,
0x00, 0x00, 0xC0, 0x00, 0x00, 0xD0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF0,
/* 蓝色到青色(蓝绿色) */
0x00, 0x00, 0xF0, 0x00, 0x10, 0xF0, 0x00, 0x20, 0xF0, 0x00, 0x30, 0xF0,
0x00, 0x40, 0xF0, 0x00, 0x50, 0xF0, 0x00, 0x60, 0xF0, 0x00, 0x70, 0xF0,
0x00, 0x80, 0xF0, 0x00, 0x90, 0xF0, 0x00, 0xA0, 0xF0, 0x00, 0xB0, 0xF0,
0x00, 0xC0, 0xF0, 0x00, 0xD0, 0xF0, 0x00, 0xE0, 0xF0, 0x00, 0xF0, 0xF0,
/* 青色(蓝绿色)到绿色*/
0x00, 0xF0, 0xF0, 0x00, 0xF0, 0xE0, 0x00, 0xF0, 0xD0, 0x00, 0xF0, 0xC0,
0x00, 0xF0, 0xB0, 0x00, 0xF0, 0xA0, 0x00, 0xF0, 0x90, 0x00, 0xF0, 0x80,
0x00, 0xF0, 0x70, 0x00, 0xF0, 0x60, 0x00, 0xF0, 0x50, 0x00, 0xF0, 0x40,
0x00, 0xF0, 0x30, 0x00, 0xF0, 0x20, 0x00, 0xF0, 0x10, 0x00, 0xF0, 0x00,
/* 绿色到黄色(红绿色)*/
0x00, 0xF0, 0x00, 0x10, 0xF0, 0x00, 0x20, 0xF0, 0x00, 0x30, 0xF0, 0x00,
0x40, 0xF0, 0x00, 0x50, 0xF0, 0x00, 0x60, 0xF0, 0x00, 0x70, 0xF0, 0x00,
0x80, 0xF0, 0x00, 0x90, 0xF0, 0x00, 0xA0, 0xF0, 0x00, 0xB0, 0xF0, 0x00,
0xC0, 0xF0, 0x00, 0xD0, 0xF0, 0x00, 0xE0, 0xF0, 0x00, 0xF0, 0xF0, 0x00,
/*黄色(红绿色)到红色*/
0xF0, 0xF0, 0x00, 0xF0, 0xE0, 0x00, 0xF0, 0xD0, 0x00, 0xF0, 0xC0, 0x00,
0xF0, 0xB0, 0x00, 0xF0, 0xA0, 0x00, 0xF0, 0x90, 0x00, 0xF0, 0x80, 0x00,
0xF0, 0x70, 0x00, 0xF0, 0x60, 0x00, 0xF0, 0x50, 0x00, 0xF0, 0x40, 0x00,
0xF0, 0x30, 0x00, 0xF0, 0x20, 0x00, 0xF0, 0x10, 0x00, 0xF0, 0x00, 0x00,
/* 红色到洋红(蓝红色) */
0xF0, 0x00, 0x00, 0xF0, 0x00, 0x10, 0xF0, 0x00, 0x20, 0xF0, 0x00, 0x30,
0xF0, 0x00, 0x40, 0xF0, 0x00, 0x50, 0xF0, 0x00, 0x60, 0xF0, 0x00, 0x70,
0xF0, 0x00, 0x80, 0xF0, 0x00, 0x90, 0xF0, 0x00, 0xA0, 0xF0, 0x00, 0xB0,
0xF0, 0x00, 0xC0, 0xF0, 0x00, 0xD0, 0xF0, 0x00, 0xE0, 0xF0, 0x00, 0xF0,
/*洋红(蓝红色)到蓝色 */
0xF0, 0x00, 0xF0, 0xE0, 0x00, 0xF0, 0xD0, 0x00, 0xF0, 0xC0, 0x00, 0xF0,
0xB0, 0x00, 0xF0, 0xA0, 0x00, 0xF0, 0x90, 0x00, 0xF0, 0x80, 0x00, 0xF0,
0x70, 0x00, 0xF0, 0x60, 0x00, 0xF0, 0x50, 0x00, 0xF0, 0x40, 0x00, 0xF0,
0x30, 0x00, 0xF0, 0x20, 0x00, 0xF0, 0x10, 0x00, 0xF0, 0x00, 0x00, 0xF0,
/*黑色到洋红(蓝红色)*/
0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x20, 0x00, 0x20, 0x30, 0x00, 0x30,
0x40, 0x00, 0x40, 0x50, 0x00, 0x50, 0x60, 0x00, 0x60, 0x70, 0x00, 0x70,
0x80, 0x00, 0x80, 0x90, 0x00, 0x90, 0xA0, 0x00, 0xA0, 0xB0, 0x00, 0xB0,
0xC0, 0x00, 0xC0, 0xD0, 0x00, 0xD0, 0xE0, 0x00, 0xE0, 0xF0, 0x00, 0xF0,
/* 黑色到青色(蓝绿色) */
0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x20, 0x20, 0x00, 0x30, 0x30,
0x00, 0x40, 0x40, 0x00, 0x50, 0x50, 0x00, 0x60, 0x60, 0x00, 0x70, 0x70,
0x00, 0x80, 0x80, 0x00, 0x90, 0x90, 0x00, 0xA0, 0xA0, 0x00, 0xB0, 0xB0,
0x00, 0xC0, 0xC0, 0x00, 0xD0, 0xD0, 0x00, 0xE0, 0xE0, 0x00, 0xF0, 0xF0,
/* 红色到白色*/
0xF0, 0x00, 0x00, 0xF0, 0x10, 0x10, 0xF0, 0x20, 0x20, 0xF0, 0x30, 0x30,
0xF0, 0x40, 0x40, 0xF0, 0x50, 0x50, 0xF0, 0x60, 0x60, 0xF0, 0x70, 0x70,
0xF0, 0x80, 0x80, 0xF0, 0x90, 0x90, 0xF0, 0xA0, 0xA0, 0xF0, 0xB0, 0xB0,
0xF0, 0xC0, 0xC0, 0xF0, 0xD0, 0xD0, 0xF0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0,
/* 绿色到白色 */
0x00, 0xF0, 0x00, 0x10, 0xF0, 0x10, 0x20, 0xF0, 0x20, 0x30, 0xF0, 0x30,
0x40, 0xF0, 0x40, 0x50, 0xF0, 0x50, 0x60, 0xF0, 0x60, 0x70, 0xF0, 0x70,
0x80, 0xF0, 0x80, 0x90, 0xF0, 0x90, 0xA0, 0xF0, 0xA0, 0xB0, 0xF0, 0xB0,
0xC0, 0xF0, 0xC0, 0xD0, 0xF0, 0xD0, 0xE0, 0xF0, 0xE0, 0xF0, 0xF0, 0xF0,
/* 蓝色到白色 */
0x00, 0x00, 0xF0, 0x10, 0x10, 0xF0, 0x20, 0x20, 0xF0, 0x30, 0x30, 0xF0,
0x40, 0x40, 0xF0, 0x50, 0x50, 0xF0, 0x60, 0x60, 0xF0, 0x70, 0x70, 0xF0,
0x80, 0x80, 0xF0, 0x90, 0x90, 0xF0, 0xA0, 0xA0, 0xF0, 0xB0, 0xB0, 0xF0,
0xC0, 0xC0, 0xF0, 0xD0, 0xD0, 0xF0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF0
};
#define REGISTER_OFFSET ((unsigned char *) 0x14000000) // 初始化 S1D13506的寄存器
#define DISP_MEM_OFFSET ((unsigned char *) 0x4000000)
#define DISP_MEMORY_SIZE 0x200000
void main(void)
{
unsigned char * pRegs = REGISTER_OFFSET;
unsigned char * pMem = DISP_MEM_OFFSET;
unsigned char * pLUT = LUT8;
long lCnt;
int idx;
int rgb;
*(pRegs + 0x001) = 0x00; // 0000 0000
*(pRegs + 0x1FC) = 0x00; // 0000 0000
*(pRegs + 0x004) = 0x00; // 0000 0000
*(pRegs + 0x008) = 0x00; // 0000 0000
*(pRegs + 0x010) = 0x00; // 0000 0000 从CLKI时钟得到MCLK时钟
*(pRegs + 0x014) = 0x10; // 0001 0000 从CLKI时钟得到LCD PCLK时钟
*(pRegs + 0x018) = 0x02; // 0000 0010 从CLKI2时钟得到CRT PCLK时钟
*(pRegs + 0x01C) = 0x02; // 0000 0010 从CLKI2时钟得到MediaPlug时钟
*(pRegs + 0x01E) = 0x01; // 0000 0001
*(pRegs + 0x020) = 0x01; // 0000 0001 两片EDO内存
*(pRegs + 0x021) = 0x06; // 0000 0110 刷新时间小于32 ms
*(pRegs + 0x02A) = 0x01; // 0000 0001 设置DRAM时间控制寄存器
*(pRegs + 0x02B) = 0x01; // 0000 0001 设置DRAM时间控制寄存器
// 计算刷新率,计算公式为
// LCD PCLK
// FrameRate = -----------------------------------------------
// (HDP + HNDP) * (VDP/2 + VNDP)
*(pRegs + 0x030) = 0x26; // 0010 0110 16 bit, 彩色, 双口
*(pRegs + 0x031) = 0x00; // 0000 0000 单色显示设置
*(pRegs + 0x032) = 0x1D; // 0100 1111 - HDP = (0x1D + 1) * 8 = 240
*(pRegs + 0x034) = 0x27; // 0001 1111 - HNDP = (0x27 + 1) * 8 = 320
*(pRegs + 0x035) = 0x00; // 0000 0000 仅在TFT模式下设置
*(pRegs + 0x036) = 0x00; // 0000 0000仅在TFT模式下设置
*(pRegs + 0x038) = 0xDF; // 1101 1111 - VDP = 0x1DF + 1
*(pRegs + 0x039) = 0x01; // 0000 0001 - VDP = 480
*(pRegs + 0x03A) = 0x2C; // 0010 1100 - VNDP = (0x2C + 1) = 45
*(pRegs + 0x03B) = 0x00; // 0000 0000仅在TFT模式下设置
*(pRegs + 0x03C) = 0x00; // 0000 0000仅在TFT模式下设置
*(pRegs + 0x040) = 0x03; // 0000 0000 选择每个像素8 bit
*(pRegs + 0x041) = 0x00; // 0000 0000 使能双面板缓冲区
*(pRegs + 0x042) = 0x00; // 0000 0000 设置LCD 起始地址
*(pRegs + 0x043) = 0x00; // 0000 0000 第一个字节
*(pRegs + 0x044) = 0x00; // 0000 0000 显示内存缓冲区
*(pRegs + 0x046) = 0x40; // 0000 0000 LCD内存地址偏移
*(pRegs + 0x047) = 0x01; // 0000 0000 - 0x140 Words = 640 Bytes
*(pRegs + 0x048) = 0x00; // 0000 0000
*(pRegs + 0x04A) = 0x00; // 0000 0000 使能硬件
*(pRegs + 0x04B) = 0x00; // 0000 0000 设置FIFO值
*(pRegs + 0x050) = 0x00; // 0000 0000
*(pRegs + 0x052) = 0x00; // 0000 0000
*(pRegs + 0x053) = 0x00; // 0000 0000
*(pRegs + 0x054) = 0x00; // 0000 0000
*(pRegs + 0x056) = 0x00; // 0000 0000
*(pRegs + 0x057) = 0x00; // 0000 0000
*(pRegs + 0x058) = 0x00; // 0000 0000
*(pRegs + 0x059) = 0x00; // 0000 0000
*(pRegs + 0x05A) = 0x00; // 0000 0000
*(pRegs + 0x05B) = 0x00; // 0000 0000
*(pRegs + 0x060) = 0x00; // 0000 0000
*(pRegs + 0x062) = 0x00; // 0000 0000
*(pRegs + 0x063) = 0x00; // 0000 0000
*(pRegs + 0x064) = 0x00; // 0000 0000
*(pRegs + 0x066) = 0x00; // 0000 0000
*(pRegs + 0x067) = 0x00; // 0000 0000
*(pRegs + 0x068) = 0x00; // 0000 0000
*(pRegs + 0x06A) = 0x00; // 0000 0000
*(pRegs + 0x06B) = 0x00; // 0000 0000
*(pRegs + 0x080) = 0x00; // 0000 0000
*(pRegs + 0x081) = 0x00; // 0000 0000
*(pRegs + 0x082) = 0x00; // 0000 0000
*(pRegs + 0x083) = 0x00; // 0000 0000
*(pRegs + 0x084) = 0x00; // 0000 0000
*(pRegs + 0x085) = 0x00; // 0000 0000
*(pRegs + 0x086) = 0x00; // 0000 0000
*(pRegs + 0x087) = 0x00; // 0000 0000
*(pRegs + 0x088) = 0x00; // 0000 0000
*(pRegs + 0x08A) = 0x00; // 0000 0000
*(pRegs + 0x08B) = 0x00; // 0000 0000
*(pRegs + 0x08C) = 0x00; // 0000 0000
*(pRegs + 0x08E) = 0x00; // 0000 0000
*(pRegs + 0x100) = 0x00; // 0000 0000
*(pRegs + 0x101) = 0x00; // 0000 0000
*(pRegs + 0x102) = 0x00; // 0000 0000
*(pRegs + 0x103) = 0x00; // 0000 0000
*(pRegs + 0x104) = 0x00; // 0000 0000
*(pRegs + 0x105) = 0x00; // 0000 0000
*(pRegs + 0x106) = 0x00; // 0000 0000
*(pRegs + 0x108) = 0x00; // 0000 0000
*(pRegs + 0x109) = 0x00; // 0000 0000
*(pRegs + 0x10A) = 0x00; // 0000 0000
*(pRegs + 0x10C) = 0x00; // 0000 0000
*(pRegs + 0x10D) = 0x00; // 0000 0000
*(pRegs + 0x110) = 0x00; // 0000 0000
*(pRegs + 0x111) = 0x00; // 0000 0000
*(pRegs + 0x112) = 0x00; // 0000 0000
*(pRegs + 0x113) = 0x00; // 0000 0000
*(pRegs + 0x114) = 0x00; // 0000 0000
*(pRegs + 0x115) = 0x00; // 0000 0000
*(pRegs + 0x116) = 0x00; // 0000 0000
*(pRegs + 0x118) = 0x00; // 0000 0000
*(pRegs + 0x119) = 0x00; // 0000 0000
*(pRegs + 0x1E0) = 0x01; // 使能LCD LUT读写
*(pRegs + 0x1E2) = 0; // 复位LUT地址
for (idx = 0; idx < 256; idx++)
{
for (rgb = 0; rgb < 3; rgb++)
{
*(pRegs + 0x1E4) = *pLUT;
pLUT++;
}
}
*(pRegs + 0x1F0) = 0; // 000 000 禁止节省电源模式
*(pRegs + 0x1F4) = 0; // 0000 0000
*(pRegs + 0x1FC) = 0x01; // 0000 0001禁止节省电源模式
for (lCnt = 0; lCnt < DISP_MEMORY_SIZE; lCnt++)
{
*pMem = 0;
pMem++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -