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

📄 hg16016005t.c

📁 这是sitronix(台湾省公司)lcd驱动ic被应用在51低速单片机上的代码。
💻 C
📖 第 1 页 / 共 2 页
字号:
	WR_PORT	=0;

	WR_PORT	=1;

	CS_PORT=1;
}

//Write Display RAM Data
#pragma disable
void wr_dat(uchar dat)
{

	RS_PORT	=1;

	WR_PORT	=1;

	RD_PORT	=1;

	CS_PORT	=0;

	DataPort = dat;

	WR_PORT	=0;

	WR_PORT	=1;

	CS_PORT=1;

}

/*******************************************************************************
*
*	函数名称	:	ST7529Ini(void)
*   功能描述	:	初始化控制器
*   函数说明	:
*	调用函数	:	无
*   全局变量	:	无
*	输入参数	:	无
*	返回值		:   无
*   设计者		:  	Joshua Chiang
*   修改者		:  	--
*	版本号		:  	1.0
*
*******************************************************************************/
#pragma disable
void ST7529Ini(void)
{
	wr_cmd(0X30); 	//EXT=0
	wr_cmd(0X94); 	//SLEEP OUT
	wr_cmd(0XD1); 	//OSC ON

	wr_cmd(0x20);	//POWER CONTROL SET
	wr_dat(0X0B);	//BOOSTER ON

	wr_cmd(0x81);	//ELECTRONIC CONTROL
	wr_dat(0X30);	//DL
	wr_dat(0X04);	//DH

	wr_cmd(0xCA);	//DISPLAY CONTROL
	wr_dat(0X04);	//CLD=0,NOT DIVIDE
	wr_dat(0X27);	//1/160 DUTY 39
	wr_dat(0X00);	//FR

	wr_cmd(0xA7); 	//Reverse display

	wr_cmd(0xBB); 	//COM SCAN DIRECTION
	wr_dat(0X02); 	//C79->C0,C80->C159

   	wr_cmd(0xBC);	//Data Scan Direction
	wr_dat(0X00);
	wr_dat(0X00);	//CLR=0
	wr_dat(0X02);	//32 Gray-scale 3byte 3pixel mode

	wr_cmd(0x75);	//Line address set
	wr_dat(0x00);	//Start Line
	wr_dat(0x9F);	//End Line

	wr_cmd(0x15);	//Column address set
	wr_dat(0x00);	//Start Column
	wr_dat(0x35);	//End Column

	wr_cmd(0x31); 	//ext=1
	wr_cmd(0x32);	//Analog circuit set
	wr_dat(0X07);	//FR=12.7KHZ
	wr_dat(0X02);	//Booster FR=6KHZ
	wr_dat(0X01);	//1/11bias

	wr_cmd(0x34);	//Dithering off
	wr_cmd(0x30);	//EXT=0
	wr_cmd(0xAF);	//DISP ON
        }

//Write Data To DDRAM
#pragma disable
void disp_dots(uchar dat1,uchar dat2)
{
	uchar uc_RowCnt,uc_ColCnt;
	wr_cmd(0x30);//EXT=0

	wr_cmd(0x75);	//Line address set
	wr_dat(0x00);	//Start Line
	wr_dat(0x9F);	//End Line

	wr_cmd(0x15);	//Column address set
	wr_dat(0x00);	//Start Column
	wr_dat(0x35);	//End Column

	wr_cmd(0X5C);//Write data to DDRAM

	for (uc_RowCnt=0;uc_RowCnt<80;uc_RowCnt++)
	{
		for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
		{
				wr_dat(dat1);
				wr_dat(dat1);
				wr_dat(dat1);
		};

	    for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
		{
				wr_dat(dat2);
				wr_dat(dat2);
				wr_dat(dat2);
		};
	};

	delayms();
}

