初级会员

- 积分
- 183
- 金钱
- 183
- 注册时间
- 2013-12-3
- 在线时间
- 31 小时
|

楼主 |
发表于 2013-12-10 13:07:17
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
我明白了,,不过又有新的问题了。
#include"tft.h"
#include "stm32f10x_lib.h"
//====================================================================
void delay_ms(unsigned short time) //延时函数
{
unsigned short i,j;
for(i=0;i<time;i++)
for(j=0;j<10260;j++);
}
//====================================================================
void LCD_WR_REG(u16 cmd)
{
LCD_CS=0;
LCD_RS=0;
LCD_RD=1;
WRDATAOUT(cmd);
LCD_WR=0;
LCD_WR=1;
LCD_CS=1;
}
void LCD_WR_DATA(u16 data)
{
LCD_CS=0;
LCD_RS=1;
LCD_RD=1;
WRDATAOUT(data);
LCD_WR=0;
LCD_WR=1;
LCD_CS=1;
}
void LCD_WR_CMD_DATA(u16 cmd,u16 data )
{
LCD_WR_REG(cmd);
LCD_WR_DATA(data);
}
//-----------------------------------------------------------------------------
// 窗口设置子程序
//-----------------------------------------------------------------------------
void window_position(int Horizontal_start,int Horizontal_end,int Vertical_start,int Vertical_end)
{
LCD_WR_CMD_DATA(0x02, Horizontal_start); // Horizontal GRAM Start Address
LCD_WR_CMD_DATA(0x03, Horizontal_start); // Horizontal GRAM Start Address
LCD_WR_CMD_DATA(0x04, Horizontal_end); // Horizontal GRAM End Address
LCD_WR_CMD_DATA(0x05, Horizontal_end); // Horizontal GRAM End Address
LCD_WR_CMD_DATA(0x06, Vertical_start); // Vertical GRAM Start Address
LCD_WR_CMD_DATA(0x07, Vertical_start); // Vertical GRAM Start Address
LCD_WR_CMD_DATA(0x08, Vertical_end); // Vertical GRAM Start Address
LCD_WR_CMD_DATA(0x09, Vertical_end); // Vertical GRAM Start Address
LCD_WR_REG(0x22); // write data to GRAM
}
//-----------------------------------------------------------------------------
// 清屏
//-----------------------------------------------------------------------------
void Clear(void)
{
int i,j;
window_position(0,239,0,399);
for(i=0;i<240;i++)
{
for(j=0;j<400;j++)
{
LCD_WR_DATA(0xffff);
LCD_WR_REG(0x22);
}
}
}
void LCD_Init(void)
{
//****240*400 BOE+HX8352-C**///
delay_ms(10);
//Power Voltage Setting
LCD_WR_REG(0x001A); LCD_WR_DATA(0x0002); //BT
LCD_WR_REG(0x001B); LCD_WR_DATA(0x0088); //VRH
//****VCOM offset**///
LCD_WR_REG(0x0023); LCD_WR_DATA(0x0000); //SEL_VCM
LCD_WR_REG(0x0024); LCD_WR_DATA(0x005F); //VCM
LCD_WR_REG(0x0025); LCD_WR_DATA(0x0015); //VDV
LCD_WR_REG(0x002D); LCD_WR_DATA(0x0003); //NOW[2:0]=011
//Power on Setting
LCD_WR_REG(0x0018); LCD_WR_DATA(0x0004); //Frame rate 72Hz
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0001); //OSC_EN='1', start Osc
LCD_WR_REG(0x0001); LCD_WR_DATA(0x0000); //DP_STB='0', out deep sleep
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0088); //STB=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0080); //DK=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0090); //PON=1
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x00D0); //VCOMG=1
delay_ms(5);
//262k/65k color selection
LCD_WR_REG(0x0017); LCD_WR_DATA(0x0005); //default 0x06 262k color // 0x05 65k color
//SET  ANEL
LCD_WR_REG(0x0036); LCD_WR_DATA(0x0013); //REV_P, SM_P, GS_P, BGR_P, SS_P
/*LCD_WR_REG(0x0029); LCD_WR_DATA(0x0031); //400 lines
LCD_WR_REG(0x0071); LCD_WR_DATA(0x001A); //RTN*/
//Gamma 2.2 Setting
LCD_WR_REG(0x0040); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0041); LCD_WR_DATA(0x0045);
LCD_WR_REG(0x0042); LCD_WR_DATA(0x0045);
LCD_WR_REG(0x0043); LCD_WR_DATA(0x0004);
LCD_WR_REG(0x0044); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0045); LCD_WR_DATA(0x0008);
LCD_WR_REG(0x0046); LCD_WR_DATA(0x0023);
LCD_WR_REG(0x0047); LCD_WR_DATA(0x0023);
LCD_WR_REG(0x0048); LCD_WR_DATA(0x0077);
LCD_WR_REG(0x0049); LCD_WR_DATA(0x0040);
LCD_WR_REG(0x004A); LCD_WR_DATA(0x0004);
LCD_WR_REG(0x004B); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x004C); LCD_WR_DATA(0x0088);
LCD_WR_REG(0x004D); LCD_WR_DATA(0x0088);
LCD_WR_REG(0x004E); LCD_WR_DATA(0x0088);
//Set GRAM Area
LCD_WR_REG(0x0002); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0003); LCD_WR_DATA(0x0000); //Column Start
LCD_WR_REG(0x0004); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0005); LCD_WR_DATA(0x00EF); //Column End
LCD_WR_REG(0x0006); LCD_WR_DATA(0x0000);
LCD_WR_REG(0x0007); LCD_WR_DATA(0x0000); //Row Start
LCD_WR_REG(0x0008); LCD_WR_DATA(0x0001);//0001
LCD_WR_REG(0x0009); LCD_WR_DATA(0x008F); //Row End00AF
//Display ON Setting
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=1, DTE=1, D=10
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x003F); //GON=1, DTE=1, D=11
LCD_WR_REG(0x0022); //Start GRAM write
// Enter Sleep mode Setting
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=??DTE=??D[1:0]=?0?
delay_ms(40);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0089); // GAS=1, VOMG=0,  ON=0, DK=1, XDK=0, DVDH_TRI=0, STB=1
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0020); //GON=??DTE=??D[1:0]=?0?
delay_ms(40);
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0000); //OSC_EN=??
delay_ms(5);
// Exit Sleep mode Setting
LCD_WR_REG(0x0019); LCD_WR_DATA(0x0001); //OSC_EN='1', start Osc
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0088); //STB=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0080); //DK=0
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x0090); //PON=1
delay_ms(5);
LCD_WR_REG(0x001F); LCD_WR_DATA(0x00D0); //VCOMG=1
delay_ms(5);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x0038); //GON=1, DTE=1, D=10
delay_ms(40);
LCD_WR_REG(0x0028); LCD_WR_DATA(0x003F); //GON=1, DTE=1, D=11
LCD_WR_REG(0x22);
}
我这样初始化之后然后再清屏结果屏幕始终没反应,,怎么解啊!!!> |
|