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

📄 char._h

📁 薔介绍单片机的彩色液晶显示器开发里程。手把手
💻 _H
📖 第 1 页 / 共 2 页
字号:
//液晶字符、汉字输出
//液晶显示基本函数
/***********************************************************************
公司名称:  泰克通信
模 块 名: 液晶显示字符、汉字输出           LCD 型号:NHC-01 
创 建 人:        输入输出模块组            日期:2004-03-17
修 改 人:        输入输出模块组            日期:2004-03-23 
功能描述: 1、输出汉字
           2、输出英文字符、数字
           3、输出字符串,可以包含数字及几个标点
其他说明: 本程序在atmag128和nhc-01上调试通过
版 本:    alpha 0.01
**********************************************************************/

void hz_write(char x,char y,char *hz,char color);//将输入的黑白格式转换为给lcd可以识别的彩色字模
void hanzi(char x,char y,char *hz,char color,char bs);//按照列位置显示任意大小颜色的字符
void lettershow(char x,char y,char *hz,char color);//按照列位置显示任意大小颜色的字符
void showchar(char x,char y,char a,char letter,char color);//在任意位置显示a所表示的值
void showchars(char x,char y,char *a,char letter,char color);//在任意位置显示字符串a所表示的值
void showallhz(void);//显示液晶上所有的汉字



/***************汉字显示,显示整个汉字*********************/

void hanzi(char x,char y,char *hz,char color,char bs)
{
	unsigned char i,j;
	for(i=0;i<bs*8;i++)//一共有bs×8行的点阵
	{
		for(j=0;j<bs;j++)//每行有bs个点位
		{
			hz_write(x,y,hz,color);//写入该点位的八个点
			hz++;//hz存放黑白字模的数组
			x++;
		}
		x-=bs;//返回字的行首
		y++;//进入下一行
	}
}
/***************汉字显示,显示汉字的一个字节位*********************/
void hz_write(char x,char y,char *hz,char color)
{
	char i,j,k;
	char buffer1,buffer2,buffer3;
	read(x,y,&buffer1,&buffer2,&buffer3);
	i=*hz;
	for(j=8;*hz&&j>0;j--)//判断每位的值,看其对应的点是否存在,存在则修改其颜色值。
	{
		i=*hz&(1<<(j-1));
        	if(i==0x80)//判断第一位是否存在
        	   {  
        	      buffer1 &= 0x1f;
        	      buffer1 |=(color<<5);
        	   }
        	else if (i==0x40)//判断第二位是否存在
        	   {
        	      buffer1 &= 0xe3;
        	      buffer1 |=(color<<2);
        	   }
        	else if (i==0x20)//判断第三位是否存在
        	   {
        	      buffer1 &= 0xfc;
        	      buffer1 |=(color>>1);
        	      buffer2 &= 0x7f;
        	      buffer2 |=(color<<7);
        	   }
        	else if (i==0x10)//判断第四位是否存在
        	   {
        	      buffer2 &= 0x8f;
        	      buffer2 |=(color<<4);
        	   }
        	else if (i==0x08)//判断第五位是否存在
        	   {
        	      buffer2 &= 0xf1;
        	      buffer2 |=(color<<1);
        	   }
        	else if (i==0x04)//判断第六位是否存在
        	   {
        	      buffer2 &= 0xfe;
        	      buffer2 |=(color>>2);
        	      buffer3 &= 0x3f;
        	      buffer3 |=(color<<6);
        	   }
        	else if (i==0x02)//判断第七位是否存在
        	   {
        	      buffer3 &= 0xc7;
        	      buffer3 |=(color<<3);
        	   }
        	else if (i==0x01)//判断第八位是否存在
        	   {
        	      buffer3 &= 0xf8;
        	      buffer3 |= color;
        	   }
        }//判断输入的黑白字符字模每个数字对应的写入点以及其颜色
        write(x,y,buffer1,buffer2,buffer3);
}

/***************显示一个字符字符固定大小,8×16******************/
void lettershow(char x,char y,char *hz,char color)
{
	unsigned char i,j;
	for(i=0;i<16;i++)//一共有16行的点阵
	{
		hz_write(x,y,hz,color);//写入该点位的八个点
		hz++;//hz存放黑白字模的数组
		y++;//进入下一行
	}
}

/*********计算字符a所表示的字符,调用显示字符模块来显示********/
void showchar(char x,char y,char a,char letter,char color)
{
	char suzhi[15][16]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0xC0},/*",",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},/*".",2*/
{0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00},/*"/",3*/
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",4*/
{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",5*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},/*"2",6*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"3",7*/
{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},/*"4",8*/
{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"5",9*/
{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",10*/
{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},/*"7",11*/
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",12*/
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},/*"9",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00}};/*":",4*/

	char mletter[26][16]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x1E,0x22,0x42,0x42,0x3F,0x00,0x00},/*"a",0*/
{0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00},/*"b",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00,0x00},/*"c",2*/
{0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x1E,0x22,0x42,0x42,0x42,0x26,0x1B,0x00,0x00},/*"d",3*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00},/*"e",4*/
{0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"f",5*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C},/*"g",6*/
{0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",7*/
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"i",8*/
{0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78},/*"j",9*/
{0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00},/*"k",10*/
{0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"l",11*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00},/*"m",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",13*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",14*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x44,0x78,0x40,0xE0},/*"p",15*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x42,0x42,0x42,0x22,0x1E,0x02,0x07},/*"q",16*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00},/*"r",17*/

⌨️ 快捷键说明

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