找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 157|回复: 4
收起左侧

关于OLED显示程序的问题 OLED_P8x16Str函数 如何识别我要显示的字符串正确显示出来

[复制链接]
ID:30165 发表于 2024-4-12 15:45 | 显示全部楼层 |阅读模式
在学习OLED12864显示。其中显示字符串函数。


const unsigned char code F8X16[]=   //
{
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
  0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//!1
  0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"2

}更多的代码没有贴上,大家知道意思。

函数

void OLED_P8x16Str(unsigned char x,unsigned char y,unsigned char ch[])
{
  unsigned char c=0,i=0,j=0;
        
  while (ch[j]!='\0')
  {   
    c =ch[j]-32;
    if(x>122){x=0;y++;}
    OLED_Set_Pos(x,y);   
          for(i=0;i<8;i++)     
            OLED_WrDat(F8X16[c*16+i]);
          OLED_Set_Pos(x,y+1);   
          for(i=0;i<8;i++)     
            OLED_WrDat(F8X16[c*16+i+8]);  
          x+=8;
          j++;
  }
}

主程序
void main()
{
OLED_P8x16Str(1,1,"123ABC")

while(1)
}

现在研究了半天,OLED_P8x16Str(1,1,"123ABC")函数 如何识别我要显示的字符串正确显示出来
回复

使用道具 举报

ID:1000679 发表于 2024-4-12 21:19 | 显示全部楼层
你搜索查下 ASCII 代码,字符是从32开始的,所以代码里有-32这个。
回复

使用道具 举报

ID:1000679 发表于 2024-4-12 21:25 | 显示全部楼层
字符代码的可以用 PCtoLCD  字模提取等这些取字模工具生成代码。也可以在设置那里了解下具体是怎么规格去生成的,每个点就是0,1的区别,点组成字就这样。
回复

使用道具 举报

ID:774370 发表于 2024-4-12 21:35 | 显示全部楼层
改成这样试试
  1. while (ch[j]!='\0')
  2.   {   
  3.     c =ch[j]-32;
  4.     if(x>122){x=0;y++;}
  5.     OLED_Set_Pos(x,y);   
  6.           for(i=0;i<8;i++)     
  7.             OLED_WrDat(F8X16[c*160x20+i]);
  8.           OLED_Set_Pos(x,y+1);   
  9.           for(i=0;i<8;i++)     
  10.             OLED_WrDat(F8X16[c*16-0x20+i+8]);  
  11.           x+=8;
  12.           j++;
  13.   }
复制代码
回复

使用道具 举报

ID:192020 发表于 2024-4-13 09:22 | 显示全部楼层
while是把要显示的字符串遍历一遍,F8X16里面包含了各个字母的画点字节,按顺序排列。查表法来一个个显示出来,所以F8X16这个数组必须要排列正确,不能换位置
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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