📄 lcd.c
字号:
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x00);
SET_LCD_CMD_PARAMETER(1,LCD_CMD,0x07);
SET_LCD_CMD_PARAMETER(2,LCD_DATA,0x02);
SET_LCD_CMD_PARAMETER(3,LCD_DATA,0x33);
LCD_SEND_DMA_CMD(4);
Delayms(50);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_18BIT_MODE))
//ywm++ 20060525
#elif (defined(LCD_16BIT_MODE))
#if 0
//SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0000);
//SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
//LCD_SEND_DMA_CMD(2);
//Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x6060);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0018);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0013);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x2410);
LCD_SEND_DMA_CMD(2);
//SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
//SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x6060);
//LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0021);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0027);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0037);
LCD_SEND_DMA_CMD(2);
//ywm-- 20060525
#endif
//R61503B BY LUDAN 2006.11.6
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0000);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x12B0);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x12B0);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0011);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0000);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0117);
LCD_SEND_DMA_CMD(2);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0013);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x8A07);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0137);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0021);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x1137);
LCD_SEND_DMA_CMD(2);
Delayms(50);
SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0233);
LCD_SEND_DMA_CMD(2);
Delayms(50);
#endif
//LUDAN
#else
LCD_CtrlWrite_R61500(0x0010);
LCD_DataWrite_R61500(lcd_power_ctrl_shadow1);
LCD_CtrlWrite_R61500(0x0012);
LCD_DataWrite_R61500(lcd_power_ctrl_shadow3);
LCD_CtrlWrite_R61500(0x0013);
LCD_DataWrite_R61500(lcd_power_ctrl_shadow4);
LCD_CtrlWrite_R61500(0x0007);
LCD_DataWrite_R61500(0x0005);
Delayms(0x1000);
LCD_CtrlWrite_R61500(0x0007);
LCD_DataWrite_R61500(0x0025);
LCD_CtrlWrite_R61500(0x0007);
LCD_DataWrite_R61500(0x0027);
Delayms(0x1000);
LCD_CtrlWrite_R61500(0x0007);
LCD_DataWrite_R61500(0x0037);
Delayms(0x1000);
#endif
}
void LCD_Partial_On_R61500(kal_uint16 start_page,kal_uint16 end_page)
{
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE)) //ywm++ 20070207 for 8 bit trans
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)>>8 ) );
SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0042&0xFF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,((end_page&0xFF00) >>8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(end_page&0xFF) );
LCD_SEND_DMA_CMD(4);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_18BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) )|((0x0042&0xFF) ));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF) <<8)|((start_page&0xFF) ));
LCD_SEND_DMA_CMD(2);
#endif
#else
LCD_CtrlWrite_R61500(0x0042);
LCD_DataWrite_R61500((start_page&0xFF)|((end_page&0xFF)<<8));
#endif
}
void LCD_Partial_Off_R61500(void)
{
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE)) //ywm++ 20070207 for 8 bit trans
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) >>8 ));
SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0042&0xFF) );
SET_LCD_CMD_PARAMETER(2,LCD_DATA,((0xDB00&0xFF00) >>8));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0xDB00&0xFF) );
LCD_SEND_DMA_CMD(4);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_18BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) )|((0x0042&0xFF) ));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0xDB00&0xFF00) )|((0xDB00&0xFF) ));
LCD_SEND_DMA_CMD(2);
#endif
#else
LCD_CtrlWrite_R61500(0x0042);
LCD_DataWrite_R61500(0xDB00);
#endif
}
kal_uint8 LCD_Partial_line_R61500(void)
{
return 1; /* partial display in 1 line alignment */
}
void LCD_blockClear_R61500(kal_uint16 x1,kal_uint16 y1,kal_uint16 x2,kal_uint16 y2,kal_uint16 data)
{
kal_uint16 LCD_x;
kal_uint16 LCD_y;
kal_uint8 r_color,g_color,b_color;
r_color=(data&0xF800)>>11; /* transfer to RGB565 by wj */
g_color=(data>>5)&0x3F;
b_color=((data)&0x1F) ;
#if (defined(LCD_CMD_DMA_MODE))
#if (defined(LCD_8BIT_MODE)) //ywm++ 20070207 for 8 bit trans
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00)>>8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0044&0xFF));
SET_LCD_CMD_PARAMETER(2,LCD_DATA,(x2&0xFF) );
SET_LCD_CMD_PARAMETER(3,LCD_DATA,(x1&0xFF) );
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0045&0xFF00)>>8 ));
SET_LCD_CMD_PARAMETER(5,LCD_CMD,(0x0045&0xFF) );
SET_LCD_CMD_PARAMETER(6,LCD_DATA,(y2&0xFF));
SET_LCD_CMD_PARAMETER(7,LCD_DATA,(y1&0xFF));
SET_LCD_CMD_PARAMETER(8,LCD_CMD,((0x0021&0xFF00)>>8 ));
SET_LCD_CMD_PARAMETER(9,LCD_CMD,(0x0021&0xFF) );
SET_LCD_CMD_PARAMETER(10,LCD_DATA,(y1&0xFF));
SET_LCD_CMD_PARAMETER(11,LCD_DATA,(x1&0xFF) );
SET_LCD_CMD_PARAMETER(12,LCD_CMD,((0x0022&0xFF00)>>8 ));
SET_LCD_CMD_PARAMETER(13,LCD_CMD,(0x0022&0xFF) );
LCD_SEND_DMA_CMD(14);
#elif (defined(LCD_9BIT_MODE))
#elif (defined(LCD_18BIT_MODE))
#elif (defined(LCD_16BIT_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00) )|((0x0044&0xFF) ));
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((x2&0xFF) <<8)|((x1&0xFF) ));
SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00) )|((0x0045&0xFF) ));
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((y2&0xFF) <<8)|((y1&0xFF) ));
SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00) )|((0x0021&0xFF) ));
SET_LCD_CMD_PARAMETER(5,LCD_DATA,((y1&0xFF) <<8)|((x1&0xFF) ));
SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00) )|((0x0022&0xFF) ));
LCD_SEND_DMA_CMD(7);
#endif
#else
LCD_CtrlWrite_R61500(0x0044);
LCD_DataWrite_R61500((((x2&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_R61500(0x0045);
LCD_DataWrite_R61500((((y2&0xFF)<<8)|(y1&0xFF)));
LCD_CtrlWrite_R61500(0x0021);
LCD_DataWrite_R61500((((y1&0xFF)<<8)|(x1&0xFF)));
LCD_CtrlWrite_R61500(0x0022);
#endif
for(LCD_y=y1;LCD_y<=y2;LCD_y++)
{
for(LCD_x=x1;LCD_x<=x2;LCD_x++)
{
#if (defined(LCD_8BIT_MODE))
*((volatile unsigned char *) LCD_R61500_DATA_ADDR)=(kal_uint8)((data&0xFF00)>>8);
*((volatile unsigned char *) LCD_R61500_DATA_ADDR)=(kal_uint8)(data&0xFF);
#elif (defined(LCD_16BIT_MODE))
*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=data;
#elif (defined(LCD_18BIT_MODE))
*((volatile unsigned int *) LCD_R61500_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
// *((volatile unsigned int *) LCD_R61500_DATA_ADDR)=(kal_uint16) data;
#elif (defined(LCD_9BIT_MODE))
*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=(r_color<<6)|(g_color>>3);
*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
#endif
}
}
}
void LCD_ClearAll_R61500(kal_uint16 data)
{
LCD_blockClear_R61500(0,0,LCD_WIDTH-1,LCD_HEIGHT-1,data);
}
void LCD_set_reg(kal_uint16 reg_index, kal_uint16 reg_data)
{
LCD_CtrlWrite_R61500(reg_index);
LCD_DataWrite_R61500(reg_data);
}
//zy++ 20060428
#if 0
void LcdWriteCMD16Bit(U16 parameter)
{
U16 temp16;
temp16 = (TXD + ADS_LOW) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp16) = parameter;
asm(" nop");
asm(" nop");
}
void LcdWriteDATA16Bit(U16 parameter)
{
U16 temp16;
temp16 = (TXD + ADS_HIGH) << CPU16BITDATA;
*(volatile U16*)(LCD_Base + temp16) = parameter;
asm(" nop");
asm(" nop");
}
void Initialize_R61500(void)
{
/*
while(1)
{
LcdWriteCMD16Bit(0xaaaa);
LcdWriteDATA16Bit(0x5555);
}
*/
LcdWriteCMD16Bit(LCD_OSC_START_R61500);
LcdWriteDATA16Bit(0x0001);
//WaitTime_us(50000);
Delayms(50);
LcdWriteCMD16Bit(LCD_DIS_CTRL1_R61500);
LcdWriteDATA16Bit(0x0004);
//WaitTime_us(10000);
Delayms(10);
LcdWriteCMD16Bit(0x0014);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_POWER_CTRL2_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_POWER_CTRL3_R61500);
LcdWriteDATA16Bit(0x0008);
LcdWriteCMD16Bit(LCD_POWER_CTRL4_R61500);
LcdWriteDATA16Bit(0x0410);
LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500);
LcdWriteDATA16Bit(0x0004);
LcdWriteCMD16Bit(LCD_POWER_CTRL2_R61500 );
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_POWER_CTRL3_R61500 );
LcdWriteDATA16Bit(0x0018);
LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500 );
LcdWriteDATA16Bit(0x0064);
//WaitTime_us(10000);
Delayms(10);
LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500 );
LcdWriteDATA16Bit(0x0060);
LcdWriteCMD16Bit(LCD_POWER_CTRL4_R61500 );
LcdWriteDATA16Bit(0x2410);
//WaitTime_us(10000);
Delayms(10);
LcdWriteCMD16Bit(LCD_OUT_CTRL_R61500);
LcdWriteDATA16Bit(0x211B);
LcdWriteCMD16Bit(LCD_DRIVE_WAVE_CTRL_R61500);
LcdWriteDATA16Bit(0x0700);
LcdWriteCMD16Bit(LCD_ENTRY_MODE_R61500);
//LcdWriteDATA16Bit(0xD030);
LcdWriteDATA16Bit(0x1130);
LcdWriteCMD16Bit(LCD_CMP_REG1_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_CMP_REG2_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_DIS_CTRL1_R61500 );
LcdWriteDATA16Bit(0x0037);
LcdWriteCMD16Bit(LCD_DIS_CTRL2_R61500 );
LcdWriteDATA16Bit(0x0302);
LcdWriteCMD16Bit(LCD_DIS_CTRL3_R61500 );
LcdWriteDATA16Bit(0x0001);
LcdWriteCMD16Bit(LCD_FRAME_CTRL_R61500);
LcdWriteDATA16Bit(0x0083);
LcdWriteCMD16Bit(LCD_DRIVE_OUT_CTRL1_R61500);
LcdWriteDATA16Bit(0x0308);
LcdWriteCMD16Bit(LCD_DRIVE_OUT_CTRL2_R61500);
LcdWriteDATA16Bit(0x0308);
LcdWriteCMD16Bit(LCD_RAM_ADDRESS_SET_CTRL_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_RW_RAM_MASK1_R61500 );
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_RW_RAM_MASK2_R61500 );
LcdWriteDATA16Bit(0x0000);
/*Gamma control*/
LcdWriteCMD16Bit(LCD_GAMMA_CTRL1_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL2_R61500);
LcdWriteDATA16Bit(0x0507);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL3_R61500);
LcdWriteDATA16Bit(0x0200);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL4_R61500);
LcdWriteDATA16Bit(0x0300);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL5_R61500 );
LcdWriteDATA16Bit(0x0507);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL6_R61500);
LcdWriteDATA16Bit(0x0001);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL7_R61500);
LcdWriteDATA16Bit(0x0707);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL8_R61500);
LcdWriteDATA16Bit(0x0700);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL9_R61500);
LcdWriteDATA16Bit(0x1F01);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL10_R61500);
LcdWriteDATA16Bit(0x0A0F);
LcdWriteCMD16Bit(LCD_GAMMA_CTRL10_R61500);
LcdWriteDATA16Bit(0x0000);
LcdWriteCMD16Bit(LCD_VERTICAL_SCROLL_CTRL_R61500 );
LcdWriteDATA16Bit(0x0000);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -