📄 char._h
字号:
//液晶字符、汉字输出
//液晶显示基本函数
/***********************************************************************
公司名称: 泰克通信
模 块 名: 液晶显示字符、汉字输出 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 + -