打印
[MCU]

[技术笔记-1]带中文字库液晶显示模块12864/12232开发整理

[复制链接]
1909|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ohy3686|  楼主 | 2016-4-10 10:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
带中文字库液晶显示模块12864/12232开发整理

广东职业技术学院  欧浩源(ohy3686@foxmail.com


一、概述
1. 液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16×16点阵)、128个字符(8×16点阵)及64×256点阵显示RAM(GDRAM)。
2. LCD类型:STN。
3. 接口方式:8位并口、4位并口、三线串口(CS、CLK、SID)。
4. 供电电压:分3.3V和5.0V两种。(供应商说不通用,诸位购买时需注意)。
5. 工作温度:0到60℃(常温),-20℃到75℃(宽温)。


二、引脚定义

三、串行通信时序

根据串行方式时序图,首先设计底层的字节发送驱动程序。
函数名:SendByte_LCD
参数:data—需要发送的字节。
void  SendByte_LCD(unsigned char data){
      unsigned char i;
     CS                = 1;       
     CLK         = 0;
      for(i=0;        i<8;        i++){
          if(data & 0x80) {SID        =1;}                        //高位字节先发送
          else {SID                =0;}
      data << 1;                                                //准备下一位数据
     CLK         = 1;
      Delay(200);                                                //发送一位数据
     CLK         = 0;
      }
     CS                = 0;       
}

四、串行数据传送规则
串行数据传送共分三个字节完成:
    第一字节:串口控制格式。
          1  1  1  1  1  A  B  C
          A:数据传送的方向控制。
              H—数据从LCD到MCU。
              L—数据从MCU到LCD。
          B:数据的类型选择。
              H—是用户显示的数据。
              L—是控制模块的指令。
          C:固定为0.
    第二字节:(并行)8位数据的高4位:D7  D6  D5  D4  0  0  0  0
    第三字节:(并行)8位数据的低4位:D3  D2  D1  D0  0  0  0  0
根据串行数据的传送规则,发送数据和发送指令是不同的,因此,在实际应用中,可以设计两个发送子程序来完成相应的功能。

1. 发送指令子程序:SendCMD_LCD
void  SendCMD_LCD(unsigned char dat){
    SendByte_LCD( 0xf8 );                                        // 1 1 1 1 1 0 0 0
SendByte_LCD( dat & 0xf0 );
SendByte_LCD( (dat << 4 ) & 0xf0 );
}
2. 发送数据子程序:SendDAT_LCD
void  SendDAT_LCD(unsigned char dat){
    SendByte_LCD( 0xfa );                                        // 1 1 1 1 1 0 1 0
SendByte_LCD( dat & 0xf0 );
SendByte_LCD( (dat << 4 ) & 0xf0 );
}
五、显示坐标关系

六、显示模块子程序设计
1. 显示汉字子程序
void  DisplayC_LCD ( unsigned char addr,                  //显示内容的起始地址
unsigned char *data,                  //显示内容的汉字指针
unsigned char num )                //显示的汉字数目
{
      unsigned char n;
      SendCMD_LCD( addr );
      for ( n=0;  n<num;  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<num;  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的坐标关系如下。




相关帖子

沙发
dirtwillfly| | 2016-4-10 15:33 | 只看该作者
不错,感谢分享

使用特权

评论回复
板凳
洛理小子| | 2016-4-10 18:51 | 只看该作者
感谢分享~~

使用特权

评论回复
地板
王栋春| | 2016-4-10 20:24 | 只看该作者
慢慢吸收一下

使用特权

评论回复
5
chengfgc| | 2019-2-26 18:13 | 只看该作者
不错,详细而清晰

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:广东职业技术学院 欧浩源(ohy3686@foxmail.com)    [Zigbee技术&物联网应用] 群:168225322    [技术交流微信]:gzyohy (暗号:宝塔镇河妖)

322

主题

899

帖子

3135

粉丝