诺基亚5110、3310或其他基于PCD8544液晶控制器的液晶模块通用驱动,已经应用于实际项目,每一行代码都是自己敲出来的,注释详细,非网上东抄西摘的代码可比……
部分代码如下:
void NOKIA5110_UpdateScreen(unsigned char Ax, unsigned char Ay, unsigned char *tab, unsigned int tabLen, unsigned char ScreenReverse, unsigned char DdramReverse)
{
unsigned char i;
Ax = Ax % 84;
Ay = Ay % 6; // 限定x/y坐标值在合理范围
NOKIA5110_WriteOneByte(PCD8544_XAddr | Ax, 0);
NOKIA5110_WriteOneByte(PCD8544_YAddr | Ay, 0); // 初始化X/Y坐标
/*
图片处理技巧:
先用“美图秀秀”的裁剪功能裁出分辨率为84*48的一部分,然后保存,接着用“mspaint”另存为单色位图,
最后用“字模提取”打开。
关于“字模提取V2.2”:
基本操作->打开图像图标(必须是单色位图.bmp-由mspaint另存为得到)->修改图像->改变图像大小(84*48)
取模方式->C51格式
液晶正着用时:
参数设置->其他选项->纵向取模 + 字节倒序,写入DDRAM时,设置坐标X=0,Y=0,显存由下标0->下标503
液晶倒着用时:
参数设置->其他选项->纵向取模,写入DDRAM时,设置坐标X=0,Y=0,显存由下标503->下标0
PS:晓奇工作室的“液晶汉字模提取”不错,“批量字模提取器V1.1”也OK。
*/
if (ScreenReverse == 0) // 液晶正着用:左上角是坐标原点
{
for (i = 0; i < tabLen; i ++)
{
NOKIA5110_WriteOneByte(tab, 1); // 写入显存数据到DDRAM
}
}
else // 液晶倒着用:右下角是坐标原点
{
for (i = 0; i < tabLen; i ++)
{
NOKIA5110_WriteOneByte(tab[tabLen - 1 - i], 1); // 写入显存数据到DDRAM
}
}
if (DdramReverse) // DDRAM内容取反输出
{
NOKIA5110_WriteOneByte(PCD8544_Reverse, 0); // 图像反显
}
}
附件如下: