⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st75292.c

📁 一个液晶驱动程序(型号st7529)
💻 C
📖 第 1 页 / 共 3 页
字号:

	ST7529_8bitsWrite_Command(0x75);  // THIRD COMMAND SET LINE ADDRESS 
	ST7529_8bitsWrite_Data(0x00);  // START LINE
	ST7529_8bitsWrite_Data(0x9f);  // END  LINE
	HDT_Sleep(5);

	ST7529_8bitsWrite_Command(0x15);   // THIRD COMMAND SET COLUMN ADDRESS 
	ST7529_8bitsWrite_Data(0x00);  // START COLUMN
	ST7529_8bitsWrite_Data(0x54); // END  COLUMN
	HDT_Sleep(5);

   ST7529_8bitsWrite_Command(0x30);
   ST7529_8bitsWrite_Command(0x07); 
   ST7529_8bitsWrite_Data(0x19);

   ST7529_8bitsWrite_Command(0x31);
   ST7529_8bitsWrite_Command(0xcd);
   ST7529_8bitsWrite_Data(0x00);
   HDT_Sleep(20);
   HDT_Sleep(20);
   HDT_Sleep(20);
   ST7529_8bitsWrite_Command(0xfd);
   HDT_Sleep(20);
   HDT_Sleep(20);
   HDT_Sleep(20);
   ST7529_8bitsWrite_Command(0xcc); 
   
   //==================================================================================	
   ST7529_8bitsWrite_Command(0x30);
	 ST7529_8bitsWrite_Command( 0xee);	//RMW end
	 ST7529_8bitsWrite_Command( 0xa9);	//Partial display out

	 ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	 ST7529_8bitsWrite_Data( 0x08);		// parameter data0
	 for(i=0;i< 0x100000; i++);		// 
	 //for(i=0;i< 0x1000; i++);		    //2006.11.3 by zhangjiong 
	
	 ST7529_8bitsWrite_Command( 0xaf);	// Display On
   
   ST7529_8bitsWrite_Command(0x30);
   
   g_nDisplayHalfFlag = 0;
}
*/
/*
//------------------------------------------------------------------
void LCDInitialize() 
{
	int i,j;
	
	MBAR_CSAR1 = LCD_CS_BASE_ADDRESS;	//chip select address register 1
	MBAR_CSCR1 = LCD_CS_CTR;
	MBAR_CSMR1 = LCD_CS_MASK;
		
	ST7529_8bitsWrite_Command( 0x30);	// Ext=0   Ext In
	ST7529_8bitsWrite_Command( 0xa7);	// Inverse Display

	//DISCTRL: This command must be selected before using SLPOUT.
	//DISCTRL: Do not change this command while the display is turned on.
	ST7529_8bitsWrite_Command( 0xca);	// DISCTRL:Display Control	/// ???????????????????? 2006.07.22
	ST7529_8bitsWrite_Data( 0x04);		//0xe4 parameter data0
	ST7529_8bitsWrite_Data( 0x27);		//0xe7 parameter data1	//112 display lines
	ST7529_8bitsWrite_Data( 0x1a);		//0xf0 parameter data2	/0 line cycles // ?????????????????
//==================================================================================	
	ST7529_8bitsWrite_Command( 0xbc);	// DATSDR:Data Scan Direction // ????????????
	//ST7529_8bitsWrite_Data( 0x00);		// parameter data0
	ST7529_8bitsWrite_Data( 0x02);		//0xf8  parameter data0
	ST7529_8bitsWrite_Data( 0x01);		//0xfe  parameter data1
	ST7529_8bitsWrite_Data( 0x02);		//0xfa  parameter data2

	ST7529_8bitsWrite_Command( 0xbb);	// COM Scan Direction
	ST7529_8bitsWrite_Data( 0x01);		// 0→79 159→80
//==================================================================================	
	ST7529_8bitsWrite_Command( 0xee);	//RMW end
	ST7529_8bitsWrite_Command( 0xa9);	//Partial display out
	ST7529_8bitsWrite_Command( 0xd1);	//Internal OSC on

	ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x08);		// parameter data0
	for(i=0;i< 0x100000; i++);		// 
	//for(i=0;i< 0x1000; i++);		    //2006.11.3 by zhangjiong 
	ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x0b);		// parameter data0

	ST7529_8bitsWrite_Command( 0x81);	// VOLCTRL:EC control ????????? 2006.07.25
	ST7529_8bitsWrite_Data(0x28);		// parameter data0 0x38~0x1f
	ST7529_8bitsWrite_Data( 0x04);		// parameter data1

	ST7529_8bitsWrite_Command( 0x94);	// Sleep Out
	ST7529_8bitsWrite_Command( 0xaf);	// Display On

	ST7529_8bitsWrite_Command( 0x30);
    
    g_nDisplayHalfFlag = 0;
}
*/

