久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1624|回復(fù): 4
收起左側(cè)

自建24點(diǎn)陣數(shù)字字庫(kù)顯示不正常

[復(fù)制鏈接]
ID:570252 發(fā)表于 2024-5-25 10:10 | 顯示全部樓層 |閱讀模式
各位大佬,

前些天在用LCD0802做頻率計(jì),總覺(jué)得顯示不好看,想改用12864(12832比較難買(mǎi))。碰到的問(wèn)題是用16點(diǎn)陣字體太小,一屏四行也用不完,想改成24點(diǎn)陣的。用PCTOLCD2000建了只0-9再加上小數(shù)點(diǎn)的小字庫(kù),如下:
const unsigned char code F12X24[][36]=         
{
{0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0xFF,0xE0,0x03,0x80,0x70,0x06,0x00,0x18,0x04},
{0x00,0x08,0x04,0x00,0x08,0x06,0x00,0x18,0x03,0x80,0x70,0x01,0xFF,0xE0,0x00,0x7F},
{0x80,0x00,0x00,0x00},/*"0",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x08,0x02,0x00,0x08,0x02,0x00,0x08,0x03},
{0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00},
{0x00,0x00,0x00,0x00},/*"1",1*/
{0x00,0x00,0x00,0x01,0xC0,0x18,0x02,0xC0,0x38,0x04,0x00,0x48,0x04,0x00,0x88,0x04},
{0x03,0x08,0x04,0x06,0x08,0x06,0x0C,0x08,0x03,0xF8,0x08,0x01,0xE0,0x78,0x00,0x00},
{0x00,0x00,0x00,0x00},/*"2",2*/
{0x00,0x00,0x00,0x03,0x80,0x70,0x03,0x80,0x70,0x04,0x00,0x08,0x04,0x08,0x08,0x04},
{0x08,0x08,0x06,0x18,0x08,0x03,0xF4,0x18,0x01,0xE7,0xF0,0x00,0x01,0xE0,0x00,0x00},
{0x00,0x00,0x00,0x00},/*"3",3*/
{0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x05,0x00,0x00,0x19,0x00,0x00,0x21,0x00,0x00},
{0xC1,0x08,0x01,0x01,0x08,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x01,0x08,0x00,0x01},
{0x08,0x00,0x01,0x00},/*"4",4*/
{0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xFC,0xD0,0x04,0x08,0x08,0x04,0x10,0x08,0x04},
{0x10,0x08,0x04,0x10,0x08,0x04,0x18,0x38,0x04,0x0F,0xF0,0x04,0x07,0xC0,0x00,0x00},
{0x00,0x00,0x00,0x00},/*"5",5*/
{0x00,0x00,0x00,0x00,0x3F,0x80,0x01,0xFF,0xE0,0x03,0x84,0x30,0x02,0x08,0x18,0x04},
{0x10,0x08,0x04,0x10,0x08,0x04,0x10,0x08,0x07,0x18,0x10,0x03,0x0F,0xF0,0x00,0x07},
{0xC0,0x00,0x00,0x00},/*"6",6*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x06,0x00,0x00,0x04,0x00,0x00,0x04},
{0x00,0xF8,0x04,0x07,0xF8,0x04,0x18,0x00,0x04,0xE0,0x00,0x07,0x00,0x00,0x06,0x00},
{0x00,0x00,0x00,0x00},/*"7",7*/
{0x00,0x00,0x00,0x01,0xC1,0xE0,0x03,0xF3,0xF0,0x06,0x36,0x10,0x04,0x18,0x08,0x04},
{0x08,0x08,0x04,0x0C,0x08,0x04,0x0C,0x08,0x06,0x16,0x18,0x03,0xF3,0xF0,0x01,0xC1},
{0xE0,0x00,0x00,0x00},/*"8",8*/
{0x00,0x00,0x00,0x00,0xF8,0x00,0x03,0xFC,0x30,0x03,0x06,0x38,0x04,0x02,0x08,0x04},
{0x02,0x08,0x04,0x02,0x08,0x04,0x04,0x10,0x03,0x08,0xF0,0x01,0xFF,0xC0,0x00,0x7F},
{0x00,0x00,0x00,0x00},/*"9",9*/
};

顯示函數(shù)如下(24點(diǎn)陣):

else if(Char_Size ==24)
                {
                 c=chr-'/';               
     OLED_Set_Pos(x, y);
        for (i = 0; i < 12; i++)
            OLED_WR_Byte(F12X24[c * 36 + i], OLED_DATA);  //18*2
        OLED_Set_Pos(x, y + 1);
        for (i = 0; i < 12; i++)
            OLED_WR_Byte(F12X24[c * 36 + i +12], OLED_DATA);
            OLED_Set_Pos(x, y + 2);
        for (i = 0; i < 12; i++)
            OLED_WR_Byte(F12X24[c * 36 + i +24], OLED_DATA);

}

其中c=chr-'/'是取偏移后的值。因?yàn)樾∽謳?kù)的第一位是‘0’,ASC值48,而‘/'是47,48-47=1,正好取首字符。

工作時(shí)16點(diǎn)陣正常,但在24點(diǎn)陣時(shí)僅能顯示24點(diǎn)陣麻點(diǎn)方塊,不是所需數(shù)字。

我對(duì)C語(yǔ)言的底層編程不內(nèi)行,故特地向各位請(qǐng)教。

謝謝。
回復(fù)

使用道具 舉報(bào)

ID:69038 發(fā)表于 2024-5-25 15:03 | 顯示全部樓層
“其中c=chr-'/'是取偏移后的值。因?yàn)樾∽謳?kù)的第一位是‘0’,ASC值48,而‘/'是47,48-47=1,正好取首字符。”
總感覺(jué)哪里不對(duì)
回復(fù)

