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

📄 lcd_128_64.c

📁 C51液晶驱动程序
💻 C
字号:
//128*64 显示驱动程序
/* LCD 忙判断 */
void lcd_busy( void )             
{
	p_di=0;
	p_rw=1;
	P0=0xff;
	while(1)
	{
		p_e=1;
		if (P0<0x80) break;
		p_e=0;
	}
	p_e=0;
}
/* LCD 设置xy */
void set_xy(unsigned char x, unsigned char y)
{
	if (x>=64) 
	{
		p_csa=0;
		p_csb=1;
	}
	else
	{
		p_csa=1;
		p_csb=0;
	}
	lcd_busy();
	p_di=p_rw=0;
	P0=0x40|x;
	p_e=1; 
	p_e=0;
	lcd_busy();
	p_di=p_rw=0;
	P0=0xb8|y;
	p_e=1; 
	p_e=0;
	P0=0xff;
}
/* LCD 写数据 */
void lw(unsigned char x, unsigned char y, unsigned char dd)
{
	set_xy(x,y);
	lcd_busy();
	p_di=1;
	p_rw=0;
	P0=dd;
	p_e=1;
	p_e=0;
	P0=0xff;
}/* LCD 读数据 */
unsigned char lr(unsigned char x, unsigned char y)
{
	unsigned char dd;
	set_xy(x,y);
	lcd_busy();
	p_di=1;
	p_rw=1;
	P0=0xff;
	p_e=1;
	_nop_();
	dd=P0;
	p_e=0;
	return dd;
}
/* LCD 初始化 */
void lcd_init(void)
{
	unsigned char x,y;
	
	//复位 LCD
	p_rst=1;
	p_rst=0;
	_nop_();
	_nop_();
	_nop_();
	p_rst=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();

	//开显示
	p_e=0;
	p_di=p_rw=0;
	p_csa=p_csb=0;
	p_csa=1; P0=0x3f; p_e=1; p_e=0; p_csa=0;
	p_csb=1; P0=0x3f; p_e=1;p_e=0; p_csb=0;
	//0行开始显示
	p_csa=1; lcd_busy(); p_di=p_rw=0; P0=0xc0; p_e=1; p_e=0; p_csa=0;
	p_csb=1; lcd_busy(); p_di=p_rw=0; P0=0xc0; p_e=1; p_e=0; p_csb=0;
	for(y=0; y<8; y++)
	{
		for(x=0; x<128; x++)lw(x,y,0);
	}

}
/* 显示16*16汉字, fb==1:反白显示 */
void dh(unsigned char x, unsigned char y, unsigned char n, unsigned char fb)
{
	unsigned char i,dd;
	for (i=0; i<16; i++)
	{
		dd=hz[i+n*32];
		if (fb) if (n != 0xff) dd=255-dd;
		lw(x*8+i,y,dd);
		dd=hz[i+n*32+16];
		if (fb) if (n != 0xff) dd=255-dd;
		lw(x*8+i,y+1,dd);
	}
}
/* 显示8*16字符, fb==1:反白显示 */
void da(unsigned char x, unsigned char y, unsigned char n, unsigned char fb)
{
	unsigned char i,dd;
	n-=32;
	if (n>128)n=0;
	if (fb) dd=255;
	else dd=0;
	for (i=0; i<8; i++)
	{
		dd=asc[i+n*16];
		if (fb) dd=255-dd;
		lw(x*8+i,y,dd);
		dd=asc[i+n*16+8];
		if (fb) dd=255-dd;
		lw(x*8+i,y+1,dd);
	}
}
/* 显示8*8字符, fb==1:反白显示 */
void dx(unsigned char x, unsigned char y, unsigned char n, unsigned char fb)
{
	unsigned char i,dd;
	if (n>128)n=0;
	for (i=0; i<8; i++)
	{
		dd=xz[i+n*8];
		if (fb) dd=255-dd;
		lw(x*8+i,y+1,dd);
	}
}
/* 显示32*32图标, fb==1:反白显示 */
void dm(unsigned char x, unsigned char y, unsigned char n, unsigned char fb)
{
	unsigned char i,dd;
	if (n>128)n=0;
	for (i=0; i<32; i++)
	{
		dd=tb[i+n*128];
		if (fb) dd=255-dd;
		lw(x*8+i,y,dd);

		dd=tb[i+n*128+32];
		if (fb) dd=255-dd;
		lw(x*8+i,y+1,dd);

		dd=tb[i+n*128+64];
		if (fb) dd=255-dd;
		lw(x*8+i,y+2,dd);

		dd=tb[i+n*128+96];
		if (fb) dd=255-dd;
		lw(x*8+i+1,y+3,dd);
	}
}
/* 显示24*24汉字, fb==1:反白显示 */
void dhD(unsigned char x, unsigned char y, unsigned char n, unsigned char fb)
{
	unsigned char i,dd;
	if (n>128)n=0;
	for (i=0; i<24; i++)
	{
		dd=hzD[i+n*72];
		if (fb) dd=255-dd;
		lw(x*8+i,y,dd);

		dd=hzD[i+n*72+24];
		if (fb) dd=255-dd;
		lw(x*8+i,y+1,dd);

		dd=hzD[i+n*72+48];
		if (fb) dd=255-dd;
		lw(x*8+i,y+2,dd);
	}
}

⌨️ 快捷键说明

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