极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10365|回复: 0

一个支持反白显示的的12864驱动库

[复制链接]
发表于 2015-10-11 21:06:29 | 显示全部楼层 |阅读模式
修改自动弘毅提供的SPI库
原来的库显示字符函数只接受无符号字符数组,不支持反白显示,驱动芯片本身也只支持1-3行和2-4行同时反白.没什么意义.

网上查到 ST7920驱动字符显示的CGRAM和图形的GGRAM是相互独立的面显示的内容是两个RAM异或的结果

显示字符串函数.这样好用多了.
  1. void LCD12864RSPI::M_DisplayString(int M_X,int M_Y,String *str)
  2. {
  3.   int strl=(*str).length();
  4.   uchar pr[strl];
  5.   if (strl+M_Y<17)
  6.   {
  7.     for (int i = 0; i < strl; i++){
  8.       pr[i]=(*str).charAt(i);
  9.     }
  10.     DisplayString(M_X,M_Y,pr,strl);
  11.   }
  12. }
复制代码


清除反白.在反白前要先清除翻否则会有噪点.

  1. void LCD12864RSPI::Disp_black()   
  2. {
  3. unsigned char i,j;
  4. WriteCommand(0x34);
  5. for(i=0;i<32;i++){
  6.    WriteCommand(0x80+i);
  7.    WriteCommand(0x80);
  8.     for(j=0;j<16;j++) {
  9.     WriteData(0x00);
  10.    }
  11.      }
  12.    for(i=0;i<32;i++){
  13.    WriteCommand(0x80+i);
  14.    WriteCommand(0x88);
  15.     for(j=0;j<16;j++) {
  16.     WriteData(0x00);
  17.    }
  18. }
  19. WriteCommand(0x30);
  20. }
复制代码


反白
CX和CY 是起始坐标
width 是要反白的字符数
YN 是反白为1是否则取消反白.

  1. void LCD12864RSPI::convertChar(int CX,int CY, int width,int YN)
  2. {
  3. int basicBlock;

  4.   switch(CX){
  5.      case 0: CY |= 0x80; CX=0x80; break;

  6.      case 1: CY |= 0x80; CX=0x90; break;

  7.      case 2: CY |= 0x88; CX=0x80; break;

  8.      case 3: CY |= 0x88; CX=0x90; break;

  9.      default: break;
  10.    }
  11.     for (int i=16; i != 0; i--)
  12. {
  13.    basicBlock = width;
  14.    WriteCommand(0x34);
  15.    WriteCommand(CX);
  16.    WriteCommand(CY);
  17.    WriteCommand(0x30);

  18.    for (;basicBlock != 0; basicBlock--)
  19.    {
  20.       if(YN==1){
  21.       WriteData(0xff);
  22.       }else{
  23.         WriteData(0x00);
  24.       }
  25.    }
  26.    CX++;
  27. }
  28. WriteCommand(0x36);
  29. WriteCommand(0x30);
  30. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 05:41 , Processed in 0.034455 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表