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

📄 ks0108.#2

📁 171544C8051F020应用程序包.rar
💻 #2
📖 第 1 页 / 共 2 页
字号:
};

#define SELECTCS 0
void LCD_WaitReady1(void) //判断LCD控制芯片KS0108是否忙
{
	LCD_DATA=0xff;
	_nop_();
	LCD_CS2=SELECTCS;
	LCD_RW=1;
	LCD_RS=0;
	LCD_E=1;
	while (LCD_DATA&0x80);
	LCD_CS2=!SELECTCS;
}

void LCD_WaitReady2(void) //判断LCD控制芯片KS0108是否忙
{
	LCD_DATA=0xff;
	_nop_();
	LCD_CS1=SELECTCS;
	LCD_RW=1;
	LCD_RS=0;
	LCD_E=1;
	while (LCD_DATA&0x80);
	LCD_CS1=!SELECTCS;
}

void LCD_WriteCommand1(char ch) //向LCD控制芯片KS0108发送控制命令
{
	LCD_WaitReady1();
	LCD_CS2=SELECTCS;
	LCD_RW=0;
	LCD_RS=0;
	LCD_DATA=ch;
	LCD_E=1;
	LCD_E=0;
	LCD_CS2=!SELECTCS;
}

void LCD_WriteCommand2(char ch)	//向LCD控制芯片KS0108发送控制命令
{
	LCD_WaitReady2();
	LCD_CS1=SELECTCS;
	LCD_RW=0;
	LCD_RS=0;
	LCD_DATA=ch;
	LCD_E=1;
	LCD_E=0;
	LCD_CS1=!SELECTCS;
}

void LCD_WriteData1(char ch)	//向LCD控制芯片KS0108发送数据命令
{
	LCD_WaitReady1();
	LCD_CS2=SELECTCS;
	LCD_RW=0;
	LCD_RS=1;
	LCD_DATA=ch;
	LCD_E=1;
	LCD_E=0;
	LCD_CS2=!SELECTCS;
}

void LCD_WriteData2(char ch)	//向LCD控制芯片KS0108发送数据命令
{
	LCD_WaitReady2();
	LCD_CS1=SELECTCS;
	LCD_RW=0;
	LCD_RS=1;
	LCD_DATA=ch;
	LCD_E=1;
	LCD_E=0;
	LCD_CS1=!SELECTCS;
}

/*--  文字:  汉  --*/
char code Han[]=
{
0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00,
};
/*--  文字:  字  --*/
char code Zi[]=
{
0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
};

void LCD_WriteHZ(char x,char y,char *Dot) //显示16*16点阵汉字
{
char i;
	for (i=0;i<32;i++)
	{
		if ((x+i%16)<64)
		{
			LCD_WriteCommand1(0xB8+y+i/16);
			LCD_WriteCommand1(0x40+x+i%16);
			LCD_WriteData1(Dot[i]);
		}
		else
		{
			LCD_WriteCommand2(0xB8+y+i/16);
			LCD_WriteCommand2(0x40+x-64+i%16);
			LCD_WriteData2(Dot[i]);
		}
	}
}

char code Number[]=
/*--  文字:  0123456789:/  --*/
{
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x07,0x08,0x10,0x10,0x08,0x07,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x0C,0x10,0x10,0x10,0x11,0x0E,0x00,
0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x00,0x00,0x03,0x02,0x12,0x1F,0x12,0x12,0x00,
0x00,0xF8,0x88,0x48,0x48,0x48,0x88,0x00,0x00,0x0C,0x10,0x10,0x10,0x10,0x0F,0x00,
0x00,0xE0,0x10,0x88,0x88,0x98,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,
0x00,0xF0,0x08,0x08,0x08,0x90,0xE0,0x00,0x00,0x00,0x19,0x11,0x11,0x08,0x07,0x00,
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x60,0x1C,0x02,0x00,0x00,0x30,0x0C,0x03,0x00,0x00,0x00,0x00,
};


void LCD_WriteChar(char x,char y,char *Dot) //显示8*16点阵字符
{
char i;
	for (i=0;i<16;i++)
	{
		if ((x+i%8)<64)
		{
			LCD_WriteCommand1(0xB8+y+i/8);
			LCD_WriteCommand1(0x40+x+i%8);
			LCD_WriteData1(Dot[i]);
		}
		else
		{
			LCD_WriteCommand2(0xB8+y+i/8);
			LCD_WriteCommand2(0x40+x-64+i%8);
			LCD_WriteData2(Dot[i]);
		}
	}
}

void LCD_DispChar(char x,char y,char ch) //128*64  取值x=0-128 y=0-8
{
	if ((ch>=0)&&(ch<=9))
	{
		LCD_WriteChar(x,y,&Number[ch*16]);
	}
}

void InitLCD(void)	//初始化LCD
{
	char i,j;
	LCD_RST=0;
	Delay1ms(1);
	LCD_RST=1;

	LCD_WriteCommand1(0xc0);	
	LCD_WriteCommand2(0xc0);
	LCD_WriteCommand1(0x3f);  	//开显示
	LCD_WriteCommand2(0x3f);

	for (j=0;j<8;j++)			//清屏
	{
		LCD_WriteCommand1(0xB8+j);	//清左半屏
		LCD_WriteCommand1(0x40);
		for (i=0;i<64;i++)
			LCD_WriteData1(0x00);

		LCD_WriteCommand2(0xB8+j);	//清右半屏
		LCD_WriteCommand2(0x40);
		for (i=0;i<64;i++)
			LCD_WriteData2(0x00);
	}
}

void DispBmp(char *buf)	//显示一幅位图
{
int i,j;
	for (j=0;j<8;j++)			//显示位图
	{
		LCD_WriteCommand1(0xB8+j);	
		LCD_WriteCommand1(0x40);
		for (i=0;i<64;i++)
			LCD_WriteData1(buf[(j*2)*64+i]);
		LCD_WriteCommand2(0xB8+j);	
		LCD_WriteCommand2(0x40);
		for (i=0;i<64;i++)
			LCD_WriteData2(buf[(j*2+1)*64+i]);
	}
}

void Delay1s(unsigned char T);
void TestLCD(void)
{
char i;
	InitLCD();
	DispBmp(screen);
	for (i=0;i<64;i++)
	{
		Delay1ms(50);
		LCD_WriteCommand1(0xc0+i%64);	//设置起始行,实现向上滚动
		LCD_WriteCommand2(0xc0+i%64);
	}
	Delay1s(3);
	for (;;)
	{
		DispBmp(screen1);
		Delay1s(3);
		DispBmp(screen2);
		Delay1s(3);
		InitLCD();
		LCD_WriteHZ(2,1,Han); //显示16*16点阵汉字'汉'
		LCD_WriteHZ(60,3,Zi); //显示16*16点阵汉字'字'
		Delay1s(3);
	}
}


⌨️ 快捷键说明

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