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

📄 hzcl.c

📁 一个用51单片机驱动12864LCD的例子
💻 C
字号:
/************************UCDOS的HZK16汉字点阵为横向,在LGM12641中显示为乱码,
        必须对其处理,此文件实现功能:汉字点阵处理,汉字在LCD上显示方式*****/

uchar a,b;     //中间变量
uchar graph8[8];//1/4汉字点阵暂存数组
uchar graph32[32];//全汉字点阵数组,graph32存放了完整的经过调整的16*16汉字点阵


/***********写汉字子函数,使LCD按4行,8列方式显示
	word[]为32位数组,包含16*16汉字点阵信息。
	i为行(取值范围0-3)。
	j为列(取值范围0-7)。
	reverse=1表示所显示的汉字反色(黑底白字),=0则正常显示(白底黑字)********************/          
void wrhz(uchar word[],uchar i,uchar j,bit reverse)
{
	uchar k,z,s;
	setp(i*2);//LCD的页数刚好是汉字行数的2倍,即汉字第0行是从第零页开始,汉字第1行是从第二页开始
//	if(reverse)
//	{
//	 for (s=0;s<32;s++) {word[s]=~word[s];};
//	}					//这里我想反色,但怎么也调试不过,请各位高手指点
	if(j>=4)
	{
		j=j-4;
		k=2;//从第4个汉字以后,就是写入右半屏了
	}
	else
	{
		k=1;
	}
	setc(j*16);
	for(z=0;z<16;z++)
	{
		wrd(word[z],k);
	}//先写左上、右上的16字节
	setp(i*2+1);
	setc(j*16);
	for(z=0;z<16;z++)
	{
		wrd(word[(z+16)],k);
	}//再写左下,右下的16字节
}


/************1/4汉字点阵生成函数
	功能:给定汉字的地址,则读出汉字,
	把HZK16的点阵格式转换为本LCD的显示格式**********/
//输入:被读取点阵的起始地址
//输出:修改全局变量graph8[]

void hzof(uchar xdata *addc,uchar offset)
{
	uchar word[8];		 //中间变量
	uchar map[8];		  //中间变量
	uchar xdata *bddc;	  //中间变量
	
	uchar i;
	uchar j;
	uchar k;			   //中间变量
	for(i=0;i<8;i++)
		{
			graph8[i]=0;
		}
	bddc=addc+offset;
	for(i=0;i<8;i++)
	{
		word[i]=*bddc;
		bddc=bddc+2;
	}//把第0、2、4、6、8、10、12、14字节(即一个汉字的左上角部分)读出,暂存于word[]中
	for(j=0;j<8;j++)
		for(k=0;k<8;k++)
		{
			map[k]=word[k]<<j;
			map[k]=map[k]>>7;
			map[k]=map[k]<<k;
			graph8[j]=graph8[j]+map[k];
		}//将word[]”转置,存放于graph8[]中
}

/**********************生成一个完整的汉字点阵*********/
//输出:修改全局变量graph32[],graph[]存放点阵的顺序是左上、右上、左下、右下(各8字节,共32字节)

char* hz32(uchar xdata *addc)
{
	uchar i;
	hzof(addc,0);
	for(i=0;i<8;i++)
	{
		graph32[i]=graph8[i];
	}
	hzof(addc,1);
	for(i=0;i<8;i++)
	{
		graph32[i+8]=graph8[i];
	}
	hzof(addc,16);
	for(i=0;i<8;i++)
	{
		graph32[i+16]=graph8[i];
	}
	hzof(addc,17);
	for(i=0;i<8;i++)
	{
		graph32[i+24]=graph8[i];
	}
	
	return graph32;
}

⌨️ 快捷键说明

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