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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 845|回復: 3
打印 上一主題 下一主題
收起左側

請幫忙修改程序 字符顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:891876 發表于 2024-9-16 17:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是買OLED屏給的參考程序,但只能顯示8x16字符,現在想顯示16x32字符請問該怎么改呢?謝謝!
void Display_ASCII8X16(uint x0,uint y0,uchar *s) //顯示一個英文字符
{
        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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

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

2. **修改偏移量計算**:由于每個字符現在占用32個字節,你需要調整偏移量的計算。

3. **修改顯示邏輯**:你需要調整顯示邏輯以適應新的字符大小。

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

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

    long int ulOffset;

    char  ywbuf[64]; // 每個字符32個字節

    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; // 每個字符32個字節

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

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

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

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

### 注意事項:
- 確保你的 `Zk_ASCII16X32` 數據集是正確的,并且每個字符占用32個字節。
- 調整 `PutPixel` 函數以適應新的顯示尺寸。
- 根據你的硬件和庫函數,可能需要進一步調整代碼。

通過這些修改,你應該能夠將顯示從8x16字符改為16x32字符。
回復

使用道具 舉報

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

1. **修改 ...

謝謝辛苦了!有了您的詳細注釋示范程序對學習有很大幫助
回復

使用道具 舉報

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

1. **修改 ...

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

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

//16*32 ASCII字符集點陣
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
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩精品久久 | 男女啪啪高潮无遮挡免费动态 | 一区二区三区四区不卡视频 | 91深夜福利视频 | 久久99精品久久久久久 | 中文字幕在线免费观看 | 久久久久久久久中文字幕 | 久久精品久久久 | 日日做夜夜爽毛片麻豆 | 激情欧美一区二区三区 | 欧洲视频一区二区 | 日韩成人一区二区 | 国产高清精品一区 | 国产区第一页 | 在线观看国产网站 | 在线日韩欧美 | 青青青伊人 | 日日天天| 最新日韩在线视频 | 日韩在线中文字幕 | 天天夜碰日日摸日日澡 | 妞干网福利视频 | 国产欧美精品一区二区色综合朱莉 | 无码日韩精品一区二区免费 | 欧美激情久久久久久 | 亚洲一区二区中文字幕 | www.日日干 | 亚州一区二区三区 | 黄色福利| 亚洲国产一区二区三区 | 欧美日韩综合一区 | 不卡的av在线 | 涩涩视频网 | 玖玖视频 | 亚洲在线 | 女人天堂av| 欧美久久视频 | 精品国产一区二区三区久久久久久 | 狠狠婷婷综合久久久久久妖精 | 成人av高清在线观看 | 色网在线看 |