使用道具 舉報(bào)

ID:570252 發(fā)表于 2024-5-25 16:39 | 顯示全部樓層
zhuls 發(fā)表于 2024-5-25 15:03
“其中c=chr-'/'是取偏移后的值。因?yàn)樾∽謳?kù)的第一位是‘0’,ASC值48,而‘/'是47,48-47=1,正好取首字符 ...

你好,謝謝關(guān)注。
在一般西文字庫(kù)里,大都會(huì)從 ‘ ’ 開(kāi)始,即從 ‘ ’ - ‘~’,并按ASCII值排列,因此偏移值要減去 ‘ ’(ASCII值32),即 c=chr-' ’ ,即可得到所需顯示字符在字庫(kù)里的位置。但我的字庫(kù)里只有11個(gè)數(shù)字(多了內(nèi)存不夠),所以就自作聰明,減去 ‘/' 字符的ASCII值(47)了。
回復(fù)

使用道具 舉報(bào)

ID:69038 發(fā)表于 2024-5-25 17:29 | 顯示全部樓層
bobby_jack 發(fā)表于 2024-5-25 16:39
你好,謝謝關(guān)注。
在一般西文字庫(kù)里,大都會(huì)從 ‘ ’ 開(kāi)始,即從 ‘ ’ - ‘~’,并按ASCII值排列,因此 ...

理是這個(gè)理,要是顯示‘0’時(shí),你-47,能對(duì)的上嗎?我覺(jué)得既然你的小字庫(kù)是0~9,那么首字當(dāng)是‘0’,偏移量就應(yīng)該是‘0’,即0x30,你用這個(gè)‘/’(0x2F)做偏移量真的對(duì)嗎?
  1. void OLED_ShowChar(u8 x,u8 y,u8 chr)
  2. {              
  3.         unsigned char c=0,i=0;        
  4. <font color="#ff0000">                c=chr-' ';//得到偏移后的值  //字庫(kù)從' '空格開(kāi)始,偏移量就該是‘ ’空格的ASC碼</font>
  5.                 if(x>Max_Column-1){x=0;y=y+2;}
  6.                 if(SIZE ==16)
  7.                         {
  8.                         OLED_Set_Pos(x,y);        
  9.                         for(i=0;i<8;i++)
  10.                         OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
  11.                         OLED_Set_Pos(x,y+1);
  12.                         for(i=0;i<8;i++)
  13.                         OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
  14.                         }
  15.                         else {        
  16.                                 OLED_Set_Pos(x,y+1);
  17.                                 for(i=0;i<6;i++)
  18.                                 OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  19.                                 
  20.                         }
  21. }
復(fù)制代碼


//常用ASCII表
//偏移量32
const unsigned char code F8X16[]=

回復(fù)

使用道具 舉報(bào)

ID:570252 發(fā)表于 2024-5-25 22:17 | 顯示全部樓層
zhuls 發(fā)表于 2024-5-25 17:29
理是這個(gè)理,要是顯示‘0’時(shí),你-47,能對(duì)的上嗎?我覺(jué)得既然你的小字庫(kù)是0~9,那么首字當(dāng)是‘0’,偏移 ...

你好,謝謝再次支招。

問(wèn)題已經(jīng)解決,主要有三點(diǎn):

第一即是如你所說(shuō)的應(yīng)該改去‘0’,因?yàn)镃語(yǔ)言都是從0開(kāi)始計(jì)數(shù),而我忽略了。

第二是調(diào)用函數(shù)有誤。它是從網(wǎng)上摘錄下來(lái)的,估計(jì)發(fā)布者也沒(méi)有對(duì)此驗(yàn)證。正確的寫(xiě)法應(yīng)該是:
  1.                 else if(Char_Size ==24)
  2.                 {
  3.           if(x>Max_Column-1){x=0;y=y+2;}
  4.                  c=chr-'0';               
  5.      OLED_Set_Pos(x, y);
  6.         for (i = 0; i < 12; i++)
  7.             OLED_WR_Byte(F12X24[c] [i], OLED_DATA);  
  8.         OLED_Set_Pos(x, y + 1);
  9.         for (i = 0; i < 12; i++)
  10.             OLED_WR_Byte(F12X24[c] [i +12], OLED_DATA);
  11.             OLED_Set_Pos(x, y + 2);
  12.         for (i = 0; i < 12; i++)
  13.             OLED_WR_Byte(F12X24[c] [i +24], OLED_DATA);

  14.                 }
復(fù)制代碼

即F12X24本身是二維的,而在原程序調(diào)用時(shí)寫(xiě)成一維。

第三是pctolcd取模時(shí)在正向,而我用反了。

再次謝謝。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区影院 | 日韩精品一区在线观看 | 在线免费播放av | 久热国产视频 | 欧美激情一区二区三区 | 天天干夜夜爽 | 欧美日韩三级 | 在线免费看av | 免费看黄色网址 | 国产理论在线 | 久久精品在线 | 日韩免费在线 | 国产成人小视频 | 五月天.com| 涩涩视频免费看 | 欧美激情成人 | 黄色一极片 | 久久靖品| 91av视频 | 91福利区| 国产成年妇视频 | 在线观看黄色小视频 | 久久艳片www.17c.com | 国产精品视频专区 | 国精产品99永久一区一区 | 中文天堂网 | 成人高清免费 | 国产福利av | 99久久九九 | 中文字幕av在线 | 日本不卡一区二区 | 欧美一级片免费 | 一级做a视频 | 全部免费毛片在线播放高潮 | 国产激情视频在线 | 国内自拍xxxx18 | www.爱爱 | 国产亚洲天堂 | 色婷婷狠狠| 欧美激情网址 | 免费日韩视频 |