【TFT屏】求助,同一位置写屏会重叠
本帖最后由 maxims 于 2014-5-2 01:22 编辑有一个2.2寸的屏,芯片是iLi9341,网络上有一个arduino库
比方说,在同一个位置,写入0-9的数字,这些数字会重叠在一起,导致啥都看不清楚。
库里边没有处理这个情况的函数,谁能帮我解决一下问题啊~
链接:http://pan.baidu.com/s/1c0teWFI 密码:iuy2 这么多人看,没有人理我吗?:o 朋友, 不是不想幫, 而是要幫也不容易.
你問的是硬件問題, 而且不是普通的硬件.TFT 已不是很多人有, 而 TFT 亦有不同的芯片, 庫也不一樣.
我並沒有TFT, 但曾寫過 OLED 的庫, 或多或少也猜到問題所在, 你可以嘗試自己修改.
首先, 文字一般只用 0 1 的把有色的地方儲存在字庫中, 在顯示時有不同的方式.
以 OLED 為例, 由於每個點只有黑白 (或者是有顯不或沒有顯示) 兩個可能, 要顯示一個 6x8 的字, 就乾脆把 6x8 的地方都用直接填上就可以了 (程式上直接 overwrite).但如果要保留原有的底圖, 就只可以在該字需要顯示的地方才蓋上 (程式上用 OR 的方式, 但必須先記下之前的資料, 要動用一些記憶體).
而 TFT 跟 OLED 不同, 是多色的, 同一個點不是單單只有兩個選擇.顯示時就要分開 直接把 6x8 的地方都蓋了 (overwrite), 還是只在有顥的地方才蓋上 (由於 TFT 是單點操控, 不是 OR, 而是把沒顯的地方跳過就可以了).前者是你想要的, 後者 是你現在碰到的.
要做到前者, 在 TFT 會有一定的問題, 因為不是 0 / 1 的分別, 比如背景可能是一幅多色的圖畫, 直接蓋上就會出現一塊塊的方格.所以在 TFT 選用後者比較適合, 寫庫的人, 也不知沒顯示的點應該填上什麼, 除非是用家提供.
如果你的庫沒有提供前者的功能, 你也最少有兩個方法:
1) 直接改庫, 在顥示時, 把字庫中沒顯的地方都顯示為黑色 (或其他你喜歡的顏色)
2) 在顯示文字時, 先自行把背景地方填上一個你想要的背景, 相信這個不會太難攪
由於我沒有你的 TFT, 我只可以提供原理, 你嘗試自己做吧. 本帖最后由 maxims 于 2014-5-3 09:42 编辑
Super169 发表于 2014-5-2 09:37 static/image/common/back.gif
朋友, 不是不想幫, 而是要幫也不容易.
你問的是硬件問題, 而且不是普通的硬件.TFT 已不是很多人有, 而 ...
已经搞定了,是我自己思路出现了一个小的偏差
void TFT::drawChar( INT8U ascii, INT16U poX, INT16U poY,INT16U size, INT16U fgcolor)
{
if((ascii>=32)&&(ascii<=127))
{
;
}
else
{
ascii = '?'-32;
}
for (int i =0; i<FONT_X; i++ ) {
INT8U temp = pgm_read_byte(&simpleFont);//ascii-0x20
INT8U eraes = pgm_read_byte(&simpleFont);//@我用不到这个@字符,所以把这个字符变成方块也就是全FF,然后在这里读取它
for(INT8U f=0;f<8;f++)
{
if((eraes>>f)&0x01)
{
fillRectangle(poX+i*size, poY+f*size, size, size, 0x0000);//每次写屏前,先在这里把黑方块写一次。
}
if((temp>>f)&0x01)
{
fillRectangle(poX+i*size, poY+f*size, size, size, fgcolor);//然后这里才写需要的字符。
}
}
}
}
页:
[1]