欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
請幫忙修改程序 字符顯示
[打印本頁]
作者:
芙蓉焊料
時間:
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);
}
}
}
}
}
}
作者:
飛云居士
時間:
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字符。
作者:
芙蓉焊料
時間:
2024-9-17 08:55
飛云居士 發表于 2024-9-16 18:46
要將8x16字符顯示改為16x32字符顯示,你需要對原始代碼進行一些修改。以下是步驟和代碼修改:
1. **修改 ...
謝謝辛苦了!有了您的詳細注釋示范程序對學習有很大幫助
作者:
芙蓉焊料
時間:
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
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1