//------------------------------------------------------------------
void LCDInitialize() 
{
	MBAR_CSAR1 = LCD_CS_BASE_ADDRESS;	//chip select address register 1
	MBAR_CSCR1 = LCD_CS_CTR;
	MBAR_CSMR1 = LCD_CS_MASK;
	
	ST7529_8bitsWrite_Command(0x30);	// Ext=0   Ext In
	ST7529_8bitsWrite_Command(0x94);	// Sleep Out
	ST7529_8bitsWrite_Command(0xd1);	//Internal OSC on
	HDT_Sleep(1);
	ST7529_8bitsWrite_Command(0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data(0x0b);		// parameter data0,TURN ON BOOSTER AND REFERENCE VOLTAGE GENERATION CIRCUIT ;0bh

	ST7529_8bitsWrite_Command(0x81);	// VOLCTRL:EC control ????????? 2006.07.25
	ST7529_8bitsWrite_Data(0x1f);		// parameter data0 0x38~0x1f
	ST7529_8bitsWrite_Data(0x04);		// parameter data1
	HDT_Sleep(5);
	//DISCTRL: This command must be selected before using SLPOUT.
	//DISCTRL: Do not change this command while the display is turned on.
	ST7529_8bitsWrite_Command(0xca);	// DISCTRL:Display Control	/// ???????????????????? 2006.07.22
	//ST7529_8bitsWrite_Data(0x04);		//0xe4 parameter data0
	ST7529_8bitsWrite_Data(0x04);		//0xe4 parameter data0
	ST7529_8bitsWrite_Data(0x27);		//0xe7 parameter data1	//112 display lines
	ST7529_8bitsWrite_Data(0x00);		//0xf0 parameter data2	/0 line cycles // ?????????????????
	
	ST7529_8bitsWrite_Command(0xa7);	// Display Normal
	
	ST7529_8bitsWrite_Command(0xbb);	// COM Scan Direction
	ST7529_8bitsWrite_Data(0x01);		// 0→79 159→80

	ST7529_8bitsWrite_Command( 0xbc);	// DATSDR:Data Scan Direction // ????????????
	ST7529_8bitsWrite_Data( 0x02);		//0xf8  parameter data0
	ST7529_8bitsWrite_Data( 0x01);		//0xfe  parameter data1
	ST7529_8bitsWrite_Data( 0x02);		//0xfa  parameter data2

	ST7529_8bitsWrite_Command( 0x75);	// 
	ST7529_8bitsWrite_Data( 0x00);		// 
	ST7529_8bitsWrite_Data( 0x9f);		// 
	ST7529_8bitsWrite_Command( 0x15);	// 
	ST7529_8bitsWrite_Data( 0x00);		// 
	ST7529_8bitsWrite_Data( 0x54);		// 
	
	ST7529_8bitsWrite_Command(0x31); // EXT=1
	
	ST7529_8bitsWrite_Command(0x32); //ANALOG CIRCUIT SET 
	//ST7529_8bitsWrite_Data(0x03);		//OSC FREQUENCEY ADJUSTMENT
	//ST7529_8bitsWrite_Data(0x01);		//BOOSTER EFFICIENCY SET
	//ST7529_8bitsWrite_Data(0x00);		//BIAS SETTING 
	ST7529_8bitsWrite_Data(0x00);		//OSC FREQUENCEY ADJUSTMENT
	ST7529_8bitsWrite_Data(0x01);		//BOOSTER EFFICIENCY SET
	ST7529_8bitsWrite_Data(0x00);		//BIAS SETTING 
	//HDT_Sleep(10);

	/*	
	ST7529_8bitsWrite_Command(0x22); //WEIGHTING
	ST7529_8bitsWrite_Data(0x03);   // WEIGHTING VALUE
	ST7529_8bitsWrite_Data(0x02);   // EDGE VALUE
	ST7529_8bitsWrite_Data(0x00);   // ENABLE FLAG
	*/

	ST7529_8bitsWrite_Command(0x34);   //DITHERER OFF
	//HDT_Sleep(10);
/*
	ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x00);	
	ST7529_8bitsWrite_Data( 0x03);	
	ST7529_8bitsWrite_Data( 0x06);	
	ST7529_8bitsWrite_Data( 0x09);		
	ST7529_8bitsWrite_Data( 0x0B);	
	ST7529_8bitsWrite_Data( 0x0D);	
	ST7529_8bitsWrite_Data( 0x0E);	
	ST7529_8bitsWrite_Data( 0x0F);		
	ST7529_8bitsWrite_Data( 0x10);	
	ST7529_8bitsWrite_Data( 0x11);	
	ST7529_8bitsWrite_Data( 0x12);	
	ST7529_8bitsWrite_Data( 0x14);		
	ST7529_8bitsWrite_Data( 0x16);	
	ST7529_8bitsWrite_Data( 0x18);	
	ST7529_8bitsWrite_Data( 0x1B);	
	ST7529_8bitsWrite_Data( 0x1F);		
	
	ST7529_8bitsWrite_Command( 0x21);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x00);	
	ST7529_8bitsWrite_Data( 0x03);	
	ST7529_8bitsWrite_Data( 0x06);	
	ST7529_8bitsWrite_Data( 0x09);		
	ST7529_8bitsWrite_Data( 0x0B);	
	ST7529_8bitsWrite_Data( 0x0D);	
	ST7529_8bitsWrite_Data( 0x0E);	
	ST7529_8bitsWrite_Data( 0x0F);		
	ST7529_8bitsWrite_Data( 0x10);	
	ST7529_8bitsWrite_Data( 0x11);	
	ST7529_8bitsWrite_Data( 0x12);	
	ST7529_8bitsWrite_Data( 0x14);		
	ST7529_8bitsWrite_Data( 0x16);	
	ST7529_8bitsWrite_Data( 0x18);	
	ST7529_8bitsWrite_Data( 0x1B);	
	ST7529_8bitsWrite_Data( 0x1F);		
*/
/*	
	ST7529_8bitsWrite_Command( 0x30);	
//==================================================================================	
	ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x08);		// parameter data0
	HDT_Sleep(5);		// 
	//for(i=0;i< 0x1000; i++);		    //2006.11.3 by zhangjiong 
	ST7529_8bitsWrite_Command( 0x20);	// PWRCTRL:Power Control
	ST7529_8bitsWrite_Data( 0x0b);		// parameter data
		
	ST7529_8bitsWrite_Command(0x30);
   ST7529_8bitsWrite_Command(0x07); 
   ST7529_8bitsWrite_Data(0x19);

   ST7529_8bitsWrite_Command(0x31);
   ST7529_8bitsWrite_Command(0xcd);		//control e2p
   ST7529_8bitsWrite_Data(0x00);
   HDT_Sleep(20);
   HDT_Sleep(20);
   HDT_Sleep(20);
   ST7529_8bitsWrite_Command(0xfd);
   HDT_Sleep(20);
   HDT_Sleep(20);
   HDT_Sleep(20);
   ST7529_8bitsWrite_Command(0xcc); 
//==================================================================================	
	ST7529_8bitsWrite_Command( 0x30);
	ST7529_8bitsWrite_Command( 0xee);	//RMW end
	ST7529_8bitsWrite_Command( 0xa9);	//Partial display out
	ST7529_8bitsWrite_Command( 0xd1);	//Internal OSC on

	ST7529_8bitsWrite_Command( 0x94);	// Sleep Out
	*/

	ST7529_8bitsWrite_Command( 0x30);
	ST7529_8bitsWrite_Command( 0xaf);	// Display On
    
    g_nDisplayHalfFlag = 0;
}

//------------------------------------------------------------------
///////////////////LCD的点测试程序/////////////////////
void HDT_DisplayPoint(unsigned char ucData)
{
    unsigned  char i=0,j=0,k=0;
    ST7529_8bitsWrite_Command(0x30); //EXT=0

		//ST7529_8bitsWrite_Command(0x75);   //THIRD COMMAND SET LINE ADDRESS 
		//ST7529_8bitsWrite_Data(0x00);     //START LINE
		//ST7529_8bitsWrite_Data(0x9f);    //END  LINE

	  //ST7529_8bitsWrite_Command(0x15);   //THIRD COMMAND SET COLUMN ADDRESS 
		//ST7529_8bitsWrite_Data(0x00);      //START COLUMN 
		//ST7529_8bitsWrite_Data(0x54);      //END  COLUMN 设定行从0行开始到159行结束

		ST7529_8bitsWrite_Command(0x5C);  //DATA WRITE 
		
		for(i=0;i<160;i++)
		{
				for(j=0;j<162;j++)
				{
						ST7529_8bitsWrite_Data(i);//i->ucData????????
						//HDT_Sleep(1);
				}
				//HDT_Sleep(3);
		}
}

//=====================================================
void fontFormatConvert(const uint8 * souPtr, uint16 * const desPtr, const uint16 fontColor, const uint16 backColor )
{
    int i = 0;	//col
	int j = 0;	//row
	int k = 0;
	
	uint8 loop; 
	uint8 temp;
	
	for(; k < 32; k++)
	{
		loop = 0x80;
		temp = *(souPtr + k);
		
		for(j = 0; j< 8; j++, i++)
		{
			if((temp & loop) == loop)
				*(desPtr + i) = fontColor;
			else 
				*(desPtr + i) = backColor;

			loop  = loop >> 1;
		}
	}
}
//==================================================================
//==================================================================

void fontFormatConvertASCII(const uint8 * souPtr, uint16 * const desPtr, const uint16 fontColor, const uint16 backColor )
{

	int i = 0;	//col
	int j = 0;	//row
	int k = 0;
	
	uint8 loop; 
	uint8 temp;
	for(; k < 16; k++)
	{
		loop = 0x80;
		temp = *(souPtr + k);
		
		for(j = 0; j< 8; j++, i++)
		{
			if((temp & loop) == loop)
				*(desPtr + i) = fontColor;
			else 
				*(desPtr + i) = backColor;

			loop  = loop >> 1;
		}
	}
}

//------------------------------------------------------------------

unsigned char *fontC(unsigned short hi, unsigned short lo)
{
    unsigned short  index;
    unsigned short  qh,wh;
    unsigned long   offset;
	unsigned char  *font_gb;
	font_gb = (unsigned char*) 0x30700000;

	if (hi == 0x00 && lo < 128)
		return font_ASCII+((lo-1)<<4);

	if (hi < 0xa0 || lo < 0xa0)
		return font_none;

	qh = hi-0xa0;
	wh = lo-0xa1;
	offset = (94 * qh + wh) << 5;

    return font_gb + offset;
}

unsigned char *fontC_8x8(unsigned short hi, unsigned short lo)
{

	return font_ASCII_8x8+((lo)<<3);
}


//==================================================================

uint8 DisplayFont(const uint16 posRow, const uint16 posCol, const uint16 fontIndex, const uint16 fontColor, const uint16 backColor)
{
	static uint16 fontBuff[FONT_WIDE][FONT_HEIGHT];	
	
	uint8 *fontLibPtr;
	unsigned char	*fontptr;
	uint16 * fontBuffPtr = fontBuff;
	sCharacterInfo charInfo, *charInfoPtr;

	uint16 hi, lo;

	int i;

	charInfoPtr = & charInfo;

 	hi=fontIndex>>8;
 	lo=fontIndex&0xff;

	fontLibPtr =fontC(hi, lo);

	fontFormatConvert(fontLibPtr, fontBuffPtr, fontColor, backColor);

	FillDisplayBuffer(fontBuffPtr, posCol);

	return charInfoPtr->wide;
}
//------------------------------------------------------------------
uint8 DisplayFontASCII(const uint16 posRow, const uint16 posCol, const uint16 fontIndex, const uint16 fontColor, const uint16 backColor)
{
	static uint16 fontBuff[FONT_WIDE][FONT_HEIGHT];	
	
	uint8 *fontLibPtr;
	uint16 * fontBuffPtr = fontBuff;
	sCharacterInfo charInfo, *charInfoPtr;
	uint16 hi, lo;

	int i;

	charInfoPtr = & charInfo;

 	hi=fontIndex>>8;
 	lo=fontIndex&0xff;

	fontLibPtr = fontC(hi, lo);

	fontFormatConvertASCII(fontLibPtr, fontBuffPtr, fontColor, backColor);

	FillDisplayBufferASCII(fontBuffPtr, posCol);

	return charInfoPtr->wide;
}


//---------------------------------------------------------------------------
//===========================================================================

void vDisplayUnicodeText(uint16 row, uint16 col, char *pcDisplayString,const uint16 fontColor, const uint16 backColor)
{
	register uint16      i = 0;
	
	uint16 m,n,mm;
	
	uint16 f_Colot = fontColor;
	uint16 b_Colot = backColor;

	uint8 characterWide;
	mm = 0;
	m = row;
	n = col;

	for(i=0; i<256*16;i++)
	{
		Line_Display_Buffer[i]=0x00;
	}

    while ((*pcDisplayString) != '\0')
    {
        if ((unsigned char)(*pcDisplayString) < 0x80)
        {
		characterWide = DisplayFontASCII(row, mm, (unsigned short) *pcDisplayString, f_Colot, b_Colot);
		pcDisplayString++;
		col += 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -