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

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

QQ登錄

只需一步,快速開始

搜索
查看: 877|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)幫忙修改程序 字符顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:891876 發(fā)表于 2024-9-16 17:08 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是買OLED屏給的參考程序,但只能顯示8x16字符,現(xiàn)在想顯示16x32字符請(qǐng)問該怎么改呢?謝謝!
void Display_ASCII8X16(uint x0,uint y0,uchar *s) //顯示一個(gè)英文字符
{
        int i,j,k,x,y,xx;
       
        unsigned char qm;
       
        long int ulOffset;
       
        char  ywbuf[32],temp[2];

        for(i = 0; i<strlen((char*)s);i++)
        {
                if(((unsigned char)(*(s+i))) >= 161)
                {
                        temp[0] = *(s+i);
                        temp[1] = '\0';
                        return;
                }
               
                else
                {
                        qm = *(s+i);

                        ulOffset = (long int)(qm) * 16;
                       
      for (j = 0; j < 16; j ++)
      {
                                ywbuf[j]=Zk_ASCII8X16[ulOffset+j];
      }
            
      for(y = 0;y < 16;y++)
      {
                for(x=0;x<8;x++)
                {
             k=x % 8;
                       
                                          if(ywbuf[y]&(0x80 >> k))
                                           {
                                                  xx=x0+x+i*8;
                                            PutPixel(xx,y+y0,RED);
                                          }
                                                       
                                   }
      }

                }
        }            
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:404160 發(fā)表于 2024-9-16 18:46 | 只看該作者
要將8x16字符顯示改為16x32字符顯示,你需要對(duì)原始代碼進(jìn)行一些修改。以下是步驟和代碼修改:

1. **修改字符數(shù)據(jù)集**:首先,你需要確保你有一個(gè)16x32的字符數(shù)據(jù)集。這意味著每個(gè)字符將占用32個(gè)字節(jié)而不是原來的16個(gè)字節(jié)。

2. **修改偏移量計(jì)算**:由于每個(gè)字符現(xiàn)在占用32個(gè)字節(jié),你需要調(diào)整偏移量的計(jì)算。

3. **修改顯示邏輯**:你需要調(diào)整顯示邏輯以適應(yīng)新的字符大小。

以下是修改后的代碼示例:

```c
void Display_ASCII16X32(uint x0,uint y0,uchar *s) //顯示一個(gè)英文字符
{
    int i, j, k, x, y, xx;
    unsigned char qm;

    long int ulOffset;

    char  ywbuf[64]; // 每個(gè)字符32個(gè)字節(jié)

    for(i = 0; i<strlen((char*)s);i++)
    {
        if(((unsigned char)(*(s+i))) >= 161)
        {
            return; // 非ASCII字符處理
        }
        else
        {
            qm = *(s+i);

            ulOffset = (long int)(qm) * 32; // 每個(gè)字符32個(gè)字節(jié)

            for (j = 0; j < 32; j ++) // 每個(gè)字符32行
            {
                ywbuf[j] = Zk_ASCII16X32[ulOffset + j]; // 假設(shè)你有一個(gè)16x32的字符數(shù)據(jù)集
            }

            for(y = 0; y < 32; y++) // 每個(gè)字符32行
            {
                for(x = 0; x < 16; x++) // 每個(gè)字符16列
                {
                    k = x % 8;

                    if(ywbuf[y] & (0x80 >> k))
                    {
                        xx = x0 + x + i * 16; // 每個(gè)字符寬度為16
                        PutPixel(xx, y + y0, RED);
                    }
                }
            }
        }
    }
}
```

### 關(guān)鍵修改點(diǎn):
1. **字符數(shù)據(jù)集**:假設(shè)你有一個(gè)名為 `Zk_ASCII16X32` 的數(shù)據(jù)集,它包含16x32的字符數(shù)據(jù)。
2. **偏移量計(jì)算**:`ulOffset = (long int)(qm) * 32;` 每個(gè)字符32個(gè)字節(jié)。
3. **顯示邏輯**:`for(y = 0; y < 32; y++)` 和 `for(x = 0; x < 16; x++)` 分別處理32行和16列。

### 注意事項(xiàng):
- 確保你的 `Zk_ASCII16X32` 數(shù)據(jù)集是正確的,并且每個(gè)字符占用32個(gè)字節(jié)。
- 調(diào)整 `PutPixel` 函數(shù)以適應(yīng)新的顯示尺寸。
- 根據(jù)你的硬件和庫(kù)函數(shù),可能需要進(jìn)一步調(diào)整代碼。

通過這些修改,你應(yīng)該能夠?qū)@示從8x16字符改為16x32字符。
回復(fù)

使用道具 舉報(bào)

板凳
ID:891876 發(fā)表于 2024-9-17 08:55 | 只看該作者
飛云居士 發(fā)表于 2024-9-16 18:46
要將8x16字符顯示改為16x32字符顯示,你需要對(duì)原始代碼進(jìn)行一些修改。以下是步驟和代碼修改:

1. **修改 ...

謝謝辛苦了!有了您的詳細(xì)注釋示范程序?qū)W(xué)習(xí)有很大幫助
回復(fù)

使用道具 舉報(bào)

地板
ID:891876 發(fā)表于 2024-9-17 18:33 | 只看該作者
飛云居士 發(fā)表于 2024-9-16 18:46
要將8x16字符顯示改為16x32字符顯示,你需要對(duì)原始代碼進(jìn)行一些修改。以下是步驟和代碼修改:

1. **修改 ...

程序修改后只能顯示16x32點(diǎn)陣,請(qǐng)問是什么原因?
main()
{
    EAXFR = 1;    //使能訪問 XFR
    CKCON = 0x00; //設(shè)置外部數(shù)據(jù)總線速度為最快
    WTST = 0x02;  //設(shè)置程序代碼等待參數(shù),賦值為 0 可將 CPU 執(zhí)行程序的速度設(shè)置為最快
       
        P2M0 = 0xff; P2M1 = 0x00; //IO口設(shè)置推挽輸出
    SPI_init(0);     //SPI初始化
        lcd_initial();
        bl=1;
        LCD_Clear(black); //屏背景顏色

        Display_ASCII16X32(8,16,"B");  //顯示“B”字符
        while(1);
  
}
以下是字符數(shù)組
#ifndef __OLEDFONT_H
#define __OLEDFONT_H          

//16*32 ASCII字符集點(diǎn)陣
unsigned char code  ascii_1632[]={          
  "B",   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x09,0x80, /* 0 */
         0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x08,0x80,0x09,0x00,0x0f,0x00,
         0x08,0x80,0x08,0x80,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,0x08,0x40,

};
#endif
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品久久国产 | 国产色片在线 | 一区二区三区国产精品 | 91视频在线 | 天堂一区在线观看 | 国产在线精品区 | 中文字幕亚洲一区 | 中国黄色毛片视频 | 精品国产一区探花在线观看 | 欧美亚洲国语精品一区二区 | 日本一区二区影视 | www.久久 | 波多野吉衣在线播放 | 国产激情免费视频 | 欧美成人精品 | 久久久久久久久久久福利观看 | 欧美在线 | 亚洲国产欧美国产综合一区 | 麻豆精品国产91久久久久久 | 婷婷色国产偷v国产偷v小说 | 精品一区二区在线观看 | 香蕉一区二区 | 欧美在线视频免费 | 日韩在线一区二区三区 | 国产www成人| 色偷偷噜噜噜亚洲男人 | 日韩欧美一区二区三区免费看 | 欧美一区二区三区在线观看 | 国产精品国产 | 免费看国产一级特黄aaaa大片 | 91香蕉| wwww.xxxx免费| www亚洲精品 | 日韩中文一区 | 国产亚韩 | 国产成人精品一区 | 国产精品国产三级国产aⅴ中文 | 国产在线视频一区二区 | 99这里只有精品 | 国产精品精品视频一区二区三区 | 欧美精品日韩精品 |