qq_30463631 2019-09-21 19:31 采纳率: 0%
浏览 1983

OLED显示字符新手求问?

新新手写学习,不知是哪里的问题,有的字符显示不出来,求解答

//显示一个字符    
void OLED_ShowChar(u8 x,u8 y,u8 chr)
{       
  unsigned int c=0,i=0; 
  c=(chr-32)*16;               //计算偏移值            
  if(x>120){x=0;y=y+2;}
  OLED_Set_Pos(x,y);    
  for(i=0;i<8;i++)
  OLED_WR_Byte(F8X16[c+i],OLED_DATA);
  OLED_Set_Pos(x,y+1);
  for(i=0;i<8;i++)
  OLED_WR_Byte(F8X16[c+i+8],OLED_DATA);         
} 

//显示字符串   
void OLED_ShowString(u8 x,u8 y,u8 chi[])
{
    unsigned char j=0;
//  unsigned char x=0,y=0;
    while (chi!='\0')
    {   
    OLED_ShowChar(x,y,chi[j]);
    x+=8;
    if(x>120){x=0;y+=2;}
    j++;    
    }
}

void OLED_DISPLAY()
{
OLED_Clear();

OLED_DIS_CHinese(0,0,0);//可以显示
OLED_DIS_CHinese(18,0,1);//可以显示
OLED_DIS_CHinese(36,0,2);//可以显示
OLED_DIS_CHinese(54,0,3);//可以显示
OLED_DIS_CHinese(72,0,4);//可以显示
OLED_DIS_CHinese(90,0,5);//可以显示
OLED_DIS_CHinese(108,0,6);//可以显示

//OLED_ShowString(0,0,"0123456789abcdefg");//显示不了。

OLED_ShowChar(9,2,'C'); //可以显示
OLED_ShowChar(9,4,'7');//可以显示
OLED_ShowChar(9,6,'#');//不可以显示
}

//这个是字串
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
  0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
  0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
  0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
  0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
  0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
  0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
  0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
  0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
  0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
  0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
  0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
  0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
  0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19

我试过了,字库前15行是显示不出来的,就是/之前的,0后面是正常的。但前面加再加15行,那15行对应是可以显示的,证明字库应该是没有问题的。就是不知道为什么前15行一个是黑屏。“”号的字符串也是黑屏。
我用赛元 SC92F7545.谢谢

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-10-02 09:36
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作