六、显示模块子程序设计
1. 显示汉字子程序
void DisplayC_LCD ( unsigned char addr, //显示内容的起始地址
unsigned char *data, //显示内容的汉字指针
unsigned char num ) //显示的汉字数目
{
unsigned char n;
SendCMD_LCD( addr );
for ( n=0; n
SendDAT_LCD( data ); //一个汉字有两个字节的内码
data++;
SendDAT_LCD( data );
data++;
}
}
例如:要在第2行中间的位置显示:“中国广东”,即:
DisplayC_LCD ( 0x93, “中国广东”, 4 );
由于有些集成开发环境对中文支持不够,导致输入的字符串为乱码,可以通过相关软件先将要输入的汉字内码查出来,然后一个个输入。这种方法虽不便,但可靠。
2. 显示汉字子程序(内码输入方法)
void DisplayD_LCD ( unsigned char addr, //显示内容的起始地址
unsigned char data1, //汉字内码的第一字节
unsigned char data2 ) //汉字内码的第二字节
{
SendCMD_LCD( addr );
SendDAT_LCD( data1 );
SendDAT_LCD( data2 );
}
例如:要在第2行中间的位置显示:“广”(内码:B9H, E3H),即:
DisplayD_LCD ( 0x93, 0xB9, 0xE3 );
3. 显示字符和数字子程序
void DisplayN_LCD ( unsigned char addr, //显示内容的起始地址
unsigned char *data, //显示内容的字符指针
unsigned char num ) //显示的字符数目
{
unsigned char n;
SendCMD_LCD( addr );
for ( n=0; n
SendDAT_LCD( data ); //一个字符只有一个字节的内码
data++;
}
}
例如:要在第2行中间的位置显示:“12345678ABCD”,即:
DisplayN_LCD ( 0x93, “12345678ABCD”, 12 );
4. 数字转换字符程序
由于数字不能直接输入显示,为了方便使用,计算结果先通过该程序转换为字符显示。
void DisplayN2S_LCD (unsigned char num ) //显示的数字
{
SendCMD_LCD( addr );
switch ( num ){
case 0: SendDAT_LCD( ‘0’ ); break;
case 1: SendDAT_LCD( ‘0’ ); break;
……
case 14: SendDAT_LCD( ‘E’ ); break;
case 15: SendDAT_LCD( ‘F’ ); break;
default: SendDAT_LCD( ‘R’ ); break;
}
}
例如:要在第2行中间的位置显示数字5,即:
SendCMD_LCD( 0x93 );
DisplayN2S_LCD( 5 );
七. 初始化设置
30H:功能设置。基本指令集,一次送8位数据。
04H:设定进入点。显示字符,光标从左到右位移,DDRAM地址加1.
0CH:显示设定。整体显示,不显示游标。
01H:清零。将DDRAM填满20H清零,地址AC恢复到00H。
02H:设定DDRAM地址计数器AC到00H,并且光标移到开头原点位置,不改变DARAM的内容。
八. 12232与12864开发的差别
对于带中文字库的LCD液晶模块12232F的应用,方法和上述几乎一致,不同的是显示坐标有所差别,12232F的坐标关系如下。