//Write Data To DDRAM
#pragma disable
void disp_dots2(uchar dat1,uchar dat2,uchar dat3)
{
	uchar uc_RowCnt,uc_ColCnt;
	wr_cmd(0x30);//EXT=0

	wr_cmd(0x75);	//Line address set
	wr_dat(0x00);	//Start Line
	wr_dat(0x9F);	//End Line

	wr_cmd(0x15);	//Column address set
	wr_dat(0x00);	//Start Column
	wr_dat(0x35);	//End Column

	wr_cmd(0X5C);//Write data to DDRAM

	for (uc_RowCnt=0;uc_RowCnt<160;uc_RowCnt++)
		for (uc_ColCnt=0;uc_ColCnt<54;uc_ColCnt++)
		{
			wr_dat(dat1);
			wr_dat(dat2);
			wr_dat(dat3);
		};

	delayms();
}

#pragma disable
void disp_dots3(uchar dat1,uchar dat2,uchar dat3)
{
	uchar uc_ColCnt;

    wr_dat(dat1);

	for (uc_ColCnt=0;uc_ColCnt<158;uc_ColCnt++)
		wr_dat(dat2);

	wr_dat(dat3);
	wr_dat(0x00);
	wr_dat(0x00);
}

//Draw Border
#pragma disable
void disp_bord(void)
{
    uchar uc_RowCnt;

	wr_cmd(0x30);//EXT=0

	wr_cmd(0x75);	//Line address set
	wr_dat(0x00);	//Start Line
	wr_dat(0x9F);	//End Line

	wr_cmd(0x15);	//Column address set
	wr_dat(0x00);	//Start Column
	wr_dat(0x35);	//End Column

	wr_cmd(0x5C);//Write data to DDRAM

	disp_dots3(0xFF,0xFF,0xFF);

	for(uc_RowCnt=0;uc_RowCnt<158;uc_RowCnt++)
		disp_dots3(0xFF,0x00,0xFF);

	disp_dots3(0xFF,0xFF,0xFF);

	delayms();

}

#pragma disable
void disp_bmp(xchar *bmparea)
{
	uchar uc_RowCnt,uc_ColCnt;
	uchar uc_CharCode,uc_BitCnt;

	wr_cmd(0x30);//EXT=0

	wr_cmd(0x75);	//Line address set
	wr_dat(0x00);	//Start Line
	wr_dat(0x9F);	//End Line

	wr_cmd(0x15);	//Column address set
	wr_dat(0x00);	//Start Column
	wr_dat(0x35);	//End Column

	wr_cmd(0X5C);//Write data to DDRAM

	for(uc_RowCnt=0;uc_RowCnt<160;uc_RowCnt++)
	{
		for(uc_ColCnt=0;uc_ColCnt<20;uc_ColCnt++)
		{
			uc_CharCode =  *bmparea++;
																						for(uc_BitCnt=0;uc_BitCnt<8;uc_BitCnt++)
																						{
																							if((uc_CharCode&0x80) == 0)
																								wr_dat(0x00);
																							else
																								wr_dat(0xFF);
																			        //仅仅点亮panel上面的一个点---需要一个byte
																							uc_CharCode =uc_CharCode <<1;
																						}
		};
		wr_dat(0x00);
		wr_dat(0x00);
	};
	delayms();
}

void main()
{

	EA=1; //Interurupt Enabled

	IT0 = 1;//INT0 Low Level Trigger

	EX0 = 1;//INT0 Enabled

	RST_PORT = 0;
	delay();
	delay();

	RST_PORT = 1;
	delay();
	delay();

	ST7529Ini();

	while (1)
	{
		disp_dots(0xFF,0xFF); //All Dots Display

		disp_dots(0x00,0x00); //Clear Screen

		disp_dots(0xFF,0x00); //Seperate Rows I

		disp_dots(0x00,0xFF); //Seperate Rows II

		disp_dots2(0xFF,0xFF,0x00); //Seperate Rows I

		disp_dots2(0x00,0xFF,0xFF); //Seperate Rows II

		disp_bord();//Display The Border

		disp_dots(0x00,0x00); //Clear Screen

		disp_bmp(HTDISPLAY);//Display The Corp Name
	}

}

⌨️ 快捷键说明

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