【arduino】童芯派彩屏显示图片,图片取模后在TFT液晶显示
微信關(guān)注?“DLGG創(chuàng)客DIY”
設(shè)為“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)。
????繼續(xù)玩童芯派,128x128的彩屏應(yīng)該是童芯派的一大亮點(diǎn),150元(零售價(jià))的開源硬件帶這么大的彩屏還是很少見的(非常有職業(yè)操守,就不對比其他板子了)。
????別的不BB了,直接進(jìn)入正題,先說原理。
????原理:
????無論是12864的液晶還是1602的液晶,還是彩色的TFT的液晶,原理上是差不多的,只不過一般的黑白液晶是用0和1來顯示一個(gè)點(diǎn),比如0代表不現(xiàn)實(shí),1代表顯示,這樣一堆的點(diǎn)就能夠組合出圖案了。彩屏的原理也一樣,只不過因?yàn)橐硎静噬?#xff0c;所以不能只用“黑”和“白”來表示,需要用更多的數(shù)字區(qū)分不同的顏色
????總結(jié):將每個(gè)點(diǎn)的顏色信息發(fā)送到屏幕模塊上,就能顯示圖像了
針對童芯派,童芯派上是128×128個(gè)點(diǎn)組成的,即128行,128列,一共128×128個(gè)點(diǎn),如果是用01表示黑白,那么這些點(diǎn)理論上需要128×128×1b的存儲(chǔ)空間(b是小寫的,即bit,位,8b=1B),如果我們要顯示16位的圖像,那么就需要128x128x16b=128x128x2B的空間來存儲(chǔ)這些圖像信息(存儲(chǔ)空間不用太關(guān)注,但現(xiàn)實(shí)的原理要了解,回頭寫程序用)
????程序:
????正常傳統(tǒng)的思路是根據(jù)液晶的芯片手冊來編寫程序,將每個(gè)點(diǎn)的信息寫入到模塊里。這顯然太麻煩了,arduino創(chuàng)客玩家不這么玩,另外官方也提供了底層的驅(qū)動(dòng)庫,我們直接拿來用。
????
????上圖是童芯派庫的目錄文件結(jié)構(gòu)(PIO里截的圖,這樣比較好看),其中l(wèi)cd.c就是底層驅(qū)動(dòng),cyberpi.cpp是“邏輯層”驅(qū)動(dòng),可以理解為cyberpi.cpp是在lcd.c的基礎(chǔ)上將功能進(jìn)行了進(jìn)一步封裝。
????這次我們需要的函數(shù)在cyberpi.cpp中,函數(shù)名稱及參數(shù)
void?CyberPi::set_lcd_pixel(uint8_t?x,uint8_t?y,uint16_t?color)
????set_lcd_pixel函數(shù)需要3個(gè)參數(shù),從上邊講述的原理很容易聯(lián)想到x和y分別對應(yīng)LCD的要顯示點(diǎn)的位置,color就是要顯示圖像對應(yīng)點(diǎn)的顏色。然后寫個(gè)循環(huán)將上次用(【工具】TFT彩屏圖片點(diǎn)陣取模工具,Img2Lcd圖片取模軟件,圖片生成c語言頭文件)工具生成的數(shù)組循環(huán)發(fā)給LCD就行了
for(int y=0;y<128;y++){for(int x=0;x<128;x++){picL = gImage_IMG16_XHR[128*x*2+2*y+1];//低位 在后picH = gImage_IMG16_XHR[128*x*2+2*y];//高位 在前data16 = picL|picH<<8;cyber.set_lcd_pixel(y,x,data16);//底層是128×第二個(gè)變量+第一個(gè)變量}}????其中g(shù)Image_IMG16_XHR[]就是用Img2Lcd工具將圖片轉(zhuǎn)換成的數(shù)組,生成的數(shù)組是16位的,所以需要將數(shù)組的高位和低位組合給data16(16位數(shù)據(jù))。因?yàn)橥九善恋姆较蚴恰巴帷钡?#xff0c;所以x、y交換一下位置就行了。
你點(diǎn)的每個(gè)在看,我都當(dāng)成喜歡
總結(jié)
以上是生活随笔為你收集整理的【arduino】童芯派彩屏显示图片,图片取模后在TFT液晶显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【工具】PlatformIO终于能用了,
- 下一篇: 创客常用开发板“四剑客”对比,谁最“快”