注册 登录
查看: 517|回复: 11

OLED显示

[复制链接]
发表于 2015-1-11 18:30:05 | 显示全部楼层 |阅读模式
如何将OLED显示出来的字符缩小啊!有人会吗?帮帮忙啊!
回复

使用道具 举报

发表于 2015-1-11 19:26:29 | 显示全部楼层
自己百度一下字幕软件的用法吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-11 20:40:55 | 显示全部楼层
没用啊,他说的都是如何添加电影字幕
回复 支持 反对

使用道具 举报

发表于 2015-1-11 20:48:13 | 显示全部楼层
lenged 发表于 2015-1-11 20:40
没用啊,他说的都是如何添加电影字幕

字幕3 这个软件
回复 支持 反对

使用道具 举报

发表于 2015-1-12 09:17:55 | 显示全部楼层
取字模软件
回复 支持 反对

使用道具 举报

发表于 2015-1-12 10:48:30 | 显示全部楼层
字模软件,把文字生成图片,然后刷图片上去。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-12 13:55:08 | 显示全部楼层
我的语言表达有些问题。我的意思是原本OLED显示屏上可以显示4行数据,现在我想显示6行,需要把每行的字符串缩小,如何改代码才行。现在如果不改的话,显示的数据就会重叠!求大神帮帮忙啊。
回复 支持 反对

使用道具 举报

发表于 2015-1-12 13:56:54 | 显示全部楼层
lenged 发表于 2015-1-12 13:55
我的语言表达有些问题。我的意思是原本OLED显示屏上可以显示4行数据,现在我想显示6行,需要把每行的字符串 ...

这个需要改显示函数的代码,重新修改字库才行的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-12 14:04:11 | 显示全部楼层
嗯,我就是这个意思。比如#define XLevelL                0x00
#define XLevelH                0x10
#define XLevel                ((XLevelH&0x0F)*16+XLevelL)
#define Max_Column        128
#define Max_Row                64
#define        Brightness        0xCF
#define X_WIDTH 128
#define Y_WIDTH 64
void LCD_Set_Pos(u8 x, u8 y)
{
  LCD_WrCmd(0xb0+y);
  LCD_WrCmd(((x&0xf0)>>4)|0x10);
  LCD_WrCmd((x&0x0f)|0x01);
}
void LCD_Fill(u8 bmp_data)
{
        u8 y,x;
       
        for(y=0;y<6;y++)
        {
                LCD_WrCmd(0xb0+y);
                LCD_WrCmd(0x01);
                LCD_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                        LCD_WrDat(bmp_data);
        }
}
void LCD_CLS(void)
{
        u8 y,x;       
        for(y=0;y<6;y++)
        {
                LCD_WrCmd(0xb0+y);
                LCD_WrCmd(0x01);
                LCD_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                        LCD_WrDat(0);
        }
}
void LCD_P6x8Str(u8 x,u8 y,u8 ch[])
{
  u8 c=0,i=0,j=0;      
  while (ch[j]!='\0')
  {   
    c =ch[j]-32;
    if(x>126){x=0;y++;}
    LCD_Set_Pos(x,y);   
          for(i=0;i<6;i++)     
            LCD_WrDat(F6x8[c][i]);  
          x+=6;
          j++;
  }
}
//==============================================================
//函数名:LCD_P8x16Str(u8 x,u8 y,u8 *p)
//功能描述:写入一组标准ASCII字符串
//参数:显示的位置(x,y),y为页范围0~7,要显示的字符串
//返回:无
//==============================================================  
void LCD_P8x16Str(u8 x,u8 y,u8 ch[])
{
  u8 c=0,i=0,j=0;
        
  while (ch[j]!='\0')
  {   
    c =ch[j]-32;
    if(x>120){x=0;y++;}
    LCD_Set_Pos(x,y);   
          for(i=0;i<8;i++)     
            LCD_WrDat(F8X16[c*16+i]);
          LCD_Set_Pos(x,y+1);   
          for(i=0;i<8;i++)     
            LCD_WrDat(F8X16[c*16+i+8]);  
          x+=8;
          j++;
  }
}
//输出汉字字符串
void LCD_P14x16Str(u8 x,u8 y,u8 ch[])
{
        u8 wm=0,ii = 0;
        u16 adder=1;
       
        while(ch[ii] != '\0')
        {
          wm = 0;
          adder = 1;
          while(F14x16_Idx[wm] > 127)
          {
                  if(F14x16_Idx[wm] == ch[ii])
                  {
                          if(F14x16_Idx[wm + 1] == ch[ii + 1])
                          {
                                  adder = wm * 14;
                                  break;
                          }
                  }
                  wm += 2;                       
          }
          if(x>118){x=0;y++;}
          LCD_Set_Pos(x , y);
          if(adder != 1)// 显示汉字                                       
          {
                  LCD_Set_Pos(x , y);
                  for(wm = 0;wm < 14;wm++)               
                  {
                          LCD_WrDat(F14x16[adder]);       
                          adder += 1;
                  }      
                  LCD_Set_Pos(x,y + 1);
                  for(wm = 0;wm < 14;wm++)         
                  {
                          LCD_WrDat(F14x16[adder]);
                          adder += 1;
                  }                  
          }
          else                          //显示空白字符                       
          {
                  ii += 1;
      LCD_Set_Pos(x,y);
                  for(wm = 0;wm < 16;wm++)
                  {
                                  LCD_WrDat(0);
                  }
                  LCD_Set_Pos(x,y + 1);
                  for(wm = 0;wm < 16;wm++)
                  {                  
                                  LCD_WrDat(0);       
                  }
          }
          x += 14;
          ii += 2;
        }
}
像这个,显示字符串,但目前我用的这个OLED显示的程序,在显示屏上只能显示4行,但我想显示6或8,应该改哪个?这是部分代码,当然不是我写的
回复 支持 反对

使用道具 举报

发表于 2015-1-12 14:05:39 | 显示全部楼层
lenged 发表于 2015-1-12 14:04
嗯,我就是这个意思。比如#define XLevelL                0x00
#define XLevelH                0x10
#define XLevel                ((XLevelH&0x0F ...

我跟你说吧,没人会给你修改代码的。你是搞技术的,应该自己吃透一下这部分代码,自己修改一下。

显示文字,其实就是刷图片。
回复 支持 反对

使用道具 举报

发表于 2015-1-12 14:06:42 | 显示全部楼层
字库其实就是像鹰眼那样的压缩图片,把图片刷上去就好了。

至于改动了分辨率(字体大小),那相应的显示图片函数的代码也要改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-12 14:09:13 | 显示全部楼层
谢谢了,我会努力的。谢谢您的帮助。
回复 支持 反对

使用道具 举报

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

本版积分规则

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